diff --git a/src/pages/repair/repairManage/num-operate.vue b/src/pages/repair/repairManage/num-operate.vue index 3091666..6e6f82e 100644 --- a/src/pages/repair/repairManage/num-operate.vue +++ b/src/pages/repair/repairManage/num-operate.vue @@ -35,9 +35,18 @@ - - 提交 - + + + + + @@ -676,85 +685,113 @@ const deleteImage2 = (index) => { //数量维修保存 const saveNumAll = async () => { - console.log(rowData.value) - if(repairPerson.value==""){ - uni.showToast({ title: '请先选择维修人员!', icon: 'none' }) - }else if((formLeft.value.repairNum + formMiddle.value.repairNum + formRight.value.scrapNum)==0){ - uni.showToast({ title: '请选择维修类型并填写维修数量!', icon: 'none' }) - }else if(formMiddle.value.repairNum>0&&(formMiddle.value.supplierId==undefined||formMiddle.value.supplierId=='')){ - uni.showToast({ title: '返厂维修请选择厂家!', icon: 'none' }) - }else if(formRight.value.scrapNum > 0 && !formRight.value.scrapReason && !formRight.value.scrapId) { - uni.showToast({ title: '维修报废请填写报废原因!', icon: 'none' }) - }else if ( - Number(formLeft.value.repairNum) + - Number(formMiddle.value.repairNum) + - Number(formRight.value.scrapNum) > - Number(queryParams.value.waitRepairNum) - ) { - uni.showToast({ title: '总数量不可大于待修数量!', icon: 'none' }) - }else { - if (loading.value) { - uni.showToast({ title: '请勿重复提交!', icon: 'none' }) - return - } - loading.value = true - uni.showLoading({ title: '提交中...' }) - //维修人员 - rowData.value.repairDeviceList[0].repairList=[ - { - repairer:repairPerson.value, - // remark:remark.value, - // fileList:bmFileInfos.value - } - ] - rowData.value.repairDeviceList[0].numberInRepairPartList = [] - rowData.value.repairDeviceList[0].numberOutRepairPartList = [] - rowData.value.repairDeviceList[0].numberScrapRepairPartList = [] - //内部 - for (let i = 0; i < partItems.value.length; i++) { - rowData.value.repairDeviceList[0].numberInRepairPartList.push({ - partType: partItems.value[i].partType, - partId: partItems.value[i].partId, - partNum: partItems.value[i].partNum, - storageNum: partItems.value[i].storageNum, - repairNum: formLeft.value.repairNum, - }) - } - // 返厂 - for (let i = 0; i < partItemsMiddle.value.length; i++) { - rowData.value.repairDeviceList[0].numberOutRepairPartList.push({ - partType: partItemsMiddle.value[i].partType, - partPrice: partItemsMiddle.value[i].partPrice, - partNum: partItemsMiddle.value[i].partNum, - partName: partItemsMiddle.value[i].partName, - supplierId: formMiddle.value.supplierId, - repairNum: formMiddle.value.repairNum, - }) - } - //报废 - rowData.value.repairDeviceList[0].numberScrapRepairPartList.push(formRight.value) - rowData.value.repairDeviceList[0].repairType = 1 - rowData.value.repairDeviceList[0].inRepairList = [{ remark: partRemark.value, fileList: partFileList.value }] - rowData.value.repairDeviceList[0].outRepairList = [{ remark: returnRemark.value, fileList: returnFileList.value }] - console.log(rowData.value.repairDeviceList) - saveRepairRow(rowData.value.repairDeviceList).then(async (response) => { - loading.value = false - uni.hideLoading() - if (response.code == 200) { - uni.showToast({ title: '保存成功', icon: 'none' }) - uni.navigateBack({ - delta: 1, // 返回到已存在的页面 - }) - } - - - }).catch(() => { - loading.value = false - uni.hideLoading() - }) - } + // 如果已经在提交中则直接拦截 + if (loading.value) { + uni.showToast({ title: '请勿重复提交!', icon: 'none' }) + return + } + + // 一点击就锁按钮 + loading.value = true + + try { + // ======= 校验逻辑 ======= + if (repairPerson.value == "") { + uni.showToast({ title: '请先选择维修人员!', icon: 'none' }) + loading.value = false + return + } + + if ((formLeft.value.repairNum + formMiddle.value.repairNum + formRight.value.scrapNum) == 0) { + uni.showToast({ title: '请选择维修类型并填写维修数量!', icon: 'none' }) + loading.value = false + return + } + + if (formMiddle.value.repairNum > 0 && (!formMiddle.value.supplierId)) { + uni.showToast({ title: '返厂维修请选择厂家!', icon: 'none' }) + loading.value = false + return + } + + if (formRight.value.scrapNum > 0 && !formRight.value.scrapReason && !formRight.value.scrapId) { + uni.showToast({ title: '维修报废请填写报废原因!', icon: 'none' }) + loading.value = false + return + } + + if ( + Number(formLeft.value.repairNum) + + Number(formMiddle.value.repairNum) + + Number(formRight.value.scrapNum) > + Number(queryParams.value.waitRepairNum) + ) { + uni.showToast({ title: '总数量不可大于待修数量!', icon: 'none' }) + loading.value = false + return + } + + // ======= 数据组装 ======= + rowData.value.repairDeviceList[0].repairList = [ + { repairer: repairPerson.value } + ] + rowData.value.repairDeviceList[0].numberInRepairPartList = [] + rowData.value.repairDeviceList[0].numberOutRepairPartList = [] + rowData.value.repairDeviceList[0].numberScrapRepairPartList = [] + + // 内部维修 + for (let i = 0; i < partItems.value.length; i++) { + rowData.value.repairDeviceList[0].numberInRepairPartList.push({ + partType: partItems.value[i].partType, + partId: partItems.value[i].partId, + partNum: partItems.value[i].partNum, + storageNum: partItems.value[i].storageNum, + repairNum: formLeft.value.repairNum, + }) + } + + // 返厂维修 + for (let i = 0; i < partItemsMiddle.value.length; i++) { + rowData.value.repairDeviceList[0].numberOutRepairPartList.push({ + partType: partItemsMiddle.value[i].partType, + partPrice: partItemsMiddle.value[i].partPrice, + partNum: partItemsMiddle.value[i].partNum, + partName: partItemsMiddle.value[i].partName, + supplierId: formMiddle.value.supplierId, + repairNum: formMiddle.value.repairNum, + }) + } + + // 报废 + rowData.value.repairDeviceList[0].numberScrapRepairPartList.push(formRight.value) + rowData.value.repairDeviceList[0].repairType = 1 + rowData.value.repairDeviceList[0].inRepairList = [{ remark: partRemark.value, fileList: partFileList.value }] + rowData.value.repairDeviceList[0].outRepairList = [{ remark: returnRemark.value, fileList: returnFileList.value }] + + // ======= 提交请求 ======= + uni.showLoading({ title: '提交中...' }) + const response = await saveRepairRow(rowData.value.repairDeviceList) + + if (response.code === 200) { + uni.showToast({ title: '保存成功', icon: 'none' }) + // 成功后不再解锁按钮,防止用户多点 + setTimeout(() => { + uni.navigateBack({ delta: 1 }) + }, 800) + } else { + uni.showToast({ title: response.msg || '保存失败', icon: 'none' }) + loading.value = false + } + } catch (error) { + console.error('提交异常:', error) + uni.showToast({ title: '提交异常,请稍后重试', icon: 'none' }) + loading.value = false + } finally { + uni.hideLoading() + } } + // 数量框change事件 const repairCheckNum1 = (e) => { setTimeout(() => { @@ -1206,4 +1243,20 @@ const costCheckNum = (item) => { border: #F5F5F5 1px solid; width: 169px; } +.submit-btn { + width: 100%; + background-color: #4aa4ea; + color: #fff; + padding: 10px 0; + border-radius: 8px; + font-size: 16px; + border: none; + transition: 0.2s; +} + +.submit-btn.btn-disabled { + background-color: #ccc; + color: #666; +} +