From fea063f5c7fdf79d56ada2dd2b8045a44ca2db44 Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期五, 08 八月 2025 15:17:55 +0800 Subject: [PATCH] feat: 任务 --- src/views/EmploymentManage/EmploymentManage.vue | 274 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 274 insertions(+), 0 deletions(-) diff --git a/src/views/EmploymentManage/EmploymentManage.vue b/src/views/EmploymentManage/EmploymentManage.vue new file mode 100644 index 0000000..3750b03 --- /dev/null +++ b/src/views/EmploymentManage/EmploymentManage.vue @@ -0,0 +1,274 @@ +<template> + <LoadingLayout :loading="state.loading"> + <AppContainer> + <ProTableQueryFilterBar @on-reset="reset"> + <template #query> + <QueryFilterItem tip-content="浠诲姟鐘舵��"> + <FieldRadio + v-model="extraParamState.status" + :value-enum="EnumTaskStatusText" + buttonStyle + showAllBtn + @change="getList()" + /> + </QueryFilterItem> + <QueryFilterItem tip-content="鍙戝竷鐘舵��"> + <FieldRadio + v-model="extraParamState.releaseStatus" + :value-enum="EnumTaskReleaseStatusText" + buttonStyle + showAllBtn + @change="getList()" + /> + </QueryFilterItem> + <QueryFilterItem tip-content="鍙戝竷鏃堕棿"> + <FieldDatePicker + v-model="extraParamState.time" + type="daterange" + range-separator="~" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + clearable + @change="getList()" + ></FieldDatePicker> + </QueryFilterItem> + <QueryFilterItem> + <SearchInput + v-model="extraParamState.keywords" + style="width: 260px" + placeholder="浠诲姟鍚嶇О" + @on-click-search="getList" + > + </SearchInput> + </QueryFilterItem> + </template> + <template #btn> + <el-button @click="goAddOrEdit()" type="primary">鍙戝竷</el-button> + </template> + </ProTableQueryFilterBar> + <ProTableV2 + v-bind="proTableProps" + :columns="EmploymentManageColumns" + :operationBtns="operationBtns" + > + <template #userCount="{ row }"> + <el-button link type="primary" @click="goSignList(row)">{{ + row.userCount || 0 + }}</el-button> + </template> + </ProTableV2> + </AppContainer> + </LoadingLayout> +</template> + +<script setup lang="ts"> +import { + ProTableQueryFilterBar, + ProTableV2, + SearchInput, + LoadingLayout, + AppContainer, + QueryFilterItem, + useTable, + FieldDatePicker, + FieldRadio, + defineOperationBtns, +} from '@bole-core/components'; +import { EmploymentManageColumns } from './constants'; +import { EnumTaskStatusText, EnumTaskReleaseStatusText } from '@/constants'; +import { useGlobalEventContext } from '@/hooks'; +import * as taskServices from '@/services/api/task'; +import { format } from '@/utils'; +import { ModelValueType } from 'element-plus'; +import { Message } from '@bole-core/core'; + +defineOptions({ + name: 'EmploymentManageList', +}); + +const operationBtns = defineOperationBtns([ + { + data: { + enCode: 'editBtn', + name: '缂栬緫', + }, + emits: { + onClick: (role) => goAddOrEdit(role), + }, + }, + { + data: { + enCode: 'detailBtn', + name: '璇︽儏', + }, + emits: { + onClick: (row: API.GetTaskInfosQueryResultItem) => goDetail(row), + }, + }, + { + data: { + enCode: 'publishBtn', + name: '鍙戝竷', + }, + emits: { + onClick: (row: API.GetTaskInfosQueryResultItem) => + setTaskInfoReleaseStatus(row, EnumTaskReleaseStatus.InProcess), + }, + extraProps: { + hide: (row: API.GetTaskInfosQueryResultItem) => + row.releaseStatus === EnumTaskReleaseStatus.InProcess, + }, + }, + { + data: { + enCode: 'unPublishBtn', + name: '鍋滄鍙戝竷', + }, + emits: { + onClick: (row: API.GetTaskInfosQueryResultItem) => + setTaskInfoReleaseStatus(row, EnumTaskReleaseStatus.Stopped), + }, + extraProps: { + hide: (row: API.GetTaskInfosQueryResultItem) => + row.releaseStatus === EnumTaskReleaseStatus.Stopped, + }, + }, + { + data: { + enCode: 'arrangeBtn', + name: '瀹夋帓', + }, + emits: { + onClick: (row: API.GetTaskInfosQueryResultItem) => handleArrange(row), + }, + }, +]); + +const router = useRouter(); + +const BaseState = { + loading: true, +}; + +const state = reactive({ ...BaseState }); + +const eventContext = useGlobalEventContext(); + +eventContext.addEvent('employment:add', () => { + getList(); +}); + +eventContext.addEvent('employment:edit', () => { + getList(paginationState.pageIndex); +}); + +onMounted(async () => { + await getList(); + state.loading = false; +}); + +const { + getDataSource: getList, + proTableProps, + paginationState, + extraParamState, + reset, +} = useTable( + async ({ pageIndex, pageSize }, extraParamState) => { + try { + let params: API.GetTaskInfosQuery = { + pageModel: { + rows: pageSize, + page: pageIndex, + orderInput: extraParamState.orderInput, + }, + keywords: extraParamState.keywords, + status: extraParamState.status, + releaseStatus: extraParamState.releaseStatus, + beginTime: format(extraParamState.time?.[0] ?? '', 'YYYY-MM-DD 00:00:00'), + endTime: format(extraParamState.time?.[1] ?? '', 'YYYY-MM-DD 23:59:59'), + }; + + let res = await taskServices.getTaskInfos(params, { + showLoading: !state.loading, + }); + return res; + } catch (error) { + console.log('error: ', error); + } + }, + { + defaultExtraParams: { + keywords: '', + status: '' as any as EnumTaskStatus, + releaseStatus: '' as any as EnumTaskReleaseStatus, + time: [] as unknown as ModelValueType, + orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }], + flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus, + }, + queryKey: ['taskServices/getTaskInfos'], + columnsRenderProps: { + billingMethod: { type: 'enum', valueEnum: EnumBillingMethodText }, + settlementCycle: { type: 'enum', valueEnum: EnumSettlementCycleText }, + genderLimit: { type: 'enum', valueEnum: EnumUserGenderText }, + status: { type: 'enum', valueEnum: EnumTaskStatusText }, + releaseStatus: { type: 'enum', valueEnum: EnumTaskReleaseStatusText }, + beginTime: { type: 'date', format: 'YYYY-MM-DD' }, + endTime: { type: 'date', format: 'YYYY-MM-DD' }, + serviceFee: { type: 'money' }, + }, + } +); + +async function setTaskInfoReleaseStatus( + row: API.GetTaskInfosQueryResultItem, + releaseStatus: EnumTaskReleaseStatus +) { + try { + await Message.tipMessage(`纭瑕�${EnumTaskReleaseStatusTextForTip[releaseStatus]}鍚楋紵`); + let params: API.SetTaskInfoReleaseStatusCommand = { + ids: [row.id], + releaseStatus: releaseStatus, + }; + let res = await taskServices.setTaskInfoReleaseStatus(params); + if (res) { + Message.successMessage('鎿嶄綔鎴愬姛'); + getList(paginationState.pageIndex); + } + } catch (error) {} +} + +function handleArrange(row: API.GetTaskInfosQueryResultItem) { + router.push({ + name: 'EmploymentManageArrange', + params: { + id: row?.id ?? '', + }, + }); +} +function goAddOrEdit(row?: API.GetTaskInfosQueryResultItem) { + router.push({ + name: 'AddOrEditEmployment', + params: { + id: row?.id ?? '', + }, + }); +} +function goDetail(row: API.GetTaskInfosQueryResultItem) { + router.push({ + name: 'EmploymentManageDetail', + params: { + id: row?.id ?? '', + }, + }); +} + +function goSignList(row: API.GetTaskInfosQueryResultItem) { + router.push({ + name: 'EmploymentSignList', + params: { + id: row?.id ?? '', + }, + }); +} +</script> -- Gitblit v1.9.1