| | |
| | | <AppContainer> |
| | | <ProTableQueryFilterBar @on-reset="reset"> |
| | | <template #query> |
| | | <QueryFilterItem tip-content="结算单状态"> |
| | | <QueryFilterItem tip-content="验收状态"> |
| | | <FieldRadio |
| | | v-model="extraParamState.settlementOrderStatus" |
| | | :value-enum="EnumTaskSettlementOrderStatusText" |
| | | v-model="extraParamState.checkReceiveStatus" |
| | | :value-enum="EnumTaskCheckReceiveStatusTextForFilter" |
| | | buttonStyle |
| | | showAllBtn |
| | | @change="getList()" |
| | |
| | | @change="getList()" |
| | | /> |
| | | </QueryFilterItem> |
| | | <!-- <QueryFilterItem> |
| | | <QueryFilterItem> |
| | | <FieldDatePicker |
| | | v-model="extraParamState.time" |
| | | type="daterange" |
| | |
| | | end-placeholder="截止日期" |
| | | clearable |
| | | @change="getList()" |
| | | tooltipContent="创建时间" |
| | | tooltipContent="结算时间" |
| | | ></FieldDatePicker> |
| | | </QueryFilterItem> --> |
| | | </QueryFilterItem> |
| | | <QueryFilterItem> |
| | | <SearchInput |
| | | v-model="extraParamState.keywords" |
| | | style="width: 250px" |
| | | placeholder="任务名称" |
| | | @on-click-search="getList" |
| | | @on-click-search="getList()" |
| | | @keyup.enter="getList()" |
| | | > |
| | | </SearchInput> |
| | | </QueryFilterItem> |
| | | </template> |
| | | <template #btn> |
| | | <el-button type="primary" link @click="handleDownloadTemplate()">结算单模板</el-button> |
| | | <el-button type="primary" @click="handleAdd()">上传结算单</el-button> |
| | | <!-- <el-button type="primary" link @click="handleDownloadTemplate()">结算单模板</el-button> --> |
| | | <!-- <el-button type="primary" @click="handleAdd()">上传结算单</el-button> --> |
| | | <!-- <el-button type="primary" @click="handleDownloadTemplate()">导出</el-button> --> |
| | | </template> |
| | | </ProTableQueryFilterBar> |
| | |
| | | </ProTableV2> |
| | | </AppContainer> |
| | | <UploadStatementDialog v-bind="dialogProps" /> |
| | | <SettleDetailDialog v-bind="dialogSettleProps" /> |
| | | <!-- <SettleDetailDialog v-bind="dialogSettleProps" /> --> |
| | | <RechargeEnterpriseWalletDialog v-bind="dialogRechargeProps" /> |
| | | <SettlMethodDialog v-bind="dialogSettlMethodProps" /> |
| | | </LoadingLayout> |
| | | </template> |
| | | |
| | |
| | | EnumTaskSettlementOrderStatusText, |
| | | EnumTaskSettlementOrderStatus, |
| | | EnumTaskSettlementStatus, |
| | | EnumTaskCheckReceiveStatusText, |
| | | EnumTaskCheckReceiveStatusTextForFilter, |
| | | EnumTaskCheckReceiveStatus, |
| | | } from '@/constants'; |
| | | import { downloadFileByUrl, setOssFileName } from '@/utils'; |
| | | import { downloadFileByUrl, format, setOssFileName } from '@/utils'; |
| | | import * as taskServices from '@/services/api/task'; |
| | | import { ModelValueType } from 'element-plus'; |
| | | import UploadStatementDialog from './components/UploadStatementDialog.vue'; |
| | | import SettleDetailDialog from './components/SettleDetailDialog.vue'; |
| | | import SettlMethodDialog from './components/SettlMethodDialog.vue'; |
| | | import RechargeEnterpriseWalletDialog from './components/RechargeEnterpriseWalletDialog.vue'; |
| | | import { Message } from '@bole-core/core'; |
| | | |
| | | defineOptions({ |
| | |
| | | name: '结算', |
| | | }, |
| | | emits: { |
| | | onClick: (role: API.GetSettlementTasksQueryResultItem) => goDetail(role, 'settlement'), |
| | | onClick: (role: API.GetSettlementTasksQueryResultItem) => openSettleMethodDialog(role), |
| | | }, |
| | | extraProps: { |
| | | hide: (role: API.GetSettlementTasksQueryResultItem) => |
| | | !( |
| | | role.settlementOrderStatus === EnumTaskSettlementOrderStatus.Completed && |
| | | role.settlementStatus === EnumTaskSettlementStatus.Wait |
| | | role.settlementStatus === EnumTaskSettlementStatus.Wait && |
| | | role.checkReceiveStatus === EnumTaskCheckReceiveStatus.Completed |
| | | ), |
| | | }, |
| | | }, |
| | |
| | | }, |
| | | extraProps: { |
| | | hide: (role: API.GetSettlementTasksQueryResultItem) => |
| | | role.settlementStatus !== EnumTaskSettlementStatus.InProcess, |
| | | !( |
| | | role.settlementStatus === EnumTaskSettlementStatus.InProcess && |
| | | role.checkReceiveStatus === EnumTaskCheckReceiveStatus.Completed |
| | | ), |
| | | }, |
| | | }, |
| | | { |
| | |
| | | name: '详情', |
| | | }, |
| | | emits: { |
| | | onClick: (role: API.GetSettlementTasksQueryResultItem) => goDetail(role), |
| | | onClick: (role: API.GetSettlementTasksQueryResultItem) => goDetail(role.id), |
| | | }, |
| | | extraProps: { |
| | | hide: (role: API.GetSettlementTasksQueryResultItem) => |
| | | role.settlementOrderStatus === EnumTaskSettlementOrderStatus.Wait, |
| | | }, |
| | | // extraProps: { |
| | | // hide: (role: API.GetSettlementTasksQueryResultItem) => |
| | | // role.settlementOrderStatus === EnumTaskSettlementOrderStatus.Wait, |
| | | // }, |
| | | }, |
| | | { |
| | | data: { |
| | |
| | | ]); |
| | | |
| | | const router = useRouter(); |
| | | |
| | | const { userDetail } = useUser(); |
| | | |
| | | const eventContext = useGlobalEventContext(); |
| | | |
| | |
| | | orderInput: extraParamState.orderInput, |
| | | }, |
| | | keywords: extraParamState.keywords, |
| | | settlementOrderStatus: extraParamState.settlementOrderStatus, |
| | | checkReceiveStatus: extraParamState.checkReceiveStatus, |
| | | settlementStatus: extraParamState.settlementStatus, |
| | | settlementTimeBegin: format(extraParamState.time?.[0] ?? '', 'YYYY-MM-DD 00:00:00'), |
| | | settlementTimeEnd: format(extraParamState.time?.[1] ?? '', 'YYYY-MM-DD 23:59:59'), |
| | | }; |
| | | |
| | | let res = await taskServices.getSettlementTasks(params, { |
| | |
| | | defaultExtraParams: { |
| | | keywords: '', |
| | | settlementOrderStatus: '' as any as EnumTaskSettlementOrderStatus, |
| | | checkReceiveStatus: '' as any as EnumTaskCheckReceiveStatus, |
| | | settlementStatus: '' as any as EnumTaskSettlementStatus, |
| | | time: [] as unknown as ModelValueType, |
| | | orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }], |
| | |
| | | columnsRenderProps: { |
| | | settlementOrderStatus: { type: 'enum', valueEnum: EnumTaskSettlementOrderStatusText }, |
| | | settlementStatus: { type: 'enum', valueEnum: EnumTaskSettlementStatusText }, |
| | | checkReceiveStatus: { type: 'enum', valueEnum: EnumTaskCheckReceiveStatusText }, |
| | | actualSettlementAmount: { type: 'money' }, |
| | | settlementAmount: { type: 'money' }, |
| | | settlementTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' }, |
| | | createdTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' }, |
| | | settlementOrderTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' }, |
| | | settlementOrderName: { |
| | | formatter: (row: API.GetSettlementTasksQueryResultItem) => |
| | |
| | | }); |
| | | |
| | | async function handleAddOrEdit() { |
| | | goSettlementDetail(editForm.id, editForm.settlementUrl[0]?.path); |
| | | try { |
| | | let params: API.ImportTaskSettlementOrderRostersCommand = { |
| | | id: editForm.id, |
| | | url: editForm.settlementUrl[0]?.path, |
| | | }; |
| | | let res = await taskServices.importTaskSettlementOrderRosters(params); |
| | | if (res) { |
| | | goSettlementDetail(editForm.id, editForm.settlementUrl[0]?.path); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | |
| | | const { |
| | |
| | | let params: API.SureTaskSettlementCommand = { |
| | | taskInfoId: settleEditForm.id, |
| | | }; |
| | | let res = await taskServices.sureTaskSettlement(params); |
| | | let res = await taskServices.sureTaskSettlement(params, { |
| | | skipErrorHandler: true, |
| | | }); |
| | | if (res) { |
| | | Message.successMessage('操作成功'); |
| | | getList(paginationState.pageIndex); |
| | | } |
| | | } catch (error) {} |
| | | } catch (error) { |
| | | if (error?.info?.errorCode == 's510') { |
| | | handleRechargeAdd(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | const { |
| | | dialogProps: dialogRechargeProps, |
| | | handleAdd: handleRechargeAdd, |
| | | editForm: rechargeEditForm, |
| | | } = useFormDialog({ |
| | | defaultFormParams: { |
| | | access: EnumEnterpriseWalletAccess.Alipay, |
| | | amount: null as number, |
| | | remark: '', |
| | | }, |
| | | }); |
| | | |
| | | function openSettleDialog(row: API.GetSettlementTasksQueryResultItem) { |
| | | handleSettleEdit({ |
| | |
| | | params: { |
| | | id: id, |
| | | }, |
| | | query: { |
| | | url: url ? url : '', |
| | | }, |
| | | }); |
| | | editForm.settlementUrl = [] as UploadUserFile[]; |
| | | } |
| | | |
| | | function goDetail(row: API.GetSettlementTasksQueryResultItem, settlement?: string) { |
| | | const { |
| | | dialogProps: dialogSettlMethodProps, |
| | | handleAdd: handleSettlMethodAdd, |
| | | editForm: settlMethodEditForm, |
| | | } = useFormDialog({ |
| | | onConfirm: handleSettlMethod, |
| | | defaultFormParams: { |
| | | id: '', |
| | | settlementAccess: '' as any as EnumEnterpriseWalletAccess, |
| | | }, |
| | | }); |
| | | |
| | | function openSettleMethodDialog(row: API.GetSettlementTasksQueryResultItem) { |
| | | handleSettlMethodAdd({ |
| | | id: row.id, |
| | | settlementAccess: '' as any as EnumEnterpriseWalletAccess, |
| | | }); |
| | | } |
| | | |
| | | async function handleSettlMethod() { |
| | | goDetail(settlMethodEditForm.id, 'settlement', settlMethodEditForm.settlementAccess); |
| | | } |
| | | |
| | | function goDetail(id: string, settlement?: string, settlementAccess?: EnumEnterpriseWalletAccess) { |
| | | router.push({ |
| | | name: 'ServiceChargeDetail', |
| | | params: { |
| | | id: row?.id ?? '', |
| | | id: id ?? '', |
| | | }, |
| | | query: { |
| | | settlement: settlement ? settlement : '', |
| | | settlementAccess: settlementAccess ? settlementAccess : '', |
| | | }, |
| | | }); |
| | | } |