| | |
| | | <template> |
| | | <LoadingLayout :loading="isLoading"> |
| | | <AppScrollContainer> |
| | | <ChunkCell title="结算单详情"> </ChunkCell> |
| | | <ChunkCell title="结算流程"> </ChunkCell> |
| | | <ChunkCell title="结算名单"> </ChunkCell> |
| | | <ChunkCell title="结算单详情"> |
| | | <template #titleRight> |
| | | <el-button type="primary" icon="Download" @click="handleDownloadTemplate()" |
| | | >电子回单下载</el-button |
| | | > |
| | | </template> |
| | | <ProForm :model="form" ref="formRef" label-width="120px" :is-read="true"> |
| | | <ProFormCol> |
| | | <ProFormColItem :span="8"> |
| | | <ProFormItemV2 label="所属任务:" prop="name"> |
| | | <ProFormText v-model="form.name"> </ProFormText> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="8"> |
| | | <ProFormItemV2 label="任务编号:" prop="name"> |
| | | <ProFormText v-model="form.name"> </ProFormText> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="8"></ProFormColItem> |
| | | </ProFormCol> |
| | | <ProFormCol> |
| | | <ProFormColItem :span="8"> |
| | | <ProFormItemV2 label="结算单名称:" prop="name"> |
| | | <ProFormText v-model="form.name"> </ProFormText> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="8"> |
| | | <ProFormItemV2 label="上传时间:" prop="name"> |
| | | <ProFormDatePicker |
| | | v-model="form.name" |
| | | type="date" |
| | | format="YYYY-MM-DD HH:mm" |
| | | ></ProFormDatePicker> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="8"></ProFormColItem> |
| | | </ProFormCol> |
| | | <ProFormCol> |
| | | <ProFormColItem :span="8"> |
| | | <ProFormItemV2 label="结算金额:" prop="money"> |
| | | <ProFormInputNumber v-model="form.money"> </ProFormInputNumber> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="8"> |
| | | <ProFormItemV2 label="实发金额:" prop="money"> |
| | | <ProFormInputNumber v-model="form.money"> </ProFormInputNumber> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="8"> |
| | | <ProFormItemV2 label="状态:" prop="status"> |
| | | <ProFormRadio v-model="form.status" :value-enum="[{ label: '是', value: 1 }]"> |
| | | </ProFormRadio> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | </ProFormCol> |
| | | </ProForm> |
| | | </ChunkCell> |
| | | <ChunkCell title="结算流程"> |
| | | <div class="step-wrapper"> |
| | | <el-steps :active="1" align-center finish-status="process"> |
| | | <el-step title="结算单上传" :icon="Edit"> |
| | | <template #description> |
| | | <div>创建人:{{ form.name }}</div> |
| | | <div>时间:{{ form.name }}</div> |
| | | <TextOverTooltip>备注:{{ form.name }}</TextOverTooltip> |
| | | </template> |
| | | </el-step> |
| | | <el-step title="结算付款" :icon="Upload"> |
| | | <template #description> |
| | | <div>创建人:{{ form.name }}</div> |
| | | <div>时间:{{ form.name }}</div> |
| | | <TextOverTooltip |
| | | >备注:{{ 'form.nameform.nameform.eform.nameform.nameform.name' }}</TextOverTooltip |
| | | > |
| | | </template> |
| | | </el-step> |
| | | </el-steps> |
| | | </div> |
| | | </ChunkCell> |
| | | <ChunkCell title="结算名单"> |
| | | <ProTableQueryFilterBar @on-reset="reset"> |
| | | <template #query> |
| | | <QueryFilterItem> |
| | | <SearchInput |
| | | v-model="extraParamState.searchWord" |
| | | style="width: 300px" |
| | | placeholder="人员姓名/身份证号/手机号" |
| | | @on-click-search="getList" |
| | | > |
| | | </SearchInput> |
| | | </QueryFilterItem> |
| | | </template> |
| | | </ProTableQueryFilterBar> |
| | | <ProTableV2 |
| | | v-bind="proTableProps" |
| | | :columns="SettlementListColumns" |
| | | :operationBtns="operationBtns" |
| | | :auto-height="false" |
| | | ref="proTable" |
| | | :tableProps="{ |
| | | maxHeight: '400px', |
| | | }" |
| | | > |
| | | </ProTableV2> |
| | | </ChunkCell> |
| | | </AppScrollContainer> |
| | | </LoadingLayout> |
| | | </template> |
| | | <script setup lang="ts"> |
| | | import { LoadingLayout, AppScrollContainer, ChunkCell } from '@bole-core/components'; |
| | | import { |
| | | LoadingLayout, |
| | | AppScrollContainer, |
| | | ChunkCell, |
| | | ProForm, |
| | | ProFormItemV2, |
| | | ProFormText, |
| | | ProFormCol, |
| | | ProFormColItem, |
| | | ProFormDatePicker, |
| | | ProFormInputNumber, |
| | | ProFormRadio, |
| | | useTable, |
| | | ProTableV2, |
| | | defineOperationBtns, |
| | | SearchInput, |
| | | QueryFilterItem, |
| | | ProTableQueryFilterBar, |
| | | TextOverTooltip, |
| | | } from '@bole-core/components'; |
| | | import { Edit, Upload } from '@element-plus/icons-vue'; |
| | | import { SettlementListColumns } from './constants'; |
| | | import { useQuery } from '@tanstack/vue-query'; |
| | | import { downloadFileByUrl } from '@bole-core/core'; |
| | | |
| | | defineOptions({ |
| | | name: 'ServiceChargeDetail', |
| | | }); |
| | | |
| | | const operationBtns = defineOperationBtns([ |
| | | { |
| | | data: { |
| | | enCode: 'downloadBtn', |
| | | name: '下载回单', |
| | | }, |
| | | }, |
| | | ]); |
| | | |
| | | const route = useRoute(); |
| | | const id = (route.params.id as string) ?? ''; |
| | | |
| | | const state = reactive({ |
| | | loading: true, |
| | | const form = reactive({ |
| | | name: '', |
| | | money: 0, |
| | | status: 1, |
| | | }); |
| | | |
| | | const { isLoading } = useQuery({ |
| | |
| | | } |
| | | ); |
| | | }, |
| | | placeholderData: () => ({} as API.GetFlexTaskDetailForBackOutput), |
| | | onSuccess(data) {}, |
| | | enabled: !!id, |
| | | }); |
| | | |
| | | onMounted(() => {}); |
| | | const { |
| | | getDataSource: getList, |
| | | proTableProps, |
| | | paginationState, |
| | | extraParamState, |
| | | reset, |
| | | } = useTable( |
| | | async ({ pageIndex, pageSize }, extraParamState) => { |
| | | try { |
| | | let params: API.GetFlexEnterpriseInput = { |
| | | pageModel: { |
| | | rows: pageSize, |
| | | page: pageIndex, |
| | | orderInput: extraParamState.orderInput, |
| | | }, |
| | | searchWord: extraParamState.searchWord, |
| | | }; |
| | | |
| | | let res = await flexEnterpriseServices.getFlexEnterpriseList(params); |
| | | return res; |
| | | } catch (error) { |
| | | console.log('error: ', error); |
| | | } |
| | | }, |
| | | { |
| | | defaultExtraParams: { |
| | | searchWord: '', |
| | | orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }], |
| | | }, |
| | | queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'], |
| | | columnsRenderProps: {}, |
| | | } |
| | | ); |
| | | |
| | | function handleDownloadTemplate() { |
| | | downloadFileByUrl('', '电子回单'); |
| | | } |
| | | |
| | | onMounted(() => { |
| | | getList(); |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @use '@/style/common.scss' as *; |
| | | |
| | | .step-wrapper { |
| | | margin: 0 auto; |
| | | padding: 24px 0; |
| | | } |
| | | </style> |
| | | <style lang="scss"> |
| | | .text-over-tooltip-content { |
| | | max-width: 600px; |
| | | word-break: break-all; |
| | | } |
| | | </style> |