Prechádzať zdrojové kódy

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

LAPTOP-16IUEB3P\Lenovo 3 rokov pred
rodič
commit
6eb45a0583

+ 160 - 191
src/views/classifyManage/itemInformation/add.vue

@@ -1,59 +1,62 @@
 <template>
-  <div class="content-height p20">
-    <div class="page-title">
-      <el-page-header @back="goBack">
-        <div slot="content" class="pageContent">
-          <div>{{ pageTitle }}</div>
-          <el-form class="topform">
-            <el-form-item label="物品类型" label-width="70px">
-              <el-select
-                v-model="defaultNum"
-                placeholder="请选择"
-                @change="chooseItem"
-                :disabled="uneditable"
-              >
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.id"
-                  :label="item.value"
-                  :value="item.prefix"
+  <div class="ele-body">
+    <el-card shadow="never">
+      <div class="page-title">
+        <el-page-header @back="goBack">
+          <div slot="content" class="pageContent">
+            <div>{{ pageTitle }}</div>
+            <el-form class="topform">
+              <el-form-item label="物品类型" label-width="70px">
+                <el-select
+                  v-model="defaultNum"
+                  placeholder="请选择"
+                  :disabled="uneditable"
                 >
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-form>
-        </div>
-      </el-page-header>
-    </div>
-    <div class="table-container">
-      <div class="tree-col">
-        <ItemForm
-          ref="itemFormRef"
-          :itemForm="itemForm"
-          :defaultNum="defaultNum"
-          :classList="[]"
-        />
+                  <el-option
+                    v-for="item in typeList"
+                    :key="item.id"
+                    :label="item.value"
+                    :value="item.code"
+                    @click.native="chooseItem(item)"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-form>
+          </div>
+        </el-page-header>
       </div>
-      <div class="attribute-row">
-        <RowForm
-          ref="customFormRef"
-          :itemForm="itemForm"
-          :defaultNum="defaultNum"
-        />
-        <div
-          class="row-table"
-          v-if="
-            defaultNum != 'w08' && defaultNum != 'w02' && defaultNum != 'w03'
-          "
-        >
-          <ItemMatch ref="itemMatchRef" :defaultNum="defaultNum"></ItemMatch>
+      <div class="table-container">
+        <div class="tree-col">
+          <ItemForm
+            ref="itemFormRef"
+            :itemForm="itemForm"
+            :defaultNum="defaultNum"
+          />
         </div>
-        <div class="page-footer-btn mt20">
-          <el-button @click="goBack">取消</el-button>
-          <el-button type="primary" @click="submit">确定</el-button>
+        <div class="attribute-row">
+          <RowForm
+            ref="customFormRef"
+            :itemForm="itemForm"
+            :defaultNum="defaultNum"
+          />
+          <div
+            class="row-table"
+            v-if="defaultNum != '8' && defaultNum != '2' && defaultNum != '5'"
+          >
+            <ItemMatch
+              ref="itemMatchRef"
+              :defaultNum="defaultNum"
+              :typeList="typeList"
+            ></ItemMatch>
+          </div>
+          <div class="page-footer-btn mt20">
+            <el-button @click="goBack">取消</el-button>
+            <el-button type="primary" @click="submit">确定</el-button>
+          </div>
         </div>
       </div>
-    </div>
+    </el-card>
   </div>
 </template>
 
@@ -61,6 +64,7 @@
   import ItemForm from './components/ItemForm';
   import RowForm from './components/RowForm';
   import ItemMatch from './components/item-match';
+  import dictMixins from '@/mixins/dictMixins';
   import {
     informationAdd,
     getDetails,
@@ -69,37 +73,10 @@
   } from '@/api/classifyManage/itemInformation';
   export default {
     components: { ItemForm, RowForm, ItemMatch },
+    mixins: [dictMixins],
     data () {
       return {
         pageTitle: '',
-        typeList: [
-          {
-            id: 1,
-            value: 'w01  生产设备',
-            name: '生产设备',
-            prefix: 'w01',
-            code: 1
-          },
-          { id: 2, value: 'w02  舟皿', name: '舟皿', prefix: 'w02', code: 2 },
-          {
-            id: 3,
-            value: 'w03  周转车',
-            name: '周转车',
-            prefix: 'w03',
-            code: 5
-          },
-          { id: 4, value: 'w04  模具', name: '模具', prefix: 'w04', code: 6 },
-          {
-            id: 5,
-            value: 'w05  备品备件',
-            name: '备品备件',
-            prefix: 'w05',
-            code: 7
-          },
-          { id: 6, value: 'w06  原料', name: '物料', prefix: 'w06', code: 3 },
-          { id: 7, value: 'w07  产品', name: '产品', prefix: 'w07', code: 4 },
-          { id: 8, value: 'w08  耗材', name: '耗材', prefix: 'w08', code: 8 }
-        ],
         itemForm: {
           classificationUrlId: [],
           addList: [],
@@ -111,18 +88,36 @@
           expirationDateUnit: 'minute',
           takeStockPattern: 1
         },
-        defaultNum: 'w01',
+        defaultNum: '1',
         selectNode: null,
         classList: [],
         changeData: [],
         urlIdList: [],
         requestData: {},
         uneditable: false,
-        dialogTitle: '',
         newCode: ''
       };
     },
+    computed: {
+      typeList () {
+        const noList = this.dict[this.dictEnum['分类编号']] || [];
+
+        return (this.dict[this.dictEnum['类型用途']] || []).map((item) => {
+          const obj =
+            noList.find((itm) => itm.dictCode === item.dictCode) || {};
+          return {
+            ...item,
+            value: `${obj.dictValue} ${item.dictValue}`,
+            name: item.dictValue,
+            prefix: obj.dictValue,
+            code: item.dictCode
+          };
+        });
+      }
+    },
     created () {
+      this.requestDict('分类编号');
+      this.requestDict('类型用途');
       this.pageTitle = this.$route.query.pageTitle;
       if (this.pageTitle == '新建物品') {
         this.selectNode = JSON.parse(this.$route.query.selectNode);
@@ -131,14 +126,10 @@
           this.itemForm.classificationId = this.selectNode.id;
           let code = 1;
           if (this.selectNode.id != '0') {
-            code = this.selectNode.type;
-            this.typeList.map((item) => {
-              if (item.code == code) {
-                this.defaultNum = item.prefix;
-                this.setDefault(this.defaultNum);
-              }
-            });
+            this.defaultNum = this.selectNode.type;
+            this.setDefault(this.defaultNum);
           }
+          this.itemForm.urlIdList = this.selectNode.urlIdList;
           this.getTreeData(code);
         }
       } else {
@@ -161,15 +152,6 @@
         }
       },
 
-      getCode (code) {
-        this.typeList.map((item) => {
-          if (item.code == code) {
-            this.defaultNum = item.prefix;
-            this.setDefault(this.defaultNum);
-          }
-        });
-      },
-
       // 在 Input 值改变时触发
       handleEdit (e) {
         let value = e.replace(/^(0+)|[^\d]+/g, ''); // 以0开头或者输入非数字,会被替换成空
@@ -230,18 +212,15 @@
       },
 
       // 改变物品类型
-      chooseItem (val) {
+      chooseItem (item) {
+        this.defaultNum = item.code;
         this.initItemForm();
         this.$refs.itemFormRef.$refs.formName.resetFields();
         this.getOrderCode();
-        this.typeList.map((item) => {
-          if (item.prefix == val) {
-            this.itemForm.classificationCode = item.prefix;
-            this.selectNode = null;
-            this.getTreeData(item.code);
-            this.setDefault(item.prefix);
-          }
-        });
+        this.itemForm.classificationCode = item.prefix;
+        this.selectNode = null;
+        this.getTreeData(item.code);
+        this.setDefault(item.code);
       },
 
       submit () {
@@ -372,25 +351,6 @@
         this.$refs.itemMatchRef && this.$refs.itemMatchRef.setDefault(val);
       },
 
-      // 收缩系数格式化
-      shrinkFormatter (row) {
-        let shrink = '';
-        let extendField = JSON.parse(row.extendField);
-        if (extendField.hasOwnProperty('shrinkageCoefficient')) {
-          shrink = extendField.shrinkageCoefficient;
-        }
-        return shrink;
-      },
-
-      modleFormatter (row) {
-        let modle = '';
-        let extendField = JSON.parse(row.extendField);
-        if (extendField.hasOwnProperty('dieBodyModel')) {
-          modle = extendField.dieBodyModel;
-        }
-        return modle;
-      },
-
       initItemForm () {
         this.itemForm = {
           classificationUrlId: [],
@@ -407,90 +367,99 @@
 </script>
 
 <style lang="scss" scoped>
-  :deep(.page-title) {
-    border-bottom: 1px solid #eaeefb;
-    padding-bottom: 8px;
-    margin-bottom: 16px;
-    display: flex;
-    align-items: center;
-    .el-page-header__left {
+  .ele-body {
+    :deep(.page-title) {
+      border-bottom: 1px solid #eaeefb;
+      padding-bottom: 8px;
+      margin-bottom: 16px;
       display: flex;
       align-items: center;
+      .el-page-header__left {
+        display: flex;
+        align-items: center;
+      }
+      .pageContent {
+        display: flex;
+        align-items: center;
+        font-size: 18px;
+        color: #303133;
+        .topform {
+          // margin: 5px 0 0 30px;
+          margin-left: 30px;
+          display: flex;
+          align-items: center;
+
+          .el-form-item {
+            margin-bottom: 0;
+          }
+        }
+      }
     }
-    .pageContent {
+    .table-container {
+      flex: 1;
       display: flex;
-      align-items: center;
-      font-size: 18px;
-      color: #303133;
-      .topform {
-        margin: 5px 0 0 30px;
+      overflow: hidden;
+      .tree-col {
+        margin-right: 10px;
+        width: 30%;
+        min-width: 250px;
+        overflow: auto;
+        padding: 20px 20px 20px 0px;
+        background-color: #fff;
+        margin-top: 10px;
+        border: 1px solid #e6ebf5;
+        border-radius: 4px;
+        box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
       }
     }
-  }
-  .table-container {
-    flex: 1;
-    display: flex;
-    overflow: hidden;
-    .tree-col {
-      margin-right: 10px;
-      width: 30%;
-      min-width: 250px;
-      overflow: auto;
-      padding: 20px 20px 20px 0px;
-      background-color: #fff;
+
+    :deep(.attribute-row) {
+      padding: 20px 5px;
+      background: #fff;
       margin-top: 10px;
+      overflow: auto;
+      width: 70%;
       border: 1px solid #e6ebf5;
       border-radius: 4px;
       box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
-    }
-  }
-
-  :deep(.attribute-row) {
-    padding: 20px 5px;
-    background: #fff;
-    margin-top: 10px;
-    overflow: auto;
-    width: 70%;
-    border: 1px solid #e6ebf5;
-    border-radius: 4px;
-    box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
-    position: relative;
-    .row-table {
-      width: 100%;
-      margin: 20px auto 80px;
-      .table-box {
+      position: relative;
+      .row-table {
         width: 100%;
-        margin: 10px auto;
-        // max-height:400px;
-        // overflow-y: auto;
-      }
-      .bom-top {
-        width: 100%;
-        display: flex;
-        align-items: center;
-        justify-content: flex-start;
-        .top-input {
-          margin-left: 20px;
+        margin: 20px auto 80px;
+        .table-box {
+          width: 100%;
+          margin: 10px auto;
+          // max-height:400px;
+          // overflow-y: auto;
+        }
+        .bom-top {
+          width: 100%;
           display: flex;
           align-items: center;
           justify-content: flex-start;
-          .input-box {
-            width: 150px;
-            margin: 0 10px;
+          .top-input {
+            margin-left: 20px;
+            display: flex;
+            align-items: center;
+            justify-content: flex-start;
+            .input-box {
+              width: 150px;
+              margin: 0 10px;
+            }
           }
         }
       }
-    }
-    .page-footer-btn {
-      background: #fff;
-      z-index: 1;
-      position: absolute;
-      bottom: 20px;
-      right: 0px;
-      text-align: right;
-      width: 100%;
-      border-top: 1px solid #e6ebf5;
-      padding: 20px 20px 0 0;
+      .page-footer-btn {
+        background: #fff;
+        z-index: 1;
+        position: absolute;
+        bottom: 20px;
+        right: 0px;
+        text-align: right;
+        width: 100%;
+        border-top: 1px solid #e6ebf5;
+        padding: 20px 20px 0 0;
+      }
     }
   }
 </style>

+ 16 - 11
src/views/classifyManage/itemInformation/components/AddDialog.vue

@@ -38,15 +38,16 @@
             :type="typeValue"
           /> -->
           <AssetTree
-            :data="treeList"
             :props="defaultProps"
             :default-expanded-keys="defaultExpandedKeys"
             :expand-on-click-node="false"
-            v-loading="treeLoading"
             node-key="id"
+            paramsType="type"
+            :type="typeValue"
+            :init="false"
             ref="tree"
             :highlight-current="true"
-            @node-click="handleNodeClick"
+            @handleNodeClick="handleNodeClick"
           />
         </el-col>
         <el-col :span="18" class="table_col">
@@ -137,8 +138,8 @@
     components: { AssetTree },
     props: {
       typeValue: {
-        type: Array,
-        default: []
+        type: String,
+        default: ''
       },
       mapList: {
         type: Array,
@@ -174,13 +175,17 @@
     watch: {
       equipmentdialog (val) {
         if (val) {
-          if (this.tableData.length) this.$refs.tableRef.clearSelection();
           this.$nextTick(() => {
-            this.mapList.forEach((item) => {
-              const row = this.tableData.find((i) => i.id === item.id);
-              if (row) {
-                this.$refs.tableRef.toggleRowSelection(row, true);
-              }
+            this.$refs.tree.getTreeData().then(() => {
+              if (this.tableData.length) this.$refs.tableRef.clearSelection();
+              this.$nextTick(() => {
+                this.mapList.forEach((item) => {
+                  const row = this.tableData.find((i) => i.id === item.id);
+                  if (row) {
+                    this.$refs.tableRef.toggleRowSelection(row, true);
+                  }
+                });
+              });
             });
           });
           // if(this.tableData.length)  this.$refs.tableRef.clearSelection()

+ 13 - 17
src/views/classifyManage/itemInformation/components/ItemForm.vue

@@ -131,6 +131,7 @@
 </template>
 
 <script>
+  import { getTreeByPid, getTreeByType } from '@/api/classifyManage';
   export default {
     props: {
       itemForm: {
@@ -139,11 +140,7 @@
       },
       defaultNum: {
         type: String,
-        default: 'w01'
-      },
-      classList: {
-        type: Array,
-        default: []
+        default: '1'
       }
     },
     components: {},
@@ -158,6 +155,7 @@
         }
       };
       return {
+        classList: [],
         rules: {
           urlIdList: [
             {
@@ -195,16 +193,6 @@
           { id: 3, value: '月', name: 'month' },
           { id: 4, value: '年', name: 'year' }
         ],
-        typeList: [
-          { id: 1, value: 'w01  原料', prefix: 'w01' },
-          { id: 2, value: 'w02  耗材', prefix: 'w02' },
-          { id: 3, value: 'w03  设备', prefix: 'w03' },
-          { id: 4, value: 'w04  产品', prefix: 'w04' },
-          { id: 5, value: 'w05  舟皿', prefix: 'w05' },
-          { id: 6, value: 'w06  周转车', prefix: 'w06' },
-          { id: 7, value: 'w07  模具', prefix: 'w07' },
-          { id: 8, value: 'w08  备品备件', prefix: 'w08' }
-        ],
         // itemForm:{
         //   priceType:1, dateType:1
         // },
@@ -221,8 +209,16 @@
         this.keyValue++;
       }
     },
-    created () {},
+    created () {
+      this.getTreeList();
+    },
     methods: {
+      async getTreeList () {
+        const res = await getTreeByPid(0);
+        if (res.code === '0') {
+          this.classList = res.data;
+        }
+      },
       //子组件接收callback为父组件传过来的next()方法
       validateForm (callback) {
         // let flag = true;
@@ -252,7 +248,7 @@
 </script>
 
 <style lang="scss" scoped>
-  :deep(.formBox .el-form-item) {
+  .formBox :deep(.el-form-item) {
     margin-bottom: 17px;
     .twobox {
       width: 100%;

+ 26 - 26
src/views/classifyManage/itemInformation/components/RowDetail.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col
         :span="8"
-        v-if="defaultNum == 'w06' || defaultNum == 'w07' || defaultNum == 'w04'"
+        v-if="defaultNum == '3' || defaultNum == '4' || defaultNum == '6'"
       >
         <el-form-item label="牌号" prop="brandNumber" label-width="60px">
           <span>{{ customForm.brandNum }}</span>
@@ -12,28 +12,28 @@
       <el-col
         :span="8"
         v-if="
-          defaultNum == 'w08' ||
-          defaultNum == 'w01' ||
-          defaultNum == 'w02' ||
-          defaultNum == 'w03' ||
-          defaultNum == 'w05'
+          defaultNum == '8' ||
+          defaultNum == '1' ||
+          defaultNum == '2' ||
+          defaultNum == '5' ||
+          defaultNum == '7'
         "
       >
         <el-form-item label="规格" prop="gg" label-width="60px">
           <span>{{ customForm.specification }}</span>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum != 'w06'">
+      <el-col :span="8" v-if="defaultNum != '3'">
         <el-form-item label="型号" prop="xh" label-width="60px">
           <span>{{ customForm.modelType }}</span>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w03'">
+      <el-col :span="8" v-if="defaultNum == '5'">
         <el-form-item label="材质" prop="xh" label-width="60px">
           <span>{{ extendField.texture }}</span>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w01'">
+      <el-col :span="8" v-if="defaultNum == '1'">
         <el-form-item label="标准产能" prop="bzcn" label-width="85px">
           <span
             >{{
@@ -42,7 +42,7 @@
           >
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w07'">
+      <el-col :span="8" v-if="defaultNum == '4'">
         <el-form-item label="标准单重" prop="bzcn" label-width="85px">
           <span
             >{{
@@ -51,7 +51,7 @@
           >
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w07'">
+      <el-col :span="8" v-if="defaultNum == '4'">
         <el-form-item label="不良品率" prop="bzcn" label-width="85px">
           <span
             >{{
@@ -60,57 +60,57 @@
           >
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w02'">
+      <el-col :span="8" v-if="defaultNum == '2'">
         <el-form-item label="角度" prop="bzcn" label-width="60px">
           <span>{{ extendField.angle }}</span>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w02' || defaultNum == 'w03'">
+      <el-col :span="8" v-if="defaultNum == '2' || defaultNum == '5'">
         <el-form-item label="长" prop="bzcn" label-width="60px">
           <span>{{ extendField.length ? extendField.length : '-' }}mm</span>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w02' || defaultNum == 'w03'">
+      <el-col :span="8" v-if="defaultNum == '2' || defaultNum == '5'">
         <el-form-item label="宽" prop="bzcn" label-width="60px">
           <span>{{ extendField.width ? extendField.width : '-' }}mm</span>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w02' || defaultNum == 'w03'">
+      <el-col :span="8" v-if="defaultNum == '2' || defaultNum == '5'">
         <el-form-item label="高" prop="bzcn" label-width="60px">
           <span>{{ extendField.high ? extendField.high : '-' }}mm</span>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w04'">
+      <el-col :span="8" v-if="defaultNum == '6'">
         <el-form-item label="大模体型号" prop="bzcn" label-width="95px">
           <span>{{ extendField.dieBodyModel }}</span>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w04'">
+      <el-col :span="8" v-if="defaultNum == '6'">
         <el-form-item label="收缩系数" prop="bzcn" label-width="85px">
           <span>{{ extendField.shrinkageCoefficient }}</span>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w04'">
+      <el-col :span="8" v-if="defaultNum == '6'">
         <el-form-item label="芯杆数量" prop="bzcn" label-width="85px">
           <span>{{ extendField.mandrelNum }}</span>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w04'">
+      <el-col :span="8" v-if="defaultNum == '6'">
         <el-form-item label="模孔数量" prop="bzcn" label-width="85px">
           <span>{{ extendField.dieHoleNum }}</span>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w04'">
+      <el-col :span="8" v-if="defaultNum == '6'">
         <el-form-item label="上冲头数量" prop="bzcn" label-width="95px">
           <span>{{ extendField.upperPunchNum }}</span>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w04'">
+      <el-col :span="8" v-if="defaultNum == '6'">
         <el-form-item label="下冲头数量" prop="bzcn" label-width="95px">
           <span>{{ extendField.lowerPunchNum }}</span>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w04'">
+      <el-col :span="8" v-if="defaultNum == '6'">
         <el-form-item label="最大冲压次数" prop="bzcn" label-width="105px">
           <span>{{ extendField.maximumStampingTimes }}</span>
         </el-form-item>
@@ -140,11 +140,11 @@
       },
       defaultNum: {
         type: String,
-        default: 'w01'
+        default: '1'
       }
     },
     components: {},
-    data() {
+    data () {
       return {
         angleList: [
           { id: 0, value: '非A' },
@@ -155,14 +155,14 @@
       };
     },
     watch: {
-      customForm(val) {
+      customForm (val) {
         if (val) {
           this.extendField = JSON.parse(val.extendField);
           this.selfDefinedParameter = JSON.parse(val.selfDefinedParameter);
         }
       }
     },
-    created() {},
+    created () {},
     methods: {}
   };
 </script>

+ 54 - 52
src/views/classifyManage/itemInformation/components/RowForm.vue

@@ -5,15 +5,15 @@
     ref="formCustom"
     class="row-form"
   >
-    <el-row>
+    <el-row class="row-box">
       <el-col
         :span="8"
-        v-if="defaultNum == 'w06' || defaultNum == 'w07' || defaultNum == 'w04'"
+        v-if="defaultNum == '3' || defaultNum == '4' || defaultNum == '6'"
       >
         <el-form-item
           label="牌号"
           label-width="60px"
-          :prop="defaultNum == 'w06' ? 'brandNum' : ''"
+          :prop="defaultNum == '3' ? 'brandNum' : ''"
         >
           <el-input v-model="itemForm.brandNum" placeholder="请输入"></el-input>
         </el-form-item>
@@ -21,11 +21,11 @@
       <el-col
         :span="8"
         v-if="
-          defaultNum == 'w08' ||
-          defaultNum == 'w01' ||
-          defaultNum == 'w02' ||
-          defaultNum == 'w03' ||
-          defaultNum == 'w05'
+          defaultNum == '8' ||
+          defaultNum == '1' ||
+          defaultNum == '2' ||
+          defaultNum == '5' ||
+          defaultNum == '7'
         "
       >
         <el-form-item label="规格" prop="specification" label-width="60px">
@@ -35,7 +35,7 @@
           ></el-input>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum != 'w06'">
+      <el-col :span="8" v-if="defaultNum != '3'">
         <el-form-item label="型号" prop="modelType" label-width="60px">
           <el-input
             v-model="itemForm.modelType"
@@ -43,7 +43,7 @@
           ></el-input>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w03'">
+      <el-col :span="8" v-if="defaultNum == '5'">
         <el-form-item label="材质" prop="texture" label-width="60px">
           <el-input
             :disabled="itemForm.isCitation"
@@ -52,19 +52,19 @@
           ></el-input>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w01'">
+      <el-col :span="8" v-if="defaultNum == '1'">
         <el-form-item label="标准产能" label-width="85px">
           <div class="row-col">
             <el-input
               type="number"
               v-model="itemForm.info.standardCapacity"
               placeholder="请输入"
-            ></el-input>
-            <span>/小时</span>
+              ><span slot="suffix">/小时</span></el-input
+            >
           </div>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w07'">
+      <el-col :span="8" v-if="defaultNum == '4'">
         <el-form-item label="标准单重" label-width="85px">
           <el-input-number
             style="width: 80%"
@@ -76,7 +76,7 @@
           <span class="spanbox">KG</span>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w07'">
+      <el-col :span="8" v-if="defaultNum == '4'">
         <el-form-item label="不良品率" label-width="85px">
           <el-input-number
             style="width: 85%"
@@ -89,7 +89,7 @@
           <span class="spanbox">%</span>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w02'">
+      <el-col :span="8" v-if="defaultNum == '2'">
         <el-form-item label="角度" label-width="60px">
           <el-select v-model="itemForm.info.angle" placeholder="请选择">
             <el-option
@@ -102,7 +102,7 @@
           </el-select>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w02' || defaultNum == 'w03'">
+      <el-col :span="8" v-if="defaultNum == '2' || defaultNum == '5'">
         <el-form-item label="长" label-width="60px">
           <div>
             <el-input-number
@@ -116,7 +116,7 @@
           </div>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w02' || defaultNum == 'w03'">
+      <el-col :span="8" v-if="defaultNum == '2' || defaultNum == '5'">
         <el-form-item label="宽" label-width="60px">
           <div>
             <el-input-number
@@ -130,7 +130,7 @@
           </div>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w02' || defaultNum == 'w03'">
+      <el-col :span="8" v-if="defaultNum == '2' || defaultNum == '5'">
         <el-form-item label="高" label-width="60px">
           <div>
             <el-input-number
@@ -144,7 +144,7 @@
           </div>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w04'">
+      <el-col :span="8" v-if="defaultNum == '6'">
         <el-form-item label="大模体型号" label-width="95px">
           <el-input
             v-model="itemForm.info.dieBodyModel"
@@ -152,7 +152,7 @@
           ></el-input>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w04'">
+      <el-col :span="8" v-if="defaultNum == '6'">
         <el-form-item label="收缩系数" label-width="85px">
           <el-input
             v-model="itemForm.info.shrinkageCoefficient"
@@ -160,7 +160,7 @@
           ></el-input>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w04'">
+      <el-col :span="8" v-if="defaultNum == '6'">
         <el-form-item label="芯杆数量" label-width="85px">
           <el-input
             v-model="itemForm.info.mandrelNum"
@@ -170,7 +170,7 @@
           ></el-input>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w04'">
+      <el-col :span="8" v-if="defaultNum == '6'">
         <el-form-item label="模孔数量" label-width="85px">
           <el-input
             v-model="itemForm.info.dieHoleNum"
@@ -180,7 +180,7 @@
           ></el-input>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w04'">
+      <el-col :span="8" v-if="defaultNum == '6'">
         <el-form-item label="上冲头数量" label-width="95px">
           <el-input
             v-model="itemForm.info.upperPunchNum"
@@ -190,7 +190,7 @@
           ></el-input>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w04'">
+      <el-col :span="8" v-if="defaultNum == '6'">
         <el-form-item label="下冲头数量" label-width="95px">
           <el-input
             v-model="itemForm.info.lowerPunchNum"
@@ -200,7 +200,7 @@
           ></el-input>
         </el-form-item>
       </el-col>
-      <el-col :span="8" v-if="defaultNum == 'w04'">
+      <el-col :span="8" v-if="defaultNum == '6'">
         <el-form-item label="最大冲压次数" label-width="105px">
           <el-input
             v-model="itemForm.info.maximumStampingTimes"
@@ -252,7 +252,7 @@
       },
       defaultNum: {
         type: String,
-        default: 'w01'
+        default: '1'
       }
     },
     components: {},
@@ -313,38 +313,40 @@
 </script>
 
 <style lang="scss" scoped>
-  :deep(.row-form) {
+  .row-form {
     width: 100%;
     display: flex;
     align-items: center;
     justify-content: flex-start;
     flex-wrap: wrap;
     border-bottom: 1px dashed #ccc;
-    .el-row {
-      width: 100%;
-    }
-    .el-form-item {
-      margin-bottom: 15px;
-    }
-    .row-col {
-      display: flex;
-      align-items: center;
-      justify-content: flex-start;
-      .el-input--medium {
-        width: 75%;
-        margin-right: 10px;
+    :deep(.row-box) {
+      .el-row {
+        width: 100%;
       }
-    }
-    .spanbox {
-      display: inline-block;
-      margin-left: 10px;
-    }
-    .add-col {
-      display: flex;
-      align-items: center;
-      margin-left: 20px;
-      .col-input {
-        margin-right: 5px;
+      .el-form-item {
+        margin-bottom: 15px;
+      }
+      .row-col {
+        display: flex;
+        align-items: center;
+        justify-content: flex-start;
+        .el-input--medium {
+          width: 75%;
+          margin-right: 10px;
+        }
+      }
+      .spanbox {
+        display: inline-block;
+        margin-left: 10px;
+      }
+      .add-col {
+        display: flex;
+        align-items: center;
+        margin-left: 20px;
+        .col-input {
+          margin-right: 5px;
+        }
       }
     }
   }

+ 237 - 269
src/views/classifyManage/itemInformation/components/item-match.vue

@@ -1,271 +1,238 @@
 <template>
-  <div>
+  <div class="match-body">
     <el-tabs v-model="activeName" type="card">
       <el-tab-pane
         label="匹配产品"
         name="product"
-        v-if="defaultNum == 'w06' || defaultNum == 'w04'"
+        v-if="defaultNum == '3' || defaultNum == '6'"
       >
-        <el-button type="primary" @click="clickAdd([4], '选择产品')"
-          >添加</el-button
+        <!-- 数据表格 -->
+        <ele-pro-table
+          ref="table"
+          :columns="columns_product"
+          :datasource="productData"
+          :needPage="false"
+          height="calc(100vh - 265px)"
+          full-height="calc(100vh - 116px)"
+          tool-class="ele-toolbar-form"
+          cache-key="systemOrgUserTable"
         >
-        <el-table
-          :data="productData"
-          class="table-box"
-          :header-cell-style="{ background: '#F0F3F3', border: 'none' }"
-        >
-          <el-table-column type="index" label="序号" width="50">
-          </el-table-column>
-          <el-table-column prop="informationCode" label="物品编码">
-          </el-table-column>
-          <el-table-column
-            prop="informationName"
-            label="物品名称"
-            show-overflow-tooltip
-          >
-          </el-table-column>
-          <el-table-column prop="brandNum" label="牌号"> </el-table-column>
-          <el-table-column prop="modelType" label="型号"> </el-table-column>
-          <el-table-column
-            label="物品类型"
-            prop="classificationCode"
-            :formatter="classificationCodeFormatter"
-          >
-          </el-table-column>
-          <el-table-column
-            prop="classificationUrl"
-            show-overflow-tooltip
-            label="分类"
-          >
-          </el-table-column>
-          <el-table-column label="操作">
-            <template slot-scope="scope">
-              <el-button
-                type="text"
-                @click="handleDelete(scope.$index, scope.row)"
-                >删除</el-button
-              >
-            </template>
-          </el-table-column>
-        </el-table>
+          <!-- 表头工具栏 -->
+          <template v-slot:toolbar>
+            <el-button type="primary" @click="clickAdd('4', '选择产品')"
+              >添加</el-button
+            >
+          </template>
+
+          <!-- 操作列 -->
+          <template v-slot:action="{ row, $index }">
+            <el-popconfirm
+              class="ele-action"
+              title="确定要删除此物品?"
+              @confirm="remove(row)"
+            >
+              <template v-slot:reference>
+                <el-link
+                  @click="handleDelete($index, row)"
+                  type="danger"
+                  :underline="false"
+                  icon="el-icon-delete"
+                >
+                  删除
+                </el-link>
+              </template>
+            </el-popconfirm>
+          </template>
+        </ele-pro-table>
       </el-tab-pane>
       <el-tab-pane
         label="匹配模具"
         name="mould"
-        v-if="defaultNum == 'w01' || defaultNum == 'w07'"
+        v-if="defaultNum == '1' || defaultNum == '4'"
       >
-        <el-button type="primary" @click="clickAdd([6], '选择模具')"
-          >添加</el-button
+        <!-- 数据表格 -->
+        <ele-pro-table
+          ref="table"
+          :columns="columns_mould"
+          :datasource="mouldData"
+          :needPage="false"
+          height="calc(100vh - 265px)"
+          full-height="calc(100vh - 116px)"
+          tool-class="ele-toolbar-form"
+          cache-key="systemOrgUserTable"
         >
-        <el-table
-          :data="mouldData"
-          class="table-box"
-          :header-cell-style="{ background: '#F0F3F3', border: 'none' }"
-        >
-          <el-table-column type="index" label="序号" width="50">
-          </el-table-column>
-          <el-table-column prop="informationCode" label="物品编码" width="120">
-          </el-table-column>
-          <el-table-column
-            prop="informationName"
-            label="物品名称"
-            show-overflow-tooltip
-          >
-          </el-table-column>
-          <el-table-column prop="brandNum" label="牌号"> </el-table-column>
-          <el-table-column prop="modelType" label="型号"> </el-table-column>
-          <el-table-column
-            prop="shrinkageCoefficient"
-            label="收缩系数"
-            :formatter="shrinkFormatter"
-          >
-          </el-table-column>
-          <el-table-column
-            prop="dieBodyModel"
-            width="120"
-            label="大模体型号"
-            :formatter="modleFormatter"
-          >
-          </el-table-column>
-          <el-table-column
-            label="物品类型"
-            prop="classificationCode"
-            :formatter="classificationCodeFormatter"
-          >
-          </el-table-column>
-          <el-table-column
-            prop="classificationUrl"
-            show-overflow-tooltip
-            label="分类"
-          >
-          </el-table-column>
-          <el-table-column label="操作">
-            <template slot-scope="scope">
-              <el-button
-                type="text"
-                @click="handleDelete(scope.$index, scope.row)"
-                >删除</el-button
-              >
-            </template>
-          </el-table-column>
-        </el-table>
+          <!-- 表头工具栏 -->
+          <template v-slot:toolbar>
+            <el-button type="primary" @click="clickAdd('6', '选择模具')"
+              >添加</el-button
+            >
+          </template>
+
+          <!-- 操作列 -->
+          <template v-slot:action="{ row, $index }">
+            <el-popconfirm
+              class="ele-action"
+              title="确定要删除此物品?"
+              @confirm="remove(row)"
+            >
+              <template v-slot:reference>
+                <el-link
+                  @click="handleDelete($index, row)"
+                  type="danger"
+                  :underline="false"
+                  icon="el-icon-delete"
+                >
+                  删除
+                </el-link>
+              </template>
+            </el-popconfirm>
+          </template>
+        </ele-pro-table>
       </el-tab-pane>
-      <el-tab-pane label="匹配备品备件" name="part" v-if="defaultNum == 'w01'">
-        <el-button type="primary" @click="clickAdd([7], '选择备品备件')"
-          >添加</el-button
+      <el-tab-pane label="匹配备品备件" name="part" v-if="defaultNum == '1'">
+        <!-- 数据表格 -->
+        <ele-pro-table
+          ref="table"
+          :columns="columns_part"
+          :datasource="partData"
+          :needPage="false"
+          height="calc(100vh - 265px)"
+          full-height="calc(100vh - 116px)"
+          tool-class="ele-toolbar-form"
+          cache-key="systemOrgUserTable"
         >
-        <el-table
-          :data="partData"
-          class="table-box"
-          :header-cell-style="{ background: '#F0F3F3', border: 'none' }"
+          <!-- 表头工具栏 -->
+          <template v-slot:toolbar>
+            <el-button type="primary" @click="clickAdd('7', '选择备品备件')"
+              >添加</el-button
+            >
+          </template>
+
+          <!-- 操作列 -->
+          <template v-slot:action="{ row, $index }">
+            <el-popconfirm
+              class="ele-action"
+              title="确定要删除此物品?"
+              @confirm="remove(row)"
+            >
+              <template v-slot:reference>
+                <el-link
+                  @click="handleDelete($index, row)"
+                  type="danger"
+                  :underline="false"
+                  icon="el-icon-delete"
+                >
+                  删除
+                </el-link>
+              </template>
+            </el-popconfirm>
+          </template>
+        </ele-pro-table>
+      </el-tab-pane>
+      <el-tab-pane label="BOM表" name="bom" v-if="defaultNum == '4'">
+        <!-- 数据表格 -->
+        <ele-pro-table
+          ref="table"
+          :columns="columns_bom"
+          :datasource="bomData"
+          :needPage="false"
+          height="calc(100vh - 265px)"
+          full-height="calc(100vh - 116px)"
+          tool-class="ele-toolbar-form"
+          cache-key="systemOrgUserTable"
         >
-          <el-table-column type="index" label="序号" width="50">
-          </el-table-column>
-          <el-table-column prop="informationCode" label="物品编码">
-          </el-table-column>
-          <el-table-column
-            prop="informationName"
-            label="物品名称"
-            show-overflow-tooltip
-          >
-          </el-table-column>
-          <el-table-column prop="modelType" label="型号"> </el-table-column>
-          <el-table-column
-            label="物品类型"
-            prop="classificationCode"
-            :formatter="classificationCodeFormatter"
-          >
-          </el-table-column>
-          <el-table-column
-            prop="classificationUrl"
-            show-overflow-tooltip
-            label="分类"
-          >
-          </el-table-column>
-          <el-table-column label="操作">
-            <template slot-scope="scope">
-              <el-button
-                type="text"
-                @click="handleDelete(scope.$index, scope.row)"
-                >删除</el-button
+          <!-- 表头工具栏 -->
+          <template v-slot:toolbar>
+            <div class="bom-top">
+              <el-button type="primary" @click="clickAdd('3', '选择物料')"
+                >添加</el-button
               >
-            </template>
-          </el-table-column>
-        </el-table>
-      </el-tab-pane>
-      <el-tab-pane label="BOM表" name="bom" v-if="defaultNum == 'w07'">
-        <div class="bom-top">
-          <el-button type="primary" @click="clickAdd([3], '选择物料')"
-            >添加</el-button
-          >
-          <div class="top-input">
-            <span>基本数量</span>
+              <div class="top-input">
+                <span>基本数量</span>
+                <el-input
+                  class="input-box"
+                  @input="handleEdit"
+                  v-model="itemForm.basicNum"
+                  placeholder="请输入"
+                ></el-input>
+                <span>{{ itemForm.measuringUnit }}</span>
+              </div>
+            </div>
+          </template>
+
+          <!-- 操作列 -->
+          <template v-slot:action="{ row, $index }">
+            <el-popconfirm
+              class="ele-action"
+              title="确定要删除此物品?"
+              @confirm="remove(row)"
+            >
+              <template v-slot:reference>
+                <el-link
+                  @click="handleDelete($index, row)"
+                  type="danger"
+                  :underline="false"
+                  icon="el-icon-delete"
+                >
+                  删除
+                </el-link>
+              </template>
+            </el-popconfirm>
+          </template>
+          <!-- 操作列 -->
+          <template v-slot:num="{ row, $index }">
             <el-input
-              class="input-box"
-              @input="handleEdit"
-              v-model="itemForm.basicNum"
+              type="number"
+              v-model="row.num"
               placeholder="请输入"
+              oninput="value=value.replace(/[^0-9.]/g,'')"
             ></el-input>
-            <span>{{ itemForm.measuringUnit }}</span>
-          </div>
-        </div>
-        <el-table
-          :data="bomData"
-          class="table-box"
-          :header-cell-style="{ background: '#F0F3F3', border: 'none' }"
-        >
-          <el-table-column type="index" label="序号" width="50">
-          </el-table-column>
-          <el-table-column prop="informationCode" label="物品编码" width="120">
-          </el-table-column>
-          <el-table-column
-            prop="informationName"
-            label="物品名称"
-            show-overflow-tooltip
-          >
-          </el-table-column>
-          <el-table-column prop="brandNum" label="牌号"> </el-table-column>
-          <el-table-column
-            label="物品类型"
-            prop="classificationCode"
-            :formatter="classificationCodeFormatter"
-          >
-          </el-table-column>
-          <el-table-column
-            prop="classificationUrl"
-            label="分类"
-            show-overflow-tooltip
-          >
-          </el-table-column>
-          <el-table-column prop="num" label="数量" width="120">
-            <template slot-scope="scope">
-              <el-input
-                type="number"
-                v-model="scope.row.num"
-                placeholder="请输入"
-                oninput="value=value.replace(/[^0-9.]/g,'')"
-              ></el-input>
-            </template>
-          </el-table-column>
-          <el-table-column label="计量单位" prop="measuringUnit">
-          </el-table-column>
-          <el-table-column label="操作">
-            <template slot-scope="scope">
-              <el-button
-                type="text"
-                @click="handleDelete(scope.$index, scope.row)"
-                >删除</el-button
-              >
-            </template>
-          </el-table-column>
-        </el-table>
+          </template>
+        </ele-pro-table>
       </el-tab-pane>
       <el-tab-pane
         label="匹配设备"
         name="facility"
-        v-if="defaultNum == 'w04' || defaultNum == 'w05'"
+        v-if="defaultNum == '6' || defaultNum == '7'"
       >
-        <el-button type="primary" @click="clickAdd([1], '选择设备')"
-          >添加</el-button
-        >
-        <el-table
-          :data="facilityData"
-          class="table-box"
-          :header-cell-style="{ background: '#F0F3F3', border: 'none' }"
+        <!-- 数据表格 -->
+        <ele-pro-table
+          ref="table"
+          :columns="columns_facility"
+          :datasource="facilityData"
+          :needPage="false"
+          height="calc(100vh - 265px)"
+          full-height="calc(100vh - 116px)"
+          tool-class="ele-toolbar-form"
+          cache-key="systemOrgUserTable"
         >
-          <el-table-column type="index" label="序号" width="50">
-          </el-table-column>
-          <el-table-column prop="informationCode" label="物品编码">
-          </el-table-column>
-          <el-table-column
-            prop="informationName"
-            label="物品名称"
-            show-overflow-tooltip
-          >
-          </el-table-column>
-          <el-table-column prop="modelType" label="型号"> </el-table-column>
-          <el-table-column
-            label="物品类型"
-            prop="classificationCode"
-            :formatter="classificationCodeFormatter"
-          >
-          </el-table-column>
-          <el-table-column
-            prop="classificationUrl"
-            label="分类"
-            show-overflow-tooltip
-          >
-          </el-table-column>
-          <el-table-column label="操作">
-            <template slot-scope="scope">
-              <el-button
-                type="text"
-                @click="handleDelete(scope.$index, scope.row)"
-                >删除</el-button
-              >
-            </template>
-          </el-table-column>
-        </el-table>
+          <!-- 表头工具栏 -->
+          <template v-slot:toolbar>
+            <el-button type="primary" @click="clickAdd('1', '选择设备')"
+              >添加</el-button
+            >
+          </template>
+
+          <!-- 操作列 -->
+          <template v-slot:action="{ row, $index }">
+            <el-popconfirm
+              class="ele-action"
+              title="确定要删除此物品?"
+              @confirm="remove(row)"
+            >
+              <template v-slot:reference>
+                <el-link
+                  @click="handleDelete($index, row)"
+                  type="danger"
+                  :underline="false"
+                  icon="el-icon-delete"
+                >
+                  删除
+                </el-link>
+              </template>
+            </el-popconfirm>
+          </template>
+        </ele-pro-table>
       </el-tab-pane>
     </el-tabs>
 
@@ -281,21 +248,24 @@
 </template>
 
 <script>
+  import matchMixins from './match-mixins';
   import AddDialog from './AddDialog.vue';
   export default {
     components: { AddDialog },
-    prop: {
+    props: {
       defaultNum: String
     },
+    mixins: [matchMixins],
     data () {
       return {
         activeName: 'mould',
-        typeValue: [],
+        typeValue: '',
         productData: [],
         mouldData: [],
         partData: [],
         bomData: [],
         facilityData: [],
+        dialogTitle: '',
         mapList: []
       };
     },
@@ -311,23 +281,23 @@
       },
       setDefault (val) {
         switch (val) {
-          case 'w06': {
+          case '3': {
             this.activeName = 'product';
             break;
           }
-          case 'w01': {
+          case '1': {
             this.activeName = 'mould';
             break;
           }
-          case 'w07': {
+          case '4': {
             this.activeName = 'mould';
             break;
           }
-          case 'w04': {
+          case '6': {
             this.activeName = 'product';
             break;
           }
-          case 'w05': {
+          case '7': {
             this.activeName = 'facility';
             break;
           }
@@ -337,23 +307,23 @@
       },
       matchList (key, data) {
         switch (key) {
-          case 'w01': {
+          case '1': {
             this.facilityData = data[key];
             break;
           }
-          case 'w04': {
+          case '6': {
             this.mouldData = data[key];
             break;
           }
-          case 'w05': {
+          case '7': {
             this.partData = data[key];
             break;
           }
-          case 'w07': {
+          case '4': {
             this.productData = data[key];
             break;
           }
-          case 'w06': {
+          case '3': {
             this.bomData = data[key];
             break;
           }
@@ -361,16 +331,6 @@
             break;
         }
       },
-      // 物品类型格式化
-      classificationCodeFormatter (row) {
-        let itemName = '';
-        this.typeList.map((item) => {
-          if (item.prefix == row.classificationCode) {
-            itemName = item.name;
-          }
-        });
-        return itemName;
-      },
       //点击添加打开弹窗
       clickAdd (val, name) {
         this.$refs.addDialogRef.equipmentdialog = true;
@@ -382,15 +342,15 @@
       },
       mapAddList () {
         this.mapList = [];
-        if (this.defaultNum == 'w01') {
+        if (this.defaultNum == '1') {
           this.mapList = this.partData.concat(this.mouldData);
-        } else if (this.defaultNum == 'w04') {
+        } else if (this.defaultNum == '6') {
           this.mapList = this.facilityData.concat(this.productData);
-        } else if (this.defaultNum == 'w05') {
+        } else if (this.defaultNum == '7') {
           this.mapList = this.facilityData;
-        } else if (this.defaultNum == 'w06') {
+        } else if (this.defaultNum == '3') {
           this.mapList = this.productData;
-        } else if (this.defaultNum == 'w07') {
+        } else if (this.defaultNum == '4') {
           this.mapList = this.mouldData.concat(this.bomData);
         }
       },
@@ -455,3 +415,11 @@
     }
   };
 </script>
+
+<style lang="scss" scoped>
+  .match-body {
+    :deep(.el-tabs__header) {
+      margin: 0 0 15px;
+    }
+  }
+</style>

+ 243 - 0
src/views/classifyManage/itemInformation/components/match-mixins.js

@@ -0,0 +1,243 @@
+export default {
+  props: {
+    typeList: {
+      type: Array,
+      default: () => []
+    }
+  },
+  data () {
+    return {
+      columns_product: [
+        {
+          type: 'index',
+          label: '序号',
+          width: 80
+        },
+        {
+          prop: 'informationCode',
+          label: '物品编码'
+        },
+        {
+          prop: 'informationName',
+          label: '物品名称'
+        },
+        {
+          prop: 'brandNum',
+          label: '牌号'
+        },
+        {
+          prop: 'modelType',
+          label: '型号'
+        },
+        {
+          prop: 'classificationCode',
+          label: '物品类型',
+          formatter: this.classificationCodeFormatter
+        },
+        {
+          prop: 'classificationUrl',
+          label: '分类'
+        },
+        {
+          columnKey: 'action',
+          label: '操作',
+          width: 150,
+          align: 'center',
+          slot: 'action',
+          fixed: 'right'
+        }
+      ],
+      columns_mould: [
+        {
+          type: 'index',
+          label: '序号',
+          width: 50
+        },
+        {
+          prop: 'informationCode',
+          label: '物品编码'
+        },
+        {
+          prop: 'informationName',
+          label: '物品名称'
+        },
+        {
+          prop: 'brandNum',
+          label: '牌号'
+        },
+        {
+          prop: 'modelType',
+          label: '型号'
+        },
+        {
+          prop: 'shrinkageCoefficient',
+          label: '收缩系数',
+          formatter: this.shrinkFormatter
+        },
+        {
+          prop: 'dieBodyModel',
+          label: '大模体型号',
+          formatter: this.modleFormatter
+        },
+        {
+          prop: 'classificationCode',
+          label: '物品类型',
+          formatter: this.classificationCodeFormatter
+        },
+        {
+          prop: 'classificationUrl',
+          label: '分类'
+        },
+        {
+          columnKey: 'action',
+          label: '操作',
+          width: 150,
+          align: 'center',
+          slot: 'action',
+          fixed: 'right'
+        }
+      ],
+      columns_part: [
+        {
+          type: 'index',
+          label: '序号',
+          width: 50
+        },
+        {
+          prop: 'informationCode',
+          label: '物品编码'
+        },
+        {
+          prop: 'informationName',
+          label: '物品名称'
+        },
+        {
+          prop: 'modelType',
+          label: '型号'
+        },
+        {
+          prop: 'classificationCode',
+          label: '物品类型',
+          formatter: this.classificationCodeFormatter
+        },
+        {
+          prop: 'classificationUrl',
+          label: '分类'
+        },
+        {
+          columnKey: 'action',
+          label: '操作',
+          width: 150,
+          align: 'center',
+          slot: 'action',
+          fixed: 'right'
+        }
+      ],
+      columns_bom: [
+        {
+          type: 'index',
+          label: '序号',
+          width: 50
+        },
+        {
+          prop: 'informationCode',
+          label: '物品编码'
+        },
+        {
+          prop: 'informationName',
+          label: '物品名称'
+        },
+        {
+          prop: 'brandNum',
+          label: '牌号'
+        },
+        {
+          prop: 'classificationCode',
+          label: '物品类型',
+          formatter: this.classificationCodeFormatter
+        },
+        {
+          prop: 'classificationUrl',
+          label: '分类'
+        },
+        {
+          label: '数量',
+          columnKey: 'num',
+          width: 120,
+          slot: 'num'
+        },
+        {
+          columnKey: 'action',
+          label: '操作',
+          width: 150,
+          align: 'center',
+          slot: 'action',
+          fixed: 'right'
+        }
+      ],
+      columns_facility: [
+        {
+          type: 'index',
+          label: '序号',
+          width: 50
+        },
+        {
+          prop: 'informationCode',
+          label: '物品编码'
+        },
+        {
+          prop: 'informationName',
+          label: '物品名称'
+        },
+        {
+          prop: 'classificationCode',
+          label: '物品类型',
+          formatter: this.classificationCodeFormatter
+        },
+        {
+          prop: 'classificationUrl',
+          label: '分类'
+        },
+        {
+          columnKey: 'action',
+          label: '操作',
+          width: 150,
+          align: 'center',
+          slot: 'action',
+          fixed: 'right'
+        }
+      ]
+    };
+  },
+  methods: {
+    // 物品类型格式化
+    classificationCodeFormatter (row) {
+      let itemName = '';
+      this.typeList.map((item) => {
+        if (item.prefix == row.classificationCode) {
+          itemName = item.name;
+        }
+      });
+      return itemName;
+    },
+
+    // 收缩系数格式化
+    shrinkFormatter (row) {
+      let shrink = '';
+      let extendField = JSON.parse(row.extendField);
+      if (extendField.hasOwnProperty('shrinkageCoefficient')) {
+        shrink = extendField.shrinkageCoefficient;
+      }
+      return shrink;
+    },
+
+    modleFormatter (row) {
+      let modle = '';
+      let extendField = JSON.parse(row.extendField);
+      if (extendField.hasOwnProperty('dieBodyModel')) {
+        modle = extendField.dieBodyModel;
+      }
+      return modle;
+    }
+  }
+};

+ 25 - 27
src/views/classifyManage/itemInformation/details.vue

@@ -24,15 +24,13 @@
         />
         <div
           class="row-table"
-          v-if="
-            defaultNum != 'w08' && defaultNum != 'w02' && defaultNum != 'w03'
-          "
+          v-if="defaultNum != '8' && defaultNum != '2' && defaultNum != '5'"
         >
           <el-tabs v-model="activeName" type="card">
             <el-tab-pane
               label="匹配产品"
               name="product"
-              v-if="defaultNum == 'w06' || defaultNum == 'w04'"
+              v-if="defaultNum == '3' || defaultNum == '6'"
             >
               <el-table
                 :data="productData"
@@ -62,7 +60,7 @@
             <el-tab-pane
               label="匹配模具"
               name="mould"
-              v-if="defaultNum == 'w01' || defaultNum == 'w07'"
+              v-if="defaultNum == '1' || defaultNum == '4'"
             >
               <el-table
                 :data="mouldData"
@@ -92,7 +90,7 @@
             <el-tab-pane
               label="匹配备品备件"
               name="part"
-              v-if="defaultNum == 'w01'"
+              v-if="defaultNum == '1'"
             >
               <el-table
                 :data="partData"
@@ -117,7 +115,7 @@
                 </el-table-column>
               </el-table>
             </el-tab-pane>
-            <el-tab-pane label="BOM表" name="bom" v-if="defaultNum == 'w07'">
+            <el-tab-pane label="BOM表" name="bom" v-if="defaultNum == '4'">
               <div class="bom-top">
                 <div class="top-input">
                   <span>基本数量</span>
@@ -154,7 +152,7 @@
             <el-tab-pane
               label="匹配设备"
               name="facility"
-              v-if="defaultNum == 'w04' || defaultNum == 'w05'"
+              v-if="defaultNum == '6' || defaultNum == '7'"
             >
               <el-table
                 :data="facilityData"
@@ -209,16 +207,16 @@
       return {
         pageTitle: '',
         typeList: [
-          { id: 1, value: 'w01  生产设备', prefix: 'w01', code: 1 },
-          { id: 2, value: 'w02  舟皿', prefix: 'w02', code: 2 },
-          { id: 3, value: 'w03  周转车', prefix: 'w03', code: 5 },
-          { id: 4, value: 'w04  模具', prefix: 'w04', code: 6 },
-          { id: 5, value: 'w05  备品备件', prefix: 'w05', code: 7 },
-          { id: 6, value: 'w06  物料', prefix: 'w06', code: 3 },
-          { id: 7, value: 'w07  产品', prefix: 'w07', code: 4 },
-          { id: 8, value: 'w08  耗材', prefix: 'w08', code: 8 }
+          { id: 1, value: '1  生产设备', prefix: '1', code: 1 },
+          { id: 2, value: '2  舟皿', prefix: '2', code: 2 },
+          { id: 3, value: '5  周转车', prefix: '5', code: 5 },
+          { id: 4, value: '6  模具', prefix: '6', code: 6 },
+          { id: 5, value: '7  备品备件', prefix: '7', code: 7 },
+          { id: 6, value: '3  物料', prefix: '3', code: 3 },
+          { id: 7, value: '4  产品', prefix: '4', code: 4 },
+          { id: 8, value: '8  耗材', prefix: '8', code: 8 }
         ],
-        defaultNum: 'w01',
+        defaultNum: '1',
         // itemForm:{
         //   priceType:0, dateType:0,
         // },
@@ -270,23 +268,23 @@
       // 显示默认选中的tab
       setDefault (val) {
         switch (val) {
-          case 'w06': {
+          case '3': {
             this.activeName = 'product';
             break;
           }
-          case 'w01': {
+          case '1': {
             this.activeName = 'mould';
             break;
           }
-          case 'w07': {
+          case '4': {
             this.activeName = 'mould';
             break;
           }
-          case 'w04': {
+          case '6': {
             this.activeName = 'product';
             break;
           }
-          case 'w05': {
+          case '7': {
             this.activeName = 'facility';
             break;
           }
@@ -297,23 +295,23 @@
 
       matchList (key, data) {
         switch (key) {
-          case 'w01': {
+          case '1': {
             this.facilityData = data[key];
             break;
           }
-          case 'w04': {
+          case '6': {
             this.mouldData = data[key];
             break;
           }
-          case 'w05': {
+          case '7': {
             this.partData = data[key];
             break;
           }
-          case 'w07': {
+          case '4': {
             this.productData = data[key];
             break;
           }
-          case 'w06': {
+          case '3': {
             this.bomData = data[key];
             break;
           }

+ 13 - 3
src/views/classifyManage/itemInformation/index.vue

@@ -36,7 +36,7 @@
                       originId: null,
                       originType: {},
                       parentId: null,
-                      type: {},
+                      type: '',
                       weight: 0
                     }
                   ];
@@ -71,12 +71,22 @@
         this.current = node;
       },
       openEdit () {
-        const selectList = this.$refs.commonTree.getSelectList();
+        const data = this.$refs.commonTree.getSelectList();
+
+        if (data?.id) {
+          let node = this.$refs.commonTree.getInstance().getNode(data.id);
+          const urlIdList = [data.id];
+          while (node.parent?.data?.id) {
+            urlIdList.unshift(node.parent?.data?.id);
+            node = node.parent;
+          }
+          data.urlIdList = urlIdList;
+        }
         this.$router.push({
           path: '/classifyManage/itemInformation/add',
           query: {
             pageTitle: '新建物品',
-            selectNode: JSON.stringify(selectList)
+            selectNode: JSON.stringify(data)
           }
         });
       }

+ 12 - 20
src/views/classifyManage/treeClassify/components/list-edit.vue

@@ -83,7 +83,11 @@
           />
         </el-form-item>
         <el-form-item label="与下层分隔:" prop="separate">
-          <DictSelection dictName="分隔符" clearable v-model="formData.separate">
+          <DictSelection
+            dictName="分隔符"
+            clearable
+            v-model="formData.separate"
+          >
           </DictSelection>
         </el-form-item>
         <el-form-item label="本层排序:" prop="sort">
@@ -118,7 +122,7 @@
       }
     },
     mixins: [dictMixins],
-    data() {
+    data () {
       const defaultForm = {
         name: '',
         code: '',
@@ -133,18 +137,6 @@
         defaultForm,
         // 表单数据
         formData: { ...defaultForm },
-        // typeList: [
-        //   { label: '产品分类', code: 3 },
-        //   { label: '摸具分类', code: 4 },
-        //   { label: '设备分类', code: 5 },
-        //   { label: '舟皿分类', code: 6 }
-        // ],
-        // splitList: [
-        //   { label: '无分隔符', code: '' },
-        //   { label: '-', code: '-' },
-        //   { label: '~', code: '~' },
-        //   { label: '/', code: '/' }
-        // ],
         // 表单验证规则
         rules: {
           name: [
@@ -178,7 +170,7 @@
       };
     },
     computed: {
-      fullName() {
+      fullName () {
         let str = '';
         let codeStr = '';
         let node = this.curNode;
@@ -194,15 +186,15 @@
         );
       }
     },
-    created() {},
+    created () {},
     methods: {
-      open(data, parentData) {
+      open (data, parentData) {
         this.parentData = parentData;
         this.data = data;
         this.visible = true;
       },
       /* 保存编辑 */
-      save() {
+      save () {
         this.$refs.formRef.validate((valid) => {
           if (!valid) {
             return false;
@@ -233,12 +225,12 @@
         });
       },
       /* 更新visible */
-      updateVisible(value) {
+      updateVisible (value) {
         this.visible = value;
       }
     },
     watch: {
-      visible(visible) {
+      visible (visible) {
         if (visible) {
           if (this.data) {
             this.$util.assignObject(this.formData, this.data);