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