From b42ca1e9ab197ce53828f4607610ae10f25965bb Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期五, 12 十二月 2025 19:59:13 +0800
Subject: [PATCH] feat: 新增渠道包
---
src/views/EmploymentManage/components/CheckManageDialog.vue | 223 ++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 194 insertions(+), 29 deletions(-)
diff --git a/src/views/EmploymentManage/components/CheckManageDialog.vue b/src/views/EmploymentManage/components/CheckManageDialog.vue
index 1fa427a..f90e2cc 100644
--- a/src/views/EmploymentManage/components/CheckManageDialog.vue
+++ b/src/views/EmploymentManage/components/CheckManageDialog.vue
@@ -1,18 +1,16 @@
<template>
<ProDialog :title="title" v-model="visible" destroy-on-close draggable>
+ <ProTabs v-model="form.tabType" hasBorder v-if="form.checkReceiveMethods?.length > 1">
+ <ProTabPane lazy label="绛惧埌璁板綍" name="signRecord"></ProTabPane>
+ <ProTabPane lazy label="鎻愪氦璁板綍" name="submitRecord"></ProTabPane>
+ </ProTabs>
<ProDialogTableWrapper :height="400">
<ProTableV2 v-bind="proTableProps" :columns="columns" :operationBtns="operationBtns">
</ProTableV2>
</ProDialogTableWrapper>
<template #footer>
<span class="dialog-footer">
- <el-button v-if="form.type === 'detail'" @click="emit('onCancel')" type="primary"
- >纭畾</el-button
- >
- <template v-if="form.type === 'check'">
- <el-button @click="emit('check', false)">楠屾敹鏈�氳繃</el-button>
- <el-button type="primary" @click="emit('check', true)">楠屾敹閫氳繃</el-button>
- </template>
+ <el-button @click="emit('onCancel')" type="primary">纭畾</el-button>
</span>
</template>
</ProDialog>
@@ -26,41 +24,161 @@
defineColumns,
defineOperationBtns,
useTable,
+ ProTabs,
+ ProTabPane,
} from '@bole-core/components';
-import { OrderInputType } from '@bole-core/core';
-import * as flexEnterpriseServices from '@/services/api/FlexEnterprise';
+import * as taskCheckReceiveServices from '@/services/api/taskCheckReceive';
+import { setOSSLink } from '@/utils';
+import { downloadWithZip, Message } from '@bole-core/core';
+import { useGlobalEventContext } from '@/hooks';
defineOptions({
- name: 'EnterpriseConsumptionDetailDialog',
+ name: 'CheckManageDialog',
});
type Form = {
id: string;
- type: string;
+ isDetail: boolean;
+ tabType: string;
+ checkReceiveMethods: EnumTaskCheckReceiveMethod[];
};
const visible = defineModel({ type: Boolean });
const form = defineModel<Form>('form');
-const title = computed(() => (form.value.type === 'check' ? '楠屾敹' : '璇︽儏'));
+const title = computed(() => (form.value.isDetail ? '璇︽儏' : '楠屾敹'));
const emit = defineEmits<{
(e: 'onCancel'): void;
- (e: 'check', value: boolean): void;
}>();
-const columns = defineColumns([
+const eventContext = useGlobalEventContext();
+
+const submitColumns = defineColumns([
{
id: '1',
- enCode: 'creationTime',
- name: '鎻愪氦鏃堕棿',
+ enCode: 'date',
+ name: '浠诲姟鏃ユ湡',
},
{
id: '2',
- enCode: 'type',
+ enCode: 'createdTime',
+ name: '鎻愪氦鏃堕棿',
+ },
+ {
+ id: '3',
+ enCode: 'files',
name: '楠屾敹鐓х墖',
+ },
+ {
+ id: '4',
+ enCode: 'checkReceiveStatus',
+ name: '楠屾敹鐘舵��',
+ },
+ {
+ id: '5',
+ enCode: 'checkReceiveTime',
+ name: '楠屾敹鏃堕棿',
+ },
+ {
+ id: '6',
+ enCode: 'checkOperator',
+ name: '楠屾敹浜�',
},
]);
+const checkInColumns = defineColumns([
+ {
+ id: '1',
+ enCode: 'date',
+ name: '浠诲姟鏃ユ湡',
+ },
+ {
+ id: '2',
+ enCode: 'userCheckInTime',
+ name: '鐢ㄦ埛绛惧埌鏃堕棿',
+ },
+ {
+ id: '3',
+ enCode: 'userCheckOutTime',
+ name: '鐢ㄦ埛绛惧嚭鏃堕棿',
+ },
+ {
+ id: '4',
+ enCode: 'userCheckHistoryType',
+ name: '鐢ㄦ埛楠屾敹鐘舵��',
+ },
+ {
+ id: '5',
+ enCode: 'checkInTime',
+ name: '绛惧埌鏃堕棿',
+ },
+ {
+ id: '6',
+ enCode: 'checkOutTime',
+ name: '绛惧嚭鏃堕棿',
+ },
+ {
+ id: '7',
+ enCode: 'checkHistoryType',
+ name: '楠屾敹鐘舵��',
+ },
+ {
+ id: '8',
+ enCode: 'operator',
+ name: '鎿嶄綔浜�',
+ },
+]);
+
+const columns = computed(() => {
+ if (form.value.checkReceiveMethods.every((x) => x == EnumTaskCheckReceiveMethod.CheckIn)) {
+ return checkInColumns;
+ } else if (form.value.checkReceiveMethods.every((x) => x == EnumTaskCheckReceiveMethod.Submit)) {
+ return submitColumns;
+ } else {
+ if (form.value.tabType === 'signRecord') {
+ return checkInColumns;
+ } else {
+ return submitColumns;
+ }
+ }
+});
+
const operationBtns = defineOperationBtns([
+ {
+ data: {
+ enCode: 'checkReceiveBtn',
+ name: '楠屾敹閫氳繃',
+ },
+ emits: {
+ onClick: (role) => checkReceiveTask(role, EnumTaskUserSubmitCheckReceiveStatus.Success),
+ },
+ extraProps: {
+ hide: (row: API.GetCheckReceiveTaskUserSubmitsQueryResultItem) =>
+ form.value.isDetail ||
+ form.value.tabType === 'signRecord' ||
+ !(
+ row.checkReceiveStatus === EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit ||
+ row.checkReceiveStatus === EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive
+ ),
+ },
+ },
+ {
+ data: {
+ enCode: 'checkReceiveBtn',
+ name: '楠屾敹鏈�氳繃',
+ },
+ emits: {
+ onClick: (role) => checkReceiveTask(role, EnumTaskUserSubmitCheckReceiveStatus.Fail),
+ },
+ extraProps: {
+ hide: (row: API.GetCheckReceiveTaskUserSubmitsQueryResultItem) =>
+ form.value.isDetail ||
+ form.value.tabType === 'signRecord' ||
+ !(
+ row.checkReceiveStatus === EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit ||
+ row.checkReceiveStatus === EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive
+ ),
+ },
+ },
{
data: {
enCode: 'downloadBtn',
@@ -69,14 +187,19 @@
emits: {
onClick: (role) => handleDownload(role),
},
+ extraProps: {
+ hide: (row: API.GetCheckReceiveTaskUserSubmitsQueryResultItem) => row.files?.length === 0,
+ },
},
]);
watch(
- () => visible.value,
+ visible,
(val) => {
if (val) {
- getList();
+ if (form.value.id) {
+ getList();
+ }
}
},
{
@@ -93,14 +216,15 @@
} = useTable(
async ({ pageIndex, pageSize }, extraParamState) => {
try {
- let params: API.GetFlexEnterpriseInput = {
+ let params: API.GetCheckReceiveTaskUserSubmitsQuery = {
pageModel: {
rows: pageSize,
page: pageIndex,
orderInput: extraParamState.orderInput,
},
+ id: form.value.id,
};
- let res = await flexEnterpriseServices.getFlexEnterpriseList(params);
+ let res = await taskCheckReceiveServices.getCheckReceiveTaskUserSubmits(params);
return res;
} catch (error) {
console.log('error: ', error);
@@ -108,16 +232,57 @@
},
{
defaultExtraParams: {
- orderInput: [{ property: 'id', order: OrderInputType.Desc }],
+ orderInput: [{ property: 'date', order: EnumPagedListOrder.Desc }],
},
- queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
- columnsRenderProps: {},
+ queryKey: ['taskCheckReceiveServices/getCheckReceiveTaskUserSubmits'],
+ columnsRenderProps: {
+ createdTime: { type: 'date' },
+ checkReceiveTime: { type: 'date' },
+ userCheckInTime: { type: 'date' },
+ userCheckOutTime: { type: 'date' },
+ checkInTime: { type: 'date' },
+ checkOutTime: { type: 'date' },
+ date: { type: 'date', format: 'YYYY-MM-DD' },
+ checkReceiveStatus: { type: 'enum', valueEnum: EnumTaskUserSubmitCheckReceiveStatusText },
+ userCheckHistoryType: { type: 'enum', valueEnum: EnumTaskUserSubmitCheckHistoryTypeText },
+ checkHistoryType: { type: 'enum', valueEnum: EnumTaskUserSubmitCheckHistoryTypeText },
+ files: {
+ type: 'url',
+ //@ts-ignore
+ formatter: (row: API.GetCheckReceiveTaskUserSubmitsQueryResultItem) =>
+ row.files?.length > 0 && (row.files ?? []).map((x) => setOSSLink(x)),
+ showDownloadBtn: false,
+ },
+ },
}
);
-function handleDownload(row) {}
-</script>
+function handleDownload(row: API.GetCheckReceiveTaskUserSubmitsQueryResultItem) {
+ if (row.files?.length > 0) {
+ downloadWithZip(
+ row.files.map((x) => ({
+ data: `${setOSSLink(x)}`,
+ })),
+ '楠屾敹鐓х墖'
+ );
+ }
+}
-<style lang="scss" scoped>
-@use '@/style/common.scss' as *;
-</style>
+async function checkReceiveTask(
+ row: API.GetCheckReceiveTaskUserSubmitsQueryResultItem,
+ checkReceiveStatus: EnumTaskUserSubmitCheckReceiveStatus
+) {
+ try {
+ let params: API.CheckReceiveTaskCommand = {
+ id: row.id,
+ checkReceiveStatus: checkReceiveStatus,
+ };
+ let res = await taskCheckReceiveServices.checkReceiveTask(params);
+ if (res) {
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ getList(paginationState.pageIndex);
+ eventContext.emit('checkReceiveTask');
+ }
+ } catch (error) {}
+}
+</script>
--
Gitblit v1.9.1