From 43f4fd08bb99f587c387391aad727fb82b34b7c1 Mon Sep 17 00:00:00 2001
From: loulijun2021 <1694218219@qq.com>
Date: 星期五, 11 八月 2023 13:27:47 +0800
Subject: [PATCH] 1.存货类型页面优化

---
 src/views/makeModel/InventoryList.vue |  132 +++++++++++++++++++++++++++++++++----------
 vue.config.js                         |   17 +++--
 package.json                          |    1 
 3 files changed, 111 insertions(+), 39 deletions(-)

diff --git a/package.json b/package.json
index cdcf9ff..22d4b90 100644
--- a/package.json
+++ b/package.json
@@ -16,6 +16,7 @@
   "dependencies": {
     "@microsoft/signalr": "^7.0.9",
     "axios": "0.18.1",
+    "array-to-tree": "^3.3.2",
     "core-js": "3.6.5",
     "cronstrue": "^2.28.0",
     "dayjs": "^1.11.5",
diff --git a/src/views/makeModel/InventoryList.vue b/src/views/makeModel/InventoryList.vue
index 35f4bc1..cda9131 100644
--- a/src/views/makeModel/InventoryList.vue
+++ b/src/views/makeModel/InventoryList.vue
@@ -48,21 +48,28 @@
               <el-input v-model="form.partspec" placeholder="璇疯緭鍏�" style="width: 200px" />
             </el-form-item>
             <el-form-item label="瀛樿揣绫诲瀷" style=" display: flex;">
-              <el-select
-                v-model="form.stocktypecode"
+              <el-cascader
+                ref="cascader"
+                :options="stocktypeArr"
                 filterable
-                :popper-append-to-body="false"
-                style="width: 200px"
-                placeholder="璇烽�夋嫨"
-              >
-                <!--                @change="val=>stocktypecodeChange(val,'form')"-->
-                <el-option
-                  v-for="item in stocktypeArr"
-                  :key="item.code"
-                  :label="item.name"
-                  :value="item.code"
-                />
-              </el-select>
+                :props="defaultProps"
+                @change="val=>cascaderChange(val,'form')"
+              />
+              <!--              <el-select-->
+              <!--                v-model="form.stocktypecode"-->
+              <!--                filterable-->
+              <!--                :popper-append-to-body="false"-->
+              <!--                style="width: 200px"-->
+              <!--                placeholder="璇烽�夋嫨"-->
+              <!--              >-->
+              <!--                &lt;!&ndash;                @change="val=>stocktypecodeChange(val,'form')"&ndash;&gt;-->
+              <!--                <el-option-->
+              <!--                  v-for="item in stocktypeArr"-->
+              <!--                  :key="item.code"-->
+              <!--                  :label="item.name"-->
+              <!--                  :value="item.code"-->
+              <!--                />-->
+              <!--              </el-select>-->
             </el-form-item>
             <el-form-item v-if="false" label="鐗╂枡绫诲瀷" style=" display: flex;">
               <el-select
@@ -272,22 +279,31 @@
           </el-select>
         </el-form-item>
         <el-form-item label="瀛樿揣绫诲瀷" prop="stocktypecode">
-          <el-select
-            v-model="dialogForm.stocktypecode"
-            filterable
-            :popper-append-to-body="false"
-            style="width: 200px"
-            placeholder="璇烽�夋嫨"
-          >
-            <!--            @change="val=>stocktypecodeChange(val,'dialogForm')"-->
 
-            <el-option
-              v-for="item in stocktypeArr"
-              :key="item.code"
-              :label="item.name"
-              :value="item.code"
-            />
-          </el-select>
+          <el-cascader
+            ref="cascaderDialog"
+            :options="stocktypeArr"
+            filterable
+            :props="defaultPropsDialog"
+            @change="val=>cascaderChange(val,'dialogForm')"
+          />
+
+          <!--          <el-select-->
+          <!--            v-model="dialogForm.stocktypecode"-->
+          <!--            filterable-->
+          <!--            :popper-append-to-body="false"-->
+          <!--            style="width: 200px"-->
+          <!--            placeholder="璇烽�夋嫨"-->
+          <!--          >-->
+          <!--            &lt;!&ndash;            @change="val=>stocktypecodeChange(val,'dialogForm')"&ndash;&gt;-->
+
+          <!--            <el-option-->
+          <!--              v-for="item in stocktypeArr"-->
+          <!--              :key="item.code"-->
+          <!--              :label="item.name"-->
+          <!--              :value="item.code"-->
+          <!--            />-->
+          <!--          </el-select>-->
         </el-form-item>
         <el-form-item label="鎵�灞炰粨搴�" prop="warehousecode">
           <el-select
@@ -720,6 +736,7 @@
 import elDragDialog from '@/directive/el-drag-dialog'
 import waves from '@/directive/waves'
 import TableColumnSettings from '@/components/TableColumnSettings'
+import arrayToTree from 'array-to-tree'
 
 export default {
   name: 'CHDA',
@@ -981,7 +998,20 @@
       isBatchNo: false, // 鏄惁鎵规绠$悊
       isFifo: false, // 鏄惁鍏堣繘鍏堝嚭
       isInCheck: false, // 鏄惁鍏ュ簱妫�楠�
-      isOutCheck: false// 鏄惁鍑哄巶妫�楠�
+      isOutCheck: false, // 鏄惁鍑哄巶妫�楠�
+
+      defaultProps: {
+        checkStrictly: true,
+        expandTrigger: 'hover',
+        value: 'code',
+        label: 'name'
+      },
+      defaultPropsDialog: {
+        // checkStrictly: true,
+        expandTrigger: 'hover',
+        value: 'code',
+        label: 'name'
+      }
     }
   },
   created() {
@@ -1079,6 +1109,34 @@
         }, 10000)
       }
     },
+    cascaderChange(val, type) {
+      if (type === 'form') {
+        this.form.stocktypecode = val[val.length - 1]
+      }
+      if (type === 'dialogForm') {
+        this.dialogForm.stocktypecode = val[val.length - 1]
+      }
+    },
+    // parents:鐢ㄤ簬杩斿洖鐨勬暟缁勶紝childNode:瑕佹煡璇㈢殑鑺傜偣锛宼reeData锛歫son鏍戝舰鏁版嵁
+    findParent(parents, childNode, treeData) {
+      for (let i = 0; i < treeData.length; i++) {
+        // 鐖惰妭鐐规煡璇㈡潯浠�
+        if (treeData[i].code === childNode) {
+          // 濡傛灉鎵惧埌缁撴灉,淇濆瓨褰撳墠鑺傜偣
+          parents.push(treeData[i].code)
+          // 鐢ㄥ綋鍓嶈妭鐐瑰啀鍘诲師鏁版嵁鏌ユ壘褰撳墠鑺傜偣鐨勭埗鑺傜偣
+          this.findParent(parents, treeData[i].iparent_id, this.stocktypeArr)
+          break
+        } else {
+          if (treeData[i].children instanceof Array) {
+            //	娌℃壘鍒帮紝閬嶅巻璇ヨ妭鐐圭殑瀛愯妭鐐�
+            this.findParent(parents, childNode, treeData[i].children)
+          }
+        }
+      }
+      return parents
+    },
+
     async getInventoryFileSelect() {
       const res = await InventoryFileSelect(this.form)
       this.tableData = res.data
@@ -1087,7 +1145,13 @@
     },
     async getStockTypeSelect() {
       const { data: res } = await StockTypeSelect()
-      this.stocktypeArr = res
+      this.stocktypeArr = arrayToTree(res, {
+        parentProperty: 'iparent_id',
+        customID: 'code',
+        childrenProperty: 'children'
+      })
+
+      console.log(this.stocktypeArr, 2)
     },
     async getWareHouseSelect() {
       const { data: res } = await WareHouseSelect()
@@ -1139,6 +1203,7 @@
       this.form.stocktypecode = ''
       this.form.materialtypecode = ''
       this.form.storehousecode = ''
+      this.$refs.cascader.checkedValue = ''
       this.getInventoryFileSelect()
     },
     // 鏂板鎸夐挳
@@ -1149,10 +1214,14 @@
     },
     // 淇敼鎸夐挳
     async edit(operation, row) {
+      const cascaderCheckedValue = this.findParent([], row.stocktypecode, this.stocktypeArr)
+
       this.operation = operation
       this.dialogVisible = true
       // await this.stocktypecodeChange(row.stocktypecode, 'dialogForm')
       this.$nextTick(() => {
+        this.$refs.cascaderDialog.checkedValue = cascaderCheckedValue.reverse()
+
         this.dialogForm.id = row.id
         this.dialogForm.materialcode = row.partcode
         this.dialogForm.materialname = row.partname
@@ -1205,6 +1274,7 @@
       this.isFifo = false
       this.isInCheck = false
       this.isOutCheck = false
+      this.$refs.cascaderDialog.checkedValue = ''
       this.$refs.dialogForm.clearValidate()
     },
     // 瀵硅瘽妗嗗彇娑�
diff --git a/vue.config.js b/vue.config.js
index 0867e45..1d32115 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -53,20 +53,21 @@
     proxy: {
       [process.env.VUE_APP_BASE_API]: {
         target: 'http://121.196.36.24:8017', // 璇锋眰鐨勭涓夆絽鎺モ紳鍦板潃       鏈湴寮�鍙戞湇鍔″櫒
+        // target: 'http://192.168.94.178:8001', // 璇锋眰鐨勭涓夆絽鎺モ紳鍦板潃       瀹㈡埛鏈嶅姟鍣�
         changeOrigin: true, // 璇锋眰璺ㄥ煙鏃讹紝闇� 閰嶇疆姝ら」
         pathRewrite: { // 璺緞閲嶅啓,鏇挎崲target涓殑璇锋眰鍦板潃
           ['^' + process.env.VUE_APP_BASE_API]: '/api/'
         }
         // ws: true;//寮�鍚痺s, 濡傛灉鏄痟ttp浠g悊姝ゅ鍙互涓嶇敤璁剧疆
-      },
-      [process.env.VUE_APP_BASE_API_BASE]: {
-        target: 'http://121.196.36.24:8019', // 璇锋眰鐨勭涓夆絽鎺モ紳鍦板潃       鏈湴寮�鍙戞湇鍔″櫒
-        changeOrigin: true, // 璇锋眰璺ㄥ煙鏃讹紝闇� 閰嶇疆姝ら」
-        pathRewrite: { // 璺緞閲嶅啓,鏇挎崲target涓殑璇锋眰鍦板潃
-          ['^' + process.env.VUE_APP_BASE_API_BASE]: '/base/'
-        }
-        // ws: true;//寮�鍚痺s, 濡傛灉鏄痟ttp浠g悊姝ゅ鍙互涓嶇敤璁剧疆
       }
+      // [process.env.VUE_APP_BASE_API_BASE]: {
+      //   target: 'http://121.196.36.24:8019', // 璇锋眰鐨勭涓夆絽鎺モ紳鍦板潃       鏈湴寮�鍙戞湇鍔″櫒
+      //   changeOrigin: true, // 璇锋眰璺ㄥ煙鏃讹紝闇� 閰嶇疆姝ら」
+      //   pathRewrite: { // 璺緞閲嶅啓,鏇挎崲target涓殑璇锋眰鍦板潃
+      //     ['^' + process.env.VUE_APP_BASE_API_BASE]: '/base/'
+      //   }
+      //   // ws: true;//寮�鍚痺s, 濡傛灉鏄痟ttp浠g悊姝ゅ鍙互涓嶇敤璁剧疆
+      // }
     }
     // before: require('./mock/mock-server.js')
   },

--
Gitblit v1.9.3