Merge branch 'dev-1.2.0.1' of http://120.26.58.240:8888/r/flexJobAdminBClient into dev-1.2.0.1
| | |
| | | "EnumTaskReleaseStatusText": true, |
| | | "EnumTaskReleaseStatusTextForTip": true, |
| | | "EnumTaskSettlementAuditStatus": true, |
| | | "EnumTaskSettlementAuditStatusText": true, |
| | | "EnumTaskSettlementOrderStatus": true, |
| | | "EnumTaskSettlementOrderStatusText": true, |
| | | "EnumTaskSettlementStatus": true, |
| | |
| | | const EnumTaskReleaseStatusText: typeof import('./src/constants/task')['EnumTaskReleaseStatusText'] |
| | | const EnumTaskReleaseStatusTextForTip: typeof import('./src/constants/task')['EnumTaskReleaseStatusTextForTip'] |
| | | const EnumTaskSettlementAuditStatus: typeof import('./src/constants/apiEnum')['EnumTaskSettlementAuditStatus'] |
| | | const EnumTaskSettlementAuditStatusText: typeof import('./src/constants/task')['EnumTaskSettlementAuditStatusText'] |
| | | const EnumTaskSettlementOrderStatus: typeof import('./src/constants/apiEnum')['EnumTaskSettlementOrderStatus'] |
| | | const EnumTaskSettlementOrderStatusText: typeof import('./src/constants/task')['EnumTaskSettlementOrderStatusText'] |
| | | const EnumTaskSettlementStatus: typeof import('./src/constants/apiEnum')['EnumTaskSettlementStatus'] |
| | |
| | | readonly EnumTaskReleaseStatusText: UnwrapRef<typeof import('./src/constants/task')['EnumTaskReleaseStatusText']> |
| | | readonly EnumTaskReleaseStatusTextForTip: UnwrapRef<typeof import('./src/constants/task')['EnumTaskReleaseStatusTextForTip']> |
| | | readonly EnumTaskSettlementAuditStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskSettlementAuditStatus']> |
| | | readonly EnumTaskSettlementAuditStatusText: UnwrapRef<typeof import('./src/constants/task')['EnumTaskSettlementAuditStatusText']> |
| | | readonly EnumTaskSettlementOrderStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskSettlementOrderStatus']> |
| | | readonly EnumTaskSettlementOrderStatusText: UnwrapRef<typeof import('./src/constants/task')['EnumTaskSettlementOrderStatusText']> |
| | | readonly EnumTaskSettlementStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskSettlementStatus']> |
| | |
| | | [EnumTaskCheckReceiveMethod.CheckIn]: '人工签到', |
| | | [EnumTaskCheckReceiveMethod.Submit]: '自主提交', |
| | | }; |
| | | |
| | | export const EnumTaskSettlementAuditStatusText = { |
| | | [EnumTaskSettlementAuditStatus.Wait]: '待审核', |
| | | [EnumTaskSettlementAuditStatus.Pass]: '审核通过', |
| | | [EnumTaskSettlementAuditStatus.Fail]: '驳回', |
| | | }; |
| | |
| | | columnsRenderProps: { |
| | | checkReceiveStatus: { type: 'enum', valueEnum: EnumTaskCheckReceiveStatusText }, |
| | | billingMethod: { type: 'enum', valueEnum: EnumBillingMethodText }, |
| | | checkReceiveMethod: { type: 'enum', valueEnum: EnumTaskCheckReceiveMethodText }, |
| | | serviceFee: { |
| | | type: 'money', |
| | | formatter: (row) => { |
| | |
| | | |
| | | const BaseState = { |
| | | loading: true, |
| | | checkReceiveMethod: '' as any as EnumTaskCheckReceiveMethod, |
| | | }; |
| | | |
| | | const state = reactive({ ...BaseState }); |
| | |
| | | let res = await taskCheckReceiveServices.getCheckReceiveTask(params, { |
| | | showLoading: !state.loading, |
| | | }); |
| | | state.checkReceiveMethod = res.objectData?.checkReceiveMethod; |
| | | return res; |
| | | } catch (error) {} |
| | | }, |
| | |
| | | ); |
| | | |
| | | function openDialog(row: API.GetCheckReceiveTaskQueryResultItem, isDetail = false) { |
| | | if (state.checkReceiveMethod === EnumTaskCheckReceiveMethod.CheckIn) { |
| | | handleManualEdit({ |
| | | id: row.id, |
| | | }); |
| | | } |
| | | handleEdit({ |
| | | id: row.id, |
| | | isDetail, |
| | |
| | | const { dialogProps: dialogManualProps, handleEdit: handleManualEdit } = useFormDialog({ |
| | | defaultFormParams: { |
| | | id: '', |
| | | isDetail: false, |
| | | }, |
| | | }); |
| | | </script> |
| | |
| | | <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> |
| | |
| | | |
| | | 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; |
| | | }>(); |
| | |
| | | }, |
| | | { |
| | | id: '2', |
| | | enCode: 'createdTime', |
| | | enCode: 'checkInTime', |
| | | name: '签到时间', |
| | | }, |
| | | { |
| | | id: '3', |
| | | enCode: 'files', |
| | | enCode: 'checkOutTime', |
| | | 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, |
| | | }, |
| | | }, |
| | | ]); |
| | | |
| | |
| | | }, |
| | | 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, |
| | | }, |
| | | }, |
| | | } |
| | | ); |
| | |
| | | }, |
| | | { |
| | | id: '8', |
| | | enCode: 'checkReceiveStatus', |
| | | enCode: 'checkReceiveMethod', |
| | | name: '验收方式', |
| | | }, |
| | | { |
| | |
| | | } from '@bole-core/components'; |
| | | import { BalanceManageDetailColumns } from './constants'; |
| | | import { EnumWalletTransactionStatusText, EnumEnterpriseWalletAccessText } from '@/constants'; |
| | | import * as taskServices from '@/services/api/task'; |
| | | import * as enterpriseWalletServices from '@/services/api/enterpriseWallet'; |
| | | import * as userServices from '@/services/api/user'; |
| | | import { Message } from '@bole-core/core'; |
| | | import { downloadFileByUrl, format, setOSSLink } from '@/utils'; |
| | |
| | | return; |
| | | } |
| | | try { |
| | | let params: API.ExportTaskSettlementOrderRostersCommand = { |
| | | id: id, |
| | | let params: API.ExportEnterpriseBalanceDetailsCommand = { |
| | | enterpriseWalletId: id, |
| | | createdTimeStart: format(extraParamState.creationTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'), |
| | | createdTimeEnd: format(extraParamState.creationTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'), |
| | | }; |
| | | let res = await taskServices.exportTaskSettlementOrderRosters(params); |
| | | let res = await enterpriseWalletServices.exportEnterpriseBalanceDetails(params); |
| | | if (res) { |
| | | downloadFileByUrl(setOSSLink(res)); |
| | | } |
| | |
| | | actualSettlementAmount: null as number, |
| | | receiveAccount: '', |
| | | bank: '', |
| | | totalWorkHours: null as number, |
| | | settlementAccess: '' as any as EnumEnterpriseWalletAccess, |
| | | // bankBranch: '', |
| | | }, |
| | | }); |
| | |
| | | actualSettlementAmount: row?.actualSettlementAmount ?? null, |
| | | receiveAccount: row?.receiveAccount ?? '', |
| | | bank: row?.bank ?? '', |
| | | totalWorkHours: null as number, |
| | | settlementAccess: Number(form.settlementAccess), |
| | | // bankBranch: row?.bankBranch ?? '', |
| | | }); |
| | | } |
| | |
| | | actualSettlementAmount: editForm.actualSettlementAmount, |
| | | receiveAccount: editForm.receiveAccount, |
| | | bank: editForm.bank, |
| | | totalWorkHours: editForm.totalWorkHours, |
| | | // bankBranch: editForm.bankBranch, |
| | | }; |
| | | let res = await taskServices.editTaskSettlementOrderRoster(params); |
| | |
| | | <!-- <SettleDetailDialog v-bind="dialogSettleProps" /> --> |
| | | <RechargeEnterpriseWalletDialog v-bind="dialogRechargeProps" /> |
| | | <SettlMethodDialog v-bind="dialogSettlMethodProps" /> |
| | | <EditSettleInfoDialog v-bind="dialogSettleInfoProps" /> |
| | | </LoadingLayout> |
| | | </template> |
| | | |
| | |
| | | emits: { |
| | | onClick: (role: API.GetSettlementTasksQueryResultItem) => goDetail(role.id), |
| | | }, |
| | | // extraProps: { |
| | | // hide: (role: API.GetSettlementTasksQueryResultItem) => |
| | | // role.settlementOrderStatus === EnumTaskSettlementOrderStatus.Wait, |
| | | // }, |
| | | extraProps: { |
| | | hide: (role: API.GetSettlementTasksQueryResultItem) => |
| | | role.auditStatus !== EnumTaskSettlementAuditStatus.Wait, |
| | | }, |
| | | }, |
| | | { |
| | | data: { |
| | |
| | | settlementOrderStatus: { type: 'enum', valueEnum: EnumTaskSettlementOrderStatusText }, |
| | | settlementStatus: { type: 'enum', valueEnum: EnumTaskSettlementStatusText }, |
| | | checkReceiveStatus: { type: 'enum', valueEnum: EnumTaskCheckReceiveStatusText }, |
| | | auditStatus: { type: 'enum', valueEnum: EnumTaskSettlementAuditStatusText }, |
| | | actualSettlementAmount: { type: 'money' }, |
| | | settlementAmount: { type: 'money' }, |
| | | settlementTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' }, |
| | |
| | | '结算单模板' |
| | | ); |
| | | } |
| | | |
| | | const { |
| | | dialogProps: dialogSettleInfoProps, |
| | | handleEdit: handleSettleInfoEdit, |
| | | editForm: settleInfoEditForm, |
| | | } = useFormDialog({ |
| | | onConfirm: handleSettleInfo, |
| | | defaultFormParams: { |
| | | id: '', |
| | | actualSettlementAmount: 0, |
| | | }, |
| | | }); |
| | | |
| | | async function handleSettleInfo() {} |
| | | </script> |
| | |
| | | :width="700" |
| | | > |
| | | <ProForm :model="form" ref="dialogForm" label-width="120px"> |
| | | <ProFormItemV2 label="所属银行:" prop="bank" :check-rules="[{ message: '请输入所属银行' }]"> |
| | | <ProFormText placeholder="请输入所属银行" v-model.trim="form.bank"></ProFormText> |
| | | </ProFormItemV2> |
| | | <!-- <ProFormItemV2 |
| | | <template v-if="form.settlementAccess !== EnumEnterpriseWalletAccess.WeChatPay"> |
| | | <ProFormItemV2 |
| | | label="所属银行:" |
| | | prop="bank" |
| | | :check-rules="[{ message: '请输入所属银行' }]" |
| | | > |
| | | <ProFormText placeholder="请输入所属银行" v-model.trim="form.bank"></ProFormText> |
| | | </ProFormItemV2> |
| | | <!-- <ProFormItemV2 |
| | | label="开户支行:" |
| | | prop="bankBranch" |
| | | :check-rules="[{ message: '请输入开户支行' }]" |
| | | > |
| | | <ProFormText placeholder="请输入开户支行" v-model.trim="form.bankBranch"></ProFormText> |
| | | </ProFormItemV2> --> |
| | | <ProFormItemV2 |
| | | label="收款账户:" |
| | | prop="receiveAccount" |
| | | :check-rules="[{ message: '请输入收款账户' }]" |
| | | > |
| | | <ProFormText |
| | | placeholder="请输入收款账户" |
| | | v-model.trim="form.receiveAccount" |
| | | ></ProFormText> |
| | | </ProFormItemV2> |
| | | </template> |
| | | |
| | | <ProFormItemV2 |
| | | label="收款账户:" |
| | | prop="receiveAccount" |
| | | :check-rules="[{ message: '请输入收款账户' }]" |
| | | label="调整工时:" |
| | | prop="totalWorkHours" |
| | | :check-rules="[{ message: '请输入调整工时' }]" |
| | | > |
| | | <ProFormText placeholder="请输入收款账户" v-model.trim="form.receiveAccount"></ProFormText> |
| | | <ProFormInputNumber |
| | | placeholder="请输入调整工时" |
| | | v-model.trim="form.totalWorkHours" |
| | | :controls="false" |
| | | :min="0" |
| | | ></ProFormInputNumber> |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="结算金额:" |
| | |
| | | ProFormText, |
| | | UploadUserFile, |
| | | } from '@bole-core/components'; |
| | | import { EnumEnterpriseWalletAccess } from '@/constants'; |
| | | |
| | | defineOptions({ |
| | | name: 'EditAccountInfoDialog', |
| | |
| | | title?: string; |
| | | id?: string; |
| | | settlementAmount: number; |
| | | totalWorkHours: number; |
| | | actualSettlementAmount: number; |
| | | receiveAccount: string; |
| | | bank: string; |
| | | bankBranch?: string; |
| | | settlementAccess: EnumEnterpriseWalletAccess; |
| | | }; |
| | | |
| | | const visible = defineModel({ type: Boolean }); |
| | |
| | | }, |
| | | { |
| | | id: '9', |
| | | enCode: 'settlementAmount', |
| | | enCode: 'auditStatus', |
| | | name: '审核状态', |
| | | }, |
| | | { |
| | |
| | | { |
| | | id: '7', |
| | | enCode: 'receiveAccount', |
| | | name: '累计工(小时)', |
| | | name: '累计工时(小时)', |
| | | }, |
| | | { |
| | | id: '8', |