From 21eeb2e067359789759904868438c70b18d4b066 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期五, 26 十二月 2025 17:31:01 +0800
Subject: [PATCH] feat: init

---
 src/views/EmploymentManage/TaskArrangeDetail.vue |  138 ++++++++++++++++++++++++++++-----------------
 1 files changed, 85 insertions(+), 53 deletions(-)

diff --git a/src/views/EmploymentManage/TaskArrangeDetail.vue b/src/views/EmploymentManage/TaskArrangeDetail.vue
index b6bf954..5b211a4 100644
--- a/src/views/EmploymentManage/TaskArrangeDetail.vue
+++ b/src/views/EmploymentManage/TaskArrangeDetail.vue
@@ -11,12 +11,7 @@
             </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>
@@ -63,13 +58,13 @@
         </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>
@@ -117,30 +112,36 @@
 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,
     },
   },
 };
@@ -156,10 +157,12 @@
   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 = {
@@ -168,22 +171,34 @@
 
 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,
@@ -198,17 +213,8 @@
 } = 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,
@@ -223,49 +229,75 @@
   },
   {
     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('taskArrange:arrange');
 }
 </script>
 

--
Gitblit v1.10.0