|  |  |  | 
|---|
|  |  |  | <UploadInsurePersonDialog v-bind="dialogProps" /> | 
|---|
|  |  |  | <UploadStampFileDialog v-bind="dialogStampFileProps" /> | 
|---|
|  |  |  | <InsureInstructionsDialog v-bind="dialogInstructionsProps" /> | 
|---|
|  |  |  | <InsureLineModeSelectDialog v-bind="dialogLineModeSelectProps" /> | 
|---|
|  |  |  | <DisbursementDialog v-bind="dialogDisbursementProps" /> | 
|---|
|  |  |  | </LoadingLayout> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | useDialog, | 
|---|
|  |  |  | } from '@bole-core/components'; | 
|---|
|  |  |  | import * as insuranceOrderServices from '@/services/api/InsuranceOrder'; | 
|---|
|  |  |  | import * as parkBountyApplyServices from '@/services/api/ParkBountyApply'; | 
|---|
|  |  |  | import { Message, OrderInputType, downloadFileByUrl } from '@bole-core/core'; | 
|---|
|  |  |  | import { columns } from './constants'; | 
|---|
|  |  |  | import { columns, InsureLineMode } from './constants'; | 
|---|
|  |  |  | import UploadInsurePersonDialog from './components/UploadInsurePersonDialog.vue'; | 
|---|
|  |  |  | import UploadStampFileDialog from './components/UploadStampFileDialog.vue'; | 
|---|
|  |  |  | import { | 
|---|
|  |  |  | 
|---|
|  |  |  | import dayjs from 'dayjs'; | 
|---|
|  |  |  | import _ from 'lodash'; | 
|---|
|  |  |  | import InsureInstructionsDialog from './components/InsureInstructionsDialog.vue'; | 
|---|
|  |  |  | import InsureLineModeSelectDialog from './components/InsureLineModeSelectDialog.vue'; | 
|---|
|  |  |  | import DisbursementDialog from './components/DisbursementDialog.vue'; | 
|---|
|  |  |  | import { useInsureProductSchemeAllList, useUserInsureProductSetting } from '@/hooks'; | 
|---|
|  |  |  | // import { Recorder } from '@/utils/record'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | onClick: (role) => handleBatch(role), | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | extraProps: { | 
|---|
|  |  |  | hide: (row: API.GetInsurancePageOutput) => | 
|---|
|  |  |  | row.productOnline || row.status !== InsurancePolicyStatusEnum.Effecting, | 
|---|
|  |  |  | hide: (row: API.GetInsurancePageOutput) => row.status !== InsurancePolicyStatusEnum.Effecting, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | extraProps: { | 
|---|
|  |  |  | hide: (row: API.GetInsurancePageOutput) => | 
|---|
|  |  |  | row.auditStatus != InsurancePolicyAuditStatusEnum.WaitAdd, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | data: { | 
|---|
|  |  |  | enCode: 'applyTradeBySelfBtn', | 
|---|
|  |  |  | name: '出账申请', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | emits: { | 
|---|
|  |  |  | onClick: (role) => handleParkBountyApplyTradeBySelf(role), | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | extraProps: { | 
|---|
|  |  |  | hide: (row: API.GetInsurancePageOutput) => row.productOnline, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | ]).filter(Boolean); | 
|---|
|  |  |  | 
|---|
|  |  |  | productSchemeIdNumber: '', | 
|---|
|  |  |  | effectStartTime: dayjs().add(1, 'day').format('YYYY-MM-DD'), | 
|---|
|  |  |  | effectEndTime: '', | 
|---|
|  |  |  | isOnLineInsurance: false, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | closeAfterConfirm: false, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | 
|---|
|  |  |  | } catch (error) {} | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const { dialogProps: dialogInstructionsProps, dialogState: dialogInstructionsState } = useDialog({ | 
|---|
|  |  |  | onConfirm: handleUpload, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | const { dialogProps: dialogLineModeSelectProps, dialogState: dialogLineModeSelectState } = | 
|---|
|  |  |  | useDialog({ | 
|---|
|  |  |  | onConfirm: handleLineModeSelect, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function handleOpenInstructions() { | 
|---|
|  |  |  | if (isSjbAccount.value) { | 
|---|
|  |  |  | async function handleLineModeSelect(mode: InsureLineMode) { | 
|---|
|  |  |  | if (mode === InsureLineMode.OnLine) { | 
|---|
|  |  |  | dialogInstructionsState.dialogVisible = true; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | handleUpload(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | async function handleUpload() { | 
|---|
|  |  |  | const { dialogProps: dialogInstructionsProps, dialogState: dialogInstructionsState } = useDialog({ | 
|---|
|  |  |  | onConfirm: () => { | 
|---|
|  |  |  | return handleUpload(true); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function handleOpenInstructions() { | 
|---|
|  |  |  | if (isSjbAccount.value) { | 
|---|
|  |  |  | // dialogInstructionsState.dialogVisible = true; | 
|---|
|  |  |  | dialogLineModeSelectState.dialogVisible = true; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | handleUpload(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | async function handleUpload(isOnLineInsurance = false) { | 
|---|
|  |  |  | handleAdd({ | 
|---|
|  |  |  | serialNum: `${dayjs().format('YYYYMMDD')}${_.random(0, 9999).toString().padStart(4, '0')}`, | 
|---|
|  |  |  | url: [] as UploadUserFile[], | 
|---|
|  |  |  | isOnLineInsurance, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (error) {} | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function handleParkBountyApplyTradeBySelf(row: API.GetInsurancePageOutput) { | 
|---|
|  |  |  | handleDisbursementAdd({ | 
|---|
|  |  |  | remianAmount: row.remianAmount, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const { | 
|---|
|  |  |  | dialogProps: dialogDisbursementProps, | 
|---|
|  |  |  | handleAdd: handleDisbursementAdd, | 
|---|
|  |  |  | editForm: editDisbursementForm, | 
|---|
|  |  |  | } = useFormDialog({ | 
|---|
|  |  |  | onConfirm: parkBountyApplyTradeBySelf, | 
|---|
|  |  |  | defaultFormParams: { | 
|---|
|  |  |  | payRemark: '', | 
|---|
|  |  |  | tradeAmount: 0, | 
|---|
|  |  |  | remianAmount: 0, | 
|---|
|  |  |  | payFileUrl: [] as UploadUserFile[], | 
|---|
|  |  |  |  | 
|---|
|  |  |  | incomeCompanyName: '', | 
|---|
|  |  |  | insureBillNo: '', | 
|---|
|  |  |  | incomeBankAccount: '', | 
|---|
|  |  |  | incomeBankCardNumber: '', | 
|---|
|  |  |  | incomeBankName: '', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | async function parkBountyApplyTradeBySelf() { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | let params: API.CreateParkBountyTradeInput = { | 
|---|
|  |  |  | tradeAmount: editDisbursementForm.tradeAmount, | 
|---|
|  |  |  | payFileUrl: editDisbursementForm.payFileUrl.map((item) => item.url).join('|'), | 
|---|
|  |  |  | payRemark: editDisbursementForm.payRemark, | 
|---|
|  |  |  | incomeCompanyName: editDisbursementForm.incomeCompanyName, | 
|---|
|  |  |  | insureBillNo: editDisbursementForm.insureBillNo, | 
|---|
|  |  |  | incomeBankAccount: editDisbursementForm.incomeBankAccount, | 
|---|
|  |  |  | incomeBankCardNumber: editDisbursementForm.incomeBankCardNumber, | 
|---|
|  |  |  | incomeBankName: editDisbursementForm.incomeBankName, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | let res = await parkBountyApplyServices.parkBountyApplyTradeBySelf(params); | 
|---|
|  |  |  | if (res) { | 
|---|
|  |  |  | Message.successMessage('操作成功'); | 
|---|
|  |  |  | getList(paginationState.pageIndex); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (error) {} | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </script> | 
|---|