huang_an 1 год назад
Родитель
Сommit
6c4a75d5de

+ 9 - 0
src/api/warehouseManagement/index.js

@@ -1,6 +1,15 @@
 import request from '@/utils/request';
 
 export default {
+  getApplyoutsource: async (params) => {
+    const res = await request.get(`/mes/applyoutsource/page`, {
+      params
+    });
+    if (res.data.code == 0) {
+      return res.data.data;
+    }
+    return Promise.reject(new Error(res.data.message));
+  },
   // 入库
   storage: async (data) => {
     const res = await request.post('/wms/outintwo/inStorage', data);

+ 323 - 58
src/views/warehouseManagement/components/outboundRequisitionDialog.vue

@@ -8,7 +8,101 @@
       :close-on-click-modal="false"
       :close-on-press-escape="false"
     >
-      <div class="main">
+      <div v-if="bizType == 10">
+        <ele-pro-table
+          ref="table"
+          :columns="columns10"
+          :datasource="datasource10"
+          cache-key="workOrderTable"
+          @cell-click="cellClick10"
+        >
+          <template v-slot:selection="{ row }">
+            <el-radio class="radio" v-model="currentRow.id" :label="row.id"
+              ><i></i
+            ></el-radio>
+          </template>
+          <template v-slot:requireDeliveryTime="{ row }">
+            <span v-if="row.deliveryMethod == 1">{{
+              row.requireDeliveryTime
+            }}</span>
+
+            <el-link
+              v-if="row.deliveryMethod == 2"
+              type="primary"
+              :underline="false"
+              @click.native="handleMethod(row)"
+              >分批时间</el-link
+            >
+          </template>
+
+          <template v-slot:type="{ row }">
+            <div v-if="row.type == 1">采购委外</div>
+            <div v-if="row.type == 2">直接发货委外</div>
+            <div v-if="row.type == 3">无采购委外</div>
+          </template>
+
+          <template v-slot:status="{ row }">
+            <el-tag>{{ row.status == 1 ? '已发布' : '未发布' }}</el-tag>
+          </template>
+
+          <template v-slot:technicalDrawings="{ row }">
+            <div v-if="row.technicalDrawings && row.technicalDrawings?.length">
+              <el-link
+                v-for="link in row.technicalDrawings"
+                :key="link.id"
+                type="primary"
+                :underline="false"
+                @click="downloadFile(link)"
+              >
+                {{ link.name }}</el-link
+              >
+            </div>
+          </template>
+
+          <template v-slot:files="{ row }">
+            <div v-if="row.files && row.files?.length">
+              <el-link
+                v-for="link in row.files"
+                :key="link.id"
+                type="primary"
+                :underline="false"
+                @click="downloadFile(link)"
+              >
+                {{ link.name }}</el-link
+              >
+            </div>
+          </template>
+
+          <template v-slot:action="{ row }">
+            <el-link
+              type="primary"
+              :underline="false"
+              @click="handleDetails(row)"
+            >
+              详情
+            </el-link>
+
+            <el-link
+              type="primary"
+              v-if="row.status == 1"
+              :underline="false"
+              @click="handleFlow(row)"
+            >
+              流程
+            </el-link>
+
+            <el-link
+              type="primary"
+              v-if="row.status != 1"
+              :underline="false"
+              @click="handleRelease(row)"
+            >
+              发布
+            </el-link>
+          </template>
+        </ele-pro-table>
+      </div>
+      <div class="main" v-if="bizType != 10">
         <!-- @cell-click="cellClick" -->
         <ele-pro-table
           ref="table"
@@ -61,6 +155,10 @@
       type: {
         type: String,
         default: '1'
+      },
+      bizType: {
+        type: String,
+        default: ''
       }
     },
     data() {
@@ -75,7 +173,8 @@
           { label: '待处理', value: 0 },
           { label: '已处理', value: 1 },
           { label: '已撤销', value: 2 }
-        ]
+        ],
+        currentRow10: {}
       };
     },
     computed: {
@@ -159,9 +258,162 @@
             align: 'center'
           }
         ];
+      },
+      columns10() {
+        return [
+          {
+            slot: 'selection',
+            label: '选择',
+            width: 50,
+            align: 'center'
+          },
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+
+          {
+            prop: 'code',
+            label: '委外单编码',
+            align: 'center'
+          },
+          {
+            prop: 'name',
+            label: '委外单名称',
+            align: 'center'
+          },
+
+          {
+            prop: 'workOrderCode',
+            label: '工单编码',
+            align: 'center'
+          },
+
+          {
+            prop: 'taskName',
+            label: '工序',
+            align: 'center'
+          },
+
+          {
+            prop: 'totalCount',
+            label: '委外数量',
+            align: 'center'
+          },
+
+          {
+            prop: 'totalWeight',
+            label: '委外重量',
+            align: 'center'
+          },
+
+          {
+            slot: 'type',
+            label: '委外类型',
+            align: 'center'
+          },
+
+          {
+            prop: 'remark',
+            label: '备注',
+            align: 'center'
+          },
+
+          {
+            slot: 'requireDeliveryTime',
+            label: '预计到货日期',
+            align: 'center',
+            minWidth: 70
+          },
+
+          {
+            prop: 'produceRoutingName',
+            label: '工艺路线',
+            align: 'center'
+          },
+
+          {
+            prop: 'warehouseName',
+            label: '仓库',
+            align: 'center'
+          },
+
+          {
+            prop: 'createTime',
+            label: '创建时间',
+            align: 'center',
+            minWidth: 70
+          },
+
+          {
+            slot: 'status',
+            label: '状态',
+            align: 'center'
+          },
+
+          {
+            label: '图片附件',
+            slot: 'technicalDrawings',
+            action: 'technicalDrawings',
+            minWidth: 100
+          },
+
+          {
+            label: '附件',
+            slot: 'files',
+            action: 'files',
+            minWidth: 100
+          },
+
+          {
+            columnKey: 'action',
+            label: '操作',
+            width: 140,
+            align: 'center',
+            resizable: false,
+            fixed: 'right',
+            slot: 'action',
+            showOverflowTooltip: true
+          }
+        ];
       }
     },
     methods: {
+      /* 表格数据源 */
+      datasource10({ page, limit, where }) {
+        return storageApi.getApplyoutsource({
+          pageNum: page,
+          size: limit,
+          ...where
+        });
+      },
+      cellClick10(row) {
+        this.currentRow10 = row;
+      },
+      downloadFile(file) {
+        getFile({ objectName: file.storePath }, file.name);
+      },
+
+      handleFlow(row) {
+        this.$refs.flowRef.open(row.processInstanceId);
+      },
+
+      handleDetails(row) {
+        this.$refs.detailsRef.open(row);
+      },
+
+      handleMethod(row) {
+        this.$refs.timeDialogRef.open(row, 'details');
+      },
+
+      handleRelease(row) {
+        this.$refs.releaseRef.open(row);
+      },
       // 全选
       changeSelectAll(arr) {
         console.log('changeSelectAll---------', arr);
@@ -204,37 +456,69 @@
         }
       },
       handleMine(val) {
-        console.log(val, 'valvalvalvalvalvalvalvalvalvalvalvalvalval');
-        let checkRadioData = val ? val : this.checkRadioData;
-        if (checkRadioData.length < 1) {
-          return this.$message.error(
-            `请选择${this.type == 1 ? '入库' : '出库'}申请单`
-          );
-        }
-        let isBoolean = checkRadioData.every(
-          (item) => checkRadioData[0].sourceType == item.sourceType
-        );
-        if (!isBoolean) {
-          return this.$message.error(
-            `所选${
-              this.type == 1 ? '入库' : '出库'
-            }申请单出入库类型不一致,请重新选择`
+        console.log(val, 'valvalvalvalvalvalvalvalvalvalvalvalvalval确认按钮');
+        console.log(this.bizType, '10000000000000000000000');
+        if (this.bizType != 10) {
+          let checkRadioData = val ? val : this.checkRadioData;
+          if (checkRadioData.length < 1) {
+            return this.$message.error(
+              `请选择${this.type == 1 ? '入库' : '出库'}申请单`
+            );
+          }
+          let isBoolean = checkRadioData.every(
+            (item) => checkRadioData[0].sourceType == item.sourceType
           );
-        }
-        let aaa = checkRadioData.map((item) => item.id);
-        storageApi.getApplystoragedetails(aaa).then(async (res) => {
-          if (this.type == 2) {
-            // 出库
-            let data = await storageApi.getHierarchyFifo({
-              type: 1,
-              builders: res.map((item) => {
+          if (!isBoolean) {
+            return this.$message.error(
+              `所选${
+                this.type == 1 ? '入库' : '出库'
+              }申请单出入库类型不一致,请重新选择`
+            );
+          }
+          let aaa = checkRadioData.map((item) => item.id);
+          storageApi.getApplystoragedetails(aaa).then(async (res) => {
+            if (this.type == 2) {
+              // 出库
+              let data = await storageApi.getHierarchyFifo({
+                type: 1,
+                builders: res.map((item) => {
+                  return {
+                    categoryId: item.categoryId,
+                    num: item.measureQuantity
+                  };
+                })
+              });
+              if (data?.length > 0) {
+                this.$emit('detailData', data, 1, {
+                  sourceBizNo: checkRadioData
+                    .map((item) => item.code)
+                    .join(','),
+                  bizType: checkRadioData[0].sourceType,
+                  assetType: Array.from(
+                    new Set(res.map((item) => item.rootCategoryLevelId))
+                  ).join(',')
+                });
+                this.dialogVisible = false;
+              } else {
+                this.$message.warning('该出库申请单无库存');
+              }
+            } else {
+              // 入库
+              const batchNo = await getCode('lot_number_code');
+              let data = res.map((item, index) => {
                 return {
-                  categoryId: item.categoryId,
-                  num: item.measureQuantity
+                  ...item,
+                  index,
+                  packingQuantity: 1,
+                  minPackingQuantity: item.measureQuantity,
+                  measureUnit: item.measuringUnit,
+                  batchNo,
+                  id: '',
+                  warehouseIds: [item.warehouseId],
+                  warehouseNames: [item.warehouseName]
                 };
-              })
-            });
-            if (data?.length > 0) {
+              });
+
               this.$emit('detailData', data, 1, {
                 sourceBizNo: checkRadioData.map((item) => item.code).join(','),
                 bizType: checkRadioData[0].sourceType,
@@ -243,35 +527,16 @@
                 ).join(',')
               });
               this.dialogVisible = false;
-            } else {
-              this.$message.warning('该出库申请单无库存');
             }
-          } else {
-            // 入库
-            const batchNo = await getCode('lot_number_code');
-            let data = res.map((item, index) => {
-              return {
-                ...item,
-                index,
-                packingQuantity: 1,
-                minPackingQuantity: item.measureQuantity,
-                measureUnit: item.measuringUnit,
-                batchNo,
-                id: '',
-                warehouseIds: [item.warehouseId],
-                warehouseNames: [item.warehouseName]
-              };
-            });
-            this.$emit('detailData', data, 1, {
-              sourceBizNo: checkRadioData.map((item) => item.code).join(','),
-              bizType: checkRadioData[0].sourceType,
-              assetType: Array.from(
-                new Set(res.map((item) => item.rootCategoryLevelId))
-              ).join(',')
-            });
-            this.dialogVisible = false;
-          }
-        });
+          });
+        } else {
+          this.$emit('detailData', {}, 1, {
+            sourceBizNo: this.currentRow10.code,
+            taskId: this.currentRow10.taskId,
+            workOrderId: this.currentRow10.workOrderId
+          });
+          this.dialogVisible = false;
+        }
       },
       // 单击获取id
       cellClick(row) {

+ 1 - 1
src/views/warehouseManagement/inventoryAllocation/details.vue

@@ -18,7 +18,7 @@
             </el-col>
             <el-col :span="8">
               <el-form-item label="调拨单号">
-                <span>{{ infoData.id }}</span>
+                <span>{{ infoData.allotCode }}</span>
               </el-form-item>
             </el-col>
             <el-col :span="8">

+ 11 - 31
src/views/warehouseManagement/outgoingManagement/details.vue

@@ -169,38 +169,17 @@
             </el-table-column>
             <el-table-column
               label="包装数量"
-              v-if="clientEnvironmentId == 3"
               prop="packingQuantity"
               align="center"
             >
-              <template slot-scope="{ row, $index }">
-                {{ row.packingQuantity }} {{ row.packingUnit }}
-              </template>
             </el-table-column>
             <el-table-column
-              v-else
-              label="包装数量"
-              prop="packingQuantity"
-              width="80"
-            ></el-table-column>
-            <el-table-column
-              v-if="clientEnvironmentId == 3"
-              label="最小包装单元"
+              label="包装单位"
               align="center"
               width="120"
-              prop="minPackingQuantity"
+              prop="packingUnit"
             >
-              <template slot-scope="{ row, $index }">
-                {{ row.minPackingQuantity }} {{ row.measureUnit }} /{{
-                  row.packingUnit
-                }}
-              </template>
             </el-table-column>
-            <el-table-column
-              v-else
-              label="包装单位"
-              prop="packingUnit"
-            ></el-table-column>
             <el-table-column
               label="计量数量"
               prop="measureQuantity"
@@ -456,12 +435,7 @@
   import PageHeader from '@/components/PageHeader';
   import storageApi from '@/api/warehouseManagement';
   import { allCategoryLevel } from '@/api/classifyManage';
-  import {
-    useDictLabel,
-    outputSceneState,
-    qualityStatus,
-    qualityResults
-  } from '@/utils/dict/index';
+  import { useDictLabel, outputSceneState } from '@/utils/dict/index';
   import { mapGetters, mapActions } from 'vuex';
   export default {
     components: { PageHeader },
@@ -471,8 +445,14 @@
     data() {
       return {
         newColumns: [], // 动态表头
-        qualityStatus, // 质检状态 0未检 1待检 2已检
-        qualityResults, // 质检结果 0无 1合格 2不合格
+        qualityStatus: {
+          0: '未质检',
+          1: '已质检'
+        }, // 质检状态 0未检 1已检
+        qualityResults: {
+          1: '合格',
+          2: '不合格'
+        }, // 质检结果 1合格 2不合格
         productList: [], // 产品列表
         showPackingList: [], // 展示的包装列表
         packingList: [], // 包装列表

+ 13 - 23
src/views/warehouseManagement/outgoingManagement/details_3.vue

@@ -168,26 +168,17 @@
             >
             </el-table-column>
             <el-table-column
-              label="最小包装单元"
+              label="包装数量"
+              prop="packingQuantity"
               align="center"
-              width="120"
-              prop="minPackingQuantity"
             >
-              <template slot-scope="{ row, $index }">
-                {{ row.minPackingQuantity }} {{ row.measureUnit }} /{{
-                  row.packingUnit
-                }}
-              </template>
             </el-table-column>
-
             <el-table-column
-              label="包装数量"
-              prop="packingQuantity"
+              label="包装单位"
               align="center"
+              width="120"
+              prop="packingUnit"
             >
-              <template slot-scope="{ row, $index }">
-                {{ row.packingQuantity }} {{ row.packingUnit }}
-              </template>
             </el-table-column>
             <el-table-column
               label="计量数量"
@@ -197,11 +188,6 @@
             >
             </el-table-column>
             <el-table-column label="计量单位" prop="measureUnit" align="center">
-              <template slot-scope="{ row, $index }">
-                <template>
-                  {{ row.measureUnit }}
-                </template>
-              </template>
             </el-table-column>
             <el-table-column
               label="重量"
@@ -620,10 +606,14 @@
         });
       },
       async _getInfo() {
-        const res = await storageApi.getInboundDetailsById(
-          this.$route.query.id
-        );
-        console.log('===', res);
+        let res = null;
+        if (this.$route.query.id) {
+          res = await storageApi.getInboundDetailsById(this.$route.query.id);
+        } else {
+          res = await storageApi.getInboundDetailsByBizNo(
+            this.$route.query.bizNo
+          );
+        }
         this.infoData = res;
         this.extInfo = res.extInfo;
         this.productList = res.outInDetailList.map(

+ 1 - 0
src/views/warehouseManagement/statisticalReports/transceiverDetails/add.vue

@@ -93,6 +93,7 @@
         height="calc(100vh - 405px)"
         full-height="calc(100vh - 116px)"
         tool-class="ele-toolbar-form"
+        style="margin-top: 18px"
       >
         <!-- 状态 -->
         <!-- <template v-slot:verifyStatus="{ row }">

+ 8 - 1
src/views/warehouseManagement/stockLedger/components/item-list.vue

@@ -286,7 +286,14 @@
             align: 'center'
           },
           {
-            prop: 'measureUnit',
+            prop: 'supplierName',
+            label: '供应商',
+            showOverflowTooltip: true,
+            width: 130,
+            align: 'center'
+          },
+          {
+            prop: 'measureUnit444444',
             label: '计量单位',
             align: 'center'
           },

+ 36 - 47
src/views/warehouseManagement/stockManagement/add.vue

@@ -1041,57 +1041,46 @@
       this.getListItems();
       this.initUserInfo();
       this.getNowFormatDate();
-      if (this.$route.query.inId) {
-        let queryObj = this.$route.query;
-        queryObj.id = queryObj.inId;
-        this.formData.sourceBizNo = queryObj.code;
-        this.$nextTick(() => {
-          this.$refs.outboundRequisitionDialogRef.handleMine([queryObj]);
-        });
-      }
       if (this.$route.query.id) {
-        console.log(this.$route.query.id, 'this.$route.query.id');
         storageApi
           .getApplystorageDetailById(this.$route.query.id)
           .then(async (data) => {
-            console.log(data, '123');
-            if (data) {
-              this.formData.extInfo.assetType = [data.rootCategoryLevelId];
-              this.formData.bizType = String(data.type);
-              this.formData.sourceBizNo = data.code;
-              const batchNo = await getCode('lot_number_code');
-              this.productList = data.detailList.map((item, index) => {
-                return {
-                  index: this.productList.length + index,
-                  categoryId: item.categoryId, // 物品id
-                  categoryName: item.categoryName, // 物品名称
-                  categoryCode: item.categoryCode, // 物品编码
-                  categoryModel: item.modelType, // 物品型号
-                  specification: item.specification, // 规格
-                  brandNum: item.brandNum, // 牌号
-                  batchNo: batchNo, // 批次号
-                  minPackingQuantity: item.quantity, // 最小包装单元数量
-                  packingQuantity: 1, // 包装数量
-                  packingUnit: item.packingUnit, // 包装单位
-                  measureQuantity: 0, // 计量数量
-                  measureUnit: item.measuringUnit, // 计量单位
-                  netWeight: item.netWeight > -1 ? item.netWeight : 0, // 净重
-                  weight: item.packingWeight, // 重量
-                  weightUnit: item.weightUnit, // 重量单位
-                  totalMoney: '', // 总价
-                  price: item.price, // 单价
-                  purpose: item.purpose, // 用途
-                  isUnpack: item.isUnpack, // 是否允许拆包
-                  warehouseId: item.warehouseId, // 仓库Id
-                  warehouseName: item.warehouseName, // 仓库名称
-                  warehouseIds: [item.warehouseId],
-                  warehouseNames: [item.warehouseName]
-                };
-              });
-              this.$nextTick(() => {
-                this.listSaveArrs();
-              });
-            }
+            console.log(data);
+            this.formData.extInfo.assetType = [data.rootCategoryLevelId];
+            this.formData.bizType = String(data.type);
+            this.formData.sourceBizNo = data.code;
+            const batchNo = await getCode('lot_number_code');
+            this.productList = data.detailList.map((item, index) => {
+              return {
+                index: this.productList.length + index,
+                categoryId: item.categoryId, // 物品id
+                categoryName: item.categoryName, // 物品名称
+                categoryCode: item.categoryCode, // 物品编码
+                categoryModel: item.modelType, // 物品型号
+                specification: item.specification, // 规格
+                brandNum: item.brandNum, // 牌号
+                batchNo: batchNo, // 批次号
+                minPackingQuantity: item.quantity, // 最小包装单元数量
+                packingQuantity: 1, // 包装数量
+                packingUnit: item.packingUnit, // 包装单位
+                measureQuantity: 0, // 计量数量
+                measureUnit: item.measuringUnit, // 计量单位
+                netWeight: item.netWeight > -1 ? item.netWeight : 0, // 净重
+                weight: item.packingWeight, // 重量
+                weightUnit: item.weightUnit, // 重量单位
+                totalMoney: '', // 总价
+                price: item.price, // 单价
+                purpose: item.purpose, // 用途
+                isUnpack: item.isUnpack, // 是否允许拆包
+                warehouseId: item.warehouseId, // 仓库Id
+                warehouseName: item.warehouseName, // 仓库名称
+                warehouseIds: [item.warehouseId],
+                warehouseNames: [item.warehouseName]
+              };
+            });
+            this.$nextTick(() => {
+              this.listSaveArrs();
+            });
           });
       }
       if (this.$route.query.detailId) {

+ 10 - 4
src/views/warehouseManagement/stockManagement/add_2.vue

@@ -1064,7 +1064,8 @@
         batchTime: '', // 生产日期、采购日期
         pageSize: 20, // 物料和包装列表条数
         pickingPageNum: 1, // 包装虚拟分页页数
-        materielPageNum: 1 // 物料虚拟分页页数
+        materielPageNum: 1, // 物料虚拟分页页数
+        selWWData: {}
       };
     },
     computed: {
@@ -1237,9 +1238,14 @@
         )[0].name;
       },
       async outboundRequisitionSelection(data, dimension, query) {
-        this.formData.sourceBizNo = query.sourceBizNo;
-        this.formData.bizType = query.bizType;
-        this.formData.extInfo.assetType = query.assetType.split(',');
+        if (this.formData.bizType != 10) {
+          this.formData.sourceBizNo = query.sourceBizNo;
+          this.formData.bizType = query.bizType;
+          this.formData.extInfo.assetType = query.assetType.split(',');
+        } else {
+          this.selWWData = query;
+          this.formData.sourceBizNo = query.sourceBizNo;
+        }
         // const batchNo = await getCode('lot_number_code');
         this.productList = data;
         // this.productList = data.map((productItem, productIndex) => {

+ 176 - 128
src/views/warehouseManagement/stockManagement/details.vue

@@ -33,7 +33,7 @@
               </el-col>
               <el-col :span="8">
                 <el-form-item label="关联订单:">
-                  <span>{{ extInfo.documentSource }}</span>
+                  <span>{{ infoData.sourceBizNo }}</span>
                 </el-form-item>
               </el-col>
               <el-col :span="8">
@@ -101,7 +101,7 @@
           </div>
         </div>
         <div class="content-detail mt20">
-          <header-title title="产品信息" size="16px"></header-title>
+          <header-title title="产品信息" size="16px"> </header-title>
           <el-table
             ref="productListTable"
             :data="productList"
@@ -163,41 +163,22 @@
               :show-overflow-tooltip="true"
             >
             </el-table-column>
-
             <el-table-column
               label="包装数量"
-              v-if="clientEnvironmentId == 3"
               prop="packingQuantity"
               align="center"
             >
               <template slot-scope="{ row, $index }">
-                {{ row.packingQuantity }} {{ row.packingUnit }}
+                {{ row.packingQuantity }}
               </template>
             </el-table-column>
             <el-table-column
-              v-else
-              label="包装数量"
-              prop="packingQuantity"
-              width="80"
-            ></el-table-column>
-            <el-table-column
-              v-if="clientEnvironmentId == 3"
-              label="最小包装单元"
+              label="包装单位"
               align="center"
               width="120"
-              prop="minPackingQuantity"
+              prop="packingUnit"
             >
-              <template slot-scope="{ row, $index }">
-                {{ row.minPackingQuantity }} {{ row.measureUnit }} /{{
-                  row.packingUnit
-                }}
-              </template>
             </el-table-column>
-            <el-table-column
-              v-else
-              label="包装单位"
-              prop="packingUnit"
-            ></el-table-column>
             <el-table-column
               label="计量数量"
               prop="measureQuantity"
@@ -283,17 +264,42 @@
           </el-table>
         </div>
         <div class="mt20">
-          <header-title :title="`包装明细`" size="16px"></header-title>
+          <header-title :title="`包装明细`" size="16px">
+            <el-button
+              v-for="item in mergeOptions"
+              size="mini"
+              type="primary"
+              @click="openMergeDialog(item)"
+              >合并成{{ item.conversionUnit }}</el-button
+            >
+            <el-button
+              v-for="item in splitOptions"
+              size="mini"
+              type="primary"
+              @click="openSplitDialog(item)"
+              >拆分到{{ item.packageUnit }}</el-button
+            >
+          </header-title>
           <el-table
             ref="showPackingListTable"
-            :data="showPackingList"
+            :data="packingList"
             tooltip-effect="dark"
             :max-height="300"
             border
             :row-class-name="tableRowClassName"
             :header-cell-style="rowClass"
-            v-el-table-infinite-scroll="pickingHandleScroll"
+            @selection-change="productSplit"
           >
+            <el-table-column
+              v-if="infoData.verifyStatus == 2"
+              key="selection"
+              label="选择"
+              type="selection"
+              width="55"
+              align="center"
+              fixed="left"
+            >
+            </el-table-column>
             <el-table-column label="序号" type="index" width="50">
             </el-table-column>
             <el-table-column
@@ -448,73 +454,17 @@
               </template>
             </el-table-column>
           </el-table>
-        </div>
-        <div class="mt20">
-          <header-title :title="`物料明细`" size="16px"> </header-title>
-          <el-table
-            ref="multipleTable"
-            :data="showMaterialList"
-            tooltip-effect="dark"
-            :max-height="300"
-            border
-            :row-class-name="tableRowClassName"
-            :header-cell-style="rowClass"
-            style="width: 100%"
-            stripe
-            height="300px"
-            v-el-table-infinite-scroll="materielHandleScroll"
+          <el-pagination
+            background
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="total"
+            :page-sizes="[10, 10, 20, 30]"
+            :page-size.sync="pages.size"
+            :current-page.sync="pages.pageNum"
+            @current-change="handleCurrentChange"
+            @size-change="handleSizeChange"
           >
-            <el-table-column label="序号" type="index" width="50">
-            </el-table-column>
-            <el-table-column
-              label="编码"
-              prop="categoryCode"
-              :show-overflow-tooltip="true"
-            ></el-table-column>
-            <el-table-column
-              label="名称"
-              prop="categoryName"
-              :show-overflow-tooltip="true"
-            ></el-table-column>
-            <el-table-column label="批次号" prop="batchNo"></el-table-column>
-            <el-table-column
-              label="物料编码"
-              prop="materialCode"
-              :show-overflow-tooltip="true"
-            ></el-table-column>
-            <el-table-column
-              label="发货条码"
-              prop="barcodes"
-              :show-overflow-tooltip="true"
-            ></el-table-column>
-            <el-table-column
-              label="计量数量"
-              prop="measureQuantity"
-            ></el-table-column>
-            <el-table-column
-              label="计量单位"
-              prop="measureUnit"
-            ></el-table-column>
-            <el-table-column label="物料代号" prop="materielDesignation">
-            </el-table-column>
-            <el-table-column label="客户代号" prop="clientCode">
-            </el-table-column>
-            <el-table-column label="刻码" prop="engrave"> </el-table-column>
-            <el-table-column width="100" label="重量" prop="weight">
-            </el-table-column>
-            <el-table-column label="重量单位" prop="weightUnit">
-            </el-table-column>
-            <el-table-column label="质检结果" prop="result" width="120">
-              <template slot-scope="{ row }">
-                <span>{{ qualityResults[row.result] }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column label="质检状态" prop="status" width="120">
-              <template slot-scope="{ row }">
-                <span>{{ qualityStatus[row.status] }}</span>
-              </template>
-            </el-table-column>
-          </el-table>
+          </el-pagination>
         </div>
       </div>
     </el-card>
@@ -522,33 +472,49 @@
       ref="wareHouseDailogRef"
       @houseData="houseData"
     ></WareHouseDailog>
+    <mergeDetails
+      ref="mergeDetailsRef"
+      @refresh="getPackingList"
+    ></mergeDetails>
+    <splitDetails ref="splitDetailsRef"></splitDetails>
   </div>
 </template>
 
 <script>
+  import mergeDetails from './mergeDetails.vue';
+  import splitDetails from './splitDetails.vue';
   import WareHouseDailog from '../components/warehouseShelvesDialog.vue';
   import elTableInfiniteScroll from 'el-table-infinite-scroll';
   import { getFile } from '@/api/system/file/index.js';
   import PageHeader from '@/components/PageHeader';
   import storageApi from '@/api/warehouseManagement';
+  import { getCode } from '@/api/codeManagement/index.js';
   import { allCategoryLevel } from '@/api/classifyManage';
-  import {
-    useDictLabel,
-    sceneState,
-    qualityStatus,
-    qualityResults
-  } from '@/utils/dict/index';
+  import { useDictLabel, sceneState } from '@/utils/dict/index';
   import { mapGetters, mapActions } from 'vuex';
   export default {
-    components: { PageHeader, WareHouseDailog },
+    components: { PageHeader, WareHouseDailog, mergeDetails, splitDetails },
     directives: {
       'el-table-infinite-scroll': elTableInfiniteScroll
     },
     data() {
       return {
+        total: 0,
+        pages: { pageNum: 1, size: 10 },
+        oldSelectionList: [],
+        selectionList: [],
+        mergeOptions: [],
+        splitOptions: [],
+        currentId: '',
         newColumns: [], // 动态表头
-        qualityStatus, // 质检状态 0未检 1已检
-        qualityResults, // 质检结果 0无 1合格 2不合格
+        qualityStatus: {
+          0: '未质检',
+          1: '已质检'
+        }, // 质检状态 0未检 1已检
+        qualityResults: {
+          1: '合格',
+          2: '不合格'
+        }, // 质检结果 1合格 2不合格
         productList: [], // 产品列表
         showPackingList: [], // 展示的包装列表
         packingList: [], // 包装列表
@@ -562,7 +528,8 @@
         infoData: {},
         stepsTitle: '已完成',
         stepsStatus: 'success',
-        active: 0
+        active: 0,
+        verifyStatus: ''
       };
     },
     watch: {
@@ -621,10 +588,69 @@
     created() {
       this.getFieldModel();
       this.requestDict('类型用途');
+      this.requestDict('不拆物料层规格');
       this.getAllCategoryType();
       this._getInfo();
+      this.verifyStatus = this.$route.query.verifyStatus;
     },
     methods: {
+      openMergeDialog(dimensionRow) {
+        this.$refs.mergeDetailsRef.open(dimensionRow, this.selectionList);
+      },
+      openSplitDialog(dimensionRow) {
+        this.$refs.splitDetailsRef.open(dimensionRow, this.selectionList);
+      },
+      productSplit(selectionList) {
+        console.log(selectionList);
+        let isUnification = selectionList.every(
+          (item) =>
+            item.packingUnit == selectionList[0].packingUnit &&
+            item.categoryId == selectionList[0].categoryId
+        );
+        if (isUnification) {
+          if (selectionList.length > 0) {
+            this.selectionList = selectionList;
+            this.oldSelectionList = selectionList;
+            if (this.mergeOptions.length == 0) {
+              storageApi
+                .getCategoryPackageDisposition({
+                  categoryIds: [this.selectionList[0].categoryId]
+                })
+                .then((data) => {
+                  console.log(data);
+                  console.log(this.selectionList[0]);
+                  // 形成合并按钮
+                  let mergeIndex = data.findIndex(
+                    (item) =>
+                      item.packageUnit == this.selectionList[0].packingUnit &&
+                      item.packageUnit != item.conversionUnit
+                  );
+                  console.log(mergeIndex);
+                  this.mergeOptions = data.filter(
+                    (item) => item.sort == data[mergeIndex].sort
+                  );
+                  // 形成拆分按钮
+                  let splitIndex = data.findIndex(
+                    (item) =>
+                      item.conversionUnit ==
+                        this.selectionList[0].packingUnit &&
+                      item.packageUnit != item.conversionUnit
+                  );
+                  this.splitOptions = data.filter(
+                    (item) => item.sort == data[splitIndex].sort
+                  );
+                });
+            }
+          } else {
+            this.mergeOptions = [];
+            this.splitOptions = [];
+          }
+        } else {
+          this.$message.error('请选择相同物品和包装装单位');
+          this.$refs.showPackingListTable.clearSelection();
+        }
+        console.log(isUnification);
+      },
       // 获取动态表头
       getFieldModel() {
         storageApi.fieldModel({ fieldModel: 't_main_category' }).then((res) => {
@@ -640,6 +666,7 @@
         });
       },
       isUpper(row) {
+        console.log('this.packingList------', this.packingList);
         let filterPackingList = this.packingList.filter((packingItem) => {
           return packingItem.parentIndex === row.index;
         });
@@ -794,11 +821,13 @@
       ...mapActions('dict', ['requestDict']),
       getSceneState: useDictLabel(sceneState),
       handleAssetType(r) {
-        const code = this.codeList.find((item) => item.dictCode == r);
-        return code?.dictValue;
+        let arr = r?.split(',');
+        const filteredData = this.codeList.filter((item) =>
+          arr?.includes(item.dictCode)
+        );
+        return filteredData.map((item) => item.dictValue).join(',');
       },
       tableRowClassName({ row, rowIndex }) {
-        console.log(row);
         if (row.result == 2) {
           return 'warning-row';
         } else {
@@ -875,33 +904,52 @@
             };
           }
         );
-        // 获取包装维度数据
-        const arr = [];
-        for (const key in this.productList) {
-          for (const k in this.productList[key].outInDetailRecordRequestList) {
-            arr.push({
-              ...this.productList[key].outInDetailRecordRequestList[k]
-            });
-          }
-        }
-        this.packingList = arr;
-        // 获取物料维度数据
-        let iArr = [];
-        arr.forEach((item) => {
-          item.materialDetailList.forEach((ele) => {
-            iArr.push({ ...ele });
-          });
-        });
-        this.materialList = iArr;
-        console.log(this.packingList);
-        console.log(this.materialList);
-        this.pickingFetchData();
-        this.materielFetchData();
+        this.getPackingList();
+        // // 获取包装维度数据
+        // const arr = [];
+        // for (const key in this.productList) {
+        //   for (const k in this.productList[key].outInDetailRecordRequestList) {
+        //     arr.push({
+        //       ...this.productList[key].outInDetailRecordRequestList[k]
+        //     });
+        //   }
+        // }
+        // this.packingList = arr;
+        // // 获取物料维度数据
+        // let iArr = [];
+        // arr.forEach((item) => {
+        //   item.materialDetailList.forEach((ele) => {
+        //     iArr.push({ ...ele });
+        //   });
+        // });
+        // this.materialList = iArr;
+        // console.log(this.packingList);
+        // console.log(this.materialList);
+        // this.pickingFetchData();
+        // this.materielFetchData();
       },
       download(row) {
         if (row.storePath) {
           getFile({ objectName: row.storePath }, row.name);
         }
+      },
+      handleCurrentChange(e) {
+        this.getPackingList();
+      },
+      handleSizeChange(e) {
+        this.pages.pageNum = 1;
+        this.getPackingList();
+      },
+      getPackingList() {
+        storageApi
+          .getOutInRecordsPage({
+            ...this.pages,
+            outInId: this.$route.query.id
+          })
+          .then((data) => {
+            this.total = data.count;
+            this.packingList = data.list;
+          });
       }
     }
   };

+ 5 - 2
src/views/warehouseManagement/stockManagement/details_2.vue

@@ -797,8 +797,11 @@
       ...mapActions('dict', ['requestDict']),
       getSceneState: useDictLabel(sceneState),
       handleAssetType(r) {
-        const code = this.codeList.find((item) => item.dictCode == r);
-        return code?.dictValue;
+        let arr = r?.split(',');
+        const filteredData = this.codeList.filter((item) =>
+          arr?.includes(item.dictCode)
+        );
+        return filteredData.map((item) => item.dictValue).join(',');
       },
       tableRowClassName({ row, rowIndex }) {
         console.log(row);

+ 5 - 2
src/views/warehouseManagement/stockManagement/details_3.vue

@@ -821,8 +821,11 @@
       ...mapActions('dict', ['requestDict']),
       getSceneState: useDictLabel(sceneState),
       handleAssetType(r) {
-        const code = this.codeList.find((item) => item.dictCode == r);
-        return code?.dictValue;
+        let arr = r?.split(',');
+        const filteredData = this.codeList.filter((item) =>
+          arr?.includes(item.dictCode)
+        );
+        return filteredData.map((item) => item.dictValue).join(',');
       },
       tableRowClassName({ row, rowIndex }) {
         if (row.result == 2) {

+ 49 - 39
src/views/warehouseManagement/stockManagement/index.vue

@@ -149,7 +149,7 @@
         @cell-click="cellClick"
       >
         <template v-slot:selection="{ row }">
-          <el-radio class="radio" v-model="currentId" :label="row.id"
+          <el-radio class="radio" v-model="currentRow.id" :label="row.id"
             ><i></i
           ></el-radio>
         </template>
@@ -255,15 +255,17 @@
         </template>
       </ele-pro-table>
     </el-card>
-    <priceMaintenanceDialog ref="priceMaintenanceDialogRef" />
+    <!--  <priceMaintenanceDialog ref="priceMaintenanceDialogRef" /> -->
   </div>
 </template>
 
 <script>
   import storageApi from '@/api/warehouseManagement';
   import warehouseDefinition from '@/api/warehouseManagement/warehouseDefinition';
-  import priceMaintenanceDialog from './components/priceMaintenanceDialog.vue';
+  /*  import priceMaintenanceDialog from './components/priceMaintenanceDialog.vue'; */
   import { allCategoryLevel } from '@/api/classifyManage';
+
+  ('@/view/warehouseManagement/stockManagement/components/priceMaintenanceDialog.vue');
   import {
     warehousingType,
     sceneState,
@@ -271,7 +273,7 @@
     useDict
   } from '@/utils/dict/index';
   export default {
-    components: { priceMaintenanceDialog },
+    components: {},
     data() {
       return {
         auditStatus,
@@ -299,7 +301,6 @@
           { label: '审核通过', class: 'ele-text-success' },
           { label: '驳回', class: 'ele-text-danger' }
         ],
-        currentId: '',
         currentRow: {},
         columns: [
           {
@@ -425,7 +426,6 @@
       // 单击获取id
       cellClick(row) {
         this.currentRow = row;
-        this.currentId = row.id;
       },
       shelves() {
         console.log('上架');
@@ -434,48 +434,59 @@
         console.log('下架');
       },
       priceMaintenance() {
-        console.log('单价维护');
-        if (this.currentRow.verifyStatus == 2) {
-          if (this.currentId) {
-            this.$refs.priceMaintenanceDialogRef.open(this.currentId);
+        if (Object.keys(this.currentRow).length == 0) {
+          return this.$message.error('请选择单据');
+        } else {
+          if (this.currentRow.verifyStatus == 2) {
+            this.$router.push({
+              path: '/warehouseManagement/stockManagement/priceMaintenance',
+              query: {
+                ids: this.currentRow.id
+              }
+            });
+            /* this.$refs.priceMaintenanceDialogRef.open(this.currentRow.id); */
           } else {
-            this.$message.error('请选择单据');
+            this.$message.error('该单据未审核通过');
           }
-        } else {
-          this.$message.error('该单据未审核通过');
         }
       },
       async outbound() {
-        console.log(this.currentRow);
-        if (this.currentRow.verifyStatus == 2) {
-          const res = await storageApi.getInboundDetailsById(
-            this.currentRow.id
-          );
-          const arr = [];
-          for (const key in res.outInDetailList) {
-            for (const k in res.outInDetailList[key]
-              .outInDetailRecordRequestList) {
-              arr.push({
-                ...res.outInDetailList[key].outInDetailRecordRequestList[k]
-              });
+        if (Object.keys(this.currentRow).length == 0) {
+          return this.$message.error('请选择单据');
+        } else {
+          if (this.currentRow.verifyStatus == 2) {
+            const res = await storageApi.getInboundDetailsById(
+              this.currentRow.id
+            );
+            const arr = [];
+            for (const key in res.outInDetailList) {
+              for (const k in res.outInDetailList[key]
+                .outInDetailRecordRequestList) {
+                arr.push({
+                  ...res.outInDetailList[key].outInDetailRecordRequestList[k]
+                });
+              }
             }
+            let ids = arr.map((item) => item.id).join(',');
+            this.$router.push({
+              path: '/warehouseManagement/outgoingManagement/add',
+              query: {
+                ids,
+                bizType: this.currentRow.bizType,
+                assetType: this.currentRow.extInfo.assetType
+              }
+            });
+          } else {
+            this.$message.error('该单据未审核通过');
           }
-          let ids = arr.map((item) => item.id).join(',');
-          this.$router.push({
-            path: '/warehouseManagement/outgoingManagement/add',
-            query: {
-              ids,
-              bizType: this.currentRow.bizType,
-              assetType: this.currentRow.extInfo.assetType
-            }
-          });
-        } else {
-          this.$message.error('该单据未审核通过');
         }
       },
       handleAssetType(r) {
-        const code = this.codeList.find((item) => item.dictCode == r);
-        return code?.dictValue;
+        let arr = r.split(',');
+        const filteredData = this.codeList.filter((item) =>
+          arr.includes(item.dictCode)
+        );
+        return filteredData.map((item) => item.dictValue).join(',');
       },
       async getTypeList() {
         const { data } = await allCategoryLevel();
@@ -519,7 +530,6 @@
           type: 1,
           ...params
         });
-
         return res;
       },
       getAuditStatus: useDict(auditStatus),

+ 468 - 0
src/views/warehouseManagement/stockManagement/priceMaintenance.vue

@@ -0,0 +1,468 @@
+<template>
+  <div class="ele-body">
+    <el-card shadow="never">
+      <div class="content-detail">
+        <header-title title="产品详情" size="16px"></header-title>
+        <div class="mt20">
+          <el-table
+            ref="productListTable"
+            :data="productList"
+            tooltip-effect="dark"
+            border
+            :height="500"
+            :header-cell-style="rowClass"
+          >
+            <el-table-column label="序号" type="index" width="50">
+            </el-table-column>
+            <el-table-column
+              label="编码"
+              prop="categoryCode"
+              align="center"
+              :show-overflow-tooltip="true"
+            ></el-table-column>
+            <el-table-column
+              label="名称"
+              align="center"
+              prop="categoryName"
+              :show-overflow-tooltip="true"
+            ></el-table-column>
+            <el-table-column label="级别" prop="level" align="center">
+            </el-table-column>
+            <el-table-column
+              label="型号"
+              align="center"
+              prop="categoryModel"
+              :show-overflow-tooltip="true"
+            ></el-table-column>
+            <el-table-column
+              label="规格"
+              align="center"
+              prop="specification"
+              :show-overflow-tooltip="true"
+            ></el-table-column>
+            <el-table-column
+              label="牌号"
+              align="center"
+              prop="brandNum"
+              :show-overflow-tooltip="true"
+            ></el-table-column>
+            <el-table-column
+              v-for="(item, index) in newColumns"
+              :label="item.label"
+              :align="item.align"
+              :prop="item.prop"
+              :show-overflow-tooltip="item.showOverflowTooltip"
+            ></el-table-column>
+            <el-table-column
+              label="批次号"
+              prop="batchNo"
+              align="center"
+              :show-overflow-tooltip="true"
+            >
+            </el-table-column>
+            <el-table-column
+              label="供应商"
+              prop="supplierName"
+              align="center"
+              :show-overflow-tooltip="true"
+            >
+            </el-table-column>
+            <el-table-column
+              label="最小包装单元"
+              align="center"
+              width="120"
+              prop="minPackingQuantity"
+            >
+              <template slot-scope="{ row, $index }">
+                {{ row.minPackingQuantity }} {{ row.measureUnit }} /{{
+                  row.packingUnit
+                }}
+              </template>
+            </el-table-column>
+
+            <el-table-column
+              label="包装数量"
+              prop="packingQuantity"
+              align="center"
+            >
+              <template slot-scope="{ row, $index }">
+                {{ row.packingQuantity }} {{ row.packingUnit }}
+              </template>
+            </el-table-column>
+            <el-table-column
+              label="计量数量"
+              prop="measureQuantity"
+              width="100"
+              align="center"
+            >
+              <template slot-scope="{ row, $index }">
+                <template>
+                  {{
+                    $math.format(
+                      row.minPackingQuantity * row.packingQuantity,
+                      14
+                    )
+                  }}
+                </template>
+              </template>
+            </el-table-column>
+            <el-table-column label="计量单位" prop="measureUnit" align="center">
+              <template slot-scope="{ row, $index }">
+                <template>
+                  {{ row.measureUnit }}
+                </template>
+              </template>
+            </el-table-column>
+            <el-table-column
+              label="重量"
+              prop="weight"
+              align="center"
+              :show-overflow-tooltip="true"
+            >
+            </el-table-column>
+            <el-table-column
+              label="重量单位"
+              prop="weightUnit"
+              align="center"
+              :show-overflow-tooltip="true"
+            >
+            </el-table-column>
+            <el-table-column
+              label="单价"
+              prop="unitPrice"
+              align="center"
+              width="200"
+            >
+              <template slot-scope="{ row }">
+                <el-input
+                  type="number"
+                  v-model.number="row.unitPrice"
+                  placeholder="非必填"
+                  @input="
+                    (value) => (row.unitPrice = value.replace(/[^0-9.]+/g, ''))
+                  "
+                >
+                  <template slot="append"> 元/{{ row.measureUnit }} </template>
+                </el-input>
+              </template>
+            </el-table-column>
+            <el-table-column
+              label="总价"
+              align="center"
+              prop="totalPrice"
+              :show-overflow-tooltip="true"
+            >
+              <template slot-scope="{ row, $index }">
+                {{
+                  $math.format(
+                    (row.measureQuantity || 0) * (row.unitPrice || 0),
+                    14
+                  )
+                }}
+              </template>
+            </el-table-column>
+            <!-- <el-table-column
+          label="采购原因"
+          align="center"
+          prop="purpose"
+          :show-overflow-tooltip="true"
+        ></el-table-column> -->
+            <el-table-column
+              label="仓库"
+              prop="warehouseName"
+              :show-overflow-tooltip="true"
+              width="200"
+            >
+            </el-table-column>
+          </el-table>
+        </div>
+      </div>
+      <div class="submit">
+        <el-button type="primary" @click="confirm">保存</el-button>
+      </div>
+    </el-card>
+  </div>
+</template>
+
+<script>
+  import storageApi from '@/api/warehouseManagement';
+
+  export default {
+    props: {},
+    data() {
+      return {
+        newColumns: [],
+        dialogVisible: false,
+        productList: []
+      };
+    },
+    created() {
+      this.getFieldModel();
+      console.log(this.$route.query.ids);
+      if (this.$route.query.ids) {
+        this.getInboundDetail();
+      }
+    },
+    methods: {
+      // 表格样式
+      rowClass({ row, column, rowIndex, columnIndex }) {
+        if (rowIndex === 1) {
+          return {
+            display: 'none',
+            background: '#EEEEEE'
+          };
+        }
+        return { background: '#0000' };
+      },
+      // 获取动态表头
+      getFieldModel() {
+        storageApi.fieldModel({ fieldModel: 't_main_category' }).then((res) => {
+          let newRes = res.map((m) => {
+            return {
+              prop: 'extField.' + m.prop,
+              label: m.label,
+              align: 'center',
+              showOverflowTooltip: true
+            };
+          });
+          this.newColumns = [...newRes];
+        });
+      },
+      confirm() {
+        let params = this.productList.map((item) => {
+          return {
+            outInDetailId: item.id,
+            unitPrice: item.unitPrice
+          };
+        });
+        storageApi.unitPriceMaintenance(params).then((data) => {
+          if (data.code == 0) {
+            this.$message.success('修改成功');
+            this.$router.push({
+              path: '/warehouseManagement/stockManagement'
+            });
+            /*   this.dialogVisible = false; */
+          } else {
+            this.$message.error('修改失败');
+          }
+        });
+      },
+      async getInboundDetail() {
+        const res = await storageApi.getInboundDetailsById(
+          this.$route.query.ids
+        );
+        this.productList = res.outInDetailList;
+        this.dialogVisible = true;
+      }
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .submit {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    padding: 20px;
+    box-sizing: border-box;
+  }
+  ::v-deep .warning-row {
+    color: red;
+  }
+  ::v-deep .page-title {
+    border-bottom: none;
+  }
+  ::v-deep .page-title-div {
+    width: 100%;
+  }
+  .stepsStatus {
+    width: 40%;
+    margin: 0 auto;
+  }
+  .el-form-item {
+    margin-bottom: 10px;
+  }
+  .p20 {
+    padding: 20px;
+  }
+  .flex {
+    display: flex;
+  }
+  .title {
+    justify-content: space-between;
+    border-bottom: 1px solid #ccc;
+    padding-bottom: 5px;
+    span {
+      font-size: 16px;
+    }
+    .col {
+      padding-left: 40px;
+      font-size: 14px;
+      color: #aaaaaa;
+    }
+  }
+  .degree {
+    margin-right: 10px;
+    padding: 0px 15px;
+    color: #fff;
+    font-size: 13px;
+    line-height: 23px;
+    border-radius: 23px;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    span {
+      width: 5px;
+      height: 5px;
+      border-radius: 100%;
+      margin-right: 6px;
+      background-color: #fff;
+    }
+  }
+  .red {
+    background-color: rgb(163, 0, 20);
+  }
+  .blue {
+    background-color: #1989fa;
+  }
+  .createdInfo {
+    justify-content: space-around;
+    margin-top: 10px;
+    font-size: 14px;
+    .col {
+      color: #6e6e6e;
+      padding-right: 10px;
+    }
+  }
+  .mt40 {
+    margin-top: 40px;
+  }
+
+  .custSteps {
+    margin-top: 20px;
+    margin-left: 70px;
+    .box {
+      width: 158px;
+      border: 1px solid #ccc;
+      padding: 10px;
+      flex-direction: row;
+      flex-wrap: wrap;
+      // justify-content: space-between;
+      font-size: 12px;
+      color: #9e9e9e;
+      .x {
+        width: 20px;
+        height: 15px;
+        margin-right: 5px;
+      }
+      .q {
+        background-color: #d0e4d5;
+      }
+      .b {
+        background-color: #1989fa;
+      }
+      .g {
+        background-color: #157a2c;
+      }
+      .r {
+        background-color: #a30014;
+      }
+      .a {
+        align-items: center;
+        margin-bottom: 10px;
+      }
+      .mr10 {
+        margin-right: 10px;
+      }
+      .mb0 {
+        margin-bottom: 0;
+      }
+    }
+    .stepsInfo {
+      // flex: 1;
+      width: 483px;
+    }
+  }
+  .mt20 {
+    margin-top: 20px;
+  }
+  .content-detail {
+    overflow: hidden;
+  }
+  .executor {
+    font-size: 14px;
+    .col {
+      color: #6e6e6e;
+      padding-right: 10px;
+    }
+  }
+  .result {
+    justify-content: space-around;
+  }
+  .mr20 {
+    margin-right: 20px;
+  }
+  .details {
+    font-size: 14px;
+    margin-bottom: 10px;
+  }
+
+  .customSteps {
+    margin-top: 40px;
+    font-size: 14px;
+    margin-left: 80px;
+    .time {
+      font-size: 12px;
+      color: #6e6e6e;
+      margin-right: 20px;
+      position: relative;
+      &::after {
+        content: '';
+        width: 1px;
+        height: 100%;
+        background-color: #157a2c;
+        position: absolute;
+        right: -26px;
+      }
+    }
+    .flex:last-child {
+      .time {
+        &::after {
+          display: none;
+        }
+      }
+    }
+    .round {
+      margin-right: 20px;
+      width: 10px;
+      height: 10px;
+      border-radius: 100%;
+      background-color: #157a2c;
+      position: relative;
+      span {
+        position: absolute;
+        top: 50%;
+        left: 50%;
+        width: 4px;
+        height: 4px;
+        background-color: #fff;
+        border-radius: 100%;
+        transform: translate(-2px, -2px);
+      }
+    }
+    .text {
+      .info {
+        margin-top: 10px;
+        width: 955px;
+        background-color: #f0f3f3;
+        overflow: hidden;
+        padding: 10px;
+        margin-bottom: 10px;
+      }
+    }
+  }
+  .switch_left li {
+    border-right: 1px solid rgba(222, 222, 222, 1);
+    border-left: 1px solid rgba(222, 222, 222, 1);
+  }
+</style>

+ 6 - 6
src/views/warehouseManagement/warehouseDefinition/details.vue

@@ -56,23 +56,23 @@
                 </el-form-item>
               </el-col>
               <el-col :span="8">
-                <el-form-item label="权属部门">
+                <el-form-item label="权属部门:">
                   <span>{{ warehouseInfo.departmentName }}</span>
                 </el-form-item>
               </el-col>
               <el-col :span="8">
-                <el-form-item label="仓管员">
+                <el-form-item label="仓管员:">
                   <span>{{ warehouseInfo.ownerName }}</span>
                 </el-form-item>
               </el-col>
               <el-col :span="8">
-                <el-form-item label="联系方式">
+                <el-form-item label="联系方式:">
                   <span>{{ warehouseInfo.contact }}</span>
                 </el-form-item>
               </el-col>
 
               <el-col :span="8">
-                <el-form-item label="仓库位置">
+                <el-form-item label="仓库位置:">
                   <span
                     >{{ warehouseInfo.province }} / {{ warehouseInfo.city }} /
                     {{ warehouseInfo.area }}</span
@@ -80,12 +80,12 @@
                 </el-form-item>
               </el-col>
               <el-col :span="8">
-                <el-form-item label="详细地址">
+                <el-form-item label="详细地址:">
                   <span>{{ warehouseInfo.address }}</span>
                 </el-form-item>
               </el-col>
               <el-col :span="8">
-                <el-form-item label="创建人">
+                <el-form-item label="创建人:">
                   <span>{{ warehouseInfo.createUserName }}</span>
                 </el-form-item>
               </el-col>