diff --git a/docs/klp_purchase_requisition_alter_1.sql b/docs/klp_purchase_requisition_alter_1.sql new file mode 100644 index 000000000..5f440b189 --- /dev/null +++ b/docs/klp_purchase_requisition_alter_1.sql @@ -0,0 +1,7 @@ +-- ======================================== +-- 电子请购单 — 增量变更 1:增加审批意见字段 +-- ======================================== + +ALTER TABLE `erp_purchase_requisition` + ADD COLUMN `first_approval_opinion` VARCHAR(500) DEFAULT NULL COMMENT '一审审批意见' AFTER `remark`, + ADD COLUMN `second_approval_opinion` VARCHAR(500) DEFAULT NULL COMMENT '二审审批意见' AFTER `first_approval_opinion`; diff --git a/klp-erp/src/main/java/com/klp/erp/controller/ErpPurchaseRequisitionController.java b/klp-erp/src/main/java/com/klp/erp/controller/ErpPurchaseRequisitionController.java index 991173e3e..3f960d69b 100644 --- a/klp-erp/src/main/java/com/klp/erp/controller/ErpPurchaseRequisitionController.java +++ b/klp-erp/src/main/java/com/klp/erp/controller/ErpPurchaseRequisitionController.java @@ -94,14 +94,16 @@ public class ErpPurchaseRequisitionController extends BaseController { /** 审批通过(审批中 → 已通过) */ @Log(title = "请购及采购单", businessType = BusinessType.UPDATE) @PutMapping("/{reqId}/approve") - public R approve(@NotNull(message = "主键不能为空") @PathVariable Long reqId) { - return toAjax(iErpPurchaseRequisitionService.approve(reqId)); + public R approve(@NotNull(message = "主键不能为空") @PathVariable Long reqId, + @RequestParam(required = false) String approvalOpinion) { + return toAjax(iErpPurchaseRequisitionService.approve(reqId, approvalOpinion)); } /** 驳回(审批中 → 已驳回) */ @Log(title = "请购及采购单", businessType = BusinessType.UPDATE) @PutMapping("/{reqId}/reject") - public R reject(@NotNull(message = "主键不能为空") @PathVariable Long reqId) { - return toAjax(iErpPurchaseRequisitionService.reject(reqId)); + public R reject(@NotNull(message = "主键不能为空") @PathVariable Long reqId, + @RequestParam(required = false) String approvalOpinion) { + return toAjax(iErpPurchaseRequisitionService.reject(reqId, approvalOpinion)); } } diff --git a/klp-erp/src/main/java/com/klp/erp/domain/ErpPurchaseRequisition.java b/klp-erp/src/main/java/com/klp/erp/domain/ErpPurchaseRequisition.java index 16a1782f6..8e6b031e4 100644 --- a/klp-erp/src/main/java/com/klp/erp/domain/ErpPurchaseRequisition.java +++ b/klp-erp/src/main/java/com/klp/erp/domain/ErpPurchaseRequisition.java @@ -106,6 +106,12 @@ public class ErpPurchaseRequisition extends BaseEntity { @TableLogic private String delFlag; + /** 一审审批意见 */ + private String firstApprovalOpinion; + + /** 二审审批意见 */ + private String secondApprovalOpinion; + /** 备注 */ private String remark; } diff --git a/klp-erp/src/main/java/com/klp/erp/domain/bo/ErpPurchaseRequisitionBo.java b/klp-erp/src/main/java/com/klp/erp/domain/bo/ErpPurchaseRequisitionBo.java index a7d12f3dc..85b719b2f 100644 --- a/klp-erp/src/main/java/com/klp/erp/domain/bo/ErpPurchaseRequisitionBo.java +++ b/klp-erp/src/main/java/com/klp/erp/domain/bo/ErpPurchaseRequisitionBo.java @@ -100,6 +100,12 @@ public class ErpPurchaseRequisitionBo extends BaseEntity { /** 状态 */ private String formStatus; + /** 一审审批意见 */ + private String firstApprovalOpinion; + + /** 二审审批意见 */ + private String secondApprovalOpinion; + /** 备注 */ private String remark; diff --git a/klp-erp/src/main/java/com/klp/erp/domain/vo/ErpPurchaseRequisitionVo.java b/klp-erp/src/main/java/com/klp/erp/domain/vo/ErpPurchaseRequisitionVo.java index 8a715a776..f0714c0dc 100644 --- a/klp-erp/src/main/java/com/klp/erp/domain/vo/ErpPurchaseRequisitionVo.java +++ b/klp-erp/src/main/java/com/klp/erp/domain/vo/ErpPurchaseRequisitionVo.java @@ -100,6 +100,12 @@ public class ErpPurchaseRequisitionVo implements Serializable { @ExcelProperty(value = "状态") private String formStatus; + @ExcelProperty(value = "一审审批意见") + private String firstApprovalOpinion; + + @ExcelProperty(value = "二审审批意见") + private String secondApprovalOpinion; + @ExcelProperty(value = "备注") private String remark; diff --git a/klp-erp/src/main/java/com/klp/erp/service/IErpPurchaseRequisitionService.java b/klp-erp/src/main/java/com/klp/erp/service/IErpPurchaseRequisitionService.java index 362673704..a7b7dc641 100644 --- a/klp-erp/src/main/java/com/klp/erp/service/IErpPurchaseRequisitionService.java +++ b/klp-erp/src/main/java/com/klp/erp/service/IErpPurchaseRequisitionService.java @@ -38,8 +38,8 @@ public interface IErpPurchaseRequisitionService { Boolean submitApproval(Long reqId, Long firstApproverId, String firstApproverName); /** 审批通过(审批中 → 已通过) */ - Boolean approve(Long reqId); + Boolean approve(Long reqId, String approvalOpinion); /** 驳回(审批中 → 已驳回) */ - Boolean reject(Long reqId); + Boolean reject(Long reqId, String approvalOpinion); } diff --git a/klp-erp/src/main/java/com/klp/erp/service/impl/ErpPurchaseRequisitionServiceImpl.java b/klp-erp/src/main/java/com/klp/erp/service/impl/ErpPurchaseRequisitionServiceImpl.java index 187e748fa..c4f61006c 100644 --- a/klp-erp/src/main/java/com/klp/erp/service/impl/ErpPurchaseRequisitionServiceImpl.java +++ b/klp-erp/src/main/java/com/klp/erp/service/impl/ErpPurchaseRequisitionServiceImpl.java @@ -149,7 +149,7 @@ public class ErpPurchaseRequisitionServiceImpl implements IErpPurchaseRequisitio @Override @Transactional(rollbackFor = Exception.class) - public Boolean approve(Long reqId) { + public Boolean approve(Long reqId, String approvalOpinion) { ErpPurchaseRequisition entity = baseMapper.selectById(reqId); if (entity == null) return false; String currentNickName = LoginHelper.getNickName(); @@ -161,6 +161,7 @@ public class ErpPurchaseRequisitionServiceImpl implements IErpPurchaseRequisitio throw new RuntimeException("您不是该请购单指定的审批人"); } entity.setFormStatus("6"); + entity.setFirstApprovalOpinion(approvalOpinion); return baseMapper.updateById(entity) > 0; } else if ("6".equals(entity.getFormStatus())) { @@ -170,6 +171,7 @@ public class ErpPurchaseRequisitionServiceImpl implements IErpPurchaseRequisitio } entity.setFormStatus("2"); entity.setSignRequestGm("陈清鑫"); + entity.setSecondApprovalOpinion(approvalOpinion); return baseMapper.updateById(entity) > 0; } else { @@ -179,7 +181,7 @@ public class ErpPurchaseRequisitionServiceImpl implements IErpPurchaseRequisitio @Override @Transactional(rollbackFor = Exception.class) - public Boolean reject(Long reqId) { + public Boolean reject(Long reqId, String approvalOpinion) { ErpPurchaseRequisition entity = baseMapper.selectById(reqId); if (entity == null) return false; String currentNickName = LoginHelper.getNickName(); @@ -191,6 +193,7 @@ public class ErpPurchaseRequisitionServiceImpl implements IErpPurchaseRequisitio throw new RuntimeException("您不是该请购单指定的审批人"); } entity.setFormStatus("5"); + entity.setFirstApprovalOpinion(approvalOpinion); return baseMapper.updateById(entity) > 0; } else if ("6".equals(entity.getFormStatus())) { @@ -199,6 +202,7 @@ public class ErpPurchaseRequisitionServiceImpl implements IErpPurchaseRequisitio throw new RuntimeException("二审仅限指定审批人操作"); } entity.setFormStatus("5"); + entity.setSecondApprovalOpinion(approvalOpinion); return baseMapper.updateById(entity) > 0; } else { diff --git a/klp-flow/src/main/java/com/klp/flow/domain/EqpMaintenancePlanDetail.java b/klp-flow/src/main/java/com/klp/flow/domain/EqpMaintenancePlanDetail.java index 68ea2c5fc..09c683416 100644 --- a/klp-flow/src/main/java/com/klp/flow/domain/EqpMaintenancePlanDetail.java +++ b/klp-flow/src/main/java/com/klp/flow/domain/EqpMaintenancePlanDetail.java @@ -59,6 +59,8 @@ public class EqpMaintenancePlanDetail extends BaseEntity { private String equipmentExecutor; private String plannedCompleteTime; private String actualCompleteTime; + private String plannedStartTime; + private String actualStartTime; private String totalHours; private String acceptanceUser; /** diff --git a/klp-flow/src/main/java/com/klp/flow/domain/bo/EqpMaintenancePlanDetailBo.java b/klp-flow/src/main/java/com/klp/flow/domain/bo/EqpMaintenancePlanDetailBo.java index f0709efc8..3ff08bae3 100644 --- a/klp-flow/src/main/java/com/klp/flow/domain/bo/EqpMaintenancePlanDetailBo.java +++ b/klp-flow/src/main/java/com/klp/flow/domain/bo/EqpMaintenancePlanDetailBo.java @@ -66,6 +66,8 @@ public class EqpMaintenancePlanDetailBo extends BaseEntity { private String equipmentExecutor; private String plannedCompleteTime; private String actualCompleteTime; + private String plannedStartTime; + private String actualStartTime; private String totalHours; private String acceptanceUser; diff --git a/klp-flow/src/main/java/com/klp/flow/domain/vo/EqpMaintenancePlanDetailVo.java b/klp-flow/src/main/java/com/klp/flow/domain/vo/EqpMaintenancePlanDetailVo.java index 537f9bb83..72b6a37b5 100644 --- a/klp-flow/src/main/java/com/klp/flow/domain/vo/EqpMaintenancePlanDetailVo.java +++ b/klp-flow/src/main/java/com/klp/flow/domain/vo/EqpMaintenancePlanDetailVo.java @@ -76,10 +76,16 @@ public class EqpMaintenancePlanDetailVo { @ExcelProperty(value = "设备执行人员") private String equipmentExecutor; - @ExcelProperty(value = "预计完成时间") + @ExcelProperty(value = "预计开始时间") + private String plannedStartTime; + + @ExcelProperty(value = "预计结束时间") private String plannedCompleteTime; - @ExcelProperty(value = "实际完成时间") + @ExcelProperty(value = "实际开始时间") + private String actualStartTime; + + @ExcelProperty(value = "实际结束时间") private String actualCompleteTime; @ExcelProperty(value = "总耗时(h)") diff --git a/klp-flow/src/main/resources/mapper/flow/EqpMaintenancePlanDetailMapper.xml b/klp-flow/src/main/resources/mapper/flow/EqpMaintenancePlanDetailMapper.xml index 6732e384d..e765ff411 100644 --- a/klp-flow/src/main/resources/mapper/flow/EqpMaintenancePlanDetailMapper.xml +++ b/klp-flow/src/main/resources/mapper/flow/EqpMaintenancePlanDetailMapper.xml @@ -17,6 +17,8 @@ + + diff --git a/klp-ui/src/api/erp/purchaseRequisition.js b/klp-ui/src/api/erp/purchaseRequisition.js index add217ac9..8f408a9e7 100644 --- a/klp-ui/src/api/erp/purchaseRequisition.js +++ b/klp-ui/src/api/erp/purchaseRequisition.js @@ -45,18 +45,20 @@ export function submitApproval(reqId, firstApproverId, firstApproverName) { } // 审批通过 -export function approvePurchase(reqId) { +export function approvePurchase(reqId, approvalOpinion) { return request({ url: '/erp/purchaseRequisition/' + reqId + '/approve', - method: 'put' + method: 'put', + params: { approvalOpinion } }) } // 驳回 -export function rejectPurchase(reqId) { +export function rejectPurchase(reqId, approvalOpinion) { return request({ url: '/erp/purchaseRequisition/' + reqId + '/reject', - method: 'put' + method: 'put', + params: { approvalOpinion } }) } diff --git a/klp-ui/src/components/MemoInput/index.vue b/klp-ui/src/components/MemoInput/index.vue index 790555ac3..11b0a7f6f 100644 --- a/klp-ui/src/components/MemoInput/index.vue +++ b/klp-ui/src/components/MemoInput/index.vue @@ -64,6 +64,10 @@ export default { type: Number, default: 6, validator: (value) => value > 0 + }, + inputFormatter: { + type: Function, + default: null } }, data() { @@ -132,10 +136,11 @@ export default { * @param {object} item - 选中的项 {value: 'xxx'} */ handleSelect(item) { - this.cacheInputValue(item.value); - this.inputValue = item.value; + const v = this.formatValue(item.value); + this.cacheInputValue(v); + this.inputValue = v; // 触发自定义事件,通知父组件选中结果 - this.$emit('input', item.value); + this.$emit('input', v); }, /** @@ -144,13 +149,22 @@ export default { */ handleInputChange(value) { if (value && value.trim() !== '') { - this.cacheInputValue(value.trim()); + const v = this.formatValue(value.trim()); + this.cacheInputValue(v); // 触发自定义事件,通知父组件输入结果 - this.$emit('input', value.trim()); + this.$emit('input', v); } else { this.$emit('input', ''); } }, + formatValue(value) { + const v = value === null || value === undefined ? '' : String(value); + if (!v.trim()) return ''; + if (typeof this.inputFormatter === 'function') { + return this.inputFormatter(v); + } + return v.trim(); + }, /** * 缓存输入值到localStorage @@ -196,4 +210,4 @@ export default { .inline-input { width: 100%; } - \ No newline at end of file + diff --git a/klp-ui/src/utils/enum.js b/klp-ui/src/utils/enum.js index 4787c34a8..04aab0f4c 100644 --- a/klp-ui/src/utils/enum.js +++ b/klp-ui/src/utils/enum.js @@ -19,6 +19,8 @@ export const MemoInputStorageKey = { maintenanceEquipmentExecutor: 'maintenanceEquipmentExecutor', // 维修明细-设备执行人员 maintenancePlannedCompleteTime: 'maintenancePlannedCompleteTime', // 维修明细-预计完成时间 maintenanceActualCompleteTime: 'maintenanceActualCompleteTime', // 维修明细-实际完成时间 + maintenancePlannedStartTime: 'maintenancePlannedStartTime', // 维修明细-预计开始时间 + maintenanceActualStartTime: 'maintenanceActualStartTime', // 维修明细-实际开始时间 maintenanceTotalHours: 'maintenanceTotalHours', // 维修明细-总耗时 maintenanceAcceptanceUser: 'maintenanceAcceptanceUser', // 维修明细-验收人 maintenanceRemark: 'maintenanceRemark', // 维修明细-备注 diff --git a/klp-ui/src/views/erp/purchaseRequisition/index.vue b/klp-ui/src/views/erp/purchaseRequisition/index.vue index b0ee90e13..07597349f 100644 --- a/klp-ui/src/views/erp/purchaseRequisition/index.vue +++ b/klp-ui/src/views/erp/purchaseRequisition/index.vue @@ -363,9 +363,15 @@
审批进度
-
-
{{ viewForm.signPurchaseHandler || '待审批' }}
-
{{ viewForm.signRequestGm || '待审批' }}
+
+
+
{{ viewForm.signPurchaseHandler || '待审批' }}
+
意见:{{ viewForm.firstApprovalOpinion }}
+
+
+
{{ viewForm.signRequestGm || '待审批' }}
+
意见:{{ viewForm.secondApprovalOpinion }}
+