wupengfei
2 天以前 9c2c8534862d5a843b1e8766bd4bf171ac295fb3
src/views/EmploymentManage/components/ManualCheckManageDialog.vue
@@ -1,7 +1,7 @@
<template>
  <ProDialog :title="title" v-model="visible" destroy-on-close draggable>
  <ProDialog title="验收" v-model="visible" destroy-on-close draggable>
    <ProDialogTableWrapper :height="400">
      <ProTableV2 v-bind="proTableProps" :columns="columns" :operationBtns="operationBtns">
      <ProTableV2 v-bind="proTableProps" :columns="columns" :showOperationColumn="false">
      </ProTableV2>
    </ProDialogTableWrapper>
    <template #footer>
@@ -18,13 +18,9 @@
  ProTableV2,
  ProDialogTableWrapper,
  defineColumns,
  defineOperationBtns,
  useTable,
} from '@bole-core/components';
import * as taskCheckReceiveServices from '@/services/api/taskCheckReceive';
import { setOSSLink } from '@/utils';
import { downloadWithZip, Message } from '@bole-core/core';
import { useGlobalEventContext } from '@/hooks';
defineOptions({
  name: 'ManualCheckManageDialog',
@@ -32,17 +28,13 @@
type Form = {
  id: string;
  isDetail: boolean;
};
const visible = defineModel({ type: Boolean });
const form = defineModel<Form>('form');
const title = computed(() => (form.value.isDetail ? '详情' : '验收'));
const emit = defineEmits<{
  (e: 'onCancel'): void;
}>();
const eventContext = useGlobalEventContext();
const columns = defineColumns([
  {
@@ -52,70 +44,23 @@
  },
  {
    id: '2',
    enCode: 'createdTime',
    enCode: 'checkInTime',
    name: '签到时间',
  },
  {
    id: '3',
    enCode: 'files',
    enCode: 'checkOutTime',
    name: '签出时间',
  },
  {
    id: '4',
    enCode: 'checkReceiveStatus',
    enCode: 'checkOutStatus',
    name: '验收状态',
  },
  {
    id: '5',
    enCode: 'checkReceiveTime',
    enCode: 'operator',
    name: '操作人',
  },
]);
const operationBtns = defineOperationBtns([
  {
    data: {
      enCode: 'checkReceiveBtn',
      name: '验收通过',
    },
    emits: {
      onClick: (role) => checkReceiveTask(role, EnumTaskUserSubmitCheckReceiveStatus.Success),
    },
    extraProps: {
      hide: (row: API.GetCheckReceiveTaskUserSubmitsQueryResultItem) =>
        !(
          row.checkReceiveStatus === EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit ||
          row.checkReceiveStatus === EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive
        ) || form.value.isDetail,
    },
  },
  {
    data: {
      enCode: 'checkReceiveBtn',
      name: '验收未通过',
    },
    emits: {
      onClick: (role) => checkReceiveTask(role, EnumTaskUserSubmitCheckReceiveStatus.Fail),
    },
    extraProps: {
      hide: (row: API.GetCheckReceiveTaskUserSubmitsQueryResultItem) =>
        !(
          row.checkReceiveStatus === EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit ||
          row.checkReceiveStatus === EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive
        ) || form.value.isDetail,
    },
  },
  {
    data: {
      enCode: 'downloadBtn',
      name: '下载',
    },
    emits: {
      onClick: (role) => handleDownload(role),
    },
    extraProps: {
      hide: (row: API.GetCheckReceiveTaskUserSubmitsQueryResultItem) => row.files?.length === 0,
    },
  },
]);
@@ -162,47 +107,17 @@
    },
    queryKey: ['taskCheckReceiveServices/getCheckReceiveTaskUserSubmits'],
    columnsRenderProps: {
      createdTime: { type: 'date' },
      checkReceiveTime: { type: 'date' },
      checkInTime: { type: 'date' },
      checkOutTime: { type: 'date' },
      date: { type: 'date', format: 'YYYY-MM-DD' },
      checkReceiveStatus: { type: 'enum', valueEnum: EnumTaskUserSubmitCheckReceiveStatusText },
      files: {
        type: 'url',
        //@ts-ignore
        formatter: (row: API.GetCheckReceiveTaskUserSubmitsQueryResultItem) =>
          row.files?.length > 0 && (row.files ?? []).map((x) => setOSSLink(x)),
        showDownloadBtn: false,
      //@ts-ignore
      checkOutStatus: {
        formatter: (row: API.GetCheckReceiveTaskUserSubmitsQueryResultItem) => {
          return row.checkOutTime ? '已签到' : '';
        },
      },
    },
  }
);
function handleDownload(row: API.GetCheckReceiveTaskUserSubmitsQueryResultItem) {
  if (row.files?.length > 0) {
    downloadWithZip(
      row.files.map((x) => ({
        data: `${setOSSLink(x)}`,
      })),
      '验收照片'
    );
  }
}
async function checkReceiveTask(
  row: API.GetCheckReceiveTaskUserSubmitsQueryResultItem,
  checkReceiveStatus: EnumTaskUserSubmitCheckReceiveStatus
) {
  try {
    let params: API.CheckReceiveTaskCommand = {
      id: row.id,
      checkReceiveStatus: checkReceiveStatus,
    };
    let res = await taskCheckReceiveServices.checkReceiveTask(params);
    if (res) {
      Message.successMessage('操作成功');
      getList(paginationState.pageIndex);
      eventContext.emit('checkReceiveTask');
    }
  } catch (error) {}
}
</script>