From 1e31f9f7fe6f04236e97f72c0df3ce051d5f867e Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期一, 24 十一月 2025 16:26:23 +0800
Subject: [PATCH] Merge branch 'master' of http://bore.pub:10439/r/ERP_override

---
 north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue |  275 ++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 203 insertions(+), 72 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
index 5b2a9cc..929ad0f 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
@@ -2,7 +2,7 @@
 import {computed, nextTick, onMounted, onUnmounted, reactive, ref, toRefs} from "vue";
 import {useRouter,useRoute} from 'vue-router'
 import request from "@/utils/request";
-import {ElMessage} from "element-plus";
+import {ElCheckbox, ElMessage} from "element-plus";
 import {changeFilterEvent, filterChanged} from "@/hook"
 import domZIndex from 'dom-zindex'
 import {indexOf} from "xe-utils";
@@ -21,6 +21,9 @@
 const router = useRouter()
 const route = useRoute()
 const user=userInfo()
+//鏄惁澶嶅悎宸ュ簭
+const laminating = ref(null)
+
 //瀹氫箟琛ㄥご鏁版嵁
 const titleUploadData = ref({
   //鏄惁鍚堢墖宸ュ簭
@@ -77,6 +80,9 @@
 let technologicalProcess=''
 let processName = ref([])
 
+//闅愯棌鍏ㄩ儴瀹屽伐搴忓彿
+let  hiddenVal = ref(1)
+
 //瀹氫箟鎺ユ敹鍔犺浇琛ㄥご涓嬫媺鏁版嵁
 const titleSelectJson = ref({
   deviceType: [],
@@ -113,16 +119,16 @@
   //   label: t('reportingWorks.nightShift'),
   // },
    {
-    value: '鏈ㄧ',
-    label: '鏈ㄧ',
+    value: t('reportingWorks.woodenBox'),
+    label: t('reportingWorks.woodenBox'),
   },
   {
-    value: '閾佹灦',
-    label: '閾佹灦',
+    value: t('reportingWorks.brandreth'),
+    label: t('reportingWorks.brandreth'),
   },
   {
-    value: '鍊掓灦',
-    label: '鍊掓灦',
+    value: t('reportingWorks.tilting'),
+    label: t('reportingWorks.tilting'),
   },
 ]
 
@@ -146,6 +152,7 @@
    //route.query.reportingWorkId = 'BG2403150004'
   //鍒ゆ柇鏄惁浼犲叆鎶ュ伐缂栧彿
   if(route.query.reportingWorkId !== '' && route.query.reportingWorkId!=null){
+    gridOptions.loading = true
     request.post(`reportingWork/selectUpdateReportingWork/${route.query.reportingWorkId}`).then(res=>{
       if(res.code === '200'){
         titleUploadData.value = res.data.reportingWork
@@ -182,14 +189,25 @@
           code: 'update',
           name: t('basicData.update'),
           status: 'primary',
+          disabled:'false'
         }
         if(route.query.reviewStatus === "1"){
           button.name=t('basicData.review')
           titleUploadData.value.qualityInspector=user.user.userName
         }
         gridOptions.toolbarConfig.buttons.push(button)
+        for (let i = 0; i < res.data.reportingWorkDetails.length; i++) {
+          if (res.data.reportingWorkDetails[i].patchStatusOther === '宸茶ˉ鐗�') {
+             gridOptions.toolbarConfig.buttons[2].disabled=true
+             break
+          }
+          else{
+            gridOptions.toolbarConfig.buttons[2].disabled=false
+          }
+        }
       }
      // getQuantity()
+      gridOptions.loading = false
       inputDisabled.value = true
     })
   }
@@ -242,7 +260,7 @@
     useKey: true
   },
   filterConfig: {   //绛涢�夐厤缃」
-                    // remote: true
+    // remote: true
   },
   customConfig: {
     storage: true
@@ -263,7 +281,7 @@
   },
   menuConfig: {
     body: {
-    //鍙抽敭鑿滃崟
+      //鍙抽敭鑿滃崟
       options: [
         [
           {
@@ -289,14 +307,14 @@
           },
           {
             code: 'SecondaryBreakage',
-            name: "搴忓彿娆$牬鐩稿悓",
+            name: t('reportingWorks.secondaryBreakage'),
             prefixIcon: 'vxe-icon-indicator',
             visible: true,
             disabled: false
           },
           {
             code: 'checkedBreakage',
-            name: "閫変腑娆$牬鐩稿悓",
+            name: t('reportingWorks.checkedBreakage'),
             prefixIcon: 'vxe-icon-indicator',
             visible: true,
             disabled: false
@@ -401,25 +419,79 @@
   editRules: {
     completedQuantity: [
       {
-        validator ({ row }) {
+        validator ({ row ,cellValue }) {
           const regex = /^[0-9]\d*$/
           const brokenNum =
               (row.breakageQuantity === undefined || row.breakageQuantity===null) ? 0 : row.breakageQuantity
+          //鏁存暟楠岃瘉
           if (row.completedQuantity && !regex.test(row.completedQuantity)) {
             return new Error(t('reportingWorks.enterIntegerGreaterThanEqualTo'))
+            //瀹屽伐+娆$牬鏁伴噺涓嶈兘澶т簬鍙畬宸ユ暟閲�
           }else if((row.completedQuantity*1+brokenNum*1)>row.quantity*1){
-            return new Error((`${row.completedQuantity}+${brokenNum}>${row.quantity}`))
+            return new Error(t('reportingWorks.pleaseNumber11'))
+            //鏈瀹屽伐鏁伴噺涓嶈兘澶т簬瀹屽伐鏁伴噺
           }else  if(row.quantity_card<row.completedQuantity){
             return new Error(t('reportingWorks.pleaseNumber10'))
           }
+          const nextProcess = titleUploadData.value.nextProcess//涓嬪伐搴�
+
+          const completedSum = Number(row.thisQuantitySum) //鎬诲畬宸ユ暟閲�
+          let nextQuantitySum = ''
+          if (nextProcess!=''){
+             nextQuantitySum = Number(row.nextQuantitySum) //鎬讳笅宸ュ簭瀹屽伐鏁伴噺
+          }else {
+             nextQuantitySum = Number(row.received_quantity) //鎬讳笅宸ュ簭瀹屽伐鏁伴噺
+          }
+          const totalQuantity = Number(row.quantity) //鍙畬宸ユ暟閲�
+          const val = Number(cellValue) //杈撳叆鍊�
+
+          //瀹屽伐鏁�
           const completedNum =
               (row.completedQuantity === undefined || row.completedQuantity===null || row.completedQuantity==='') ? 0 : row.completedQuantity
-          if(titleUploadData.value.reportingWorkId!=null  && completedNum>row.minQuantity){
-            return new Error(`${t('reportingWorks.pleaseGreaterThanOrEqual1')}
-            ${row.minQuantity}
-            ${t('reportingWorks.pleaseGreaterThanOrEqual2')}`)
-          }
+          //
+          const okVal = completedSum - totalQuantity + row.breakageQuantity
 
+          //褰撳彲鎿嶄綔鏁伴噺涓�0锛屽苟涓斿畬宸ユ暟閲忎笉绛変簬鍙畬宸ユ暟閲忔椂
+          if(row.minQuantity===0 && val!==(totalQuantity-row.breakageQuantity) ){
+            return new Error(`${t('reportingWorks.pleaseNumber12')} ${okVal}+${val}=${okVal+val}\n
+                              ${t('reportingWorks.pleaseNumber13')} ${nextQuantitySum}\n
+                              ${t('reportingWorks.pleaseNumber14')}
+            `)
+          }
+          if(titleUploadData.value.reportingWorkId!=null){
+            if (nextProcess!=''){//闈炴渶鍚庝竴閬撳伐搴�
+              if(row.completedQuantityComputed>=row.minQuantity ){
+                if((val<(row.completedQuantityComputed-row.minQuantity || val>=row.completedQuantityComputed))){
+                  return new Error(`${row.completedQuantityComputed-row.minQuantity}
+                                  <=val<=
+                                  ${row.completedQuantityComputed}`)
+                }
+              }else{
+                if((val>row.completedQuantityComputed)){
+                  return new Error(`val
+                                  <=
+                                  ${row.completedQuantityComputed}`)
+                }
+              }
+            }else {//鏈�鍚庝竴閬撳伐搴�
+              if (val<row.completedQuantityComputed){
+                         //搴撳瓨鏁伴噺銆佸凡鍏ュ簱鏁伴噺
+                if (val>(row.inventory_quantity-row.received_quantity)){
+                  return new Error(`val
+                                  <=
+                                  ${row.inventory_quantity-row.received_quantity}`)
+                }else {
+                  if (val < (row.inventory_quantity-row.received_quantity)){
+                        //瀹屽伐鎬绘暟銆佹湰娆″畬宸ユ暟銆佸凡鍏ュ簱鏁伴噺
+                    if (completedSum-row.completedQuantityComputed <row.received_quantity){
+                      return new Error(`${t('reportingWorks.pleaseNumber15')}`)
+                    }
+                  }
+                }
+              }
+            }
+
+          }
         }
       }
     ]
@@ -430,6 +502,9 @@
       {code: 'saveReportingWorkReview', name: t('reportingWorks.saveAndReview'), status: 'primary', icon: 'vxe-icon-save',disabled:true},
       {code: 'saveWorkStorage', name: t('reportingWorks.saveWorkStorage'), status: 'primary', icon: 'vxe-icon-save'},
     ],
+    // slots: {
+    //   tools: 'toolbar_buttons'
+    // },
     zoom: true,
     custom: true
   },
@@ -535,7 +610,7 @@
           //灞傚彿
           let technologyStr = resultProcessId[2];
           if (last != titleUploadData.value.thisProcess){
-            ElMessage.error('璇烽�夋嫨鏈�鍚庡伐搴忔姤宸ュ叆搴�')
+            ElMessage.error(t('reportingWorks.pleaseNumber16'))
             return
           }
           storageBtn.value = true
@@ -557,9 +632,9 @@
     const { rows, column, cell } = params; // 瑙f瀯鑾峰彇琛屻�佸垪鍜屽崟鍏冩牸淇℃伅
     //鐐瑰嚮娆$牬鏁伴噺鏃舵墦寮�鏄庣粏鐣岄潰
     if(column.field=="breakageQuantity"){
-      if (row.patchStatusOther!="宸茶ˉ鐗�"){
+     // if (row.patchStatusOther!="宸茶ˉ鐗�"){
         brokenVisible.value = true
-      }
+      //}
     }
   },
   menuClick({menu, row, column}) {//鍙抽敭鑿滃崟
@@ -747,7 +822,7 @@
     },
     {
       field: 'responsiblePersonnel',
-      title: '璐d换淇℃伅',
+      title: t('rework.responsibilityInformation'),
       editRender: {name: 'input', attrs: {placeholder: ''}}
 
     },
@@ -951,6 +1026,23 @@
     return
   }
 
+  const reportingWorkTime = titleUploadData.value.reportingWorkTime
+    const currentTime = new Date()
+    const targetTime = new Date(reportingWorkTime)
+    //鏈潵鏃堕棿
+    if (targetTime > currentTime) {
+      ElMessage.error(t('reportingWorks.futureTime'))
+      return
+    }
+    // 涓や釜鏃堕棿鐨勬绉掑樊
+    const diffMs = currentTime - targetTime
+    // 杞崲涓哄ぉ鏁�
+    const diffDays = diffMs / (1000 * 60 * 60 * 24)
+    if (diffDays > 396 && saveType!="update") {
+      ElMessage.error(t('reportingWorks.longTime'))
+      return
+    }
+
   const seenIds = {}
   const uniqueByOrderNum = xGrid.value.getTableData().fullData.filter(item => {
     // 妫�鏌tem鐨刬d鏄惁宸茬粡鍦╯eenIds涓�
@@ -1001,6 +1093,7 @@
   }
   gridOptions.toolbarConfig.buttons[0].disabled=true
   gridOptions.toolbarConfig.buttons[1].disabled=true
+  gridOptions.loading=true
   //鍒ゆ柇淇濆瓨杩樻槸淇敼
   if(saveType==='save'){
     saveReportingWorkRequest(requestData)
@@ -1018,6 +1111,7 @@
       if(storageBtn.value == true){
         getStorageWork();
       }
+      gridOptions.loading=false
       router.push({path:'/main/reportingWorks/AddReportingWork',query:{processId:titleUploadData.value.processId,random:Math.random()}})
     }else{
       const errorObj = JSON.parse(res.msg)
@@ -1026,15 +1120,16 @@
           +t('reportingWorks.pleaseNumber3')+'锛�'+errorObj.processNum+'<'+
           +t('reportingWorks.pleaseNumber4')+'锛�'+errorObj.sumNum+'\n'
           +t('reportingWorks.pleaseNumber5')
-
+      gridOptions.loading=false
       ElMessage.error(msg)
     }
   }).catch(err =>{
-    ElMessage.error('鎻愪氦澶辫触锛岃鍒锋柊鍚庨噸璇�')
+    ElMessage.error(t('basicData.msg.ServerConnectionError'))
+    gridOptions.loading=false
   }).finally(()=>{
-
     gridOptions.toolbarConfig.buttons[0].disabled=false
     gridOptions.toolbarConfig.buttons[1].disabled=false
+    gridOptions.loading=false
   })
 }
 
@@ -1229,47 +1324,30 @@
 
       //鍒ゆ柇鏃╂櫄鐝�
       titleUploadData.value.classes=t('reportingWorks.early')
-      titleUploadData.value.reportingWorkTime = formatCurrentTime()
-
-      //澶勭悊缂栧彿鍒�
-      //瀹氫箟瀛樻斁缂栧彿鏁扮粍
-      const s01Values = [];
-      for (let i = 0; i < res.data.Detail.length; i++) {
-        const s01Values = [];
-        // 閬嶅巻 detailList 鏁扮粍锛屾彁鍙� S01 鍊煎埌 s01Values 鏁扮粍
-        if (res.data.Detail[i].other_columns!=null|| res.data.Detail[i].other_columns!=undefined){
-          res.data.Detail.forEach(element => {
-            const otherColumnsObject = JSON.parse(element.other_columns);
-            const s01Value = otherColumnsObject.S01;
-            s01Values.push(s01Value || ''); // 濡傛灉 S01 鍊间负绌猴紝娣诲姞绌哄瓧绗︿覆鎴栬�呭叾浠栭粯璁ゅ��
-          });
-
-          // 灏� s01Values 涓殑鍊艰祴缁欐瘡涓鍗曡鎯呭璞$殑 s01Value 灞炴��
-          res.data.Detail.forEach((detail, index) => {
-            detail.s01Value = index < s01Values.length ? s01Values[index] : ''; // 璧嬪�肩粰 s01Value 灞炴��
-          });
-        }
-
-      }
+      titleUploadData.value.reportingWorkTime = res.data.reportingWorkTiem
 
 
       //缁戝畾涓嬫柟琛ㄦ牸
-      detail.value = res.data.Detail
+
       // 浣跨敤map鏂规硶鏉ュ鐞嗘瘡涓璞�
-      let modifiedCollection = detail.value.map(item => {
+      let modifiedCollection = res.data.Detail.map(item => {
         if (item.reviewed_state === 1) {
-          return { ...item, reviewed_state: "宸插鏍�" };
+          return { ...item, reviewed_state: t('productStock.approved') };
         }
         else if (item.reviewed_state === 0) {
-          return { ...item, reviewed_state: "鏈鏍�" };
+          return { ...item, reviewed_state: t('reportingWorks.unreviewed') };
         }
         else {
           // 鍏朵粬鎯呭喌淇濇寔涓嶅彉
           return item;
         }
       });
-      xGrid.value.reloadData(modifiedCollection)
+      detail.value = modifiedCollection
+      xGrid.value.reloadData(detail.value)
       hideButton()
+      // nextTick(() => {
+      //   hiddenCompletedOk()
+      // })
     } else {
       ElMessage.warning(res.msg)
     }
@@ -1455,7 +1533,7 @@
   const seen = new Set();
   const result = rawData.filter(item => {
     // 1. 鍏堟妸 completedQuantity 涓� 0 鐨勫墧闄�
-    if (item.completedQuantity === 0) {
+    if (item.completedQuantity === 0 || item.completedQuantity =="0" || item.completedQuantity =="") {
       return false;
     }
     // 2. 閬囧埌鐩稿悓 order_number锛屽彧淇濈暀绗竴娆★紝鍚庨潰閮戒涪寮�
@@ -1473,7 +1551,8 @@
       orderId: titleUploadData.value.orderId
     },
     processId:processIdStr,
-    orderNumber:item.order_number
+    orderNumber:item.order_number,
+    inventoryQuantity:item.completedQuantity
   }));
   let flowData = ref({
     decValue:company.decValue,
@@ -1483,6 +1562,7 @@
     remark: remark.value,
     container: container.value,
     flowCard: resultData,
+    createTime: titleUploadData.value.reportingWorkTime
   })
   //璋冪敤鍏ュ簱鎺ュ彛
   request.post("/finishedGoodsInventory/addSelectWarehousing",flowData.value).then((res) => {
@@ -1503,15 +1583,16 @@
 }
 
 const hideButton = () => {
-  //鑾峰彇鏈�鍚庝竴閬撳伐搴�
+  // 鑾峰彇鏈�鍚庝竴閬撳伐搴�
   const parts = technologicalProcess.split('->');
   let last = parts[parts.length - 1];
   if (last === '') {
     last = null;
   }
   const els = document.querySelectorAll('.inventory_content');
-  //鏄惁鏄剧ず鎶ュ伐鍏ュ簱鐩稿叧鎸夐挳鍐呭
-  if (btnValue == false || last != titleUploadData.value.thisProcess){
+
+  // 鏄惁鏄剧ず鎶ュ伐鍏ュ簱鐩稿叧鎸夐挳鍐呭
+  if (btnValue == false || last != titleUploadData.value.thisProcess) {
     els.forEach(el => {
       el.style.display = 'none';
     });
@@ -1519,25 +1600,67 @@
     els.forEach(el => {
       el.style.display = '';
     });
-    let buttons =  {
-      code: 'saveWorkStorage',
-      name: t('reportingWorks.saveWorkStorage'),
-      status: 'primary',
-      icon: 'vxe-icon-save'
+    // 閬垮厤閲嶅娣诲姞鎸夐挳
+    const exists = gridOptions.toolbarConfig.buttons.some(btn => btn.code === 'saveWorkStorage');
+    if (!exists) {
+      let buttons = {
+        code: 'saveWorkStorage',
+        name: t('reportingWorks.saveWorkStorage'),
+        status: 'primary',
+        icon: 'vxe-icon-save'
+      };
+      gridOptions.toolbarConfig.buttons.push(buttons);
     }
-    gridOptions.toolbarConfig.buttons.push(buttons)
   }
+
+  // 杩囨护鎸夐挳锛岄殣钘� saveWorkStorage 鎸夐挳鏃舵満
   gridOptions.toolbarConfig.buttons = gridOptions.toolbarConfig.buttons.filter(button => {
-    // 濡傛灉 type 涓嶄负绌烘椂锛岄殣钘� print 鎸夐挳
-    if ((btnValue == false || last != titleUploadData.value.thisProcess) && button.code === 'saveWorkStorage' ) {
-      return false;  // 闅愯棌 print 鎸夐挳
+    if ((btnValue == false || last != titleUploadData.value.thisProcess) && button.code === 'saveWorkStorage') {
+      return false;
     }
-
-
-    // 榛樿杩斿洖 true锛岃〃绀轰繚鐣欐寜閽�
     return true;
   });
 };
+
+
+
+const changeGroup = (value)=> {
+  //鍒ゆ柇鍘嗗彶鐝粍鏄惁鏈夋鐝粍淇℃伅
+  const exists = titleSelectJson.value.historyTeams.some(item => item.basic_name === value)
+  if(! exists){
+    titleSelectJson.value.historyTeams.push({
+      basic_name: value,
+      process: titleUploadData.value.thisProcess,
+      basic_type: 'teamsgroups',
+      id: 555
+    })
+  }
+
+
+}
+
+const onHiddenChange = (checked) => {
+  hiddenVal.value = checked ? 1 : 0
+  hiddenCompletedOk()
+}
+
+const hiddenCompletedOk = () => {
+  const $grid = xGrid.value
+  const data = $grid.getTableData().fullData
+  const laminating = titleUploadData.value.laminating
+  const filteredData = data.filter(row => {
+    return row.completedQuantity>0 //杩囨护鍙畬宸ユ暟閲忎负0鐨�
+  })
+  if (laminating == ''){
+    if (hiddenVal.value == 1){
+      // 閲嶆柊鍔犺浇杩囨护鍚庣殑鏁版嵁
+      $grid.loadData(filteredData)
+    }else {
+      //鍘熷鏁版嵁
+      $grid.loadData(detail.value);
+    }
+  }
+}
 </script>
 
 <template>
@@ -1667,6 +1790,7 @@
         <el-col :span="3">
           <el-select :disabled="groupChangeProcess"
                      v-model="titleUploadData.teamsGroupsName"
+                     @change="changeGroup"
                      clearable
                      :placeholder="$t('reportingWorks.selectTeam')">
             <el-option
@@ -1744,7 +1868,15 @@
             </div>
           </div>
         </template>
-
+        <template #toolbar_buttons>
+          <el-checkbox
+              :model-value="hiddenVal === 1"
+              @change="onHiddenChange"
+          >
+            {{ t('reportingWorks.hiddenVal') }}
+          </el-checkbox>
+          &nbsp;&nbsp;
+        </template>
 
       </vxe-grid>
     </div>
@@ -1939,8 +2071,7 @@
 }
 
 ::v-deep(.mytable-scrollbar .col-red) {
-  background-color: rgb(66,159,254);
-  color: #fff;
+  background-color: rgb(66,159,254)!important;
 }
 
 

--
Gitblit v1.8.0