From 3e100eddbd89f13894870be8dd0cf380e1eef65f Mon Sep 17 00:00:00 2001
From: guoyuji <guoyujie@ng.com>
Date: 星期四, 07 三月 2024 08:00:59 +0800
Subject: [PATCH] 提交报工相关文件

---
 north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue |  164 ++++++++++++++++++++++++++++--------------------------
 1 files changed, 86 insertions(+), 78 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 94d06b9..ee7099a 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
@@ -16,7 +16,7 @@
 //瀹氫箟琛ㄥご鏁版嵁
 const titleUploadData = ref({
   //娴佺▼鍗″彿
-  processId: 'NG24030501A01/1',
+  processId: 'NG24030501A01/2',
   //閿�鍞崟鍙�
   orderId: '',
   //鐢熶骇鍗曞彿
@@ -24,7 +24,7 @@
   //璁惧绫诲瀷
   deviceName: '',
   //鐝粍鍚嶇О
-  teamsgroupsName: '',
+  teamsGroupsName: '',
   //鐢熶骇鏃ユ湡
   reportingWorkTime: '',
   //鎶ュ伐宸ュ簭
@@ -216,51 +216,30 @@
     },
     {
       field: 'breakageQuantity',  title: '娆$牬鏁伴噺',
-
     },
-    // {field: 'available', width: 80, title: '鍙埄鐢�', editRender: {name: 'input', attrs: {placeholder: ''}}},
-    // {field: 'returnProcess', width: 100, title: '閫�鍥炲伐搴�', editRender: {name: 'input', attrs: {placeholder: ''}}},
-    // {
-    //   field: 'reasonType', width: 100, title: '娆$牬绫诲瀷',
-    //   editRender: {name: 'input', attrs: {placeholder: '', type: 'selected'}}
-    // },
-    // {
-    //   field: 'reasonDamage', width: 100, title: '娆$牬鍘熷洜',
-    //   editRender: {name: 'input', attrs: {placeholder: ''}}
-    // },
-    // {
-    //   field: 'responsibleProcess', width: 100, title: '璐d换宸ュ簭',
-    //   editRender: {},
-    //   slots: {default: 'reportingWordSort_default', edit: 'reportingWordSort'}
-    //   //editRender: {name: 'input', attrs: {placeholder: '',type: 'selected'}},
-    //
-    // },
-    // {
-    //   field: 'responsibleEquipment',
-    //   width: 100,
-    //   title: '璐d换璁惧',
-    //   editRender: {},
-    //   slots: {default: 'reportingDeviceSort_default', edit: 'reportingDeviceSort'}
-    //   // editRender: {name: 'input', attrs: {placeholder: ''}}
-    // },
-    //
-    // {
-    //   field: 'responsibleTeam', width: 100, title: '璐d换鐝粍',
-    //   editRender: {name: 'input', attrs: {placeholder: ''}}
-    // },
-    // {
-    //   field: 'responsibilityPersonnel',
-    //   width: 100,
-    //   title: '璐d换浜哄憳',
-    //   editRender: {name: 'input', attrs: {placeholder: ''}}
-    //
-    // },
     {field: 'completed', width: 90, title: '宸插畬宸�',},
     {field: 'onceBroken', width: 90, title: '宸叉鐮�',},
 
   ],
 //琛ㄥ崟楠岃瘉
-  editRules: {},
+  editRules: {
+    completedQuantity: [
+      {
+        validator ({ row }) {
+          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('璇疯緭鍏ユ暣鏁帮紝骞朵笖澶т簬-1')
+          }else if(row.completedQuantity+brokenNum>row.quantity){
+            return new Error((`${row.completedQuantity}+$(brokenNum)>${row.quantity}`))
+          }
+
+        }
+      }
+    ]
+  },
   toolbarConfig: {//琛ㄥご鎸夐挳
     buttons: [
       // {code: 'empty', name: '娓呯┖鎶ュ伐鏁伴噺'},
@@ -278,30 +257,46 @@
     custom: true
   },
   //鑴氶儴姹傚拰
-  // footerMethod({columns, data}) {//椤佃剼鍑芥暟
-  //   let footList = ['', '', '', '', '']
-  //   return [
-  //     columns.map((column, columnIndex) => {
-  //       if (columnIndex === 0) {
-  //         return '鍚堣:'
-  //       }
-  //       if (footList.includes(column.field)) {
-  //         return sumNum(data, column.field)
-  //       }
-  //       return ''
-  //     })
-  //   ]
-  // }
+  footerMethod({columns, data}) {//椤佃剼鍑芥暟
+    let footList = ['', '', '', '', '']
+    return [
+      columns.map((column, columnIndex) => {
+        if (columnIndex === 0) {
+          return '鍚堣:'
+        }
+        return ''
+      })
+    ]
+  }
 
 })
 
 let brokenRow = ref()
 const gridEvents = {
-  toolbarButtonClick({code}) {
+  async toolbarButtonClick({code}) {
     const $grid = xGrid.value
     if ($grid) {
       switch (code) {
         case 'saveReportingWork':  {
+          if($grid.getTableData().fullData.length===0){
+            ElMessage.warning(`璇烽�夋嫨娴佺▼鍗℃暟鎹甡)
+            return false
+          }
+          const device = titleUploadData.value.deviceName
+          if(device === null || device === undefined || device === ''){
+            ElMessage.error('璇烽�夋嫨鎶ュ伐璁惧锛�')
+            return
+          }
+          const teamsGroupsName = titleUploadData.value.teamsGroupsName
+          if(teamsGroupsName === null || teamsGroupsName === undefined || teamsGroupsName === ''){
+            ElMessage.error('璇烽�夋嫨鎶ュ伐璁惧锛�')
+            return
+          }
+          const errMap = await $grid.validate(true)
+          if (errMap) {
+            ElMessage.error(`鏍¢獙涓嶉�氳繃锛乣)
+            return
+          }
           saveReportingWork()
           break
         }
@@ -373,14 +368,14 @@
       slots: {default: 'returnProcess_default', edit: 'returnProcess'}
     },
     {
-      field: 'reasonType', title: '娆$牬绫诲瀷',
+      field: 'breakageType', title: '娆$牬绫诲瀷',
       editRender: {},
-      slots: {default: 'reasonType_default', edit: 'reasonType'}
+      slots: {default: 'breakageType_default', edit: 'breakageType'}
     },
     {
-      field: 'reasonDamage', title: '娆$牬鍘熷洜',
+      field: 'breakageReason', title: '娆$牬鍘熷洜',
       editRender: {},
-      slots: {default: 'reasonDamage_default', edit: 'reasonDamage'}
+      slots: {default: 'breakageReason_default', edit: 'breakageReason'}
     },
     {
       field: 'responsibleProcess', title: '璐d换宸ュ簭',
@@ -401,7 +396,7 @@
       slots: {default: 'responsibleTeam_default', edit: 'responsibleTeam'}
     },
     {
-      field: 'responsibilityPersonnel',
+      field: 'responsiblePersonnel',
       title: '璐d换浜哄憳',
       editRender: {name: 'input', attrs: {placeholder: ''}}
 
@@ -430,10 +425,10 @@
         }
       }
     ],
-    reasonType: [
+    breakageType: [
       { required: true, message: '璇烽�夋嫨娆$牬绫诲瀷' }
     ],
-    reasonDamage: [
+    breakageReason: [
       { required: true, message: '璇烽�夋嫨娆$牬鍘熷洜' }
     ],
     responsibleProcess: [
@@ -525,8 +520,19 @@
 })
 
 const saveReportingWork = () => {
+
   titleUploadData.value.creator = user.user.userName
-  titleUploadData.value.creatorId = user.user.id
+  titleUploadData.value.creatorId = user.user.userId
+  const requestDetailData = xGrid.value.getTableData().fullData.filter((row) => {
+    const a = (row.completedQuantity !== undefined && row.completedQuantity !== null && row.completedQuantity !== '')
+    const b = (row.breakageQuantity !== undefined && row.breakageQuantity !== null && row.breakageQuantity !== '')
+    return (a || b)
+  })
+  if(requestDetailData.length === 0){
+    ElMessage.warning('璇峰~鍐欒嚦灏戜竴鏉℃崯鑰楁暟鍜屽畬宸ユ暟')
+    return false
+  }
+
   const requestData = {
     title:titleUploadData.value,
     detail:xGrid.value.getTableData().fullData
@@ -535,7 +541,10 @@
   request.post(`/reportingWork/saveReportingWork`,requestData).then(res =>{
     if (res.code == 200){
       ElMessage.success("鎶ュ伐鎴愬姛")
+      router.push({path:'/main/reportingWorks/AddReportingWork',query:{random:Math.random()}})
     }
+  }).catch(err =>{
+    ElMessage.error(err.message)
   })
 }
 
@@ -620,8 +629,8 @@
       titleSelectJson.value.breakageType =  res.data.breakageType
       //娆$牬鍘熷洜
       titleSelectJson.value.breakageReason =  res.data.breakageReason
-      console.log(res.data)
-
+      //console.log(res.data)
+      titleUploadData.value.classes='鏃╃彮'
 
 
       titleUploadData.value.reportingWorkTime = formatCurrentTime()
@@ -674,7 +683,7 @@
   let hours = dateObj.getHours().toString().padStart(2, '0'); // 灏忔椂
   let minutes = dateObj.getMinutes().toString().padStart(2, '0'); // 鍒嗛挓
   let seconds = dateObj.getSeconds().toString().padStart(2, '0'); // 绉掓暟
-
+  if(parseInt(hours)>=17)titleUploadData.value.classes='鏅氱彮'
   return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; // 杩斿洖鏍煎紡鍖栧悗鐨勬椂闂村瓧绗︿覆
 }
 
@@ -787,7 +796,7 @@
           <el-text>鎶ュ伐鐝粍锛�</el-text>
         </el-col>
         <el-col :span="3">
-          <el-select v-model="titleUploadData.teamsgroupsName" clearable placeholder="璇烽�夋嫨鐝粍">
+          <el-select v-model="titleUploadData.teamsGroupsName" clearable placeholder="璇烽�夋嫨鐝粍">
             <el-option
                 v-for="item in titleSelectJson['teamsType']"
                 :key="item.id"
@@ -847,7 +856,6 @@
           v-bind="gridOptions"
           v-on="gridEvents"
           @filter-change="filterChanged"
-          @edit-closed="verifyNum"
 
       >
 
@@ -908,30 +916,30 @@
           <template #responsibleProcess_default="{ row }">
             <span>{{ row.responsibleProcess }}</span>
           </template>
-          <!--     鍒虹牬绫诲瀷reasonType    -->
-          <template #reasonType="{ row }">
-            <vxe-select v-model="row.reasonType "
+          <!--     鍒虹牬绫诲瀷breakageType   -->
+          <template #breakageType="{ row }">
+            <vxe-select v-model="row.breakageType "
                         filterable
                         clearable
                         placeholder="">
               <vxe-option v-for="item in titleSelectJson.breakageType" :key="item.id" :label="item.basic_name" :value="item.basic_name"/>
             </vxe-select>
           </template>
-          <template #reasonType_default="{ row }">
-            <span>{{ row.reasonType }}</span>
+          <template #breakageType_default="{ row }">
+            <span>{{ row.breakageType }}</span>
           </template>
 
           <!--娆$牬鍘熷洜-->
-          <template #reasonDamage="{ row }">
-            <vxe-select v-model="row.reasonDamage "
+          <template #breakageReason="{ row }">
+            <vxe-select v-model="row.breakageReason "
                         filterable
                         clearable
                         placeholder="">
               <vxe-option v-for="item in titleSelectJson.breakageReason" :key="item.id" :label="item.basic_name" :value="item.basic_name"/>
             </vxe-select>
           </template>
-          <template #reasonDamage_default="{ row }">
-            <span>{{ row.reasonDamage }}</span>
+          <template #breakageReason_default="{ row }">
+            <span>{{ row.breakageReason }}</span>
           </template>
 
 

--
Gitblit v1.8.0