Compare commits
2 Commits
5b6ad4796e
...
f7b2d2c3bf
| Author | SHA1 | Date | |
|---|---|---|---|
| f7b2d2c3bf | |||
| 1207072092 |
@@ -55,3 +55,14 @@ export function withdrawApproval(approvalId) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按业务ID查询审批信息(用于用印等业务)
|
||||||
|
*/
|
||||||
|
export function getApprovalByBizId(bizId) {
|
||||||
|
return request({
|
||||||
|
url: '/wms/approval/getByBizId',
|
||||||
|
method: 'get',
|
||||||
|
params: { bizId }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -125,6 +125,19 @@ export const constantRoutes = [
|
|||||||
meta: { title: '工厂总日历' }
|
meta: { title: '工厂总日历' }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/wms/seal',
|
||||||
|
component: Layout,
|
||||||
|
hidden: true,
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'sealDetail/:bizId',
|
||||||
|
component: () => import('@/views/wms/seal/sealDetail'),
|
||||||
|
name: 'WmsSealDetail',
|
||||||
|
meta: { title: '用印详情' }
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -126,24 +126,26 @@
|
|||||||
>
|
>
|
||||||
详情
|
详情
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<template v-if="scope.row.applyType !== 'seal'">
|
||||||
v-if="scope.row.taskStatus === 'pending'"
|
<el-button
|
||||||
size="small"
|
v-if="scope.row.taskStatus === 'pending'"
|
||||||
icon="el-icon-check"
|
size="small"
|
||||||
@click="handleApprove(scope.row)"
|
icon="el-icon-check"
|
||||||
:loading="buttonLoading"
|
@click="handleApprove(scope.row)"
|
||||||
>
|
:loading="buttonLoading"
|
||||||
同意
|
>
|
||||||
</el-button>
|
同意
|
||||||
<el-button
|
</el-button>
|
||||||
v-if="scope.row.taskStatus === 'pending'"
|
<el-button
|
||||||
size="small"
|
v-if="scope.row.taskStatus === 'pending'"
|
||||||
icon="el-icon-close"
|
size="small"
|
||||||
@click="handleReject(scope.row)"
|
icon="el-icon-close"
|
||||||
:loading="buttonLoading"
|
@click="handleReject(scope.row)"
|
||||||
>
|
:loading="buttonLoading"
|
||||||
驳回
|
>
|
||||||
</el-button>
|
驳回
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -274,7 +276,8 @@ export default {
|
|||||||
applyType: item.approval.applyType,
|
applyType: item.approval.applyType,
|
||||||
approverName: item.approval.approverName,
|
approverName: item.approval.approverName,
|
||||||
taskId: item.task.taskId,
|
taskId: item.task.taskId,
|
||||||
...item.detail, // 合并请假/外出的详情字段
|
bizId: item.approval.applyId,
|
||||||
|
...item.detail,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
this.total = res.total
|
this.total = res.total
|
||||||
@@ -323,7 +326,13 @@ export default {
|
|||||||
|
|
||||||
// 查看详情
|
// 查看详情
|
||||||
handleDetail(row) {
|
handleDetail(row) {
|
||||||
this.currentDetail = { ...row } // 深拷贝避免原数据被修改
|
if (row.applyType === 'seal') {
|
||||||
|
this.$router.push({
|
||||||
|
path: `/wms/seal/sealDetail/${row.bizId}`
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.currentDetail = { ...row }
|
||||||
this.detailDialogVisible = true
|
this.detailDialogVisible = true
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -427,6 +436,7 @@ export default {
|
|||||||
const textMap = {
|
const textMap = {
|
||||||
'leave': '请假',
|
'leave': '请假',
|
||||||
'out': '外出',
|
'out': '外出',
|
||||||
|
'seal': '用印',
|
||||||
}
|
}
|
||||||
return textMap[type] || '未知类型'
|
return textMap[type] || '未知类型'
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -223,7 +223,12 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
goDetail(row) {
|
goDetail(row) {
|
||||||
this.$router.push({ path: '/job/sealDetail', query: { bizId: row.bizId } })
|
// if (row.applyType === 'seal') {
|
||||||
|
this.$router.push({
|
||||||
|
path: `/wms/seal/sealDetail/${row.bizId}`
|
||||||
|
})
|
||||||
|
return
|
||||||
|
// }
|
||||||
},
|
},
|
||||||
canPreviewReceipt(row) {
|
canPreviewReceipt(row) {
|
||||||
return row.status === 'approved' && row.receiptFileIds
|
return row.status === 'approved' && row.receiptFileIds
|
||||||
|
|||||||
@@ -150,6 +150,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getSealReq, rejectSealReq, approveSealReq, stampSealJava } from '@/api/wms/seal'
|
import { getSealReq, rejectSealReq, approveSealReq, stampSealJava } from '@/api/wms/seal'
|
||||||
|
import { getApprovalByBizId } from '@/api/wms/approval'
|
||||||
import { listByIds } from '@/api/system/oss'
|
import { listByIds } from '@/api/system/oss'
|
||||||
import PdfStamper from '@/components/PdfStamper/index.vue'
|
import PdfStamper from '@/components/PdfStamper/index.vue'
|
||||||
|
|
||||||
@@ -168,6 +169,7 @@ export default {
|
|||||||
stamping: false,
|
stamping: false,
|
||||||
actionSubmitting: false,
|
actionSubmitting: false,
|
||||||
actionRemark: '',
|
actionRemark: '',
|
||||||
|
approvalInfo: null,
|
||||||
stampForm: {
|
stampForm: {
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
stampImageUrl: '',
|
stampImageUrl: '',
|
||||||
@@ -191,8 +193,18 @@ export default {
|
|||||||
return this.seal.empId ? `员工ID:${this.seal.empId}` : '-'
|
return this.seal.empId ? `员工ID:${this.seal.empId}` : '-'
|
||||||
},
|
},
|
||||||
canApprove() {
|
canApprove() {
|
||||||
|
if (!this.approvalInfo || !this.approvalInfo.task) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
const currentUserId = this.$store.getters.id
|
const currentUserId = this.$store.getters.id
|
||||||
return this.seal.status === 'running' && String(this.seal.approverId) === String(currentUserId)
|
const task = this.approvalInfo.task
|
||||||
|
console.log('canApprove check:', {
|
||||||
|
currentUserId,
|
||||||
|
approverId: task.approverId,
|
||||||
|
status: this.seal.status,
|
||||||
|
taskStatus: task.taskStatus
|
||||||
|
})
|
||||||
|
return this.seal.status === 'running' && task.taskStatus === 'pending' && Number(task.approverId) === Number(currentUserId)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@@ -223,12 +235,20 @@ export default {
|
|||||||
try {
|
try {
|
||||||
const res = await getSealReq(bizId)
|
const res = await getSealReq(bizId)
|
||||||
this.seal = res.data || {}
|
this.seal = res.data || {}
|
||||||
this.seal.approverId = this.seal.approverId || this.seal.approver_id || this.seal.approverUserId
|
|
||||||
await this.loadAttachments()
|
await this.loadAttachments()
|
||||||
|
await this.loadApprovalInfo()
|
||||||
} finally {
|
} finally {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
async loadApprovalInfo() {
|
||||||
|
try {
|
||||||
|
const res = await getApprovalByBizId(this.currentBizId)
|
||||||
|
this.approvalInfo = res.data || null
|
||||||
|
} catch (e) {
|
||||||
|
this.approvalInfo = null
|
||||||
|
}
|
||||||
|
},
|
||||||
async loadAttachments() {
|
async loadAttachments() {
|
||||||
const fileIds = this.seal.applyFileIds
|
const fileIds = this.seal.applyFileIds
|
||||||
if (!fileIds) {
|
if (!fileIds) {
|
||||||
@@ -353,6 +373,10 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
async reject() {
|
async reject() {
|
||||||
|
if (!this.canApprove) {
|
||||||
|
this.$message.warning('你不是当前审批人')
|
||||||
|
return
|
||||||
|
}
|
||||||
this.actionSubmitting = true
|
this.actionSubmitting = true
|
||||||
try {
|
try {
|
||||||
await rejectSealReq(this.currentBizId, this.actionRemark)
|
await rejectSealReq(this.currentBizId, this.actionRemark)
|
||||||
|
|||||||
@@ -156,4 +156,14 @@ public class WmsApprovalController extends BaseController {
|
|||||||
@RequestParam Long approvalId) {
|
@RequestParam Long approvalId) {
|
||||||
return R.ok(iWmsApprovalService.cancelApproval(approvalId));
|
return R.ok(iWmsApprovalService.cancelApproval(approvalId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按业务ID查询审批信息(用于用印等业务)
|
||||||
|
*
|
||||||
|
* @param bizId 业务ID
|
||||||
|
*/
|
||||||
|
@GetMapping("/getByBizId")
|
||||||
|
public R<Map<String, Object>> getByBizId(@RequestParam Long bizId) {
|
||||||
|
return R.ok(iWmsApprovalService.queryByBizId(bizId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ public class WmsApproval extends BaseEntity {
|
|||||||
@TableId(value = "approval_id")
|
@TableId(value = "approval_id")
|
||||||
private Long approvalId;
|
private Long approvalId;
|
||||||
/**
|
/**
|
||||||
* 申请类型(leave=请假,out=外出)
|
* 申请类型(leave=请假,out=外出,seal=用印)
|
||||||
*/
|
*/
|
||||||
private String applyType;
|
private String applyType;
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ public class WmsApprovalBo extends BaseEntity {
|
|||||||
private Long approvalId;
|
private Long approvalId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 申请类型(leave=请假,out=外出)
|
* 申请类型(leave=请假,out=外出,seal=用印)
|
||||||
*/
|
*/
|
||||||
private String applyType;
|
private String applyType;
|
||||||
|
|
||||||
|
|||||||
@@ -28,10 +28,10 @@ public class WmsApprovalVo {
|
|||||||
private Long approvalId;
|
private Long approvalId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 申请类型(leave=请假,out=外出)
|
* 申请类型(leave=请假,out=外出,seal=用印)
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "申请类型", converter = ExcelDictConvert.class)
|
@ExcelProperty(value = "申请类型", converter = ExcelDictConvert.class)
|
||||||
@ExcelDictFormat(readConverterExp = "l=eave=请假,out=外出")
|
@ExcelDictFormat(readConverterExp = "leave=请假,out=外出,seal=用印")
|
||||||
private String applyType;
|
private String applyType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -47,4 +47,6 @@ public class WmsSealReqVo implements Serializable {
|
|||||||
private Date createTime;
|
private Date createTime;
|
||||||
private String updateBy;
|
private String updateBy;
|
||||||
private Date updateTime;
|
private Date updateTime;
|
||||||
|
|
||||||
|
private String applicantName;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,4 +73,12 @@ public interface IWmsApprovalService {
|
|||||||
* @return 操作结果
|
* @return 操作结果
|
||||||
*/
|
*/
|
||||||
Map<String, Object> cancelApproval(Long approvalId);
|
Map<String, Object> cancelApproval(Long approvalId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按业务ID查询审批信息(用于用印等业务)
|
||||||
|
*
|
||||||
|
* @param bizId 业务ID
|
||||||
|
* @return 审批信息包含任务详情
|
||||||
|
*/
|
||||||
|
Map<String, Object> queryByBizId(Long bizId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -549,4 +549,25 @@ public class WmsApprovalServiceImpl implements IWmsApprovalService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, Object> queryByBizId(Long bizId) {
|
||||||
|
Map<String, Object> result = new HashMap<>();
|
||||||
|
if (bizId == null) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
LambdaQueryWrapper<WmsApproval> lqw = Wrappers.lambdaQuery();
|
||||||
|
lqw.eq(WmsApproval::getApplyId, bizId);
|
||||||
|
lqw.eq(WmsApproval::getApplyType, "seal");
|
||||||
|
lqw.eq(WmsApproval::getDelFlag, 0);
|
||||||
|
WmsApprovalVo approval = baseMapper.selectVoOne(lqw);
|
||||||
|
if (approval == null) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result.put("approval", approval);
|
||||||
|
result.put("applyType", approval.getApplyType());
|
||||||
|
List<WmsApprovalTaskVo> tasks = approvalTaskService.queryByApprovalId(approval.getApprovalId());
|
||||||
|
result.put("task", tasks != null && !tasks.isEmpty() ? tasks.get(0) : null);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.klp.common.core.page.TableDataInfo;
|
import com.klp.common.core.page.TableDataInfo;
|
||||||
import com.klp.common.core.domain.PageQuery;
|
import com.klp.common.core.domain.PageQuery;
|
||||||
|
import com.klp.common.core.service.UserService;
|
||||||
import com.klp.common.utils.StringUtils;
|
import com.klp.common.utils.StringUtils;
|
||||||
import com.klp.domain.WmsApprovalTask;
|
import com.klp.domain.WmsApprovalTask;
|
||||||
import com.klp.domain.bo.WmsApprovalTaskBo;
|
import com.klp.domain.bo.WmsApprovalTaskBo;
|
||||||
@@ -14,6 +15,8 @@ import com.klp.domain.vo.WmsApprovalTaskVo;
|
|||||||
import com.klp.domain.vo.WmsApprovalVo;
|
import com.klp.domain.vo.WmsApprovalVo;
|
||||||
import com.klp.domain.vo.WmsLeaveRequestVo;
|
import com.klp.domain.vo.WmsLeaveRequestVo;
|
||||||
import com.klp.domain.vo.WmsOutRequestVo;
|
import com.klp.domain.vo.WmsOutRequestVo;
|
||||||
|
import com.klp.domain.vo.WmsSealReqVo;
|
||||||
|
import com.klp.mapper.WmsSealReqMapper;
|
||||||
import com.klp.mapper.WmsApprovalTaskMapper;
|
import com.klp.mapper.WmsApprovalTaskMapper;
|
||||||
import com.klp.mapper.WmsApprovalMapper;
|
import com.klp.mapper.WmsApprovalMapper;
|
||||||
import com.klp.mapper.WmsLeaveRequestMapper;
|
import com.klp.mapper.WmsLeaveRequestMapper;
|
||||||
@@ -40,7 +43,9 @@ public class WmsApprovalTaskServiceImpl implements IWmsApprovalTaskService {
|
|||||||
private final WmsApprovalMapper approvalMapper;
|
private final WmsApprovalMapper approvalMapper;
|
||||||
private final WmsLeaveRequestMapper leaveRequestMapper;
|
private final WmsLeaveRequestMapper leaveRequestMapper;
|
||||||
private final WmsOutRequestMapper outRequestMapper;
|
private final WmsOutRequestMapper outRequestMapper;
|
||||||
private final ISysUserService userService;
|
private final WmsSealReqMapper sealRequestMapper;
|
||||||
|
private final UserService userService;
|
||||||
|
private final ISysUserService sysUserService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WmsApprovalTaskVo queryById(Long taskId) {
|
public WmsApprovalTaskVo queryById(Long taskId) {
|
||||||
@@ -73,6 +78,7 @@ public class WmsApprovalTaskServiceImpl implements IWmsApprovalTaskService {
|
|||||||
|
|
||||||
// 收集所有applyId,按类型分别查询
|
// 收集所有applyId,按类型分别查询
|
||||||
Set<String> userNames = new HashSet<>();
|
Set<String> userNames = new HashSet<>();
|
||||||
|
Set<Long> empIds = new HashSet<>();
|
||||||
Map<String, Object> detailMap = new HashMap<>();
|
Map<String, Object> detailMap = new HashMap<>();
|
||||||
|
|
||||||
for (WmsApprovalTaskVo task : taskList) {
|
for (WmsApprovalTaskVo task : taskList) {
|
||||||
@@ -97,6 +103,12 @@ public class WmsApprovalTaskServiceImpl implements IWmsApprovalTaskService {
|
|||||||
if (outDetail != null && StringUtils.isNotBlank(outDetail.getCreateBy())) {
|
if (outDetail != null && StringUtils.isNotBlank(outDetail.getCreateBy())) {
|
||||||
userNames.add(outDetail.getCreateBy());
|
userNames.add(outDetail.getCreateBy());
|
||||||
}
|
}
|
||||||
|
} else if ("seal".equalsIgnoreCase(applyType)) {
|
||||||
|
WmsSealReqVo sealDetail = sealRequestMapper.selectVoById(applyId);
|
||||||
|
detailMap.put("seal_" + applyId, sealDetail);
|
||||||
|
if (sealDetail != null && sealDetail.getEmpId() != null) {
|
||||||
|
empIds.add(sealDetail.getEmpId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -104,7 +116,18 @@ public class WmsApprovalTaskServiceImpl implements IWmsApprovalTaskService {
|
|||||||
// 批量查询昵称
|
// 批量查询昵称
|
||||||
Map<String, String> nickMap = Collections.emptyMap();
|
Map<String, String> nickMap = Collections.emptyMap();
|
||||||
if (!userNames.isEmpty()) {
|
if (!userNames.isEmpty()) {
|
||||||
nickMap = userService.selectNickNameMapByUserNames(new ArrayList<>(userNames));
|
nickMap = sysUserService.selectNickNameMapByUserNames(new ArrayList<>(userNames));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批量查询empId对应的昵称(用于用印申请)
|
||||||
|
Map<Long, String> empNickMap = new HashMap<>();
|
||||||
|
if (!empIds.isEmpty()) {
|
||||||
|
for (Long empId : empIds) {
|
||||||
|
String nickName = userService.selectNickNameById(empId);
|
||||||
|
if (StringUtils.isNotBlank(nickName)) {
|
||||||
|
empNickMap.put(empId, nickName);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 组装返回结果
|
// 组装返回结果
|
||||||
@@ -139,6 +162,15 @@ public class WmsApprovalTaskServiceImpl implements IWmsApprovalTaskService {
|
|||||||
item.put("detail", outDetail);
|
item.put("detail", outDetail);
|
||||||
item.put("applyType", "out");
|
item.put("applyType", "out");
|
||||||
}
|
}
|
||||||
|
} else if ("seal".equalsIgnoreCase(applyType)) {
|
||||||
|
WmsSealReqVo sealDetail = (WmsSealReqVo) detailMap.get("seal_" + applyId);
|
||||||
|
if (sealDetail != null) {
|
||||||
|
if (sealDetail.getEmpId() != null) {
|
||||||
|
sealDetail.setApplicantName(empNickMap.getOrDefault(sealDetail.getEmpId(), String.valueOf(sealDetail.getEmpId())));
|
||||||
|
}
|
||||||
|
item.put("detail", sealDetail);
|
||||||
|
item.put("applyType", "seal");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user