Explorar el Código

Merge branch 'dev' of http://110.41.163.243:9980/kd-aiot/kd-aiot-frontend into dev

ysy hace 1 año
padre
commit
9f4309fdec

+ 10 - 0
src/api/material/list.js

@@ -109,3 +109,13 @@ export async function importCategorySparePart(data) {
   }
   return Promise.reject(new Error(res.data.message));
 }
+// 删除包装规格
+export async function deletePackageDisposition(data) {
+  const res = await request.delete(`/main/categoryPackageDisposition/delete`, {
+    data
+  });
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 341 - 4
src/views/material/product/components/WarehouseInfo.vue

@@ -77,26 +77,344 @@
           </el-form-item>
         </el-col>
       </el-row>
+      <div class="rules_box">
+        <el-button type="primary" @click="addPackingRules"
+          >添加包装组</el-button
+        >
+        <el-tabs
+          v-model="packingRules"
+          editable
+          @tab-click="handleClick"
+          @edit="handleTabsEdit"
+        >
+          <el-tab-pane
+            v-for="(items, indexs) in packagingSpecification"
+            :label="items.name"
+            :name="items.code"
+          >
+            <div class="rules_box_tabs">
+              <el-row :gutter="24">
+                <el-col :span="8">
+                  <el-form-item label="编码">
+                    <el-input disabled v-model="items.code"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="8">
+                  <el-form-item label="名称">
+                    <el-input v-model="items.name"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="8">
+                  <el-form-item label="是否启用">
+                    <el-radio-group
+                      v-model="items.status"
+                      @input="statusChange($event, indexs)"
+                    >
+                      <el-radio :label="1">是</el-radio>
+                      <el-radio :label="0">否</el-radio>
+                    </el-radio-group>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                  <el-form-item label="最小包装单元">
+                    <el-input
+                      class="packingUnit"
+                      v-model="items.minPackageCell"
+                      placeholder="请输入内容"
+                    ></el-input>
+                    <div class="packingUnit">
+                      <DictSelection
+                        dictName="计量单位"
+                        clearable
+                        v-model="items.packageUnit"
+                        :isProhibit="true"
+                      >
+                      </DictSelection>
+                    </div>
+                    <span>/</span>
+                    <div class="lastPackingUnit">
+                      <DictSelection
+                        dictName="计量单位"
+                        clearable
+                        v-model="items.minConversionUnit"
+                      >
+                      </DictSelection>
+                    </div>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                  <el-form-item label="内包装单元">
+                    <el-input
+                      class="packingUnit"
+                      v-model="items.inPackageCell"
+                      placeholder="请输入内容"
+                    ></el-input>
+                    <div class="packingUnit">
+                      <DictSelection
+                        dictName="计量单位"
+                        clearable
+                        v-model="items.minConversionUnit"
+                      >
+                      </DictSelection>
+                    </div>
+                    <span>/</span>
+                    <div class="lastPackingUnit">
+                      <DictSelection
+                        dictName="计量单位"
+                        clearable
+                        v-model="items.inConversionUnit"
+                      >
+                      </DictSelection>
+                    </div>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                  <el-form-item label="外包装单元">
+                    <el-input
+                      class="packingUnit"
+                      v-model="items.outPackageCell"
+                      placeholder="请输入内容"
+                    ></el-input>
+                    <div class="packingUnit">
+                      <DictSelection
+                        dictName="计量单位"
+                        clearable
+                        v-model="items.inConversionUnit"
+                      >
+                      </DictSelection>
+                    </div>
+                    <span>/</span>
+                    <div class="lastPackingUnit">
+                      <DictSelection
+                        dictName="计量单位"
+                        clearable
+                        v-model="items.outConversionUnit"
+                      >
+                      </DictSelection>
+                    </div>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+            </div>
+          </el-tab-pane>
+        </el-tabs>
+      </div>
     </el-form>
+    <el-dialog title="添加包装组" :visible.sync="dialogVisible" width="50%">
+      <el-form label-width="120px" ref="form" :model="ruleItem">
+        <el-row :gutter="24">
+          <el-col :span="12">
+            <el-form-item label="包装名称">
+              <el-input v-model="ruleItem.name"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="包装编码">
+              <el-input disabled v-model="ruleItem.code"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="ruleConig">确 定</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
 <script>
   import deptSelect from '@/components/CommomSelect/dept-select.vue';
   import personSelect from '@/components/CommomSelect/person-select.vue';
+  import { deletePackageDisposition } from '@/api/material/list.js';
+  import { getCode } from '@/api/codeManagement/index.js';
   export default {
+    components: { deptSelect, personSelect },
     props: {
       form: {
         type: Object,
-        default: {}
+        default: () => {}
+      },
+      packageDispositionVOList: {
+        type: Array,
+        default: () => []
+      },
+      measuringUnit: {
+        type: String,
+        default() {
+          return '';
+        }
+      }
+    },
+    watch: {
+      measuringUnit(val) {
+        this.packagingSpecification = this.packagingSpecification.map(
+          (item) => {
+            return { ...item, packageUnit: val };
+          }
+        );
+      },
+      packagingSpecification: {
+        handler(val) {
+          this.$emit('change', val);
+        },
+        deep: true
+      },
+      packageDispositionVOList: {
+        handler(packageDispositionVOList) {
+          if (packageDispositionVOList.length > 0) {
+            let codeList = new Set(
+              packageDispositionVOList.map((item) => item.code)
+            );
+            console.log(codeList);
+            let arr = [];
+            codeList.forEach((code) => {
+              let obj = {};
+              let filters = packageDispositionVOList.filter(
+                (item) => item.code == code
+              );
+              this.idsList.push({
+                code,
+                ids: filters.map((item) => item.id)
+              });
+              filters.map((item) => {
+                switch (item.sort) {
+                  case '0':
+                    obj.code = item.code;
+                    obj.name = item.name;
+                    obj.status = Number(item.status);
+                    break;
+                  case '1':
+                    obj.minPackageCell = item.packageCell;
+                    obj.packageUnit = item.packageUnit;
+                    obj.minConversionUnit = item.conversionUnit;
+                  case '2':
+                    obj.inPackageCell = item.packageCell;
+                    obj.inConversionUnit = item.conversionUnit;
+                    break;
+                  case '3':
+                    obj.outPackageCell = item.packageCell;
+                    obj.outConversionUnit = item.conversionUnit;
+                    break;
+                }
+              });
+              arr.push(obj);
+            });
+            this.packagingSpecification = arr;
+            this.packingRules = arr[0].code;
+          } else {
+            this.packagingSpecification = [];
+          }
+        },
+        deep: true
       }
     },
-    components: { deptSelect, personSelect },
     data() {
-      return {};
+      return {
+        idsList: [],
+        packagingSpecification: [],
+        packingRules: '',
+        dialogVisible: false,
+        ruleItem: {
+          code: '',
+          name: '',
+          status: 0,
+          minPackageCell: '',
+          packageUnit: this.measuringUnit,
+          minConversionUnit: '',
+          inPackageCell: '',
+          inConversionUnit: '',
+          outPackageCell: '',
+          inConversionUnit: '',
+          outConversionUnit: ''
+        },
+        option: [
+          {
+            label: 'KG',
+            value: 'KG'
+          }
+        ]
+      };
+    },
+    created() {
+      console.log(
+        'this.packageDispositionVOList-',
+        this.packageDispositionVOList
+      );
     },
-
     methods: {
+      statusChange(value, indexs) {
+        console.log(value);
+        console.log(this.packagingSpecification);
+        if (value == 1) {
+          this.packagingSpecification = this.packagingSpecification.map(
+            (item, index) => {
+              if (indexs == index) {
+                item.status = 1;
+              } else {
+                item.status = 0;
+              }
+              return item;
+            }
+          );
+        }
+      },
+      ruleConig() {
+        console.log(this.ruleItem);
+        if (this.packagingSpecification.length == 0) {
+          this.ruleItem.status = 1;
+        } else {
+          this.ruleItem.status = 0;
+        }
+        this.packagingSpecification.push(this.ruleItem);
+        this.dialogVisible = false;
+        this.packingRules = this.ruleItem.code;
+      },
+      async addPackingRules() {
+        let code = await getCode('package_disposition');
+        this.ruleItem = {
+          code: code,
+          name: '',
+          status: 0,
+          minPackageCell: '',
+          packageUnit: this.measuringUnit,
+          minConversionUnit: '',
+          inPackageCell: '',
+          inConversionUnit: '',
+          outPackageCell: '',
+          inConversionUnit: '',
+          outConversionUnit: ''
+        };
+        this.dialogVisible = true;
+      },
+      handleClick(val) {
+        console.log(val);
+        this.packingRules = val.name;
+      },
+      // 删除tab
+      handleTabsEdit(targetName, action) {
+        if (action == 'remove') {
+          let index = this.packagingSpecification.findIndex(
+            (item) => item.code == targetName
+          );
+          let idsIndex = this.idsList.findIndex(
+            (item) => item.code == targetName
+          );
+          if (this.idsList.length > 0 && idsIndex > -1) {
+            let ids = this.idsList.filter(
+              (item) => item.code == this.packagingSpecification[index].code
+            )[0].ids;
+            deletePackageDisposition(ids).then(() => {
+              this.idsList = this.idsList.filter(
+                (item) => item.code != this.packagingSpecification[index].code
+              );
+              this.packagingSpecification.splice(index, 1);
+            });
+          } else {
+            this.packagingSpecification.splice(index, 1);
+          }
+        }
+      },
       inventoryModeChange(value) {
         if (value == 1) {
           this.form.isUnpack = 1;
@@ -151,4 +469,23 @@
       margin-left: 15px;
     }
   }
+  .rules_box {
+    margin: 0px 20px 20px 20px;
+    .rules_box_tabs {
+      margin: 20px 0;
+      :deep(.el-form-item__content) {
+        > div {
+          display: inline-block;
+        }
+      }
+    }
+  }
+  .packingUnit {
+    width: 200px;
+    margin-right: 10px;
+  }
+  .lastPackingUnit {
+    width: 200px;
+    margin-left: 10px;
+  }
 </style>

+ 473 - 368
src/views/material/product/detail.vue

@@ -10,8 +10,7 @@
         <headerTitle title="基本信息">
           <el-button @click="cancel">返回</el-button>
           <el-button type="primary" @click="submit" :loading="loading"
-          >保存
-          </el-button
+            >保存</el-button
           >
         </headerTitle>
 
@@ -38,19 +37,19 @@
 
           <el-col :span="8" v-else key="2">
             <el-form-item label="编码" prop="code">
-              <el-input v-model="form.code" :disabled="status == 0"/>
+              <el-input v-model="form.code" :disabled="status == 0" />
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
             <el-form-item label="名称" prop="name">
-              <el-input v-model="form.name"/>
+              <el-input v-model="form.name" />
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
             <el-form-item label="图号/件号" prop="imgCode">
-              <el-input v-model="form.imgCode"/>
+              <el-input v-model="form.imgCode" />
             </el-form-item>
           </el-col>
 
@@ -90,18 +89,18 @@
 
           <el-col :span="8">
             <el-form-item label="牌号" prop="brandNum">
-              <el-input v-model="form.brandNum"/>
+              <el-input v-model="form.brandNum" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="型号" prop="modelType">
-              <el-input v-model="form.modelType"/>
+              <el-input v-model="form.modelType" />
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
             <el-form-item label="规格" prop="specification">
-              <el-input v-model="form.specification"/>
+              <el-input v-model="form.specification" />
             </el-form-item>
           </el-col>
 
@@ -141,7 +140,7 @@
           <el-col :span="8">
             <el-form-item label="体积">
               <div class="form-line">
-                <el-input v-model="form.volume"/>
+                <el-input v-model="form.volume" />
                 <DictSelection
                   class="line-select"
                   dictName="体积单位"
@@ -153,11 +152,10 @@
             </el-form-item>
           </el-col>
 
-
           <el-col :span="8">
             <el-form-item label="毛重">
               <div class="form-line">
-                <el-input v-model="form.roughWeight"/>
+                <el-input v-model="form.roughWeight" />
               </div>
             </el-form-item>
           </el-col>
@@ -165,7 +163,7 @@
           <el-col :span="8">
             <el-form-item label="净重">
               <div class="form-line">
-                <el-input v-model="form.netWeight"/>
+                <el-input v-model="form.netWeight" />
               </div>
             </el-form-item>
           </el-col>
@@ -194,13 +192,25 @@
             <el-form-item :label="f.label">
               <template>
                 <div class="form-line">
-                  <el-input v-model="form.extField[f.prop]"/>
+                  <div
+                    style="width: 100%"
+                    v-if="f.prop === 'packingSpecification'"
+                  >
+                    <template v-if="form.extField.packingSpecification">
+                      <el-tag
+                        v-for="item in form.extField.packingSpecification.split(
+                          ','
+                        )"
+                        >{{ item }}</el-tag
+                      >
+                    </template>
+                    <el-input v-else disabled v-model="form.extField[f.prop]" />
+                  </div>
+                  <el-input v-else v-model="form.extField[f.prop]" />
                 </div>
               </template>
             </el-form-item>
           </el-col>
-
-
         </el-row>
       </el-form>
     </el-card>
@@ -213,23 +223,29 @@
       @chooseCode="chooseCode"
     ></CodeDialog>
     <!-- 分类选择弹窗 -->
-    <CategoryDialog ref="categoryRefs" @chooseCategory="confirmCategory"/>
+    <CategoryDialog ref="categoryRefs" @chooseCategory="confirmCategory" />
     <!-- 仓储配置 -->
-    <WarehouseInfo ref="warehouseRefs" :form="categoryWms"/>
+    <WarehouseInfo
+      ref="warehouseRefs"
+      :form="categoryWms"
+      :measuringUnit="form.measuringUnit"
+      :packageDispositionVOList="packageDispositionVOList"
+      @change="changePackagingSpecification"
+    />
     <!-- 生产信息 -->
-    <ProductionInfo ref="productionRefs" :form="categoryMes"/>
+    <ProductionInfo ref="productionRefs" :form="categoryMes" />
     <!-- 计划 -->
-    <PlanInfo ref="planRefs" :form="categoryAps"/>
+    <PlanInfo ref="planRefs" :form="categoryAps" />
     <!-- 质量配置 -->
-    <QualityInfo ref="qualityRefs" :form="categoryQms"/>
+    <QualityInfo ref="qualityRefs" :form="categoryQms" />
     <!-- 舟皿信息 -->
-    <BoatInfo ref="qualityRefs" :form="categoryPallet"/>
+    <BoatInfo ref="qualityRefs" :form="categoryPallet" />
     <!-- 周转车信息 -->
-    <TurnoverInfo ref="turnoverRefs" :form="categoryVehicle"/>
+    <TurnoverInfo ref="turnoverRefs" :form="categoryVehicle" />
     <!-- 模具信息 -->
-    <MoldInfo ref="moldRefs" :form="categoryMold"/>
+    <MoldInfo ref="moldRefs" :form="categoryMold" />
     <!-- 备注信息 -->
-    <RemarkInfo ref="remarkRefs" :form="remarkform"/>
+    <RemarkInfo ref="remarkRefs" :form="remarkform" />
     <!-- 关联信息 -->
     <linkMsg
       ref="linkMsgRef"
@@ -241,396 +257,485 @@
 </template>
 
 <script>
-import GroupDialog from './components/GroupDialog.vue';
-import CodeDialog from './components/codeDialog.vue';
-import CategoryDialog from './components/CategoryDialog.vue';
-import WarehouseInfo from './components/WarehouseInfo.vue';
-import ProcureInfo from './components/ProcureInfo.vue';
-import ProductionInfo from './components/ProductionInfo.vue';
-import PlanInfo from './components/PlanInfo.vue';
-import SalesInfo from './components/SalesInfo.vue';
-import QualityInfo from './components/QualityInfo.vue';
-import BoatInfo from './components/BoatInfo.vue';
-import TurnoverInfo from './components/TurnoverInfo.vue';
-import MoldInfo from './components/MoldInfo.vue';
-import RemarkInfo from './components/RemarkInfo.vue';
-import deptSelect from '@/components/CommomSelect/dept-select.vue';
-import personSelect from '@/components/CommomSelect/person-select.vue';
-import linkMsg from './components/link-msg.vue';
-import {getDetails} from '@/api/classifyManage/itemInformation';
-import {getByCode} from '@/api/system/dictionary-data';
-import {getCode, rootCategoryCode, fieldModel} from '@/api/codeManagement';
-
-import {addMaterial} from '@/api/material/list.js';
-import {deepClone} from '@/utils/index';
-import {finishPageTab, reloadPageTab} from '@/utils/page-tab-util';
-
-export default {
-  name: 'ManageMaterial',
-  components: {
-    linkMsg,
-    GroupDialog,
-    deptSelect,
-    personSelect,
-    WarehouseInfo,
-    ProcureInfo,
-    ProductionInfo,
-    PlanInfo,
-    SalesInfo,
-    QualityInfo,
-    BoatInfo,
-    TurnoverInfo,
-    MoldInfo,
-    RemarkInfo,
-    CategoryDialog,
-    CodeDialog
-  },
-  data() {
-    return {
-      loading: false,
-      levelOptions: [
-        {
-          label: '特级',
-          value: '特级'
+  import GroupDialog from './components/GroupDialog.vue';
+  import CodeDialog from './components/codeDialog.vue';
+  import CategoryDialog from './components/CategoryDialog.vue';
+  import WarehouseInfo from './components/WarehouseInfo.vue';
+  import ProcureInfo from './components/ProcureInfo.vue';
+  import ProductionInfo from './components/ProductionInfo.vue';
+  import PlanInfo from './components/PlanInfo.vue';
+  import SalesInfo from './components/SalesInfo.vue';
+  import QualityInfo from './components/QualityInfo.vue';
+  import BoatInfo from './components/BoatInfo.vue';
+  import TurnoverInfo from './components/TurnoverInfo.vue';
+  import MoldInfo from './components/MoldInfo.vue';
+  import RemarkInfo from './components/RemarkInfo.vue';
+  import deptSelect from '@/components/CommomSelect/dept-select.vue';
+  import personSelect from '@/components/CommomSelect/person-select.vue';
+  import linkMsg from './components/link-msg.vue';
+  import { getDetails } from '@/api/classifyManage/itemInformation';
+  import { getByCode } from '@/api/system/dictionary-data';
+  import { getCode, rootCategoryCode, fieldModel } from '@/api/codeManagement';
+
+  import { addMaterial } from '@/api/material/list.js';
+  import { deepClone } from '@/utils/index';
+  import { finishPageTab, reloadPageTab } from '@/utils/page-tab-util';
+
+  export default {
+    name: 'ManageMaterial',
+    components: {
+      linkMsg,
+      GroupDialog,
+      deptSelect,
+      personSelect,
+      WarehouseInfo,
+      ProcureInfo,
+      ProductionInfo,
+      PlanInfo,
+      SalesInfo,
+      QualityInfo,
+      BoatInfo,
+      TurnoverInfo,
+      MoldInfo,
+      RemarkInfo,
+      CategoryDialog,
+      CodeDialog
+    },
+    data() {
+      return {
+        packagingSpecificationList: [],
+        loading: false,
+        levelOptions: [
+          {
+            label: '特级',
+            value: '特级'
+          },
+          {
+            label: '一级',
+            value: '一级'
+          },
+          {
+            label: '二级',
+            value: '二级'
+          },
+          {
+            label: '三级',
+            value: '三级'
+          }
+        ],
+        form: {
+          categoryLevelGroupName: '',
+          categoryLevelName: '',
+          isConsumable: 1,
+
+          extField: {}
         },
-        {
-          label: '一级',
-          value: '一级'
+
+        remarkform: {
+          remarkAttach: []
         },
-        {
-          label: '二级',
-          value: '二级'
+        categoryAps: {},
+        categoryMes: {},
+        categoryMold: {},
+        categoryPallet: {},
+        categoryQms: {},
+        categoryVehicle: {},
+        categoryWms: {
+          isUnpack: 1
         },
-        {
-          label: '三级',
-          value: '三级'
-        }
-      ],
-      form: {
-        categoryLevelGroupName: '',
-        categoryLevelName: '',
-        isConsumable: 1,
+        packageDispositionVOList: [],
+        categoryLevelPathId: null,
+
+        dictList: [],
+
+        fileList: [],
+        // 表单验证规则
+        rules: {
+          categoryLevelGroupName: [
+            { required: true, message: '请选择所属物料组', trigger: 'change' }
+          ],
+          code: [{ required: true, message: '请输入编码', trigger: 'blur' }],
+          name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
+          categoryLevelName: [
+            { required: true, message: '请选择所属分类', trigger: 'change' }
+          ],
+          measuringUnit: [
+            { required: true, message: '请选择计量单位', trigger: 'change' }
+          ],
+
+          weightUnit: [
+            { required: true, message: '请选择重量单位', trigger: 'change' }
+          ],
+
+          packingUnit: [
+            { required: true, message: '请选择包装单位', trigger: 'change' }
+          ],
+
+          netWeight: [
+            { required: true, message: '请输入净重', trigger: 'blur' }
+          ]
+        },
+        PathInfo: {},
+        id: null,
 
-        extField: {}
-      },
+        ruleCode: null,
+        codeShow: false,
 
-      remarkform: {
-        remarkAttach: []
-      },
-      categoryAps: {},
-      categoryMes: {},
-      categoryMold: {},
-      categoryPallet: {},
-      categoryQms: {},
-      categoryVehicle: {},
-      categoryWms: {
-        isUnpack: 1
+        status: null
+      };
+    },
+    watch: {
+      '$route.query.id': {
+        handler(id) {
+          console.log('id-------------', id);
+          if (id) {
+            this._getDetails();
+          }
+        },
+        deep: true,
+        immediate: true
+      }
+    },
+    async created() {
+      this.getFieldModel();
+      this.status = this.$route.query.status;
+      // if (this.$route.query.id) {
+      //   this._getDetails();
+      // }
+      this.getDictList('productionType');
+    },
+    methods: {
+      changePackagingSpecification(val) {
+        this.packagingSpecificationList = val;
       },
+      async _getDetails() {
+        const data = await getDetails(this.$route.query.id);
+        const info = deepClone(data);
 
-      categoryLevelPathId: null,
-
-      dictList: [],
-
-      fileList: [],
-      // 表单验证规则
-      rules: {
-        categoryLevelGroupName: [
-          {required: true, message: '请选择所属物料组', trigger: 'change'}
-        ],
-        code: [{required: true, message: '请输入编码', trigger: 'blur'}],
-        name: [{required: true, message: '请输入名称', trigger: 'blur'}],
-        categoryLevelName: [
-          {required: true, message: '请选择所属分类', trigger: 'change'}
-        ],
-        measuringUnit: [
-          {required: true, message: '请选择计量单位', trigger: 'change'}
-        ],
+        this.form = {
+          ...info.category
+        };
+        let productType_ = this.form.produceType;
+        if (productType_ != undefined && productType_ != null) {
+          let intproductType = [];
+          for (const [index, value] of productType_.entries()) {
+            intproductType.push(value.toString());
+          }
+          this.form.produceType = intproductType;
+        }
 
-        weightUnit: [
-          {required: true, message: '请选择重量单位', trigger: 'change'}
-        ],
+        this.categoryLevelPathId = info.category.categoryLevelPathIdParent;
+        this.judgeSet(info);
 
-        packingUnit: [
-          {required: true, message: '请选择包装单位', trigger: 'change'}
-        ],
+        if (this.status == 1) {
+          rootCategoryCode(this.categoryLevelPathId).then((res) => {
+            this.$set(this.form, 'code', res);
+          });
+        }
 
-        netWeight: [
-          {required: true, message: '请输入净重', trigger: 'blur'}
-        ]
+        this.$forceUpdate();
       },
-      PathInfo: {},
-      id: null,
-
-      ruleCode: null,
-      codeShow: false,
-
-      status: null
-    };
-  },
-
-  async created() {
-    this.getFieldModel();
-    this.status = this.$route.query.status;
-
-    if (this.$route.query.id) {
-      this._getDetails();
-    }
-    this.getDictList('productionType');
-  },
-  methods: {
-    async _getDetails() {
-      const data = await getDetails(this.$route.query.id);
-      const info = deepClone(data);
-
-      this.form = {
-        ...info.category
-      };
-      let productType_ = this.form.produceType;
-      if (productType_ != undefined && productType_ != null) {
-        let intproductType = [];
-        for (const [index, value] of productType_.entries()) {
-          intproductType.push(value.toString());
+      // 判断字段类型并赋值
+      judgeSet(info) {
+        console.log('info-------', info);
+        if (typeof info.categoryAps == 'string') {
+          this.categoryAps = {};
+        } else {
+          this.categoryAps = info.categoryAps;
         }
-        this.form.produceType = intproductType;
-      }
-
-      this.categoryLevelPathId = info.category.categoryLevelPathIdParent;
-      this.judgeSet(info);
-
-      if (this.status == 1) {
-        rootCategoryCode(this.categoryLevelPathId).then((res) => {
-          this.$set(this.form, 'code', res);
-        });
-      }
-
-      this.$forceUpdate();
-    },
-    // 判断字段类型并赋值
-    judgeSet(info) {
-      if (typeof info.categoryAps == 'string') {
-        this.categoryAps = {};
-      } else {
-        this.categoryAps = info.categoryAps;
-      }
-      if (typeof info.categoryMes == 'string') {
-        this.categoryMes = {};
-      } else {
-        this.categoryMes = info.categoryMes;
-      }
-      if (typeof info.categoryMold == 'string') {
-        this.categoryMold = {};
-      } else {
-        this.categoryMold = info.categoryMold;
-      }
-      if (typeof info.categoryPallet == 'string') {
-        this.categoryPallet = {};
-      } else {
-        this.categoryPallet = info.categoryPallet;
-      }
-      if (typeof info.categoryQms == 'string') {
-        this.categoryQms = {};
-      } else {
-        this.categoryQms = info.categoryQms;
-      }
-      if (typeof info.categoryVehicle == 'string') {
-        this.categoryVehicle = {};
-      } else {
-        this.categoryVehicle = info.categoryVehicle;
-      }
-      if (typeof info.categoryWms == 'string') {
-        this.categoryWms = {};
-      } else {
-        this.categoryWms = info.categoryWms;
-      }
-    },
+        if (typeof info.categoryMes == 'string') {
+          this.categoryMes = {};
+        } else {
+          this.categoryMes = info.categoryMes;
+        }
+        if (typeof info.categoryMold == 'string') {
+          this.categoryMold = {};
+        } else {
+          this.categoryMold = info.categoryMold;
+        }
+        if (typeof info.categoryPallet == 'string') {
+          this.categoryPallet = {};
+        } else {
+          this.categoryPallet = info.categoryPallet;
+        }
+        if (typeof info.categoryQms == 'string') {
+          this.categoryQms = {};
+        } else {
+          this.categoryQms = info.categoryQms;
+        }
+        if (typeof info.categoryVehicle == 'string') {
+          this.categoryVehicle = {};
+        } else {
+          this.categoryVehicle = info.categoryVehicle;
+        }
+        if (typeof info.categoryWms == 'string') {
+          this.categoryWms = {};
+        } else {
+          this.categoryWms = info.categoryWms;
+        }
+        if (typeof info.packageDispositionVOList == 'string') {
+          this.packageDispositionVOList = [];
+        } else {
+          this.packageDispositionVOList = info.packageDispositionVOList;
+          console.log(
+            'this.packageDispositionVOList---!!!----',
+            this.packageDispositionVOList
+          );
+        }
+      },
 
-    getFieldModel() {
-      fieldModel({fieldModel: 't_main_category'}).then((res) => {
-        this.fileList = res;
+      getFieldModel() {
+        fieldModel({ fieldModel: 't_main_category' }).then((res) => {
+          this.fileList = res;
 
-        this.fileList.forEach((f) => {
-          this.$set(this.form.extField, f.prop, ''); // 初始化动态模型属性
+          this.fileList.forEach((f) => {
+            this.$set(this.form.extField, f.prop, ''); // 初始化动态模型属性
+          });
         });
-      });
-    },
+      },
 
-    // 确定分类
-    async confirmCategory(node, title, PathInfo, ruleCode) {
-      if (this.status != 0) {
-        this.$set(this.form, 'code', null);
-      }
-      this.categoryLevelPathId = PathInfo.categoryLevelPathId.split(',')[0];
-
-      if (title == '选择产品分类') {
-        this.$set(this.form, 'productCategoryLevelName', node.name);
-        this.$set(this.form, 'productCategoryLevelId', node.id);
-      } else {
-        this.$set(this.form, 'categoryLevelName', node.name);
-        this.$set(this.form, 'categoryLevelId', node.id);
-        this.$set(this.form, 'categoryLevelPath', node.name);
-        this.$set(this.form, 'categoryLevelPathId', node.id);
-        this.PathInfo = PathInfo;
-
-        this.ruleCode = ruleCode;
-
-        if (ruleCode && ruleCode != '自定义' && this.status != 0) {
-          const code = await getCode(ruleCode);
-          this.$set(this.form, 'code', code);
+      // 确定分类
+      async confirmCategory(node, title, PathInfo, ruleCode) {
+        if (this.status != 0) {
+          this.$set(this.form, 'code', null);
+        }
+        this.categoryLevelPathId = PathInfo.categoryLevelPathId.split(',')[0];
+
+        if (title == '选择产品分类') {
+          this.$set(this.form, 'productCategoryLevelName', node.name);
+          this.$set(this.form, 'productCategoryLevelId', node.id);
+        } else {
+          this.$set(this.form, 'categoryLevelName', node.name);
+          this.$set(this.form, 'categoryLevelId', node.id);
+          this.$set(this.form, 'categoryLevelPath', node.name);
+          this.$set(this.form, 'categoryLevelPathId', node.id);
+          this.PathInfo = PathInfo;
+
+          this.ruleCode = ruleCode;
+
+          if (ruleCode && ruleCode != '自定义' && this.status != 0) {
+            const code = await getCode(ruleCode);
+            this.$set(this.form, 'code', code);
+          }
         }
-      }
 
-      this.$forceUpdate();
-    },
+        this.$forceUpdate();
+      },
 
-    async getDictList(code) {
-      let {data: res} = await getByCode(code);
-      this.dictList = res.map((item) => {
-        let values = Object.keys(item);
-        return {
-          value: Number(values[0]),
-          label: item[values[0]]
-        };
-      });
-    },
+      async getDictList(code) {
+        let { data: res } = await getByCode(code);
+        this.dictList = res.map((item) => {
+          let values = Object.keys(item);
+          return {
+            value: Number(values[0]),
+            label: item[values[0]]
+          };
+        });
+      },
 
-    openCategory() {
-      this.$refs.categoryRefs.open();
-    },
+      openCategory() {
+        this.$refs.categoryRefs.open();
+      },
 
-    openCode() {
-      this.codeShow = true;
-    },
+      openCode() {
+        this.codeShow = true;
+      },
 
-    chooseCode(code) {
-      this.$set(this.form, 'code', code);
-      this.codeShow = false;
-      this.$forceUpdate();
-    },
+      chooseCode(code) {
+        this.$set(this.form, 'code', code);
+        this.codeShow = false;
+        this.$forceUpdate();
+      },
 
-    cancel() {
-      finishPageTab();
-      this.$router.go(-1);
-    },
+      cancel() {
+        finishPageTab();
+        this.$router.go(-1);
+      },
 
-    // 保存
-    submit() {
-      this.$refs.manageForm.validate(async (valid) => {
-        let productionValid = await this.$refs.productionRefs.getFormValid()
-        console.log(productionValid);
-        if (!valid||!productionValid) {
-          return false;
-        }
+      // 保存
+      submit() {
+        this.$refs.manageForm.validate(async (valid) => {
+          let productionValid = await this.$refs.productionRefs.getFormValid();
+          console.log(productionValid);
+          if (!valid || !productionValid) {
+            return false;
+          }
 
-        this.loading = true;
-        // const imgList = this.remarkform.imgList;
-        // const arr = [];
-        // if (imgList.length) {
-        //   imgList.map((item) => {
-        //     arr.push(item.storePath);
-        //   });
-        //   this.form.remarkAttach = arr.join(',');
-        // }
-        // this.form.remark = this.remarkform.remark
-        //   ? this.remarkform.remark
-        //   : '';
-
-        const data = {
-          categoryWms: this.categoryWms,
-          categoryAps: this.categoryAps,
-          categoryMes: this.categoryMes,
-          categoryMold: this.categoryMold,
-          categoryPallet: this.categoryPallet,
-          categoryQms: this.categoryQms,
-          categoryVehicle: this.categoryVehicle,
-          category: {
-            ...this.form,
-            ...this.remarkform,
-            ...this.PathInfo
+          let packageDispositionVOList = [];
+          if (this.packagingSpecificationList.length > 0) {
+            packageDispositionVOList = this.packagingSpecificationList.map(
+              (item) => {
+                let obj = {
+                  code: item.code,
+                  name: item.name
+                };
+                return [
+                  {
+                    ...obj,
+                    sort: 0,
+                    status: item.status
+                  },
+                  {
+                    ...obj,
+                    sort: 1,
+                    packageCell: item.minPackageCell,
+                    packageUnit: item.packageUnit,
+                    conversionUnit: item.minConversionUnit
+                  },
+                  {
+                    ...obj,
+                    sort: 2,
+                    packageCell: item.inPackageCell,
+                    packageUnit: item.minConversionUnit,
+                    conversionUnit: item.inConversionUnit
+                  },
+                  {
+                    ...obj,
+                    sort: 3,
+                    packageCell: item.outPackageCell,
+                    packageUnit: item.inConversionUnit,
+                    conversionUnit: item.outConversionUnit
+                  }
+                ];
+              }
+            );
+            let packagingSpecificationList =
+              this.packagingSpecificationList.filter(
+                (item) => item.status == 1
+              );
+            this.form.extField.packingSpecification = packagingSpecificationList
+              .map((item) => {
+                return [
+                  `${item.minPackageCell}${item.packageUnit}/${item.minConversionUnit}`,
+                  `${item.inPackageCell}${item.minConversionUnit}/${item.inConversionUnit}`,
+                  `${item.outPackageCell}${item.inConversionUnit}/${item.outConversionUnit}`
+                ];
+              })
+              .flat()
+              .join(',');
+          } else {
+            this.form.extField.packingSpecification = '';
           }
-        };
 
-        if (this.$route.query.status == 1) {
-          data.category.id = null;
-          data.categoryWms.id = null;
-          data.categoryAps.id = null;
-          data.categoryMes.id = null;
-          data.categoryMold.id = null;
-          data.categoryPallet.id = null;
-          data.categoryQms.id = null;
-          data.categoryVehicle.id = null;
-        }
+          this.loading = true;
+          // const imgList = this.remarkform.imgList;
+          // const arr = [];
+          // if (imgList.length) {
+          //   imgList.map((item) => {
+          //     arr.push(item.storePath);
+          //   });
+          //   this.form.remarkAttach = arr.join(',');
+          // }
+          // this.form.remark = this.remarkform.remark
+          //   ? this.remarkform.remark
+          //   : '';
+
+          const data = {
+            categoryWms: this.categoryWms,
+            categoryAps: this.categoryAps,
+            categoryMes: this.categoryMes,
+            categoryMold: this.categoryMold,
+            categoryPallet: this.categoryPallet,
+            categoryQms: this.categoryQms,
+            categoryVehicle: this.categoryVehicle,
+            category: {
+              ...this.form,
+              ...this.remarkform,
+              ...this.PathInfo
+            },
+            packageDispositionVOList: packageDispositionVOList.flat()
+          };
+
+          if (this.$route.query.status == 1) {
+            data.category.id = null;
+            data.categoryWms.id = null;
+            data.categoryAps.id = null;
+            data.categoryMes.id = null;
+            data.categoryMold.id = null;
+            data.categoryPallet.id = null;
+            data.categoryQms.id = null;
+            data.categoryVehicle.id = null;
+            data.packageDispositionVOList = data.packageDispositionVOList.map(
+              (item) => {
+                return {
+                  ...item,
+                  id: null
+                };
+              }
+            );
+          }
 
-        addMaterial(data)
-          .then((msg) => {
-            this.loading = false;
-            this.$message.success(msg);
-            reloadPageTab({fullPath: '/material/product'});
-            this.$router.go(-1);
-          })
-          .catch((e) => {
-            this.loading = false;
-          });
-      });
+          addMaterial(data)
+            .then((msg) => {
+              this.loading = false;
+              this.$message.success(msg);
+              reloadPageTab({ fullPath: '/material/product' });
+              this.$router.go(-1);
+            })
+            .catch((e) => {
+              this.loading = false;
+            });
+        });
+      }
     }
-  }
-};
+  };
 </script>
 
 <style lang="scss" scoped>
-.ele-page-header {
-  border: none;
-}
-
-.body-top {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-  background: #fff;
+  .ele-page-header {
+    border: none;
+  }
 
-  .top-left {
+  .body-top {
     display: flex;
     align-items: center;
-    justify-content: flex-start;
-    margin-left: -25px;
+    justify-content: space-between;
+    background: #fff;
+
+    .top-left {
+      display: flex;
+      align-items: center;
+      justify-content: flex-start;
+      margin-left: -25px;
 
-    .el-form-item {
-      margin-bottom: 0;
+      .el-form-item {
+        margin-bottom: 0;
+      }
     }
   }
-}
 
-.divider {
-  margin: 20px 0;
+  .divider {
+    margin: 20px 0;
 
-  .title {
-    display: flex;
-    align-items: center;
-    margin-bottom: 10px;
+    .title {
+      display: flex;
+      align-items: center;
+      margin-bottom: 10px;
 
-    div {
-      width: 8px;
-      height: 20px;
-      margin-right: 10px;
-    }
+      div {
+        width: 8px;
+        height: 20px;
+        margin-right: 10px;
+      }
 
-    span {
-      font-size: 20px;
+      span {
+        font-size: 20px;
+      }
     }
-  }
 
-  .ele-width {
-    width: 100%;
-    height: 2px;
+    .ele-width {
+      width: 100%;
+      height: 2px;
+    }
   }
-}
 
-.form-line {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
+  .form-line {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
 
-  .line-select {
-    margin-left: 15px;
+    .line-select {
+      margin-left: 15px;
+    }
   }
-}
 </style>