Explorar o código

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

ysy hai 1 ano
pai
achega
90237ae7fb

+ 161 - 141
src/views/material/product/components/ProductionInfo.vue

@@ -1,160 +1,180 @@
 <template>
   <div class="other">
-      <el-form label-width="120px"  ref="form" :model="form">
-         <div class="divider">
-           <div class="title">
-             <div class="ele-bg-primary"></div>
-             <span>生产信息</span>
-           </div>
-           <div class="ele-bg-primary ele-width"></div>
-         </div>
-         <el-row :gutter="24">
-           <el-col :span="8">
-             <el-form-item label="是否齐套件">
-                <el-radio v-model="form.isCompleteSet" :label="1">是</el-radio>
-                <el-radio v-model="form.isCompleteSet" :label="0">否</el-radio>
-             </el-form-item>
-           </el-col>
-           <el-col :span="8">
-             <el-form-item label="消耗波动" prop="consumWave">
-                <el-input v-model="form.consumWave">
-                    <template slot="append">%</template>
-                </el-input>
-             </el-form-item>
-           </el-col>
-           <el-col :span="8">
-             <el-form-item label="变动损耗率" prop="changeLossRate">
-                <el-input v-model="form.changeLossRate">
-                    <template slot="append">%</template>
-                </el-input>
-             </el-form-item>
-           </el-col>
-           <el-col :span="8">
-             <el-form-item label="固定损耗数" prop="fixLossNum">
-                <el-input  v-model="form.fixLossNum"/>
-             </el-form-item>
-           </el-col>
-           <el-col :span="8">
-             <el-form-item label="排程类型" prop="apsType">
-                <DictSelection dictName="排程类型" clearable v-model="form.apsType">
-                </DictSelection>
-             </el-form-item>
-           </el-col>
-           <el-col :span="8">
-             <el-form-item label="生产周期(天)" prop="fixLossNum">
-               <el-input style="width: 100%" type="number" :min="1"  v-model="form.productionDays">
-                 <span slot="append">天</span>
-               </el-input>
-             </el-form-item>
-           </el-col>
-           <el-col :span="8">
-             <el-form-item label="允许改型" prop="isModify">
-               <el-radio v-model="form.isModify" :label="1">是</el-radio>
-               <el-radio v-model="form.isModify" :label="0">否</el-radio>
-             </el-form-item>
-           </el-col>
-           <el-col :span="8">
-             <el-form-item label="允许返工返修" prop="isRework">
-               <el-radio v-model="form.isRework" :label="1">是</el-radio>
-               <el-radio v-model="form.isRework" :label="0">否</el-radio>
-             </el-form-item>
-           </el-col>
-           <el-col :span="8">
-             <el-form-item label="是否返回料" prop="isRematerial">
-               <el-radio v-model="form.isRematerial" :label="1">是</el-radio>
-               <el-radio v-model="form.isRematerial" :label="0">否</el-radio>
-             </el-form-item>
-           </el-col>
-           <el-col :span="8">
-             <el-form-item label="是否副产品" prop="isByProduct">
-               <el-radio v-model="form.isByProduct" :label="1">是</el-radio>
-               <el-radio v-model="form.isByProduct" :label="0">否</el-radio>
-             </el-form-item>
-           </el-col>
-           <el-col :span="8">
-             <el-form-item label="是否废品" prop="isWaste">
-               <el-radio v-model="form.isWaste" :label="1">是</el-radio>
-               <el-radio v-model="form.isWaste" :label="0">否</el-radio>
-             </el-form-item>
-           </el-col>
-           <el-col :span="8">
-             <el-form-item label="是否不良品" prop="isDefective">
-               <el-radio v-model="form.isDefective" :label="1">是</el-radio>
-               <el-radio v-model="form.isDefective" :label="0">否</el-radio>
-             </el-form-item>
-           </el-col>
-         </el-row>
-      </el-form>
+    <el-form label-width="120px" ref="form" :rules="rules" :model="form">
+      <div class="divider">
+        <div class="title">
+          <div class="ele-bg-primary"></div>
+          <span>生产信息</span>
+        </div>
+        <div class="ele-bg-primary ele-width"></div>
+      </div>
+      <el-row :gutter="24">
+        <el-col :span="8">
+          <el-form-item label="是否齐套件">
+            <el-radio v-model="form.isCompleteSet" :label="1">是</el-radio>
+            <el-radio v-model="form.isCompleteSet" :label="0">否</el-radio>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="消耗波动" prop="consumWave">
+            <el-input v-model="form.consumWave">
+              <template slot="append">%</template>
+            </el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="变动损耗率" prop="changeLossRate">
+            <el-input v-model="form.changeLossRate">
+              <template slot="append">%</template>
+            </el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="固定损耗数" prop="fixLossNum">
+            <el-input v-model="form.fixLossNum"/>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="排程类型" prop="apsType">
+            <DictSelection dictName="排程类型" clearable v-model="form.apsType">
+            </DictSelection>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="生产周期" prop="productionDays">
+            <el-input style="width: 100%" type="number" v-model="form.productionDays">
+              <span slot="append">天</span>
+            </el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="允许改型" prop="isModify">
+            <el-radio v-model="form.isModify" :label="1">是</el-radio>
+            <el-radio v-model="form.isModify" :label="0">否</el-radio>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="允许返工返修" prop="isRework">
+            <el-radio v-model="form.isRework" :label="1">是</el-radio>
+            <el-radio v-model="form.isRework" :label="0">否</el-radio>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="是否返回料" prop="isRematerial">
+            <el-radio v-model="form.isRematerial" :label="1">是</el-radio>
+            <el-radio v-model="form.isRematerial" :label="0">否</el-radio>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="是否副产品" prop="isByProduct">
+            <el-radio v-model="form.isByProduct" :label="1">是</el-radio>
+            <el-radio v-model="form.isByProduct" :label="0">否</el-radio>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="是否废品" prop="isWaste">
+            <el-radio v-model="form.isWaste" :label="1">是</el-radio>
+            <el-radio v-model="form.isWaste" :label="0">否</el-radio>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="是否不良品" prop="isDefective">
+            <el-radio v-model="form.isDefective" :label="1">是</el-radio>
+            <el-radio v-model="form.isDefective" :label="0">否</el-radio>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
   </div>
 </template>
 
 <script>
-  import deptSelect from '@/components/CommomSelect/dept-select.vue'
-  import personSelect from '@/components/CommomSelect/person-select.vue';
-  export default {
-    props: {
-      form: {
-        type: Object,
-        default: {}
-      }
-    },
-    components: { deptSelect , personSelect },
-    data() {
-      return {
-
+import deptSelect from '@/components/CommomSelect/dept-select.vue'
+import personSelect from '@/components/CommomSelect/person-select.vue';
+import {positiveIntegerReg} from "ele-admin";
 
-      };
-    },
+export default {
+  props: {
+    form: {
+      type: Object,
+      default: {}
+    }
+  },
+  components: {deptSelect, personSelect},
 
-    methods: {
-      // 选择所属部门
-      searchDeptNodeClick (id, info) {
-        // 根据部门获取人员
-        const params = { executeGroupId: id };
-        this.$nextTick(() => {
-          this.$refs.directorRef.getList(params);
-        });
-      },
-      //选择负责人
-      handleDirectorChange (id, info) {
+  data() {
+    return {
+      rules: {
+        productionDays: [
+          {required: true, message: '请输入生产周期', trigger: ['blur', 'change']},
+          { pattern: positiveIntegerReg, message: '请输入正确的生产周期', trigger: ['blur', 'change']}
+        ],
       },
+    };
+  },
 
+  methods: {
+    // 选择所属部门
+    searchDeptNodeClick(id, info) {
+      // 根据部门获取人员
+      const params = {executeGroupId: id};
+      this.$nextTick(() => {
+        this.$refs.directorRef.getList(params);
+      });
+    },
+    //选择负责人
+    handleDirectorChange(id, info) {
+    },
+    getFormValid() {
+      return new Promise((resolve, reject) => {
+        this.$refs.form.validate( async (valid) => {
+          resolve(await valid)
+        });
+      })
+    },
 
-    }
-  };
+  }
+};
 </script>
 
 <style lang="scss" scoped>
-  .other{
-    background: #fff;
-    padding: 1px 17px;
-  }
-  .divider {
-    margin: 0px 0 20px;
-    .title {
-      display: flex;
-      align-items: center;
-      margin-bottom: 10px;
-      div {
-        width: 8px;
-        height: 20px;
-        margin-right: 10px;
-      }
-      span {
-        font-size: 20px;
-      }
-    }
-    .ele-width{
-      width: 100%;
-      height: 2px;
-    }
-  }
-  .form-line{
+.other {
+  background: #fff;
+  padding: 1px 17px;
+}
+
+.divider {
+  margin: 0px 0 20px;
+
+  .title {
     display: flex;
     align-items: center;
-    justify-content: space-between;
-    .line-select{
-      margin-left:15px;
+    margin-bottom: 10px;
+
+    div {
+      width: 8px;
+      height: 20px;
+      margin-right: 10px;
     }
+
+    span {
+      font-size: 20px;
+    }
+  }
+
+  .ele-width {
+    width: 100%;
+    height: 2px;
+  }
+}
+
+.form-line {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+
+  .line-select {
+    margin-left: 15px;
   }
+}
 </style>

+ 367 - 364
src/views/material/product/detail.vue

@@ -10,7 +10,8 @@
         <headerTitle title="基本信息">
           <el-button @click="cancel">返回</el-button>
           <el-button type="primary" @click="submit" :loading="loading"
-            >保存</el-button
+          >保存
+          </el-button
           >
         </headerTitle>
 
@@ -37,19 +38,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>
 
@@ -89,18 +90,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>
 
@@ -140,7 +141,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="体积单位"
@@ -152,12 +153,11 @@
             </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 +165,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 +194,13 @@
             <el-form-item :label="f.label">
               <template>
                 <div class="form-line">
-                  <el-input v-model="form.extField[f.prop]" />
+                  <el-input v-model="form.extField[f.prop]"/>
                 </div>
               </template>
             </el-form-item>
           </el-col>
 
-  
+
         </el-row>
       </el-form>
     </el-card>
@@ -213,23 +213,23 @@
       @chooseCode="chooseCode"
     ></CodeDialog>
     <!-- 分类选择弹窗 -->
-    <CategoryDialog ref="categoryRefs" @chooseCategory="confirmCategory" />
+    <CategoryDialog ref="categoryRefs" @chooseCategory="confirmCategory"/>
     <!-- 仓储配置 -->
-    <WarehouseInfo ref="warehouseRefs" :form="categoryWms" />
+    <WarehouseInfo ref="warehouseRefs" :form="categoryWms"/>
     <!-- 生产信息 -->
-    <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,393 +241,396 @@
 </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: '特级'
-          },
-          {
-            label: '一级',
-            value: '一级'
-          },
-          {
-            label: '二级',
-            value: '二级'
-          },
-          {
-            label: '三级',
-            value: '三级'
-          }
-        ],
-        form: {
-          categoryLevelGroupName: '',
-          categoryLevelName: '',
-          isConsumable: 1,
-
-          extField: {}
+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: '特级'
         },
-
-        remarkform: {
-          remarkAttach: []
+        {
+          label: '一级',
+          value: '一级'
         },
-        categoryAps: {},
-        categoryMes: {},
-        categoryMold: {},
-        categoryPallet: {},
-        categoryQms: {},
-        categoryVehicle: {},
-        categoryWms: {
-          isUnpack: 1
+        {
+          label: '二级',
+          value: '二级'
         },
+        {
+          label: '三级',
+          value: '三级'
+        }
+      ],
+      form: {
+        categoryLevelGroupName: '',
+        categoryLevelName: '',
+        isConsumable: 1,
 
-        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,
-
-        ruleCode: null,
-        codeShow: false,
+        extField: {}
+      },
 
-        status: null
-      };
-    },
+      remarkform: {
+        remarkAttach: []
+      },
+      categoryAps: {},
+      categoryMes: {},
+      categoryMold: {},
+      categoryPallet: {},
+      categoryQms: {},
+      categoryVehicle: {},
+      categoryWms: {
+        isUnpack: 1
+      },
 
-    async created() {
-      this.getFieldModel();
-      this.status = this.$route.query.status;
+      categoryLevelPathId: null,
 
-      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);
+      dictList: [],
 
-        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;
-        }
+      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.categoryLevelPathId = info.category.categoryLevelPathIdParent;
-        this.judgeSet(info);
+        weightUnit: [
+          {required: true, message: '请选择重量单位', trigger: 'change'}
+        ],
 
-        if (this.status == 1) {
-          rootCategoryCode(this.categoryLevelPathId).then((res) => {
-            this.$set(this.form, 'code', res);
-          });
-        }
+        packingUnit: [
+          {required: true, message: '请选择包装单位', trigger: 'change'}
+        ],
 
-        this.$forceUpdate();
+        netWeight: [
+          {required: true, message: '请输入净重', trigger: 'blur'}
+        ]
       },
-      // 判断字段类型并赋值
-      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;
+      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());
         }
-      },
+        this.form.produceType = intproductType;
+      }
 
-      getFieldModel() {
-        fieldModel({ fieldModel: 't_main_category' }).then((res) => {
-          this.fileList = res;
+      this.categoryLevelPathId = info.category.categoryLevelPathIdParent;
+      this.judgeSet(info);
 
-          this.fileList.forEach((f) => {
-            this.$set(this.form.extField, f.prop, ''); // 初始化动态模型属性
-          });
+      if (this.status == 1) {
+        rootCategoryCode(this.categoryLevelPathId).then((res) => {
+          this.$set(this.form, 'code', res);
         });
-      },
+      }
 
-      // 确定分类
-      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();
+    },
+    // 判断字段类型并赋值
+    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;
+      }
+    },
 
-        this.$forceUpdate();
-      },
+    getFieldModel() {
+      fieldModel({fieldModel: 't_main_category'}).then((res) => {
+        this.fileList = res;
 
-      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]]
-          };
+        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);
-      },
+    openCategory() {
+      this.$refs.categoryRefs.open();
+    },
 
-      // 保存
-      submit() {
-        this.$refs.manageForm.validate((valid) => {
-          if (!valid) {
-            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
-            }
-          };
-
-          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;
+    openCode() {
+      this.codeShow = true;
+    },
+
+    chooseCode(code) {
+      this.$set(this.form, 'code', code);
+      this.codeShow = false;
+      this.$forceUpdate();
+    },
+
+    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;
+        }
+
+        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
           }
+        };
 
-          addMaterial(data)
-            .then((msg) => {
-              this.loading = false;
-              this.$message.success(msg);
-              reloadPageTab({ fullPath: '/material/product' });
-              this.$router.go(-1);
-            })
-            .catch((e) => {
-              this.loading = false;
-            });
-        });
-      }
+        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;
+        }
+
+        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;
-  }
+.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;
-
-    .title {
-      display: flex;
-      align-items: center;
-      margin-bottom: 10px;
+.divider {
+  margin: 20px 0;
 
-      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>