wupengfei
7 小时以前 e8d3ac112b288d5dabe9ecbdef9460afe7b016ca
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('taskManage:arrange');
}
</script>