diff --git a/klp-ui/src/views/wms/hrm/apply/goout.vue b/klp-ui/src/views/wms/hrm/apply/goout.vue
index dd22581a..68bf6b8d 100644
--- a/klp-ui/src/views/wms/hrm/apply/goout.vue
+++ b/klp-ui/src/views/wms/hrm/apply/goout.vue
@@ -37,7 +37,7 @@
-
+
@@ -51,7 +51,8 @@
- {{ form.applyId ? '更新申请' : '提交申请' }}
+ {{ form.outId ? '更新申请' : '提交申请'
+ }}
重置表单
@@ -63,7 +64,13 @@
刷新
-
+
+
+
+ {{ getStatusText(scope.row.approvalStatus) }}
+
+
+
@@ -89,9 +96,13 @@
-
- 修改
- 撤回
+
+ 打印
+ 修改
+ 撤回
@@ -100,6 +111,8 @@
+
+
@@ -109,13 +122,15 @@ import { listApproval, updateApproval } from "@/api/wms/approval"
import { listDept } from "@/api/system/dept"
import FileUpload from '@/components/FileUpload'
import DictSelect from '@/components/DictSelect'
+import OutLabelPrinter from '../components/outLabelPrinter'
export default {
name: 'LeaveApply',
dicts: ['hrm_leave_shift', 'hrm_out_type', 'hrm_department', 'hrm_leave_employee'],
components: {
FileUpload,
- DictSelect
+ DictSelect,
+ OutLabelPrinter
},
data() {
return {
@@ -134,18 +149,17 @@ export default {
},
// 表单校验规则【核心新增:完整必填校验】
rules: {
- leaveTitle: [{ required: true, message: '请假原因不能为空', trigger: ['blur', 'change'] }],
- leaveType: [{ required: true, message: '请假类型不能为空', trigger: 'change' }],
- applicantName: [{ required: true, message: '请假人姓名不能为空', trigger: 'change' }],
+ outType: [{ required: true, message: '外出类型不能为空', trigger: 'change' }],
+ applicantName: [{ required: true, message: '外出人姓名不能为空', trigger: 'change' }],
startTime: [{ required: true, message: '开始时间不能为空', trigger: 'change' }],
endTime: [{ required: true, message: '结束时间不能为空', trigger: 'change' }],
- leaveShift: [{ required: true, message: '请假班次不能为空', trigger: 'change' }],
- leaveDays: [
- { required: true, message: '请假天数不能为空', trigger: ['blur', 'change'] },
- ],
+ outHours: [{ required: true, message: '外出小时数不能为空', trigger: ['blur', 'change'] }],
+ outPlace: [{ required: true, message: '外出地点不能为空', trigger: ['blur', 'change'] }],
+ outReason: [{ required: true, message: '外出原因不能为空', trigger: ['blur', 'change'] }],
applicantDeptName: [{ required: true, message: '审批部门不能为空', trigger: 'change' }],
},
- deptOptions: []
+ deptOptions: [],
+ printerInfo: {},
}
},
// 核心新增:监听开始/结束时间变化,自动计算天数
@@ -247,6 +261,35 @@ export default {
this.form = response.data;
});
},
+ handlePrint(row) {
+ const startYear = new Date(row.startTime).getFullYear()
+ const endYear = new Date(row.endTime).getFullYear()
+ const startMonth = new Date(row.startTime).getMonth() + 1
+ const endMonth = new Date(row.endTime).getMonth() + 1
+ const startDay = new Date(row.startTime).getDate()
+ const endDay = new Date(row.endTime).getDate()
+ const applyName = row.applicantName
+ const approverName = row.approverName
+ const reason = row.outReason
+ const outHours = parseInt(row.outHours)
+ const outPlace = row.outPlace
+ this.printerInfo = {
+ startYear,
+ endYear,
+ startMonth,
+ endMonth,
+ startDay,
+ endDay,
+ applyName,
+ approverName,
+ reason,
+ outHours,
+ outPlace,
+ }
+ this.$nextTick(() => {
+ this.$refs["outLabelPrinter"].print()
+ })
+ },
/** 提交按钮 */
handleSubmit() {
this.form.outTitle = `${this.form.applicantName}-${this.form.outType}-${this.form.startTime}-${this.form.outReason || ''}`
@@ -289,6 +332,27 @@ export default {
this.loading = false;
});
},
+ // 获取审批状态对应的标签类型
+ getStatusTagType(status) {
+ const typeMap = {
+ '待审批': 'warning',
+ '已同意': 'success',
+ '已驳回': 'danger',
+ '已撤销': 'info',
+ }
+ return typeMap[status] || 'default'
+ },
+
+ // 获取审批状态的中文文本
+ getStatusText(status) {
+ const textMap = {
+ '待审批': '待审批',
+ '已同意': '已同意',
+ '已驳回': '已驳回',
+ '已撤销': '已撤销',
+ }
+ return textMap[status] || '未知状态'
+ },
// 核心新增:自动计算请假天数的方法
calculateLeaveDays() {
const { startTime, endTime } = this.form;
diff --git a/klp-ui/src/views/wms/hrm/apply/leave.vue b/klp-ui/src/views/wms/hrm/apply/leave.vue
index e0f1de42..e14b53ae 100644
--- a/klp-ui/src/views/wms/hrm/apply/leave.vue
+++ b/klp-ui/src/views/wms/hrm/apply/leave.vue
@@ -56,7 +56,8 @@
- {{ form.applyId ? '更新申请' : '提交申请' }}
+ {{ form.leaveId ? '更新申请' : '提交申请'
+ }}
重置表单
@@ -68,7 +69,13 @@
刷新
-
+
+
+
+ {{ getStatusText(scope.row.approvalStatus) }}
+
+
+
@@ -299,6 +306,27 @@ export default {
this.loading = false;
});
},
+ // 获取审批状态对应的标签类型
+ getStatusTagType(status) {
+ const typeMap = {
+ '待审批': 'warning',
+ '已同意': 'success',
+ '已驳回': 'danger',
+ '已撤销': 'info',
+ }
+ return typeMap[status] || 'default'
+ },
+
+ // 获取审批状态的中文文本
+ getStatusText(status) {
+ const textMap = {
+ '待审批': '待审批',
+ '已同意': '已同意',
+ '已驳回': '已驳回',
+ '已撤销': '已撤销',
+ }
+ return textMap[status] || '未知状态'
+ },
// 核心新增:自动计算请假天数的方法
calculateLeaveDays() {
const { startTime, endTime } = this.form;
diff --git a/klp-ui/src/views/wms/hrm/components/outLabelPrinter.vue b/klp-ui/src/views/wms/hrm/components/outLabelPrinter.vue
new file mode 100644
index 00000000..40486b33
--- /dev/null
+++ b/klp-ui/src/views/wms/hrm/components/outLabelPrinter.vue
@@ -0,0 +1,320 @@
+
+
+
+
+
+
存根
+
+
+
外出条
+
+ {{ printerInfo.startYear }}年
+
+
+
+
请假人:{{ printerInfo.applyName }}
+
+
+ {{ printerInfo.startMonth }}月
+ {{ printerInfo.startDay }}日 至
+
+
+ {{ printerInfo.startMonth }}月
+ {{ printerInfo.startDay }}日 计
+ {{ printerInfo.outHours }}小时
+
+
+
事由:{{ printerInfo.reason }}
+
外出地点:{{ printerInfo.outPlace }}
+
批准人:{{ printerInfo.approverName }}
+
+
+
+
+
+
+
外出条
+
+
+
请假人:{{ printerInfo.applyName }}
+
+ {{ printerInfo.startYear }}年
+ {{ printerInfo.startMonth }}月
+ {{ printerInfo.startDay }}日 至
+ {{ printerInfo.endYear }}年
+ {{ printerInfo.endMonth }}月
+ {{ printerInfo.endDay }}日 计
+ {{ printerInfo.outHours }}小时
+
+
事由:{{ printerInfo.reason }}
+
外出地点:{{ printerInfo.outPlace }}
+
批准人:{{ printerInfo.approverName }}
+
+
+

+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/klp-ui/src/views/wms/hrm/todo/index.vue b/klp-ui/src/views/wms/hrm/todo/index.vue
index 4a6e97bb..cb3c135f 100644
--- a/klp-ui/src/views/wms/hrm/todo/index.vue
+++ b/klp-ui/src/views/wms/hrm/todo/index.vue
@@ -40,36 +40,36 @@
全部
待审批
- 已审批
+ 已同意
已驳回
已撤回
@@ -320,10 +320,12 @@ export default {
}).then(async () => {
this.buttonLoading = true
try {
+ const approvalTime = this.parseTime(new Date(), '{y}-{m}-{d} {h}:{i}:{s}')
// 这里替换为你的审批接口调用
await updateApproval({
approvalId: row.approvalId,
approvalStatus: '已同意',
+ approvalTime: approvalTime,
})
this.$message.success('审批通过成功!')
this.getTodoList() // 重新查询列表
@@ -344,10 +346,12 @@ export default {
}).then(async ({ value }) => {
this.buttonLoading = true
try {
+ const approvalTime = this.parseTime(new Date(), '{y}-{m}-{d} {h}:{i}:{s}')
// 这里替换为你的驳回接口调用
await updateApproval({
approvalId: row.approvalId,
- approvalStatus: '已驳回'
+ approvalStatus: '已驳回',
+ approvalTime: approvalTime,
})
this.$message.success('驳回成功!')
this.getTodoList() // 重新查询列表
@@ -371,7 +375,7 @@ export default {
'待审批': 'warning',
'已同意': 'success',
'已驳回': 'danger',
- '已撤消': 'info',
+ '已撤销': 'info',
}
return typeMap[status] || 'default'
},
@@ -382,7 +386,7 @@ export default {
'待审批': '待审批',
'已同意': '已同意',
'已驳回': '已驳回',
- '已撤消': '已撤消',
+ '已撤销': '已撤销',
}
return textMap[status] || '未知状态'
},
@@ -411,17 +415,11 @@ export default {
.filter-container {
background: #f5f7fa;
- padding: 20px;
+ /* padding: 20px; */
border-radius: 4px;
height: fit-content;
}
-.filter-container h4 {
- margin: 0 0 20px 0;
- font-size: 16px;
- color: #333;
-}
-
/* 自定义tabs样式 */
.custom-tabs {
margin-bottom: 20px;
@@ -438,14 +436,14 @@ export default {
.custom-tabs-nav {
display: flex;
flex-direction: column;
- gap: 8px;
+ gap: 4px;
width: 100%;
}
.custom-tabs-item {
padding: 10px 15px;
text-align: center;
- border-radius: 4px;
+ border-radius: 2px;
cursor: pointer;
font-size: 14px;
transition: all 0.2s ease;
@@ -459,9 +457,9 @@ export default {
}
.custom-tabs-item.active {
- background: #409eff;
+ background: #667996;
color: #ffffff;
- border-color: #409eff;
+ border-color: #667996;
}
.detail-content {