Sfoglia il codice sorgente

修改bom管理和物品管理

chencc 1 anno fa
parent
commit
a1e93ace90

+ 2 - 2
src/views/material/BOMmanage/components/attribute.vue

@@ -128,7 +128,7 @@
           <el-form-item label="生产类型:" prop="produceType">
             <el-select
               v-model="attributeData.produceType"
-               :disabled="attributeData.approvalStatus != 0"
+               disabled
               filterable
               multiple
               class="ele-block"
@@ -147,7 +147,7 @@
           <el-form-item label="属性类型:" prop="attributeType">
             <el-select
               v-model="attributeData.attributeType"
-               :disabled="attributeData.approvalStatus != 0"
+              disabled
               filterable
               multiple
               class="ele-block"

+ 27 - 4
src/views/material/BOMmanage/components/detailedList.vue

@@ -1,7 +1,6 @@
 <template>
   <div class="ele-body">
     <BOMSearch @search="reload" :statusOpt="statusOpt" />
-
     <ele-pro-table
       ref="table"
       :columns="columns"
@@ -9,6 +8,7 @@
       class="dict-table"
       tool-class="ele-toolbar-actions"
     >
+    
       <template v-slot:toolbar>
         <div class="toolbar_box">
           <div v-if="attributeData.status != 1">
@@ -34,8 +34,9 @@
           </div>
         </div>
       </template>
-
+      <!-- 用量 -->
       <template v-slot:dosage="{ row }">
+      
         <el-input
           v-model="row.dosage"
           placeholder="请输入"
@@ -48,10 +49,12 @@
       <template v-slot:versions="{ row }"> V{{ row.versions }}.0 </template>
 
       <template v-slot:produceType="{ row }">
+
         <el-select
           v-model="row.produceType"
           filterable
           multiple
+          disabled
           class="ele-block"
           size="mini"
         >
@@ -68,7 +71,7 @@
         <el-select
           v-model="row.attributeType"
           filterable
-          multiple
+          disabled
           class="ele-block"
           size="mini"
         >
@@ -416,15 +419,27 @@
         let _list = this.$refs.table.getData() ?? [];
 
         this.$refs.standardOutputRefs.open(_list);
+
       },
 
+      // 勾选
       chooseStandardList(data) {
+        console.log(this.attributeData,'2222222222');
+
         data.map((m) => {
           m.parentId = this.newTreeId;
+          m.id = '';
+          m.createTime = '';
+          m.bomType = this.attributeData.bomType;
+          m.level =Number(this.attributeData.level)+1;
+          m.versions =this.attributeData.versions;
+          m.categoryId = this.attributeData.categoryId;
+          m.rootCategoryLevelId = this.attributeData.rootCategoryLevelId;
+
         });
         console.log(
           data,
-          555555555555555555555555555555555555555555555555555555555555555555555555555555
+          5555555555555555
         );
 
         this.$refs.table.setData([...data, ...this.$refs.table.getData()]);
@@ -467,6 +482,14 @@
         }
         let list = JSON.parse(JSON.stringify(_list));
         console.log(list, 'list');
+
+      const arr = list.every(v=>{
+        return v.dosage&& v.quantity !== ''
+      })
+      
+      if(!arr){
+        return this.$message.info('用量不能为空')
+      }
         updateBatchBOM(list).then((res) => {
           this.$message.success('保存成功');
           this.$refs.table.reload({

+ 624 - 666
src/views/material/product/detail.vue

@@ -1,38 +1,24 @@
 <template>
   <div class="ele-body">
     <el-card shadow="never">
-      <el-form
-        label-width="120px"
-        ref="manageForm"
-        :model="form"
-        :rules="rules"
-      >
+      <el-form label-width="120px" ref="manageForm" :model="form" :rules="rules">
         <headerTitle title="基本信息">
           <el-button @click="cancel">返回</el-button>
-          <el-button type="primary" @click="submit" :loading="loading"
-            >保存
+          <el-button type="primary" @click="submit" :loading="loading">保存
           </el-button>
         </headerTitle>
 
         <el-row :gutter="24">
           <el-col :span="8">
             <el-form-item label="分类" prop="categoryLevelName">
-              <el-input
-                v-model="form.categoryLevelName"
-                @click.native="openCategory"
-              />
+              <el-input v-model="form.categoryLevelName" @click.native="openCategory" />
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
             <el-form-item label="编码" prop="code">
-              <el-input
-                v-if="ruleCode == '自定义'"
-                v-model="form.code"
-                readonly
-                @click.native="openCode"
-                :disabled="status == 0"
-              />
+              <el-input v-if="ruleCode == '自定义'" v-model="form.code" readonly @click.native="openCode"
+                :disabled="status == 0" />
               <el-input v-else v-model="form.code" :disabled="status == 0" />
             </el-form-item>
           </el-col>
@@ -51,36 +37,20 @@
 
           <el-col :span="8">
             <el-form-item label="生产类型" prop="produceType">
-              <el-select
-                style="width: 100%"
-                v-model="form.produceType"
-                filterable
-                multiple
-              >
-                <el-option
-                  v-for="item in dictList"
-                  :key="item.value"
-                  :value="item.value"
-                  :label="item.label"
-                ></el-option>
+              <el-select style="width: 100%" v-model="form.produceType" filterable multiple>
+                <el-option v-for="item in dictList" :key="item.value" :value="item.value"
+                  :label="item.label"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
 
-          <el-col
-            :span="8"
-            v-if="
-              [1, 23, 9, 28].includes(
-                Number(categoryLevelPathId || $route.query.rootTreeId)
-              )
-            "
-          >
+          <el-col :span="8" v-if="
+            [1, 23, 9, 28].includes(
+              Number(categoryLevelPathId || $route.query.rootTreeId)
+            )
+          ">
             <el-form-item label="加工类型" prop="isConsumable">
-              <el-select
-                v-model="form.isConsumable"
-                size="small"
-                style="width: 100%"
-              >
+              <el-select v-model="form.isConsumable" size="small" style="width: 100%">
                 <el-option :value="1" label="批量"></el-option>
                 <el-option :value="0" label="单件"></el-option>
               </el-select>
@@ -102,39 +72,28 @@
             <el-form-item label="规格" prop="specification">
               <el-input v-model="form.specification" />
             </el-form-item>
+            
           </el-col>
 
+          
+
           <el-col :span="8">
             <el-form-item label="计量单位" prop="measuringUnit">
-              <DictSelection
-                dictName="计量单位"
-                clearable
-                v-model="form.measuringUnit"
-                @change="changeUnit"
-              >
+              <DictSelection dictName="计量单位" clearable v-model="form.measuringUnit" @change="changeUnit">
               </DictSelection>
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
             <el-form-item label="重量单位" prop="weightUnit">
-              <DictSelection
-                dictName="重量单位"
-                clearable
-                v-model="form.weightUnit"
-              >
+              <DictSelection dictName="重量单位" clearable v-model="form.weightUnit">
               </DictSelection>
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
             <el-form-item label="包装单位" prop="packingUnit">
-              <DictSelection
-                dictName="包装单位"
-                clearable
-                v-model="form.packingUnit"
-                @change="changeUnit"
-              >
+              <DictSelection dictName="包装单位" clearable v-model="form.packingUnit" @change="changeUnit">
               </DictSelection>
             </el-form-item>
           </el-col>
@@ -143,12 +102,7 @@
             <el-form-item label="体积">
               <div class="form-line">
                 <el-input v-model="form.volume" />
-                <DictSelection
-                  class="line-select"
-                  dictName="体积单位"
-                  clearable
-                  v-model="form.volumeUnit"
-                >
+                <DictSelection class="line-select" dictName="体积单位" clearable v-model="form.volumeUnit">
                 </DictSelection>
               </div>
             </el-form-item>
@@ -173,17 +127,8 @@
           <el-col :span="8">
             <el-form-item label="级别">
               <template>
-                <el-select
-                  style="width: 100%"
-                  v-model="form.level"
-                  placeholder="请选择"
-                >
-                  <el-option
-                    v-for="item in levelOptions"
-                    :label="item.label"
-                    :value="item.value"
-                    :key="item.value"
-                  >
+                <el-select style="width: 100%" v-model="form.level" placeholder="请选择">
+                  <el-option v-for="item in levelOptions" :label="item.label" :value="item.value" :key="item.value">
                   </el-option>
                 </el-select>
               </template>
@@ -194,42 +139,42 @@
             <el-form-item :label="f.label">
               <template>
                 <div class="form-line">
-                  <component
-                    :is="f.tagType"
-                    v-model="form.extField[f.prop]"
-                    :disabled="f.extAttribute?.disabled"
-                    clearable
-                    :isProhibit="
-                      f.modelType == 'dict' ? f.extAttribute?.disabled : false
-                    "
-                    :dictName="f.modelType == 'dict' ? f.label : ''"
-                  ></component>
+                  <component :is="f.tagType" v-model="form.extField[f.prop]" :disabled="f.extAttribute?.disabled"
+                    clearable :isProhibit="f.modelType == 'dict' ? f.extAttribute?.disabled : false
+                      " :dictName="f.modelType == 'dict' ? f.label : ''"></component>
                 </div>
               </template>
             </el-form-item>
           </el-col>
+
+          <el-col :span="8">
+            <el-form-item label="属性类型:" prop="attributeType">
+            <el-select
+              v-model="form.attributeType"
+              filterable
+              class="ele-block"
+            >
+              <el-option
+                v-for="item in attributeList"
+                :key="item.value"
+                :value="item.value"
+                :label="item.label"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+          </el-col>
         </el-row>
       </el-form>
     </el-card>
 
     <!--  自定义编码 -->
-    <CodeDialog
-      ref="codeRefs"
-      v-if="codeShow"
-      @close="codeShow = false"
-      @chooseCode="chooseCode"
-    />
+    <CodeDialog ref="codeRefs" v-if="codeShow" @close="codeShow = false" @chooseCode="chooseCode" />
     <!-- 分类选择弹窗 -->
     <CategoryDialog ref="categoryRefs" @chooseCategory="confirmCategory" />
     <!-- 仓储配置 -->
-    <WarehouseInfo
-      ref="warehouseRefs"
-      :form="categoryWms"
-      :measuringUnit="form.measuringUnit"
-      :packingUnit="form.packingUnit"
-      :packageDispositionVOList="packageDispositionVOList"
-      @change="changePackagingSpecification"
-    />
+    <WarehouseInfo ref="warehouseRefs" :form="categoryWms" :measuringUnit="form.measuringUnit"
+      :packingUnit="form.packingUnit" :packageDispositionVOList="packageDispositionVOList"
+      @change="changePackagingSpecification" />
     <!-- 销售配置 -->
     <SalesInfos ref="salesRefs" :form="categorySales" />
     <!-- 采购信息 -->
@@ -249,637 +194,650 @@
     <!-- 备注信息 -->
     <RemarkInfo ref="remarkRefs" :form="remarkform" />
     <!-- 关联信息 -->
-    <linkMsg
-      ref="linkMsgRef"
-      :id="$route.query.id"
-      :categoryLevelId="form.categoryLevelId"
-      :categoryLevelGroupId="form.categoryLevelGroupId"
-    />
+    <linkMsg ref="linkMsgRef" :id="$route.query.id" :categoryLevelId="form.categoryLevelId"
+      :categoryLevelGroupId="form.categoryLevelGroupId" />
   </div>
 </template>
 
 <script>
-  import SalesInfos from './components/SalesInfos.vue';
-  import PurchasingInfo from './components/PurchasingInfo.vue';
-  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: 'product',
-    components: {
-      SalesInfos,
-      PurchasingInfo,
-      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: '一级'
+import SalesInfos from './components/SalesInfos.vue';
+import PurchasingInfo from './components/PurchasingInfo.vue';
+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: 'product',
+  components: {
+    SalesInfos,
+    PurchasingInfo,
+    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: '三级'
+        }
+      ],
+      attributeList: [
+        {
+            label: '总装',
+            value: 1
           },
           {
-            label: '二级',
-            value: '二级'
+            label: '部件',
+            value: 2
           },
           {
-            label: '三级',
-            value: '三级'
+            label: '零',
+            value: 3
+          },{
+            label: '原材料',
+            value: 4
           }
         ],
-        form: {
-          categoryLevelGroupName: '',
-          categoryLevelName: '',
-          isConsumable: 1,
-          measuringUnit: '',
-          weightUnit: '',
-          packingUnit: '',
-
-          extField: {}
-        },
-
-        remarkform: {
-          remarkAttach: []
-        },
-        categorySales: {},
-        categoryPurchase: { purchaseMultiplier: 1 },
-        categoryAps: {},
-        categoryMes: {},
-        categoryMold: {},
-        categoryPallet: {},
-        categoryQms: {},
-        categoryVehicle: {},
-        categoryWms: {
-          isUnpack: 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' }],
-          produceType: [
-            { required: true, message: '请选择生产类型', trigger: 'change' }
-          ],
-          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,
-
-        ruleCode: null,
-        codeShow: false,
-
-        status: null
-      };
-    },
-    watch: {
-      '$route.query.id': {
-        handler(id) {
-          if (id) {
-            this._getDetails();
-          } else {
-            this.form = {
-              categoryLevelGroupName: '',
-              // categoryLevelName: '',
-              isConsumable: 1,
-              measuringUnit: '',
-              weightUnit: '',
-              packingUnit: '',
-              extField: {}
-            };
-            this.purchaseInfo = {};
-            this.remarkform = {
-              remarkAttach: []
-            };
-            this.categoryAps = {};
-            this.categoryMes = {};
-            this.categoryMold = {};
-            this.categoryPallet = {};
-            this.categoryQms = {};
-            this.categoryVehicle = {};
-            this.categoryWms = {
-              isUnpack: 1
-            };
-            this.packageDispositionVOList = [];
-            this.categoryLevelPathId = null;
-
-            this.dictList = [];
-
-            this.fileList = [];
-          }
-        },
-        deep: true,
-        immediate: true
-      }
-    },
-    async activated() {
-      this.status = this.$route.query.status;
-      this.form.categoryLevelId = this.$route.query.categoryLevelId;
-      this.form.categoryLevelName = this.$route.query.categoryLevelName;
-      this.form.categoryLevelPath = this.$route.query.categoryLevelPath;
-      this.form.categoryLevelPathId = this.$route.query.categoryLevelPathId;
-
-      this.ruleCode = this.$route.query.ruleCode;
-      if (this.ruleCode && this.ruleCode != '自定义' && this.status != 0) {
-        const code = await getCode(this.ruleCode);
-        this.$set(this.form, 'code', code);
-      }
-
-      this.getFieldModel();
-
-      this.getDictList('productionType');
-    },
-    async created() {
-      //新增
-
-      this.$set(
-        this.form,
-        'categoryLevelId',
-        this.$route.query.categoryLevelId
-      );
-      this.$set(
-        this.form,
-        'categoryLevelName',
-        this.$route.query.categoryLevelName
-      );
-      this.$set(
-        this.form,
-        'categoryLevelPath',
-        this.$route.query.categoryLevelPath
-      );
-      this.$set(
-        this.form,
-        'categoryLevelPathId',
-        this.$route.query.categoryLevelPathId
-      );
-      this.status = this.$route.query.status;
-      this.ruleCode = this.$route.query.ruleCode;
-      if (this.ruleCode && this.ruleCode != '自定义' && this.status != 0) {
-        const code = await getCode(this.ruleCode);
-        this.$set(this.form, 'code', code);
-      }
-
-      this.getFieldModel();
+      form: {
+        categoryLevelGroupName: '',
+        categoryLevelName: '',
+        isConsumable: 1,
+        measuringUnit: '',
+        weightUnit: '',
+        packingUnit: '',
+        attributeType:'',
+        extField: {}
+      },
 
-      // if (this.$route.query.id) {
-      //   this._getDetails();
-      // }
-      this.getDictList('productionType');
-    },
-    methods: {
-      changeUnit() {
-        if (this.form.measuringUnit && this.form.packingUnit) {
-          this.$refs.warehouseRefs.defaultBuild(this.form.packingUnit);
-        }
+      remarkform: {
+        remarkAttach: []
       },
-      changePackagingSpecification(val) {
-        console.log('changePackagingSpecification---', val);
-        this.packagingSpecificationList = val;
+      categorySales: {},
+      categoryPurchase: { purchaseMultiplier: 1 },
+      categoryAps: {},
+      categoryMes: {},
+      categoryMold: {},
+      categoryPallet: {},
+      categoryQms: {},
+      categoryVehicle: {},
+      categoryWms: {
+        isUnpack: 1
       },
-      async _getDetails() {
-        const data = await getDetails(this.$route.query.id);
-        const info = deepClone(data);
+      packageDispositionVOList: [],
+      categoryLevelPathId: null,
 
-        this.form = {
-          ...info.category
-        };
+      dictList: [],
 
-        this.categoryLevelPathId = info.category.categoryLevelPathIdParent;
-        this.judgeSet(info);
+      fileList: [],
+      // 表单验证规则
+      rules: {
+        categoryLevelGroupName: [
+          { required: true, message: '请选择所属物料组', trigger: 'change' }
+        ],
+        code: [{ required: true, message: '请输入编码', trigger: 'blur' }],
+        name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
+        produceType: [
+          { required: true, message: '请选择生产类型', trigger: 'change' }
+        ],
+        categoryLevelName: [
+          { required: true, message: '请选择所属分类', trigger: 'change' }
+        ],
+        measuringUnit: [
+          { required: true, message: '请选择计量单位', trigger: 'change' }
+        ],
 
-        if (this.status == 1) {
-          rootCategoryCode(this.categoryLevelPathId).then((res) => {
-            this.$set(this.form, 'code', res);
-          });
+        weightUnit: [
+          { required: true, message: '请选择重量单位', trigger: 'change' }
+        ],
 
-          this.form.createTime = null;
-        }
+        packingUnit: [
+          { required: true, message: '请选择包装单位', trigger: 'change' }
+        ],
 
-        this.$forceUpdate();
+        netWeight: [
+          { required: true, message: '请输入净重', trigger: 'blur' }
+        ]
       },
-      // 判断字段类型并赋值
-      judgeSet(info) {
-        console.log('info-------', info);
-        if (typeof info.categoryAps == 'string') {
-          this.categoryAps = {};
+      PathInfo: {},
+      id: null,
+
+      ruleCode: null,
+      codeShow: false,
+
+      status: null
+    };
+  },
+  watch: {
+    '$route.query.id': {
+      handler(id) {
+        if (id) {
+          this._getDetails();
         } else {
-          this.categoryAps = info.categoryAps;
-        }
-        if (typeof info.categoryMes == 'string') {
+          this.form = {
+            categoryLevelGroupName: '',
+            // categoryLevelName: '',
+            isConsumable: 1,
+            measuringUnit: '',
+            weightUnit: '',
+            packingUnit: '',
+            extField: {}
+          };
+          this.purchaseInfo = {};
+          this.remarkform = {
+            remarkAttach: []
+          };
+          this.categoryAps = {};
           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.categorySales == 'string') {
-          this.categorySales = {};
-        } else {
-          this.categorySales = info.categorySales;
-        }
-
-        if (typeof info.categoryPurchase == 'string') {
-          this.categoryPurchase = {};
-        } else {
-          this.categoryPurchase = info.categoryPurchase;
-        }
-        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.categoryWms = {
+            isUnpack: 1
+          };
           this.packageDispositionVOList = [];
-        } else {
-          this.packageDispositionVOList = info.packageDispositionVOList;
-          console.log(
-            'this.packageDispositionVOList---!!!----',
-            this.packageDispositionVOList
-          );
+          this.categoryLevelPathId = null;
+
+          this.dictList = [];
+
+          this.fileList = [];
         }
       },
+      deep: true,
+      immediate: true
+    }
+  },
+  async activated() {
+    this.status = this.$route.query.status;
+    this.form.categoryLevelId = this.$route.query.categoryLevelId;
+    this.form.categoryLevelName = this.$route.query.categoryLevelName;
+    this.form.categoryLevelPath = this.$route.query.categoryLevelPath;
+    this.form.categoryLevelPathId = this.$route.query.categoryLevelPathId;
+
+    this.ruleCode = this.$route.query.ruleCode;
+    if (this.ruleCode && this.ruleCode != '自定义' && this.status != 0) {
+      const code = await getCode(this.ruleCode);
+      this.$set(this.form, 'code', code);
+    }
 
-      getFieldModel() {
-        fieldModel({ relevance: 't_main_category' }).then((res) => {
-          this.fileList = res;
+    this.getFieldModel();
+
+    this.getDictList('productionType');
+  },
+  async created() {
+    //新增
+
+    this.$set(
+      this.form,
+      'categoryLevelId',
+      this.$route.query.categoryLevelId
+    );
+    this.$set(
+      this.form,
+      'categoryLevelName',
+      this.$route.query.categoryLevelName
+    );
+    this.$set(
+      this.form,
+      'categoryLevelPath',
+      this.$route.query.categoryLevelPath
+    );
+    this.$set(
+      this.form,
+      'categoryLevelPathId',
+      this.$route.query.categoryLevelPathId
+    );
+    this.status = this.$route.query.status;
+    this.ruleCode = this.$route.query.ruleCode;
+    if (this.ruleCode && this.ruleCode != '自定义' && this.status != 0) {
+      const code = await getCode(this.ruleCode);
+      this.$set(this.form, 'code', code);
+    }
 
-          this.fileList.forEach((f) => {
-            this.$set(this.form.extField, f.prop, ''); // 初始化动态模型属性
-          });
-        });
-      },
+    this.getFieldModel();
+
+    // if (this.$route.query.id) {
+    //   this._getDetails();
+    // }
+    this.getDictList('productionType');
+  },
+  methods: {
+    changeUnit() {
+      if (this.form.measuringUnit && this.form.packingUnit) {
+        this.$refs.warehouseRefs.defaultBuild(this.form.packingUnit);
+      }
+    },
+    changePackagingSpecification(val) {
+      console.log('changePackagingSpecification---', val);
+      this.packagingSpecificationList = val;
+    },
+    async _getDetails() {
+      const data = await getDetails(this.$route.query.id);
+      const info = deepClone(data);
 
-      // 确定分类
-      async confirmCategory(node, title, PathInfo, ruleCode) {
-        if (this.status != 0) {
-          this.$set(this.form, 'code', null);
-        }
-        this.categoryLevelPathId = PathInfo.categoryLevelPathId.split(',')[0];
+      this.form = {
+        ...info.category
+      };
 
-        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.categoryLevelPathId = info.category.categoryLevelPathIdParent;
+      this.judgeSet(info);
 
-          this.ruleCode = ruleCode;
+      if (this.status == 1) {
+        rootCategoryCode(this.categoryLevelPathId).then((res) => {
+          this.$set(this.form, 'code', res);
+        });
 
-          if (ruleCode && ruleCode != '自定义' && this.status != 0) {
-            const code = await getCode(ruleCode);
-            this.$set(this.form, 'code', code);
-          }
-        }
+        this.form.createTime = null;
+      }
 
-        this.$forceUpdate();
-      },
+      this.$forceUpdate();
+    },
+    // 判断字段类型并赋值
+    judgeSet(info) {
+      console.log('info-------', 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.categorySales == 'string') {
+        this.categorySales = {};
+      } else {
+        this.categorySales = info.categorySales;
+      }
 
-      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]]
-          };
+      if (typeof info.categoryPurchase == 'string') {
+        this.categoryPurchase = {};
+      } else {
+        this.categoryPurchase = info.categoryPurchase;
+      }
+      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({ relevance: 't_main_category' }).then((res) => {
+        this.fileList = res;
+
+        this.fileList.forEach((f) => {
+          this.$set(this.form.extField, f.prop, ''); // 初始化动态模型属性
         });
-      },
+      });
+    },
 
-      openCategory() {
-        this.$refs.categoryRefs.open();
-      },
+    // 确定分类
+    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);
+        }
+      }
 
-      openCode() {
-        this.codeShow = true;
-      },
+      this.$forceUpdate();
+    },
 
-      chooseCode(code) {
-        this.$set(this.form, 'code', code);
-        this.codeShow = false;
-        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]]
+        };
+      });
+    },
 
-      cancel() {
-        // finishPageTab();
-        // this.$router.go(-1);
-        if (this.$route.query.rootTreeId == 9) {
-          this.$router.push({
-            path: '/product/oneProduct',
-            query: {
-              categoryLevelId: this.form.categoryLevelId
-            }
-          });
-        } else {
-          this.$router.push({
-            path: '/material/product',
-            query: {
-              categoryLevelId: this.form.categoryLevelId
-            }
-          });
-        }
-      },
+    openCategory() {
+      this.$refs.categoryRefs.open();
+    },
 
-      // 保存
-      submit() {
-        this.$refs.manageForm.validate(async (valid) => {
-          let productionValid = await this.$refs.productionRefs.getFormValid();
+    openCode() {
+      this.codeShow = true;
+    },
 
-          if (!valid || !productionValid) {
-            return false;
-          }
+    chooseCode(code) {
+      this.$set(this.form, 'code', code);
+      this.codeShow = false;
+      this.$forceUpdate();
+    },
 
-          let packageDispositionVOList = [];
-          if (this.packagingSpecificationList.length > 0) {
-            packageDispositionVOList = this.packagingSpecificationList.map(
-              (item) => {
-                let obj = {
-                  code: item.code,
-                  name: item.name
-                };
-                return [
-                  {
-                    ...obj,
-                    id: item.id0,
-                    sort: 0,
-                    status: item.status,
-                    packageCell: 1,
-                    packageUnit: item.packageUnit,
-                    conversionUnit: item.packageUnit
-                  },
-                  {
-                    ...obj,
-                    id: item.id1,
-                    sort: 1,
-                    packageCell: item.minPackageCell,
-                    packageUnit: item.packageUnit,
-                    conversionUnit: item.minConversionUnit,
-                    status: item.status
-                  },
-                  {
-                    ...obj,
-                    id: item.id2,
-                    sort: 2,
-                    packageCell: item.inPackageCell,
-                    packageUnit: item.minConversionUnit,
-                    conversionUnit: item.inConversionUnit,
-                    status: item.status
-                  },
-                  {
-                    ...obj,
-                    id: item.id3,
-                    sort: 3,
-                    packageCell: item.outPackageCell,
-                    packageUnit: item.inConversionUnit,
-                    conversionUnit: item.outConversionUnit,
-                    status: item.status
-                  }
-                ];
-              }
-            );
-            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 = '';
+    cancel() {
+      // finishPageTab();
+      // this.$router.go(-1);
+      if (this.$route.query.rootTreeId == 9) {
+        this.$router.push({
+          path: '/product/oneProduct',
+          query: {
+            categoryLevelId: this.form.categoryLevelId
+          }
+        });
+      } else {
+        this.$router.push({
+          path: '/material/product',
+          query: {
+            categoryLevelId: this.form.categoryLevelId
           }
+        });
+      }
+    },
 
-          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 = {
-            categorySales: this.categorySales,
-            categoryPurchase: this.categoryPurchase,
-            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()
-          };
+    // 保存
+    submit() {
+      this.$refs.manageForm.validate(async (valid) => {
+        let productionValid = await this.$refs.productionRefs.getFormValid();
 
-          if (this.$route.query.status == 1) {
-            data.categorySales.id = null;
-            data.categoryPurchase.id = null;
-            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
-                };
-              }
+        if (!valid || !productionValid) {
+          return false;
+        }
+        
+        let packageDispositionVOList = [];
+        if (this.packagingSpecificationList.length > 0) {
+          packageDispositionVOList = this.packagingSpecificationList.map(
+            (item) => {
+              let obj = {
+                code: item.code,
+                name: item.name
+              };
+              return [
+                {
+                  ...obj,
+                  id: item.id0,
+                  sort: 0,
+                  status: item.status,
+                  packageCell: 1,
+                  packageUnit: item.packageUnit,
+                  conversionUnit: item.packageUnit
+                },
+                {
+                  ...obj,
+                  id: item.id1,
+                  sort: 1,
+                  packageCell: item.minPackageCell,
+                  packageUnit: item.packageUnit,
+                  conversionUnit: item.minConversionUnit,
+                  status: item.status
+                },
+                {
+                  ...obj,
+                  id: item.id2,
+                  sort: 2,
+                  packageCell: item.inPackageCell,
+                  packageUnit: item.minConversionUnit,
+                  conversionUnit: item.inConversionUnit,
+                  status: item.status
+                },
+                {
+                  ...obj,
+                  id: item.id3,
+                  sort: 3,
+                  packageCell: item.outPackageCell,
+                  packageUnit: item.inConversionUnit,
+                  conversionUnit: item.outConversionUnit,
+                  status: item.status
+                }
+              ];
+            }
+          );
+          let packagingSpecificationList =
+            this.packagingSpecificationList.filter(
+              (item) => item.status == 1
             );
-          }
-          console.log('保存', data);
-          addMaterial(data)
-            .then((msg) => {
-              this.loading = false;
-              this.$message.success(msg);
-              // reloadPageTab({ fullPath: '/material/product' });
-              // this.$router.go(-1);
-              this.cancel();
-              // if (this.$route.query.rootTreeId == 9) {
-              //   this.$router.push({
-              //     path: '/product/oneProduct',
-              //     query: {
-              //       categoryLevelId: this.form.categoryLevelId
-              //     }
-              //   });
-              // } else {
-              //   this.$router.push({
-              //     path: '/material/product',
-              //     query: {
-              //       categoryLevelId: this.form.categoryLevelId
-              //     }
-              //   });
-              // }
+          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}`
+              ];
             })
-            .catch((e) => {
-              this.loading = false;
-            });
-        });
-      }
+            .flat()
+            .join(',');
+        } else {
+          this.form.extField.packingSpecification = '';
+        }
+
+        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 = {
+          categorySales: this.categorySales,
+          categoryPurchase: this.categoryPurchase,
+          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.categorySales.id = null;
+          data.categoryPurchase.id = null;
+          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
+              };
+            }
+          );
+        }
+        console.log('保存', data);
+        addMaterial(data)
+          .then((msg) => {
+            this.loading = false;
+            this.$message.success(msg);
+            // reloadPageTab({ fullPath: '/material/product' });
+            // this.$router.go(-1);
+            this.cancel();
+            // if (this.$route.query.rootTreeId == 9) {
+            //   this.$router.push({
+            //     path: '/product/oneProduct',
+            //     query: {
+            //       categoryLevelId: this.form.categoryLevelId
+            //     }
+            //   });
+            // } else {
+            //   this.$router.push({
+            //     path: '/material/product',
+            //     query: {
+            //       categoryLevelId: this.form.categoryLevelId
+            //     }
+            //   });
+            // }
+          })
+          .catch((e) => {
+            this.loading = false;
+          });
+      });
     }
-  };
+  }
+};
 </script>
 
 <style lang="scss" scoped>
-  .ele-page-header {
-    border: none;
-  }
+.ele-page-header {
+  border: none;
+}
+
+.body-top {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  background: #fff;
 
-  .body-top {
+  .top-left {
     display: flex;
     align-items: center;
-    justify-content: space-between;
-    background: #fff;
+    justify-content: flex-start;
+    margin-left: -25px;
 
-    .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;
-
-      div {
-        width: 8px;
-        height: 20px;
-        margin-right: 10px;
-      }
+  .title {
+    display: flex;
+    align-items: center;
+    margin-bottom: 10px;
 
-      span {
-        font-size: 20px;
-      }
+    div {
+      width: 8px;
+      height: 20px;
+      margin-right: 10px;
     }
 
-    .ele-width {
-      width: 100%;
-      height: 2px;
+    span {
+      font-size: 20px;
     }
   }
 
-  .form-line {
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
+  .ele-width {
+    width: 100%;
+    height: 2px;
+  }
+}
 
-    .line-select {
-      margin-left: 15px;
-    }
+.form-line {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+
+  .line-select {
+    margin-left: 15px;
   }
+}
 </style>