| <template> | 
|   <LoadingLayout v-loading="state.loading"> | 
|     <AppContainer> | 
|       <el-card class="query-filter-bar-wrapper" shadow="never"> | 
|         <ProForm :model="taskInfo" is-read> | 
|           <ProFormCol> | 
|             <ProFormColItem :span="8"> | 
|               <ProFormItemV2 label="任务名称:"> | 
|                 {{ taskInfo.name ?? '' }} | 
|               </ProFormItemV2> | 
|             </ProFormColItem> | 
|             <ProFormColItem :span="8"> | 
|               <ProFormItemV2 label="任务编号:"> | 
|                 {{ taskInfo.code ?? '' }} | 
|               </ProFormItemV2> | 
|             </ProFormColItem> | 
|             <ProFormColItem :span="8"> | 
|               <ProFormItemV2 label="服务费金额:"> | 
|                 {{ | 
|                   taskInfo.billingMethod === EnumBillingMethod.Face | 
|                     ? EnumBillingMethodText[taskInfo.billingMethod] | 
|                     : `${taskInfo.serviceFee}${EnumBillingMethodUnitText[taskInfo.billingMethod]}` | 
|                 }} | 
|               </ProFormItemV2> | 
|             </ProFormColItem> | 
|           </ProFormCol> | 
|           <ProFormCol> | 
|             <ProFormColItem :span="8"> | 
|               <ProFormItemV2 label="发布日期:"> | 
|                 {{ dayjs(taskInfo.createdTime ?? '').format('YYYY-MM-DD') }} | 
|               </ProFormItemV2> | 
|             </ProFormColItem> | 
|             <ProFormColItem :span="8"> | 
|               <ProFormItemV2 label="开始日期:"> | 
|                 {{ dayjs(taskInfo.beginTime ?? '').format('YYYY-MM-DD') }} | 
|               </ProFormItemV2> | 
|             </ProFormColItem> | 
|             <ProFormColItem :span="8"> | 
|               <ProFormItemV2 label="结束日期:"> | 
|                 {{ dayjs(taskInfo.endTime ?? '').format('YYYY-MM-DD') }} | 
|               </ProFormItemV2> | 
|             </ProFormColItem> | 
|           </ProFormCol> | 
|         </ProForm> | 
|       </el-card> | 
|   | 
|       <ProTableV2 | 
|         v-bind="proTableProps" | 
|         :columns="CheckReceiveTaskDetailColumns" | 
|         :operationBtns="operationBtns" | 
|       > | 
|       </ProTableV2> | 
|     </AppContainer> | 
|     <CheckManageDialog v-bind="dialogProps" /> | 
|     <ManualCheckManageDialog v-bind="dialogManualProps" /> | 
|   </LoadingLayout> | 
| </template> | 
|   | 
| <script setup lang="ts"> | 
| import { | 
|   ProTableV2, | 
|   LoadingLayout, | 
|   AppContainer, | 
|   useTable, | 
|   useFormDialog, | 
|   defineOperationBtns, | 
|   ProForm, | 
|   ProFormCol, | 
|   ProFormColItem, | 
|   ProFormItemV2, | 
|   ProTableQueryFilterBar, | 
| } from '@bole-core/components'; | 
| import * as taskCheckReceiveServices from '@/services/api/taskCheckReceive'; | 
| import * as taskServices from '@/services/api/task'; | 
| import { useQuery } from '@tanstack/vue-query'; | 
| import { CheckReceiveTaskDetailColumns } from './constants'; | 
| import { EnumBillingMethodUnitText, EnumBillingMethod, EnumBillingMethodText } from '@/constants'; | 
| import dayjs from 'dayjs'; | 
| import CheckManageDialog from './components/CheckManageDialog.vue'; | 
| import ManualCheckManageDialog from './components/ManualCheckManageDialog.vue'; | 
|   | 
| defineOptions({ | 
|   name: 'CheckReceiveTaskDetail', | 
| }); | 
|   | 
| const operationBtns = defineOperationBtns([ | 
|   { | 
|     data: { | 
|       enCode: 'exportBtn', | 
|       name: '验收', | 
|     }, | 
|     emits: { | 
|       onClick: (role) => openDialog(role), | 
|     }, | 
|     extraProps: { | 
|       hide: (row: API.GetCheckReceiveTaskQueryResultItem) => | 
|         row.checkReceiveStatus === EnumTaskCheckReceiveStatus.Completed || | 
|         state.checkReceiveMethod === EnumTaskCheckReceiveMethod.CheckIn, | 
|     }, | 
|   }, | 
|   { | 
|     data: { | 
|       enCode: 'detailBtn', | 
|       name: '详情', | 
|     }, | 
|     emits: { | 
|       onClick: (role) => openDialog(role, true), | 
|     }, | 
|   }, | 
| ]); | 
|   | 
| const route = useRoute(); | 
| const id = (route.params.id as string) ?? ''; | 
|   | 
| const { data: taskInfo } = useQuery({ | 
|   queryKey: ['taskServices/getTaskInfo', id], | 
|   queryFn: () => { | 
|     return taskServices.getTaskInfo( | 
|       { id: id }, | 
|       { | 
|         showLoading: false, | 
|       } | 
|     ); | 
|   }, | 
|   placeholderData: () => ({} as API.GetTaskInfoQueryResult), | 
| }); | 
|   | 
| const BaseState = { | 
|   loading: true, | 
|   checkReceiveMethod: '' as any as EnumTaskCheckReceiveMethod, | 
| }; | 
|   | 
| const state = reactive({ ...BaseState }); | 
|   | 
| const eventContext = useGlobalEventContext(); | 
|   | 
| eventContext.addEvent('checkReceiveTask', () => { | 
|   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.GetCheckReceiveTaskQuery = { | 
|         pageModel: { | 
|           rows: pageSize, | 
|           page: pageIndex, | 
|         }, | 
|         taskInfoId: id, | 
|       }; | 
|   | 
|       let res = await taskCheckReceiveServices.getCheckReceiveTask(params, { | 
|         showLoading: !state.loading, | 
|       }); | 
|       state.checkReceiveMethod = res.objectData?.checkReceiveMethod; | 
|       return res; | 
|     } catch (error) {} | 
|   }, | 
|   { | 
|     defaultExtraParams: { | 
|       keyword: '', | 
|     }, | 
|     columnsRenderProps: { | 
|       gender: { type: 'enum', valueEnum: EnumUserGenderTextForPerson }, | 
|       lastSubmitTime: { type: 'date' }, | 
|       checkReceiveStatus: { type: 'enum', valueEnum: EnumTaskCheckReceiveStatusText }, | 
|     }, | 
|   } | 
| ); | 
|   | 
| function openDialog(row: API.GetCheckReceiveTaskQueryResultItem, isDetail = false) { | 
|   if (state.checkReceiveMethod === EnumTaskCheckReceiveMethod.CheckIn) { | 
|     handleManualEdit({ | 
|       id: row.id, | 
|     }); | 
|   } else { | 
|     handleEdit({ | 
|       id: row.id, | 
|       isDetail, | 
|     }); | 
|   } | 
| } | 
|   | 
| const { dialogProps, handleEdit } = useFormDialog({ | 
|   defaultFormParams: { | 
|     id: '', | 
|     isDetail: false, | 
|   }, | 
| }); | 
|   | 
| const { dialogProps: dialogManualProps, handleEdit: handleManualEdit } = useFormDialog({ | 
|   defaultFormParams: { | 
|     id: '', | 
|   }, | 
| }); | 
| </script> |