| | |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="12"> |
| | | <ProFormItemV2 label="服务协议:" prop="contractUrl"> |
| | | <ProFormUpload |
| | | v-model:file-url="form.contractUrl" |
| | | :limit="1" |
| | | :limitFileSize="10" |
| | | accept="jpg/jpeg,png,pdf" |
| | | ></ProFormUpload> |
| | | <ProFormUpload v-model:file-url="form.contractUrl"></ProFormUpload> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | </ProFormCol> |
| | |
| | | </ProForm> |
| | | </ChunkCell> |
| | | <ChunkCell title="任务安排"> |
| | | <ProTableQueryFilterBar> |
| | | <ProTableQueryFilterBar :show-reset-btn="false"> |
| | | <template #btn> |
| | | <el-button |
| | | v-if="checkSubModuleItemShow('pageButton', 'addBtn')" |
| | | type="primary" |
| | | link |
| | | @click="handleAdd()" |
| | | @click="openDialog()" |
| | | >新增任务</el-button |
| | | > |
| | | </template> |
| | |
| | | import * as taskUserServices from '@/services/api/taskUser'; |
| | | import AddTaskDialog from './components/AddTaskDialog.vue'; |
| | | import { EnumUserGenderTextForPerson } from '@/constants'; |
| | | import { paginateList } from '@/utils'; |
| | | import { paginateList, convertApi2FormUrlOnlyOne } from '@/utils'; |
| | | import { useGetWaitArrangeTasks } from '@/hooks'; |
| | | import { Message } from '@bole-core/core'; |
| | | |
| | | defineOptions({ |
| | | name: 'TaskArrangeDetail', |
| | | }); |
| | | |
| | | type GetWaitArrangeTasksQueryResultItemWithChoose = API.GetWaitArrangeTasksQueryResultItem & { |
| | | choose: boolean; |
| | | }; |
| | | |
| | | const { closeViewPush } = useRouteView(); |
| | | const eventContext = useGlobalEventContext(); |
| | | |
| | | const operationBtnMap: Record<string, OperationBtnType> = { |
| | | arrangeBtn: { |
| | | emits: { |
| | | onClick: (role) => openDialog(role), |
| | | onClick: (role) => setTaskUserArrange(role), |
| | | }, |
| | | extraProps: { |
| | | hide: (row: API.GetSettlementTaskUsersQueryResultItem) => false, |
| | | hide: (row) => row.choose, |
| | | }, |
| | | }, |
| | | cancelArrangeBtn: { |
| | | emits: { |
| | | onClick: (role) => openDialog(role), |
| | | onClick: (role) => setTaskUserArrange(role), |
| | | }, |
| | | extraProps: { |
| | | hide: (row: API.GetSettlementTaskUsersQueryResultItem) => false, |
| | | hide: (row) => !row.choose, |
| | | }, |
| | | }, |
| | | }; |
| | |
| | | contractUrl: [] as UploadUserFile[], |
| | | contractTime: [], |
| | | contactPhoneNumber: '', |
| | | gender: '', |
| | | gender: '' as any as EnumUserGender, |
| | | age: 0, |
| | | identity: '', |
| | | settlementTaskUsers: [] as API.GetSettlementTaskUsersQueryResultItem[], |
| | | taskInfos: [] as GetWaitArrangeTasksQueryResultItemWithChoose[], |
| | | |
| | | arrangeList: [] as API.GetWaitArrangeTasksQueryResultItem[], |
| | | }); |
| | | |
| | | const BaseState = { |
| | |
| | | |
| | | const state = reactive({ ...BaseState }); |
| | | |
| | | const { proTableProps: waitArrangeTasksProTableProps } = useGetWaitArrangeTasks({ |
| | | id: id, |
| | | }); |
| | | |
| | | const { isLoading, refetch } = useQuery({ |
| | | queryKey: ['taskUserServices/getSettlementTaskUsers', id], |
| | | queryKey: ['taskUserServices/getArrangeTaskEnterpriseEmployee', id], |
| | | queryFn: async () => { |
| | | let params: API.APIgetSettlementTaskUsersParams = { |
| | | id: id, |
| | | }; |
| | | return await taskUserServices.getSettlementTaskUsers(params, { |
| | | return await taskUserServices.getArrangeTaskEnterpriseEmployee(params, { |
| | | showLoading: false, |
| | | }); |
| | | }, |
| | | placeholderData: () => ({} as API.GetSettlementTaskUsersQueryResult), |
| | | placeholderData: () => ({} as API.GetArrangeTaskEnterpriseEmployeeQueryResult), |
| | | onSuccess(res) { |
| | | form.settlementTaskUsers = res?.data ?? []; |
| | | if (res?.detail) { |
| | | form.name = res?.detail?.name; |
| | | } |
| | | form.name = res?.name; |
| | | form.contractUrl = convertApi2FormUrlOnlyOne(res?.contractUrl); |
| | | form.contractTime = [res.contractBegin, res.contractEnd]; |
| | | form.contactPhoneNumber = res?.contactPhoneNumber; |
| | | form.gender = res?.gender; |
| | | form.age = res?.age ?? 0; |
| | | form.identity = res?.identity ?? ''; |
| | | form.taskInfos = res?.taskInfos.map((x) => ({ |
| | | ...x, |
| | | choose: true, |
| | | })); |
| | | |
| | | getList(); |
| | | }, |
| | | enabled: !!id, |
| | |
| | | } = useTable( |
| | | async ({ pageIndex, pageSize }, extraParamState) => { |
| | | try { |
| | | let list = [...form.settlementTaskUsers]; |
| | | if (extraParamState.keywords) { |
| | | list = list?.filter((item) => { |
| | | return ( |
| | | item.name.includes(extraParamState.keywords) || |
| | | item.contactPhoneNumber.includes(extraParamState.keywords) || |
| | | item.identity.includes(extraParamState.keywords) |
| | | ); |
| | | }); |
| | | } |
| | | |
| | | let list = [...form.taskInfos]; |
| | | console.log('form.taskInfos: ', form.taskInfos); |
| | | return Promise.resolve({ |
| | | pageModel: { |
| | | rows: pageSize, |
| | |
| | | }, |
| | | { |
| | | defaultExtraParams: { |
| | | keywords: '', |
| | | orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }], |
| | | }, |
| | | queryKey: ['taskUserServices/getSettlementTaskUsers'], |
| | | columnsRenderProps: { |
| | | settlementTime: { type: 'date' }, |
| | | beginTime: { type: 'date' }, |
| | | endTime: { type: 'date' }, |
| | | }, |
| | | } |
| | | ); |
| | | |
| | | const { dialogProps, handleAdd, handleEdit, editForm } = useFormDialog({ |
| | | async function setTaskUserArrange(row: GetWaitArrangeTasksQueryResultItemWithChoose) { |
| | | try { |
| | | await Message.tipMessage(`确认要${row.choose ? '取消安排' : '安排'}吗?`); |
| | | let params: API.SetTaskUserArrangeCommand = { |
| | | enterpriseEmployeeId: id, |
| | | taskInfoId: row.id, |
| | | arrangeStatus: row.choose |
| | | ? EnumTaskUserArrangeStatus.Wait |
| | | : EnumTaskUserArrangeStatus.Complete, |
| | | }; |
| | | let res = await taskUserServices.setTaskUserArrange(params); |
| | | if (res) { |
| | | Message.successMessage('操作成功'); |
| | | form.taskInfos = form.taskInfos.map((x) => { |
| | | if (x.id == row.id) { |
| | | x.choose = !x.choose; |
| | | } |
| | | return x; |
| | | }); |
| | | getList(); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | |
| | | const { dialogProps, handleEdit, editForm } = useFormDialog({ |
| | | onConfirm: handleAddOrEdit, |
| | | defaultFormParams: { |
| | | id: '', |
| | | selectedIds: [] as string[], |
| | | }, |
| | | }); |
| | | |
| | | function openDialog(row?: API.GetSettlementTaskUsersQueryResultItem) { |
| | | if (row) { |
| | | handleEdit({ |
| | | id: row?.id, |
| | | }); |
| | | } |
| | | function openDialog() { |
| | | handleEdit({ |
| | | id: id, |
| | | selectedIds: [] as string[], |
| | | }); |
| | | } |
| | | |
| | | async function handleAddOrEdit() { |
| | | try { |
| | | // let params: API.EditTaskSettlementOrderRosterCommand = { |
| | | // id: editForm.id, |
| | | // }; |
| | | // let res = await taskServices.editTaskSettlementOrderRoster(params); |
| | | // if (res) { |
| | | // Message.successMessage('操作成功'); |
| | | // refetch(); |
| | | // getList(paginationState.pageIndex); |
| | | // } |
| | | let params: API.BatchSetTaskUserArrangeCommand = { |
| | | enterpriseEmployeeId: id, |
| | | taskInfoIds: editForm.selectedIds, |
| | | arrangeStatus: EnumTaskUserArrangeStatus.Complete, |
| | | }; |
| | | let res = await taskUserServices.batchSetTaskUserArrange(params); |
| | | if (res) { |
| | | Message.successMessage('操作成功'); |
| | | refetch(); |
| | | getList(); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | |
| | | function handleBack() { |
| | | closeViewPush(route, { |
| | | name: 'ServiceChargeManageList', |
| | | name: 'TaskArrange', |
| | | }); |
| | | eventContext.emit('taskManage:arrange'); |
| | | } |
| | | </script> |
| | | |