From ba1a2f73f9ce33d175bea4060d217b9f7a08eeed Mon Sep 17 00:00:00 2001
From: hyingbo <1363390067@qq.com>
Date: 星期四, 31 七月 2025 16:55:42 +0800
Subject: [PATCH] 工具报损-添加报损数量校验规则

---
 src/views/tms/lossBound/modules/LossboundModal.vue |   89 +++++++++++++++++++++++++++++---------------
 1 files changed, 58 insertions(+), 31 deletions(-)

diff --git a/src/views/tms/lossBound/modules/LossboundModal.vue b/src/views/tms/lossBound/modules/LossboundModal.vue
index 3942e81..7db180f 100644
--- a/src/views/tms/lossBound/modules/LossboundModal.vue
+++ b/src/views/tms/lossBound/modules/LossboundModal.vue
@@ -89,7 +89,7 @@
         <a-row>
           <a-col :span="12">
             <a-form-model-item label="鎶ユ崯鍘熷洜" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="lossReason">
-              <a-textarea :disabled="disableSubmit" v-model="model.lossReason" rows="4" placeholder="璇疯緭鍏ュ娉�" />
+              <a-textarea :disabled="disableSubmit" v-model="model.lossReason" rows="4" placeholder="璇疯緭鍏ユ姤鎹熷師鍥�" />
             </a-form-model-item>
           </a-col>
         </a-row>
@@ -113,9 +113,20 @@
       @change="handleTableChange">
 
       <template v-for="col in columns" :slot="col.dataIndex" slot-scope="text, record, index">
-        <a-input-number :disabled="disableSubmit" :value="text" v-if="col.dataIndex == 'lossNumber'" :min="0"
-                        :max="99999"
-                        @change="(e) => handleChange(e, record.key, col, index)" style="width: 100%;" />
+        <div v-if="col.dataIndex == 'lossNumber'">
+          <a-input-number
+            :disabled="disableSubmit"
+            :value="text"
+            :min="0"
+            :max="99999"
+            @change="(e) => handleChange(e, record.key, col, index)"
+            style="width: 100%;"
+          />
+          <div v-if="record.lossNumberError" style="color: #f5222d; font-size: 12px; margin-top: 4px;">
+            {{ record.lossNumberMsg }}
+          </div>
+        </div>
+
         <a-textarea
           v-if="col.dataIndex == 'lossReason'"
           :disabled="disableSubmit"
@@ -193,10 +204,10 @@
           width: 50
         },
         {
-          title: '鍒�鍏风紪鍙�',
-          dataIndex: 'toolCode',
+          title: '鍒�鍏风紪鐮�',
+          dataIndex: 'toolId',
           align: 'center',
-          width: 150
+          width: 200
         },
 
         {
@@ -205,7 +216,22 @@
           align: 'center',
           width: 150
         },
+        {
+          title: '鎶ユ崯鍘熷洜',
+          width: 150,
+          dataIndex: 'lossReason',
+          align: 'center',
+          scopedSlots: { customRender: 'lossReason' }
+        },
 
+        {
+          title: '鎶ユ崯鏁伴噺',
+          dataIndex: 'lossNumber',
+          align: 'center',
+          width: 150,
+          scopedSlots: { customRender: 'lossNumber' },
+          key: 'lossNumber'
+        },
         {
           title: '涓枃鍚嶇О',
           dataIndex: 'chineseName',
@@ -245,21 +271,7 @@
           dataIndex: 'goodsShelvesId',
           align: 'center'
         },
-        {
-          title: '鎶ユ崯鍘熷洜',
-          width: 150,
-          dataIndex: 'lossReason',
-          align: 'center',
-          scopedSlots: { customRender: 'lossReason' }
-        },
 
-        {
-          title: '鎶ユ崯鏁伴噺',
-          dataIndex: 'lossNumber',
-          align: 'center',
-          width: 150,
-          scopedSlots: { customRender: 'lossNumber' }
-        },
 
         {
           title: '澶囨敞',
@@ -304,8 +316,8 @@
     this.$bus.$on('selectionRows', (data) => {
       for (let i = 0; i < data.length; i++) {
         this.dataSource.push({
-          toolId: data[i].id,
-          toolCode: data[i].toolCode,
+          toolCode:data[i].toolCode,
+          toolId:data[i].toolId,
           classifyId: data[i].classifyId,
           applicationType: data[i].applicationType_dictText,
           chineseName: data[i].chineseName,
@@ -314,8 +326,10 @@
           supplierId: data[i].supplierId,
           goodsShelvesId: data[i].positionCode,
           toolMaterial: data[i].toolMaterial,
-          partMaterial: data[i].partMaterial
-
+          partMaterial: data[i].partMaterial,
+          lossNumber: null, // 鍒濆鍖栨姤鎹熸暟閲�
+          lossNumberError: false, // 鏍¢獙鐘舵��
+          lossNumberMsg: '' // 閿欒淇℃伅
         })
       }
       this.ipagination.total = this.dataSource.length
@@ -332,13 +346,15 @@
       const target = temp.filter(item => key === item.key)[index]
       if (target) {
         target[column.dataIndex] = value
-        this.dataSource = temp
-        if (column.dataIndex === 'lossNumber') {
 
-          target[column.dataIndex] = value
-        }
-        if (column.dataIndex === 'lossReason') {
-          target[column.dataIndex] = value
+        if (column.dataIndex === 'lossNumber') {
+          if (value === null || value === undefined || value <= 0) {
+            target.lossNumberError = true
+            target.lossNumberMsg = '鎶ユ崯鏁伴噺涓嶈兘涓虹┖涓斿繀椤诲ぇ浜�0'
+          } else {
+            target.lossNumberError = false
+            target.lossNumberMsg = ''
+          }
         }
         this.dataSource = temp
       }
@@ -398,6 +414,17 @@
       // 瑙﹀彂琛ㄥ崟楠岃瘉
       this.$refs.form.validate(valid => {
         if (valid) {
+          let isTableValid = true
+          this.dataSource.forEach((row, index) => {
+            this.handleChange(row.lossNumber, row.key, { dataIndex: 'lossNumber' }, index)
+            if (row.lossNumberError) {
+              isTableValid = false
+            }
+          })
+
+          if (!isTableValid) {
+            return false
+          }
           this.model.toolsLossBoundDetailList = this.dataSource
           that.confirmLoading = true
           let httpurl = ''

--
Gitblit v1.9.3