Merge remote-tracking branch 'origin/0.8.X' into 0.8.X
This commit is contained in:
7
docs/klp_purchase_requisition_alter_1.sql
Normal file
7
docs/klp_purchase_requisition_alter_1.sql
Normal file
@@ -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`;
|
||||||
@@ -94,14 +94,16 @@ public class ErpPurchaseRequisitionController extends BaseController {
|
|||||||
/** 审批通过(审批中 → 已通过) */
|
/** 审批通过(审批中 → 已通过) */
|
||||||
@Log(title = "请购及采购单", businessType = BusinessType.UPDATE)
|
@Log(title = "请购及采购单", businessType = BusinessType.UPDATE)
|
||||||
@PutMapping("/{reqId}/approve")
|
@PutMapping("/{reqId}/approve")
|
||||||
public R<Void> approve(@NotNull(message = "主键不能为空") @PathVariable Long reqId) {
|
public R<Void> approve(@NotNull(message = "主键不能为空") @PathVariable Long reqId,
|
||||||
return toAjax(iErpPurchaseRequisitionService.approve(reqId));
|
@RequestParam(required = false) String approvalOpinion) {
|
||||||
|
return toAjax(iErpPurchaseRequisitionService.approve(reqId, approvalOpinion));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 驳回(审批中 → 已驳回) */
|
/** 驳回(审批中 → 已驳回) */
|
||||||
@Log(title = "请购及采购单", businessType = BusinessType.UPDATE)
|
@Log(title = "请购及采购单", businessType = BusinessType.UPDATE)
|
||||||
@PutMapping("/{reqId}/reject")
|
@PutMapping("/{reqId}/reject")
|
||||||
public R<Void> reject(@NotNull(message = "主键不能为空") @PathVariable Long reqId) {
|
public R<Void> reject(@NotNull(message = "主键不能为空") @PathVariable Long reqId,
|
||||||
return toAjax(iErpPurchaseRequisitionService.reject(reqId));
|
@RequestParam(required = false) String approvalOpinion) {
|
||||||
|
return toAjax(iErpPurchaseRequisitionService.reject(reqId, approvalOpinion));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -106,6 +106,12 @@ public class ErpPurchaseRequisition extends BaseEntity {
|
|||||||
@TableLogic
|
@TableLogic
|
||||||
private String delFlag;
|
private String delFlag;
|
||||||
|
|
||||||
|
/** 一审审批意见 */
|
||||||
|
private String firstApprovalOpinion;
|
||||||
|
|
||||||
|
/** 二审审批意见 */
|
||||||
|
private String secondApprovalOpinion;
|
||||||
|
|
||||||
/** 备注 */
|
/** 备注 */
|
||||||
private String remark;
|
private String remark;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,6 +100,12 @@ public class ErpPurchaseRequisitionBo extends BaseEntity {
|
|||||||
/** 状态 */
|
/** 状态 */
|
||||||
private String formStatus;
|
private String formStatus;
|
||||||
|
|
||||||
|
/** 一审审批意见 */
|
||||||
|
private String firstApprovalOpinion;
|
||||||
|
|
||||||
|
/** 二审审批意见 */
|
||||||
|
private String secondApprovalOpinion;
|
||||||
|
|
||||||
/** 备注 */
|
/** 备注 */
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
|||||||
@@ -100,6 +100,12 @@ public class ErpPurchaseRequisitionVo implements Serializable {
|
|||||||
@ExcelProperty(value = "状态")
|
@ExcelProperty(value = "状态")
|
||||||
private String formStatus;
|
private String formStatus;
|
||||||
|
|
||||||
|
@ExcelProperty(value = "一审审批意见")
|
||||||
|
private String firstApprovalOpinion;
|
||||||
|
|
||||||
|
@ExcelProperty(value = "二审审批意见")
|
||||||
|
private String secondApprovalOpinion;
|
||||||
|
|
||||||
@ExcelProperty(value = "备注")
|
@ExcelProperty(value = "备注")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
|||||||
@@ -38,8 +38,8 @@ public interface IErpPurchaseRequisitionService {
|
|||||||
Boolean submitApproval(Long reqId, Long firstApproverId, String firstApproverName);
|
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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ public class ErpPurchaseRequisitionServiceImpl implements IErpPurchaseRequisitio
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean approve(Long reqId) {
|
public Boolean approve(Long reqId, String approvalOpinion) {
|
||||||
ErpPurchaseRequisition entity = baseMapper.selectById(reqId);
|
ErpPurchaseRequisition entity = baseMapper.selectById(reqId);
|
||||||
if (entity == null) return false;
|
if (entity == null) return false;
|
||||||
String currentNickName = LoginHelper.getNickName();
|
String currentNickName = LoginHelper.getNickName();
|
||||||
@@ -161,6 +161,7 @@ public class ErpPurchaseRequisitionServiceImpl implements IErpPurchaseRequisitio
|
|||||||
throw new RuntimeException("您不是该请购单指定的审批人");
|
throw new RuntimeException("您不是该请购单指定的审批人");
|
||||||
}
|
}
|
||||||
entity.setFormStatus("6");
|
entity.setFormStatus("6");
|
||||||
|
entity.setFirstApprovalOpinion(approvalOpinion);
|
||||||
return baseMapper.updateById(entity) > 0;
|
return baseMapper.updateById(entity) > 0;
|
||||||
|
|
||||||
} else if ("6".equals(entity.getFormStatus())) {
|
} else if ("6".equals(entity.getFormStatus())) {
|
||||||
@@ -170,6 +171,7 @@ public class ErpPurchaseRequisitionServiceImpl implements IErpPurchaseRequisitio
|
|||||||
}
|
}
|
||||||
entity.setFormStatus("2");
|
entity.setFormStatus("2");
|
||||||
entity.setSignRequestGm("陈清鑫");
|
entity.setSignRequestGm("陈清鑫");
|
||||||
|
entity.setSecondApprovalOpinion(approvalOpinion);
|
||||||
return baseMapper.updateById(entity) > 0;
|
return baseMapper.updateById(entity) > 0;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@@ -179,7 +181,7 @@ public class ErpPurchaseRequisitionServiceImpl implements IErpPurchaseRequisitio
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean reject(Long reqId) {
|
public Boolean reject(Long reqId, String approvalOpinion) {
|
||||||
ErpPurchaseRequisition entity = baseMapper.selectById(reqId);
|
ErpPurchaseRequisition entity = baseMapper.selectById(reqId);
|
||||||
if (entity == null) return false;
|
if (entity == null) return false;
|
||||||
String currentNickName = LoginHelper.getNickName();
|
String currentNickName = LoginHelper.getNickName();
|
||||||
@@ -191,6 +193,7 @@ public class ErpPurchaseRequisitionServiceImpl implements IErpPurchaseRequisitio
|
|||||||
throw new RuntimeException("您不是该请购单指定的审批人");
|
throw new RuntimeException("您不是该请购单指定的审批人");
|
||||||
}
|
}
|
||||||
entity.setFormStatus("5");
|
entity.setFormStatus("5");
|
||||||
|
entity.setFirstApprovalOpinion(approvalOpinion);
|
||||||
return baseMapper.updateById(entity) > 0;
|
return baseMapper.updateById(entity) > 0;
|
||||||
|
|
||||||
} else if ("6".equals(entity.getFormStatus())) {
|
} else if ("6".equals(entity.getFormStatus())) {
|
||||||
@@ -199,6 +202,7 @@ public class ErpPurchaseRequisitionServiceImpl implements IErpPurchaseRequisitio
|
|||||||
throw new RuntimeException("二审仅限指定审批人操作");
|
throw new RuntimeException("二审仅限指定审批人操作");
|
||||||
}
|
}
|
||||||
entity.setFormStatus("5");
|
entity.setFormStatus("5");
|
||||||
|
entity.setSecondApprovalOpinion(approvalOpinion);
|
||||||
return baseMapper.updateById(entity) > 0;
|
return baseMapper.updateById(entity) > 0;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -45,18 +45,20 @@ export function submitApproval(reqId, firstApproverId, firstApproverName) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 审批通过
|
// 审批通过
|
||||||
export function approvePurchase(reqId) {
|
export function approvePurchase(reqId, approvalOpinion) {
|
||||||
return request({
|
return request({
|
||||||
url: '/erp/purchaseRequisition/' + reqId + '/approve',
|
url: '/erp/purchaseRequisition/' + reqId + '/approve',
|
||||||
method: 'put'
|
method: 'put',
|
||||||
|
params: { approvalOpinion }
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 驳回
|
// 驳回
|
||||||
export function rejectPurchase(reqId) {
|
export function rejectPurchase(reqId, approvalOpinion) {
|
||||||
return request({
|
return request({
|
||||||
url: '/erp/purchaseRequisition/' + reqId + '/reject',
|
url: '/erp/purchaseRequisition/' + reqId + '/reject',
|
||||||
method: 'put'
|
method: 'put',
|
||||||
|
params: { approvalOpinion }
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -363,9 +363,15 @@
|
|||||||
|
|
||||||
<!-- 审批进度 -->
|
<!-- 审批进度 -->
|
||||||
<div class="pv-section-title" style="margin-top:14px">审批进度</div>
|
<div class="pv-section-title" style="margin-top:14px">审批进度</div>
|
||||||
<div style="display:flex;gap:24px;padding:8px 0;font-size:13px">
|
<div style="padding:8px 0;font-size:13px">
|
||||||
<div><label style="color:#909399">一审人:</label><span>{{ viewForm.signPurchaseHandler || '待审批' }}</span></div>
|
<div style="margin-bottom:10px">
|
||||||
<div><label style="color:#909399">二审人(陈清鑫):</label><span>{{ viewForm.signRequestGm || '待审批' }}</span></div>
|
<div><label style="color:#909399">一审人:</label><span>{{ viewForm.signPurchaseHandler || '待审批' }}</span></div>
|
||||||
|
<div v-if="viewForm.firstApprovalOpinion" style="margin:4px 0 0 62px;color:#606266;font-size:12px;padding:4px 10px;background:#f5f7fa;border-radius:3px;display:inline-block">意见:{{ viewForm.firstApprovalOpinion }}</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div><label style="color:#909399">二审人(陈清鑫):</label><span>{{ viewForm.signRequestGm || '待审批' }}</span></div>
|
||||||
|
<div v-if="viewForm.secondApprovalOpinion" style="margin:4px 0 0 124px;color:#606266;font-size:12px;padding:4px 10px;background:#f5f7fa;border-radius:3px;display:inline-block">意见:{{ viewForm.secondApprovalOpinion }}</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div slot="footer" class="dialog-footer">
|
<div slot="footer" class="dialog-footer">
|
||||||
@@ -766,7 +772,7 @@ export default {
|
|||||||
// 审批通过
|
// 审批通过
|
||||||
doApprove() {
|
doApprove() {
|
||||||
this.approvalLoading = true
|
this.approvalLoading = true
|
||||||
approvePurchase(this.approvalReq.reqId).then(() => {
|
approvePurchase(this.approvalReq.reqId, this.approvalRemark).then(() => {
|
||||||
this.$modal.msgSuccess('审批通过')
|
this.$modal.msgSuccess('审批通过')
|
||||||
this.approvalOpen = false
|
this.approvalOpen = false
|
||||||
this.getList()
|
this.getList()
|
||||||
@@ -775,7 +781,7 @@ export default {
|
|||||||
// 驳回
|
// 驳回
|
||||||
doReject() {
|
doReject() {
|
||||||
this.approvalLoading = true
|
this.approvalLoading = true
|
||||||
rejectPurchase(this.approvalReq.reqId).then(() => {
|
rejectPurchase(this.approvalReq.reqId, this.approvalRemark).then(() => {
|
||||||
this.$modal.msgSuccess('已驳回')
|
this.$modal.msgSuccess('已驳回')
|
||||||
this.approvalOpen = false
|
this.approvalOpen = false
|
||||||
this.getList()
|
this.getList()
|
||||||
|
|||||||
@@ -497,7 +497,11 @@ export default {
|
|||||||
loadDialogData() {
|
loadDialogData() {
|
||||||
if (!this.currentWarehouse) return;
|
if (!this.currentWarehouse) return;
|
||||||
this.dialogLoading = true;
|
this.dialogLoading = true;
|
||||||
const baseParams = { warehouseId: this.currentWarehouse.warehouseId, dataType: 1, status: 0 };
|
const baseParams = {
|
||||||
|
warehouseId: this.currentWarehouse.warehouseId,
|
||||||
|
qualityStatusCsv: this.queryParams.qualityStatusCsv || '',
|
||||||
|
dataType: 1, status: 0,
|
||||||
|
};
|
||||||
Promise.all([
|
Promise.all([
|
||||||
listLightCoil({ ...baseParams, pageSize: 99999, pageNum: 1 }),
|
listLightCoil({ ...baseParams, pageSize: 99999, pageNum: 1 }),
|
||||||
listMaterialCoil({ ...baseParams, pageNum: this.dialogPageNum, pageSize: this.dialogPageSize }),
|
listMaterialCoil({ ...baseParams, pageNum: this.dialogPageNum, pageSize: this.dialogPageSize }),
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ export default {
|
|||||||
const newSet = new Set(nv)
|
const newSet = new Set(nv)
|
||||||
const oldSet = ov ? new Set(ov) : new Set()
|
const oldSet = ov ? new Set(ov) : new Set()
|
||||||
this.orderedColumns = this.orderedColumns.filter(f => newSet.has(f))
|
this.orderedColumns = this.orderedColumns.filter(f => newSet.has(f))
|
||||||
const added = nv.filter(f => !oldSet.has(f))
|
const added = nv.filter(f => !oldSet.has(f) && !this.orderedColumns.includes(f))
|
||||||
if (added.length) {
|
if (added.length) {
|
||||||
this.orderedColumns.push(...added)
|
this.orderedColumns.push(...added)
|
||||||
}
|
}
|
||||||
@@ -114,8 +114,9 @@ export default {
|
|||||||
try {
|
try {
|
||||||
const arr = JSON.parse(cached)
|
const arr = JSON.parse(cached)
|
||||||
if (Array.isArray(arr) && arr.length) {
|
if (Array.isArray(arr) && arr.length) {
|
||||||
this.selectedColumns = [...arr]
|
const uniqueArr = [...new Set(arr)]
|
||||||
this.orderedColumns = [...arr]
|
this.selectedColumns = uniqueArr
|
||||||
|
this.orderedColumns = uniqueArr
|
||||||
this.$emit('update:visible', true)
|
this.$emit('update:visible', true)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user