From bb2ed2e56da26a6b79575f5be9f60ca2d90774d0 Mon Sep 17 00:00:00 2001
From: 小小儁爺 <1694218219@qq.com>
Date: 星期四, 01 八月 2024 17:17:32 +0800
Subject: [PATCH] 1.工序、工价界面优化

---
 src/views/basicSettings/meterPrice.vue  |  134 ++++++++++++++++++++++++++++----
 src/views/basicSettings/processList.vue |   84 +++++++++++++++++---
 src/api/GeneralBasicData.js             |   18 ++++
 3 files changed, 202 insertions(+), 34 deletions(-)

diff --git a/src/api/GeneralBasicData.js b/src/api/GeneralBasicData.js
index df40fdf..7202f30 100644
--- a/src/api/GeneralBasicData.js
+++ b/src/api/GeneralBasicData.js
@@ -157,6 +157,24 @@
   })
 }
 
+// 寰�鏉ュ崟浣嶇被鍨嬪熀纭�璧勬枡
+export function CustomerTypePermissions(data) {
+  return request({
+    url: 'GeneralBasicData/CustomerTypePermissions',
+    method: 'get',
+    params: data
+  })
+}
+
+// 寰�鏉ュ崟浣嶇被鍨嬫煡鎵惧線鏉ュ崟浣嶅熀纭�璧勬枡
+export function CustomerTypeSearchPermission(data) {
+  return request({
+    url: 'GeneralBasicData/CustomerTypeSearchPermissions',
+    method: 'get',
+    params: data
+  })
+}
+
 // 瀛樿揣鏍戝瀷鍩虹璧勬枡
 export function InventoryTreePermissions(data) {
   return request({
diff --git a/src/views/basicSettings/meterPrice.vue b/src/views/basicSettings/meterPrice.vue
index d1ee3d0..7d5ea87 100644
--- a/src/views/basicSettings/meterPrice.vue
+++ b/src/views/basicSettings/meterPrice.vue
@@ -192,7 +192,7 @@
       :title="operation==='add'?'鏂板':'缂栬緫'"
       :visible.sync="dialogVisible"
       width="1100px"
-      top="15vh"
+      top="5vh"
       :close-on-click-modal="false"
       @closed="handleClose"
       @close="handleClose"
@@ -252,28 +252,101 @@
           </el-form-item>
         </div>
       </el-form>
-
+      <!--      :expand-row-keys="expandRowKeys"-->
+      <!--      row-key="code"-->
       <el-table
         :data="stepDialogArr"
         style="width: 100%"
-        height="300"
+        height="600"
+
         border
         :header-cell-style="this.$headerCellStyle"
         :cell-style="this.$cellStyle"
         :row-class-name="tableRowClassName"
       >
+        <el-table-column type="expand">
+          <template slot-scope="props">
+            <el-table
+              :data="props.row.children"
+              style="width: 96%;margin: auto;"
+              border
+              :row-class-name="tableRowClassName"
+            >
+              <el-table-column
+                prop="eqp_code"
+                label="璁惧/寰�鏉ョ紪鐮�"
+                min-width="120"
+              />
+              <el-table-column
+                prop="eqp_name"
+                label="璁惧/寰�鏉ュ悕绉�"
+                min-width="120"
+              />
+              <el-table-column
+                prop="eqp_value"
+                label="璁惧鑺傛媿"
+                min-width="150"
+              >
+                <template slot-scope="{row}">
+                  <div style="display: flex">
+                    <el-input
+                      v-model="row.eqp_value"
+                      placeholder="璇疯緭鍏�"
+                      oninput="value=value.replace(/[^0-9.]/g,'')"
+                      @change="val=>eqpValueChange(val,row)"
+                    />
+                    <div style="margin-left: 5px">绉�</div>
+                  </div>
+
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="stand_value"
+                label="鐢熶骇鑺傛媿"
+                min-width="120"
+              >
+                <template slot-scope="{row}">
+                  <div>{{ row.stand_value + ' ' + '绉�' }}</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="cavity_qty"
+                label="鑵斿瀷鏁�"
+                min-width="120"
+              >
+                <template slot-scope="{row}">
+                  <el-input
+                    v-model="row.cavity_qty"
+                    placeholder="璇疯緭鍏�"
+                    oninput="value=value.replace(/[^0-9.]/g,'')"
+                    @change="val=>cavityQtyChange(val,row)"
+                  />
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="unprice"
+                label="宸ュ簭宸ヤ环"
+                min-width="120"
+              >
+                <template slot-scope="{row}">
+                  <el-input v-model="row.unprice" oninput="value=value.replace(/[^0-9.]/g,'')" />
+                </template>
+              </el-table-column>
+            </el-table>
+          </template>
+        </el-table-column>
         <el-table-column
-          prop="step_seq"
+          prop="seq"
           label="宸ュ簭椤哄簭"
           width="100"
         />
         <el-table-column
-          prop="step_code"
+          prop="code"
           label="宸ュ簭缂栫爜"
           width="200"
         />
         <el-table-column
-          prop="step_name"
+          prop="name"
           label="宸ュ簭鍚嶇О"
           width="200"
         />
@@ -479,8 +552,9 @@
       editPartName: '', // 缂栬緫鏃朵骇鍝佸悕绉�
       editRouteName: '', // 缂栬緫鏃跺伐鑹鸿矾绾垮悕绉�
       editStepName: '', // 缂栬緫鏃跺姞宸ュ伐搴忓悕绉�
-      operation: ''
+      operation: '',
 
+      expandRowKeys: []// 榛樿灞曞紑
     }
   },
 
@@ -581,6 +655,12 @@
     async routeDialogChange(val) {
       const { data: res } = await RouteSelectStep({ partcode: this.dialogForm.partcode, routecode: val })
       this.stepDialogArr = res
+
+      this.expandRowKeys = this.stepDialogArr.map(i => {
+        if (i.children.length > 0) {
+          return i.code
+        }
+      })
     },
 
     // 鏂板鎸夐挳
@@ -654,22 +734,22 @@
       this.$refs.dialogForm.validate(valid => {
         if (valid) {
           const children = []
-          this.stepDialogArr.forEach(i => {
-            children.push({
-              'code': i.step_code,
-              'name': i.step_name,
-              'seq': i.step_seq,
-              'isbott': i.isbott,
-              'isend': i.isend,
-              'unprice': i.unprice
-            })
-          })
+          // this.stepDialogArr.forEach(i => {
+          //   children.push({
+          //     'code': i.step_code,
+          //     'name': i.step_name,
+          //     'seq': i.step_seq,
+          //     'isbott': i.isbott,
+          //     'isend': i.isend,
+          //     'unprice': i.unprice
+          //   })
+          // })
 
           const data = [
             {
               'partcode': this.dialogForm.partcode,
               'defaultroute_code': this.dialogForm.routecode,
-              'children': children
+              'children': this.stepDialogArr
             }
           ]
           SaveBeatRate(data).then(res => {
@@ -684,7 +764,23 @@
         }
       })
     },
-
+    // 璁惧鑺傛媿鍊兼敼鍙�
+    eqpValueChange(val, row) {
+      console.log(val, row)
+      if (parseFloat(row.cavity_qty) !== 0) {
+        row.stand_value = parseFloat((parseFloat(val) / parseFloat(row.cavity_qty)).toFixed(2))
+      } else {
+        row.stand_value = 0
+      }
+    },
+    // 鑵斿瀷鏁板�兼敼鍙�
+    cavityQtyChange(val, row) {
+      if (parseFloat(val) !== 0) {
+        row.stand_value = parseFloat((parseFloat(row.eqp_value) / parseFloat(val)).toFixed(2))
+      } else {
+        row.stand_value = 0
+      }
+    },
     // 鑾峰彇椤甸潰楂樺害
     getHeight() {
       this.$nextTick(() => {
diff --git a/src/views/basicSettings/processList.vue b/src/views/basicSettings/processList.vue
index 1624cb1..1ae3d42 100644
--- a/src/views/basicSettings/processList.vue
+++ b/src/views/basicSettings/processList.vue
@@ -229,7 +229,7 @@
     >
       <el-divider content-position="left">鍩烘湰淇℃伅</el-divider>
 
-      <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="80px">
+      <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="110px">
         <el-form-item label="宸ュ簭缂栫爜" prop="stepcode">
           <el-input v-model="dialogForm.stepcode" :disabled="operation!=='add'" style="width: 200px" />
         </el-form-item>
@@ -244,6 +244,7 @@
             :popper-append-to-body="false"
             @change="steptypecodeChange"
           >
+
             <el-option
               v-for="item in steptypeArr"
               :key="item.code"
@@ -253,9 +254,8 @@
           </el-select>
         </el-form-item>
 
-        <el-form-item v-if="dialogForm.steptypecode==='Z'" label="鎵�灞炶溅闂�" required>
+        <el-form-item v-if="dialogForm.steptypecode==='Z'" label="鎵�灞炶溅闂�">
           <el-select
-
             v-model="dialogForm.Wkshop"
             style="width:200px"
             placeholder="璇烽�夋嫨"
@@ -269,6 +269,25 @@
               :key="item.torg_code"
               :label="item.torg_name"
               :value="item.torg_code"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item v-if="dialogForm.steptypecode==='W'" label="寰�鏉ュ崟浣嶇被鍨�">
+          <el-select
+            v-model="dialogForm.CustomerType"
+            style="width:200px"
+            placeholder="璇烽�夋嫨"
+            multiple
+            collapse-tags
+            :popper-append-to-body="false"
+            @change="CustomerTypeChange"
+          >
+            <el-option
+              v-for="item in CustomerTypeArr"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
             />
           </el-select>
         </el-form-item>
@@ -410,7 +429,13 @@
 import elDragDialog from '@/directive/el-drag-dialog'
 import waves from '@/directive/waves'
 import $ from 'jquery'
-import { CustomerPermissions, TorgWkshop, WkshopEqpPermissions } from '@/api/GeneralBasicData'
+import {
+  CustomerPermissions,
+  CustomerTypePermissions,
+  CustomerTypeSearchPermission,
+  TorgWkshop,
+  WkshopEqpPermissions
+} from '@/api/GeneralBasicData'
 
 export default {
   name: 'Zzjg',
@@ -427,8 +452,8 @@
         stepname: '', //
         enable: '', //
         steptypecode: '', // 宸ュ簭绫诲瀷
-        prop: 'stepcode', // 鎺掑簭瀛楁
-        order: 'asc', // 鎺掑簭瀛楁
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
         page: 1, // 绗嚑椤�
         rows: 20 // 姣忛〉澶氬皯鏉�
       },
@@ -443,12 +468,14 @@
         { code: 'N', name: '鍋滅敤' }
       ],
       WkshopArr: [], // 杞﹂棿涓嬫媺鏁扮粍
+      CustomerTypeArr: [], // 寰�鏉ュ崟浣嶄笅鎷夋暟缁�
       dialogVisible: false,
       dialogForm: {
         id: '',
         stepcode: '', //
         stepname: '', //
         Wkshop: '', //
+        CustomerType: '', //
         steptypecode: 'Z',
         description: '', // 鎻忚堪
         enable: 'Y'// 鐘舵��
@@ -486,6 +513,7 @@
   created() {
     this.getStepSearch()
     this.getTorgWkshop()
+    this.getCustomerTypePermissions()
   },
   mounted() {
     window.addEventListener('resize', this.getHeight)
@@ -503,6 +531,11 @@
       const { data: res } = await TorgWkshop()
       this.WkshopArr = res
     },
+    // 寰�鏉ュ崟浣嶇被鍨�
+    async getCustomerTypePermissions() {
+      const { data: res } = await CustomerTypePermissions()
+      this.CustomerTypeArr = res
+    },
     // 鏌ョ湅寰�鏉ヨ祫鏂�
     async getCustomerPermissions() {
       const { data: res } = await CustomerPermissions()
@@ -515,21 +548,39 @@
     },
 
     async steptypecodeChange(val) {
-      if (val === 'W') { // 澶栧崗
-        await this.getCustomerPermissions()
-      } else { // 鑷埗
-        this.dialogForm.Wkshop = []
-        this.dialogTreeArr = []
-      }
+      // if (val === 'W') { // 澶栧崗
+      //   this.dialogForm.CustomerType = []
+      //   // await this.getCustomerPermissions()
+      // } else { // 鑷埗
+      //   this.dialogForm.Wkshop = []
+      // }
+      this.dialogForm.CustomerType = []
+      this.dialogForm.Wkshop = []
+      this.dialogTreeArr = []
     },
 
     // 杞﹂棿鍊兼敼鍙樻椂瑙﹀彂
     async WkshopChange(val) {
       if (val.length === 0) {
+        this.dialogTreeArr = []
         return
       }
-
       const { data: res } = await WkshopEqpPermissions({ wkshopcode: val.join(',') })
+      this.dialogTreeArr = [
+        { code: '',
+          name: '鍏ㄩ儴',
+          children: res
+        }
+      ]
+    },
+
+    // 寰�鏉ュ崟浣嶇被鍨嬪�兼敼鍙樻椂
+    async CustomerTypeChange(val) {
+      if (val.length === 0) {
+        this.dialogTreeArr = []
+        return
+      }
+      const { data: res } = await CustomerTypeSearchPermission({ customertypecode: val.join(',') })
       this.dialogTreeArr = [
         { code: '',
           name: '鍏ㄩ儴',
@@ -585,14 +636,17 @@
         })
         await this.WkshopChange(this.dialogForm.Wkshop)
       } else if (row.flwtype === 'W') {
-        await this.steptypecodeChange(row.flwtype)
+        this.dialogForm.CustomerType = []
+        // await this.steptypecodeChange(row.flwtype)
         res.filter(i => i.type === 'W' && i.flag === 'Y').forEach(i => {
+          this.dialogForm.CustomerType.push(i.code)
           i.children.forEach(j => {
             if (j.flag === 'Y') {
               this.dialogTreeSelectedArr.push(j.code)
             }
           })
         })
+        await this.CustomerTypeChange(this.dialogForm.CustomerType)
       }
 
       this.$nextTick(() => {
@@ -636,7 +690,7 @@
       this.dialogForm.steptypecode = 'Z'
       this.dialogTreeArr = []
       this.dialogForm.Wkshop = []
-
+      this.dialogForm.CustomerType = []
       this.dialogTreeSelectedArr = []
       this.$refs.dialogForm.clearValidate()
     },

--
Gitblit v1.9.3