From 36b00e2ef3b079755b4e240ede283407974086a2 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期三, 03 十二月 2025 17:53:05 +0800
Subject: [PATCH] feat: 页面
---
src/views/EmploymentManage/TaskArrange.vue | 293 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 293 insertions(+), 0 deletions(-)
diff --git a/src/views/EmploymentManage/TaskArrange.vue b/src/views/EmploymentManage/TaskArrange.vue
new file mode 100644
index 0000000..c74d1b0
--- /dev/null
+++ b/src/views/EmploymentManage/TaskArrange.vue
@@ -0,0 +1,293 @@
+<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
+ v-if="checkSubModuleItemShow('pageButton', 'addBtn')"
+ @click="goAddOrEdit()"
+ type="primary"
+ >鍙戝竷</el-button
+ >
+ </template>
+ </ProTableQueryFilterBar>
+ <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
+ <template #userCount="{ row }">
+ <el-button v-if="!row.isInternal" link type="primary" @click="goSignList(row)">{{
+ row.userCount || 0
+ }}</el-button>
+ <span v-else>/</span>
+ </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 { EnumTaskStatusText, EnumTaskReleaseStatusText } from '@/constants';
+import { useGlobalEventContext } from '@/hooks';
+import * as taskServices from '@/services/api/task';
+import { format, OrderUtils } from '@/utils';
+import { ModelValueType } from 'element-plus';
+import { Message } from '@bole-core/core';
+import dayjs from 'dayjs';
+
+defineOptions({
+ name: 'TaskArrange',
+});
+
+const operationBtnMap: Record<string, OperationBtnType> = {
+ // editBtn: {
+ // emits: {
+ // onClick: (role) => goAddOrEdit(role),
+ // },
+ // extraProps: {
+ // hide: (row: API.GetTaskInfosQueryResultItem) =>
+ // row.status === EnumTaskStatus.Complete || !row.isInternal,
+ // },
+ // },
+ // detailBtn: {
+ // emits: {
+ // onClick: (row: API.GetTaskInfosQueryResultItem) => goDetail(row),
+ // },
+ // },
+ // publishBtn: {
+ // emits: {
+ // onClick: (row: API.GetTaskInfosQueryResultItem) =>
+ // setTaskInfoReleaseStatus(row, EnumTaskReleaseStatus.InProcess),
+ // },
+ // extraProps: {
+ // hide: (row: API.GetTaskInfosQueryResultItem) =>
+ // row.releaseStatus === EnumTaskReleaseStatus.InProcess || !row.isInternal,
+ // },
+ // },
+ // unPublishBtn: {
+ // emits: {
+ // onClick: (row: API.GetTaskInfosQueryResultItem) =>
+ // setTaskInfoReleaseStatus(row, EnumTaskReleaseStatus.Stopped),
+ // },
+ // extraProps: {
+ // hide: (row: API.GetTaskInfosQueryResultItem) =>
+ // row.releaseStatus === EnumTaskReleaseStatus.Stopped || !row.isInternal,
+ // },
+ // },
+ arrangeBtn: {
+ emits: {
+ onClick: (row: API.GetTaskInfosQueryResultItem) => handleArrange(row),
+ },
+ extraProps: {
+ hide: (row: API.GetTaskInfosQueryResultItem) =>
+ row.releaseStatus === EnumTaskReleaseStatus.Stopped || !row.isInternal,
+ },
+ },
+};
+
+const { checkSubModuleItemShow, column, operationBtns } = useAccess({
+ operationBtnMap,
+});
+
+const router = useRouter();
+
+const BaseState = {
+ loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+const eventContext = useGlobalEventContext();
+
+eventContext.addEvent('taskManage:add', () => {
+ getList();
+});
+
+eventContext.addEvent('taskManage: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 }],
+ },
+ 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 },
+ createdTime: { type: 'date', format: 'YYYY-MM-DD' },
+ beginTime: { type: 'date', format: 'YYYY-MM-DD' },
+ endTime: { type: 'date', format: 'YYYY-MM-DD' },
+ serviceFee: {
+ type: 'money',
+ formatter: (row: API.GetTaskInfosQueryResultItem) => {
+ return OrderUtils.getServiceFeeText(row.serviceFee, row.billingMethod);
+ },
+ },
+ applyBeginTime: { type: 'date', format: 'YYYY-MM-DD' },
+ applyEndTime: { type: 'date', format: 'YYYY-MM-DD' },
+ //@ts-ignore
+ applyStatus: {
+ formatter: (row: API.GetTaskInfosQueryResultItem) => {
+ const applyBeginTime = dayjs(row.applyBeginTime);
+ const applyEndTime = dayjs(row.applyEndTime);
+ const now = dayjs();
+ if (applyEndTime.isBefore(now)) {
+ return '宸茬粨鏉�';
+ } else if (applyBeginTime.isAfter(now)) {
+ return '寰呭紑濮�';
+ } else {
+ return '杩涜涓�';
+ }
+ },
+ },
+ },
+ }
+);
+
+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 ?? '',
+ },
+ query: {
+ supplierEnterpriseId: row?.supplierEnterpriseId,
+ },
+ });
+}
+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