| | |
| | | lockfileVersion: '6.0' |
| | | |
| | | settings: |
| | | autoInstallPeers: true |
| | | excludeLinksFromLockfile: false |
| | | |
| | | overrides: |
| | | vue: 3.5.11 |
| | | |
| | |
| | | version: 1.0.3(@bole-12333/chat-kit@1.0.1)(@tiptap/core@2.1.13)(@tiptap/extension-document@2.1.13)(@tiptap/extension-image@2.1.13)(@tiptap/extension-mention@2.1.13)(@tiptap/extension-paragraph@2.1.13)(@tiptap/extension-placeholder@2.1.13)(@tiptap/extension-text@2.1.13)(@tiptap/pm@2.1.13)(@tiptap/suggestion@2.1.13)(dayjs@1.11.6)(vue@3.5.11) |
| | | '@bole-core/components': |
| | | specifier: latest |
| | | version: 1.3.2(@bole-core/core@1.0.2)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@tanstack/vue-query@4.37.1)(@videojs-player/vue@1.0.0)(@vueuse/core@11.1.0)(@vueuse/shared@11.1.0)(dayjs@1.11.6)(element-plus@2.9.1)(lodash@4.17.21)(mitt@3.0.0)(senin-help@1.0.5)(senin-vue@1.0.4)(video.js@7.20.3)(vue-component-type-helpers@2.1.6)(vue@3.5.11) |
| | | version: link:../BoleWebCore/packages/components |
| | | '@bole-core/core': |
| | | specifier: latest |
| | | version: 1.0.2(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.9.1)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.1)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5) |
| | |
| | | '@tiptap/suggestion': 2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13) |
| | | dayjs: 1.11.6 |
| | | vue: 3.5.11(typescript@4.8.4) |
| | | dev: false |
| | | |
| | | /@bole-core/components@1.3.2(@bole-core/core@1.0.2)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@tanstack/vue-query@4.37.1)(@videojs-player/vue@1.0.0)(@vueuse/core@11.1.0)(@vueuse/shared@11.1.0)(dayjs@1.11.6)(element-plus@2.9.1)(lodash@4.17.21)(mitt@3.0.0)(senin-help@1.0.5)(senin-vue@1.0.4)(video.js@7.20.3)(vue-component-type-helpers@2.1.6)(vue@3.5.11): |
| | | resolution: {integrity: sha512-sMCgoaKtJi3nPP3MrMx5cs0IjI0Tbes3YJF1AHN3TItR549aYc+vb+mkU34MjWh7EzqTE40htPxJueAGT6tMWg==} |
| | | peerDependencies: |
| | | '@bole-core/core': '*' |
| | | '@bole-core/sass-utils': '*' |
| | | '@element-plus/icons-vue': '*' |
| | | '@tanstack/vue-query': '*' |
| | | '@videojs-player/vue': '*' |
| | | '@vueuse/core': '*' |
| | | '@vueuse/shared': '*' |
| | | dayjs: ^1.11.7 |
| | | element-plus: '*' |
| | | lodash: '*' |
| | | mitt: '*' |
| | | senin-help: '*' |
| | | senin-vue: '*' |
| | | video.js: '*' |
| | | vue: '*' |
| | | vue-component-type-helpers: ^2.1.6 |
| | | dependencies: |
| | | '@bole-core/core': 1.0.2(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.9.1)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.1)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5) |
| | | '@bole-core/sass-utils': 0.0.1(element-plus@2.9.1) |
| | | '@element-plus/icons-vue': 2.3.1(vue@3.5.11) |
| | | '@tanstack/vue-query': 4.37.1(vue@3.5.11) |
| | | '@videojs-player/vue': 1.0.0(@types/video.js@7.3.49)(video.js@7.20.3)(vue@3.5.11) |
| | | '@vueuse/core': 11.1.0(vue@3.5.11) |
| | | '@vueuse/shared': 11.1.0(vue@3.5.11) |
| | | dayjs: 1.11.6 |
| | | element-plus: 2.9.1(vue@3.5.11) |
| | | lodash: 4.17.21 |
| | | mitt: 3.0.0 |
| | | senin-help: 1.0.5(@tanstack/vue-query@4.37.1)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.9.1)(file-saver@2.0.5)(lodash@4.17.21)(semver@7.6.3)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5) |
| | | senin-vue: 1.0.4(@tanstack/vue-query@4.37.1)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.9.1)(file-saver@2.0.5)(lodash@4.17.21)(mitt@3.0.0)(semver@7.6.3)(senin-help@1.0.5)(vue@3.5.11) |
| | | video.js: 7.20.3 |
| | | vue: 3.5.11(typescript@4.8.4) |
| | | vue-component-type-helpers: 2.1.6 |
| | | dev: false |
| | | |
| | | /@bole-core/core@1.0.2(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.9.1)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.1)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5): |
| | |
| | | /zwitch@1.0.5: |
| | | resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} |
| | | dev: false |
| | | |
| | | settings: |
| | | autoInstallPeers: true |
| | | excludeLinksFromLockfile: false |
| | |
| | | export * from './insuranceClaim'; |
| | | export * from './app'; |
| | | export * from './temp'; |
| | | export * from './insureBatchBill'; |
New file |
| | |
| | | export enum BatchBillCheckStatus { |
| | | /**批单待审核 */ |
| | | WaitCheck = 1, |
| | | /**批单审核中 */ |
| | | Checking = 2, |
| | | /**已生效 */ |
| | | InValidate = 10, |
| | | /**批单待支付 */ |
| | | WaitPay = 15, |
| | | /**超期未支付 */ |
| | | ExpirePay = 20, |
| | | /**支付成功 */ |
| | | PaySuccess = 30, |
| | | /**审核不通过 */ |
| | | CheckTurnDown = -1, |
| | | /**待退费 */ |
| | | WaitForRefund = -10, |
| | | /**已退费 */ |
| | | HasRefund = -11, |
| | | /**已撤回 */ |
| | | HasReverse = -20, |
| | | /**已删除 */ |
| | | HasDeleted = -30, |
| | | /**下发修改 */ |
| | | WaitForModify = -40, |
| | | } |
| | | |
| | | export const BatchBillCheckStatusText = { |
| | | [BatchBillCheckStatus.WaitCheck]: '待审核', |
| | | [BatchBillCheckStatus.Checking]: '审核中', |
| | | [BatchBillCheckStatus.InValidate]: '已生效', |
| | | [BatchBillCheckStatus.WaitPay]: '待支付', |
| | | [BatchBillCheckStatus.ExpirePay]: '超期未支付', |
| | | // [BatchBillCheckStatus.PaySuccess]: '支付成功', |
| | | [BatchBillCheckStatus.CheckTurnDown]: '不通过', |
| | | [BatchBillCheckStatus.WaitForRefund]: '待退费', |
| | | [BatchBillCheckStatus.HasRefund]: '已退费', |
| | | [BatchBillCheckStatus.HasReverse]: '已撤回', |
| | | [BatchBillCheckStatus.HasDeleted]: '已删除', |
| | | [BatchBillCheckStatus.WaitForModify]: '下发修改', |
| | | }; |
| | | |
| | | export enum BatchChangeTypeEnum { |
| | | /**批增 */ |
| | | Add = 10, |
| | | /**批减 */ |
| | | Delete = 20, |
| | | /**替换 */ |
| | | Update = 30, |
| | | /**加减人 */ |
| | | AddAndSub = 40, |
| | | } |
| | | |
| | | export const BatchChangeTypeEnumText = { |
| | | [BatchChangeTypeEnum.Add]: '批增', |
| | | [BatchChangeTypeEnum.Delete]: '批减', |
| | | [BatchChangeTypeEnum.Update]: '替换', |
| | | [BatchChangeTypeEnum.AddAndSub]: '加减人', |
| | | }; |
| | |
| | | ); |
| | | } |
| | | |
| | | /** 客户端-批改详情 GET /api/InsureBatchBill/GetInsureBatchDetail */ |
| | | export async function getInsureBatchDetail( |
| | | // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) |
| | | params: API.APIgetInsureBatchDetailParams, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<API.InsureBatchDetailDto>('/api/InsureBatchBill/GetInsureBatchDetail', { |
| | | method: 'GET', |
| | | params: { |
| | | ...params, |
| | | }, |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | | |
| | | /** 客户端-批单增员减员保单数据导入 POST /api/InsureBatchBill/ImportBatchAddOrSubOrderData */ |
| | | export async function importBatchAddOrSubOrderData( |
| | | body: API.ImportBatchAddOrSubOrderInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<any>('/api/InsureBatchBill/ImportBatchAddOrSubOrderData', { |
| | | return request<API.CheckImportBatchAddOrSubOrderDataOutput>( |
| | | '/api/InsureBatchBill/ImportBatchAddOrSubOrderData', |
| | | { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | } |
| | | ); |
| | | } |
| | | |
| | | /** 客户端-批单替换数据导入 POST /api/InsureBatchBill/ImportBatchUpdateOrderData */ |
| | | export async function importBatchUpdateOrderData( |
| | | body: API.ImportBatchAddOrSubOrderInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<API.CheckImportBatchUpdateOrderDataOutput>( |
| | | '/api/InsureBatchBill/ImportBatchUpdateOrderData', |
| | | { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | } |
| | | ); |
| | | } |
| | | |
| | | /** 客户端-检查批单增员减员保单数据导入 POST /api/InsureBatchBill/ImportCheckBatchAddOrSubOrderData */ |
| | | export async function importCheckBatchAddOrSubOrderData( |
| | | body: API.ImportBatchAddOrSubOrderInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<any>('/api/InsureBatchBill/ImportCheckBatchAddOrSubOrderData', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 客户端-批单替换数据导入 POST /api/InsureBatchBill/ImportBatchUpdateOrderData */ |
| | | export async function importBatchUpdateOrderData( |
| | | /** 客户端-检查批单替换数据导入 POST /api/InsureBatchBill/ImportCheckBatchUpdateOrderData */ |
| | | export async function importCheckBatchUpdateOrderData( |
| | | body: API.ImportBatchAddOrSubOrderInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<any>('/api/InsureBatchBill/ImportBatchUpdateOrderData', { |
| | | return request<any>('/api/InsureBatchBill/ImportCheckBatchUpdateOrderData', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | |
| | | id?: string; |
| | | } |
| | | |
| | | interface APIgetInsureBatchDetailParams { |
| | | batchBillId?: string; |
| | | } |
| | | |
| | | interface APIgetListParams { |
| | | filter?: string; |
| | | clientId?: string; |
| | |
| | | insureBatchBillId?: string; |
| | | /** 审核理由 */ |
| | | auditNote?: string; |
| | | /** 批单编号 */ |
| | | batchBillNo?: string; |
| | | checkStatus?: BatchBillCheckStatus; |
| | | /** 生效时间 */ |
| | | effectTime?: string; |
| | |
| | | id2?: string; |
| | | sortCode2?: number; |
| | | type?: number; |
| | | } |
| | | |
| | | interface CheckImportBatchAddOrSubOrderDataOutput { |
| | | /** 错误数据列表 */ |
| | | error?: ImportBatchAddOrSubOrderDataInput[]; |
| | | /** 新增数据列表 */ |
| | | addOrSub?: ImportBatchAddOrSubOrderDataInput[]; |
| | | } |
| | | |
| | | interface CheckImportBatchUpdateOrderDataOutput { |
| | | /** 错误数据列表 */ |
| | | error?: ImportBatchUpdateOrderDataInput[]; |
| | | /** 替换数据列表 */ |
| | | update?: ImportBatchUpdateOrderDataInput[]; |
| | | } |
| | | |
| | | interface CheckLoginVerificationCodeInput { |
| | |
| | | roleNames: string[]; |
| | | } |
| | | |
| | | interface ImportBatchAddOrSubOrderDataInput { |
| | | /** 批改标志 */ |
| | | changeFlag: string; |
| | | /** 方案代码 */ |
| | | insuranceScheme: string; |
| | | /** 姓名 */ |
| | | name: string; |
| | | /** 证件类型 */ |
| | | certType: string; |
| | | /** 证件号码 */ |
| | | idNumber: string; |
| | | /** 年龄 */ |
| | | age?: number; |
| | | /** 电话号码 */ |
| | | phoneNumber?: string; |
| | | /** 职业/工种 */ |
| | | workType: string; |
| | | /** 性别 */ |
| | | gender?: string; |
| | | /** 出生日期 */ |
| | | birthDay?: string; |
| | | /** 备注 */ |
| | | remark?: string; |
| | | } |
| | | |
| | | interface ImportBatchAddOrSubOrderInput { |
| | | /** 导入地址 */ |
| | | url?: string; |
| | |
| | | workType?: string; |
| | | birthDay?: string; |
| | | remark?: string; |
| | | } |
| | | |
| | | interface ImportBatchUpdateOrderDataInput { |
| | | /** 原被保人姓名 */ |
| | | orginName: string; |
| | | /** 原被保人证件号码 */ |
| | | orginIdNumber: string; |
| | | /** 姓名 */ |
| | | name: string; |
| | | /** 证件类型 */ |
| | | certType: string; |
| | | /** 证件号码 */ |
| | | idNumber: string; |
| | | /** 电话号码 */ |
| | | phoneNumber?: string; |
| | | /** 职业/工种 */ |
| | | workType: string; |
| | | /** 性别 */ |
| | | gender?: string; |
| | | /** 年龄 */ |
| | | age?: number; |
| | | /** 出生日期 */ |
| | | birthDay?: string; |
| | | /** 备注 */ |
| | | remark?: string; |
| | | changeFlag?: string; |
| | | } |
| | | |
| | | interface ImportInsStaffAnalysisList { |
| | |
| | | orderRelevanceStr?: string; |
| | | /** 保单文件 */ |
| | | orderBillFile?: string; |
| | | /** 投保人和被投保人 */ |
| | | enterpriseName?: string; |
| | | phone?: string; |
| | | insuranceOrg?: string; |
| | | } |
| | | |
| | | interface InsuranceOrderListOutputPageOutput { |
| | |
| | | idNumber?: string; |
| | | /** 性别 */ |
| | | gender?: string; |
| | | /** 手机号码 */ |
| | | phoneNumber?: string; |
| | | /** 年龄 */ |
| | | age?: number; |
| | | /** 出生日期 */ |
| | |
| | | delInsStaffList?: ImportBatchStaffListInput[]; |
| | | } |
| | | |
| | | interface InsureBatchDetailDto { |
| | | /** 批改人员详情 */ |
| | | staffList?: InsureBatchBillDetailDto[]; |
| | | /** 生效时间 */ |
| | | effectTime?: string; |
| | | /** 保单号 */ |
| | | insureBillNo?: string; |
| | | /** 投保人 */ |
| | | enterpriseName?: string; |
| | | } |
| | | |
| | | interface IStringValueType { |
| | | name?: string; |
| | | properties?: Record<string, any>; |
| | |
| | | <template> |
| | | <LoadingLayout :loading="state.loading"> |
| | | <LoadingLayout> |
| | | <AppScrollContainer> |
| | | <ChunkCell title="1"> |
| | | <template #title> |
| | | <div class="batch-change-title"> |
| | | <el-text style="margin-right: 20px">{{ `保单号:${'958585860689'}` }}</el-text> |
| | | <el-text>{{ `投保人:${'人力无忧'}` }}</el-text> |
| | | <el-text style="margin-right: 20px">{{ `保单号:${insureBillNo ?? ''}` }}</el-text> |
| | | <el-text>{{ `投保人:${insurerName ?? ''}` }}</el-text> |
| | | </div> |
| | | </template> |
| | | <ProForm :model="state.form" ref="formRef" label-width="120px"> |
| | |
| | | <ProFormColItem :span="8"> |
| | | <ProFormItemV2 label="" prop="url" label-width="0"> |
| | | <ProFormUpload |
| | | v-model:file-url="state.form.url" |
| | | v-model:file-url="state.form.addOrReduceUrl" |
| | | :limit="1" |
| | | :limitFileSize="10" |
| | | accept="xlsx,xls" |
| | | accept="xlsx" |
| | | :showTip="false" |
| | | :on-success="handleUploadAddOrReduce" |
| | | :disabled="urlDisabled" |
| | | > |
| | | <template #default> |
| | | <el-button type="primary">加减人</el-button> |
| | | <el-button type="primary" :disabled="urlDisabled">加减人</el-button> |
| | | <el-button link type="primary" @click.stop="DownloadAddOrReducePersonTemplate" |
| | | >下载模板</el-button |
| | | > |
| | |
| | | <ProFormColItem :span="8"> |
| | | <ProFormItemV2 label="" prop="url" label-width="0"> |
| | | <ProFormUpload |
| | | v-model:file-url="state.form.url" |
| | | v-model:file-url="state.form.replaceUrl" |
| | | :limit="1" |
| | | :limitFileSize="10" |
| | | accept="xlsx,xls" |
| | | accept="xlsx" |
| | | :showTip="false" |
| | | :on-success="handleUploadReplace" |
| | | :disabled="urlDisabled" |
| | | > |
| | | <template #default> |
| | | <el-button type="primary">替换人</el-button> |
| | | <el-button type="primary" :disabled="urlDisabled">替换人</el-button> |
| | | <el-button link type="primary" @click.stop="downloadReplacePersonTemplate" |
| | | >下载模板</el-button |
| | | > |
| | |
| | | } from '@bole-core/components'; |
| | | import * as insuranceOrderServices from '@/services/api/InsuranceOrder'; |
| | | import * as insureBatchBillServices from '@/services/api/InsureBatchBill'; |
| | | import { downloadFileByUrl, Message, OrderInputType } from '@bole-core/core'; |
| | | import { downloadFile, downloadFileByUrl, Message, OrderInputType } from '@bole-core/core'; |
| | | import { InsuranceAddOrReduceTempPath, InsuranceChangeTempPath } from '@/constants'; |
| | | import { useRouteView } from '@/hooks'; |
| | | import { FormInstance } from 'element-plus'; |
| | | import { useQuery, useQueryClient } from '@tanstack/vue-query'; |
| | | import { paginateList } from '@/utils'; |
| | | |
| | | defineOptions({ |
| | | name: 'BatchChange', |
| | |
| | | const column: API.CustomModuleColumnDto[] = [ |
| | | { |
| | | id: '1', |
| | | enCode: 'name', |
| | | enCode: 'changeFlag', |
| | | name: '批改类型', |
| | | }, |
| | | { |
| | |
| | | }, |
| | | { |
| | | id: '3', |
| | | enCode: 'name', |
| | | enCode: 'idNumber', |
| | | name: '身份证号', |
| | | }, |
| | | { |
| | | id: '4', |
| | | enCode: 'idNumber', |
| | | enCode: 'workType', |
| | | name: '雇员工种', |
| | | }, |
| | | { |
| | | id: '5', |
| | | enCode: 'idNumber', |
| | | enCode: 'gender', |
| | | name: '性别', |
| | | }, |
| | | { |
| | | id: '6', |
| | | enCode: 'idNumber', |
| | | enCode: 'age', |
| | | name: '年龄', |
| | | }, |
| | | { |
| | | id: '7', |
| | | enCode: 'idNumber', |
| | | enCode: 'birthDay', |
| | | name: '出生日期', |
| | | }, |
| | | { |
| | | id: '8', |
| | | enCode: 'idNumber', |
| | | enCode: 'phoneNumber', |
| | | name: '手机号码', |
| | | }, |
| | | ]; |
| | |
| | | const route = useRoute(); |
| | | const { closeViewPush } = useRouteView(); |
| | | const id = route.params.id as string; |
| | | const insurerName = route.query.insurerName as string; |
| | | const insureBillNo = route.query.insureBillNo as string; |
| | | const BaseState = { |
| | | loading: true, |
| | | form: { |
| | | time: '', |
| | | url: [] as UploadUserFile[], |
| | | addOrReduceUrl: [] as UploadUserFile[], |
| | | replaceUrl: [] as UploadUserFile[], |
| | | }, |
| | | staffList: [] as any[], |
| | | }; |
| | | |
| | | const state = reactive({ ...BaseState }); |
| | | |
| | | const { |
| | | getDataSource: getBatchRefundInfoDetail, |
| | | proTableProps, |
| | | paginationState, |
| | | extraParamState, |
| | | reset, |
| | | } = useTable( |
| | | async ({ pageIndex, pageSize }, extraParamState) => { |
| | | try { |
| | | let params: API.QueryInsuranceOrderPageInput = { |
| | | pageModel: { |
| | | rows: pageSize, |
| | | page: pageIndex, |
| | | orderInput: extraParamState.orderInput, |
| | | }, |
| | | condition: extraParamState.keyWord, |
| | | // insurePolicyOperateHistoryId: id, |
| | | }; |
| | | let res = await insuranceOrderServices.getInsuranceOrderPage(params, { |
| | | showLoading: !state.loading, |
| | | }); |
| | | return res; |
| | | } catch (error) {} |
| | | }, |
| | | { |
| | | defaultExtraParams: { |
| | | keyWord: '', |
| | | orderInput: [{ property: 'id', order: OrderInputType.Asc }], |
| | | }, |
| | | columnsRenderProps: {}, |
| | | } |
| | | ); |
| | | const urlDisabled = computed(() => { |
| | | return state.form.addOrReduceUrl.length > 0 || state.form.replaceUrl.length > 0; |
| | | }); |
| | | |
| | | const { getDataSource: getList, proTableProps } = useTable(({ pageIndex, pageSize }) => { |
| | | try { |
| | | return Promise.resolve({ |
| | | pageModel: { |
| | | rows: pageSize, |
| | | page: pageIndex, |
| | | totalCount: state.staffList.length, |
| | | }, |
| | | data: paginateList(state.staffList, pageIndex, pageSize), |
| | | }); |
| | | } catch (error) {} |
| | | }); |
| | | |
| | | async function handleUploadAddOrReduce(response: UploadUserFile) { |
| | | try { |
| | |
| | | url: response.path, |
| | | insurePolicyId: id, |
| | | }; |
| | | let res = await insureBatchBillServices.importBatchAddOrSubOrderData(params); |
| | | let checkRes = await insureBatchBillServices.importCheckBatchAddOrSubOrderData(params, { |
| | | getResponse: true, |
| | | responseType: 'blob', |
| | | }); |
| | | if (checkRes?.data?.size) { |
| | | Message.tipMessage('存在错误数据,是否导出?') |
| | | .then(() => { |
| | | downloadFile(checkRes.data, `错误人员名单`, 'xlsx'); |
| | | }) |
| | | .catch(() => { |
| | | // getList(paginationState.pageIndex); |
| | | }); |
| | | } else { |
| | | let res = await insureBatchBillServices.importBatchAddOrSubOrderData(params); |
| | | if (res?.addOrSub?.length) { |
| | | state.staffList = res.addOrSub; |
| | | getList(); |
| | | } |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | async function handleUploadReplace(response: UploadUserFile) { |
| | |
| | | url: response.path, |
| | | insurePolicyId: id, |
| | | }; |
| | | let res = await insureBatchBillServices.importBatchUpdateOrderData(params); |
| | | let checkRes = await insureBatchBillServices.importCheckBatchUpdateOrderData(params, { |
| | | getResponse: true, |
| | | responseType: 'blob', |
| | | }); |
| | | if (checkRes?.data?.size) { |
| | | Message.tipMessage('存在错误数据,是否导出?') |
| | | .then(() => { |
| | | downloadFile(checkRes.data, `错误人员名单`, 'xlsx'); |
| | | }) |
| | | .catch(() => { |
| | | // getList(paginationState.pageIndex); |
| | | }); |
| | | } else { |
| | | let res = await insureBatchBillServices.importBatchUpdateOrderData(params); |
| | | if (res?.update?.length) { |
| | | state.staffList = res.update; |
| | | getList(); |
| | | } |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | |
| | | function handleClear() {} |
| | | function handleClear() { |
| | | if (!state.staffList.length) { |
| | | Message.errorMessage('没有数据可以清除哦'); |
| | | return; |
| | | } |
| | | state.staffList = [] as any[]; |
| | | getList(); |
| | | } |
| | | |
| | | const formRef = ref<FormInstance>(); |
| | | function handleSubmit() { |
| | |
| | | |
| | | async function addOrUpdateInsureBatchBill() { |
| | | try { |
| | | let params = {}; |
| | | if (state.staffList.length === 0) { |
| | | Message.errorMessage('请先上传人员名单'); |
| | | return; |
| | | } |
| | | let params: API.InsureBatchBillInput = { |
| | | insurancePolicyId: id, |
| | | effectTime: state.form.time, |
| | | addInsStaffList: state.staffList.filter((x) => x.changeFlag.includes('增加')), |
| | | updateInsStaffList: state.staffList.filter((x) => x.changeFlag.includes('替换')), |
| | | delInsStaffList: state.staffList.filter((x) => x.changeFlag.includes('删除')), |
| | | }; |
| | | let res = await insureBatchBillServices.addOrUpdateInsureBatchBill(params); |
| | | if (res) { |
| | | Message.successMessage('提交成功'); |
| | |
| | | }); |
| | | } |
| | | |
| | | const queryClient = useQueryClient(); |
| | | |
| | | onMounted(async () => { |
| | | await getBatchRefundInfoDetail(); |
| | | await getList(); |
| | | state.loading = false; |
| | | }); |
| | | </script> |
| | |
| | | params: { |
| | | id: row.id, |
| | | }, |
| | | query: { |
| | | insurerName: row.insurerName ?? '', |
| | | insureBillNo: row.insureBillNo ?? '', |
| | | }, |
| | | }); |
| | | } |
| | | </script> |
| | |
| | | :columns="column" |
| | | :show-operation-column="false" |
| | | > |
| | | <template #changeType="{ row }"> {{ BatchChangeTypeEnumText[row.changeType] }}</template> |
| | | </ProTableV2> |
| | | </ProDialogTableWrapper> |
| | | </ProDialog> |
| | |
| | | |
| | | <script setup lang="ts"> |
| | | import { ProDialog, ProTableV2, ProDialogTableWrapper, useTable } from '@bole-core/components'; |
| | | import * as insuranceOrderServices from '@/services/api/InsuranceOrder'; |
| | | import { OrderInputType } from '@bole-core/core'; |
| | | import { paginateList } from '@/utils'; |
| | | import { BatchChangeTypeEnumText } from '@/constants'; |
| | | |
| | | defineOptions({ |
| | | name: 'BatchChangeRecordDetailDialog', |
| | |
| | | modelValue: boolean; |
| | | form?: { |
| | | id: string; |
| | | staffList: API.InsureBatchBillDetailDto[]; |
| | | }; |
| | | }; |
| | | |
| | |
| | | const column: API.CustomModuleColumnDto[] = [ |
| | | { |
| | | id: '1', |
| | | enCode: 'name', |
| | | enCode: 'changeType', |
| | | name: '批改类型', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '2', |
| | | enCode: 'name', |
| | | name: '姓名', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '3', |
| | | enCode: 'name', |
| | | enCode: 'idNumber', |
| | | name: '身份证号', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '4', |
| | | enCode: 'name', |
| | | enCode: 'workType', |
| | | name: '雇员工种', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '5', |
| | | enCode: 'name', |
| | | enCode: 'gender', |
| | | name: '性别', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '6', |
| | | enCode: 'name', |
| | | enCode: 'age', |
| | | name: '年龄', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '7', |
| | | enCode: 'name', |
| | | enCode: 'birthDay', |
| | | name: '出生日期', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '8', |
| | | enCode: 'name', |
| | | enCode: 'phoneNumber', |
| | | name: '电话号码', |
| | | width: 120, |
| | | }, |
| | | { |
| | | id: '9', |
| | | enCode: 'name', |
| | | enCode: 'modifyInfo', |
| | | name: '修改内容', |
| | | width: 120, |
| | | }, |
| | | ]; |
| | | |
| | |
| | | () => props.modelValue, |
| | | (val) => { |
| | | if (val) { |
| | | getBatchRefundInfoDetail(); |
| | | getList(); |
| | | } |
| | | }, |
| | | { |
| | |
| | | ); |
| | | |
| | | const { |
| | | getDataSource: getBatchRefundInfoDetail, |
| | | getDataSource: getList, |
| | | proTableProps, |
| | | paginationState, |
| | | extraParamState, |
| | |
| | | } = useTable( |
| | | async ({ pageIndex, pageSize }, extraParamState) => { |
| | | try { |
| | | let params: API.QueryInsuranceOrderPageInput = { |
| | | return Promise.resolve({ |
| | | pageModel: { |
| | | rows: pageSize, |
| | | page: pageIndex, |
| | | orderInput: extraParamState.orderInput, |
| | | totalCount: props.form.staffList.length, |
| | | }, |
| | | condition: extraParamState.keyWord, |
| | | // insurePolicyOperateHistoryId: id, |
| | | }; |
| | | let res = await insuranceOrderServices.getInsuranceOrderPage(params); |
| | | return res; |
| | | data: paginateList(props.form.staffList, pageIndex, pageSize), |
| | | }); |
| | | } catch (error) {} |
| | | }, |
| | | { |
| | |
| | | keyWord: '', |
| | | orderInput: [{ property: 'id', order: OrderInputType.Asc }], |
| | | }, |
| | | columnsRenderProps: {}, |
| | | } |
| | | ); |
| | | </script> |
| | |
| | | maxHeight: '400px', |
| | | }" |
| | | > |
| | | <template #checkStatus="{ row }"> |
| | | <el-tooltip |
| | | class="box-item" |
| | | effect="dark" |
| | | :content="row.auditNote" |
| | | placement="top-start" |
| | | v-if="row.checkStatus === BatchBillCheckStatus.CheckTurnDown" |
| | | > |
| | | <div style="display: inline-flex; align-items: center"> |
| | | {{ BatchBillCheckStatusText[row.checkStatus] }} |
| | | <el-icon size="16" color="#3a71ff"><QuestionFilled /></el-icon> |
| | | </div> |
| | | </el-tooltip> |
| | | <el-text v-else> |
| | | {{ BatchBillCheckStatusText[row.checkStatus] }} |
| | | </el-text> |
| | | </template> |
| | | </ProTableV2> |
| | | <BatchChangeRecordDetailDialog v-bind="dialogProps"></BatchChangeRecordDetailDialog> |
| | | </AppContainer> |
| | |
| | | useFormDialog, |
| | | } from '@bole-core/components'; |
| | | import * as insureBatchBillServices from '@/services/api/InsureBatchBill'; |
| | | import { OrderInputType } from '@bole-core/core'; |
| | | import { downloadFileByUrl, OrderInputType } from '@bole-core/core'; |
| | | import BatchChangeRecordDetailDialog from './BatchChangeRecordDetailDialog.vue'; |
| | | import { |
| | | BatchBillCheckStatus, |
| | | BatchBillCheckStatusText, |
| | | BatchChangeTypeEnumText, |
| | | } from '@/constants'; |
| | | import { setOSSLink } from '@/utils'; |
| | | |
| | | defineOptions({ |
| | | name: 'BatchChangeRecordView', |
| | |
| | | const column: API.CustomModuleColumnDto[] = [ |
| | | { |
| | | id: '1', |
| | | enCode: 'name', |
| | | enCode: 'batchBillNo', |
| | | name: '批单号', |
| | | }, |
| | | { |
| | | id: '2', |
| | | enCode: 'name', |
| | | enCode: 'changeType', |
| | | name: '批改类型', |
| | | }, |
| | | { |
| | | id: '3', |
| | | enCode: 'name', |
| | | enCode: 'creationTime', |
| | | name: '申请日期', |
| | | }, |
| | | { |
| | | id: '4', |
| | | enCode: 'idNumber', |
| | | enCode: 'effectTime', |
| | | name: '批改生效日期', |
| | | }, |
| | | { |
| | | id: '5', |
| | | enCode: 'idNumber', |
| | | enCode: 'insurePersonNumber', |
| | | name: '在保人数', |
| | | }, |
| | | { |
| | | id: '6', |
| | | enCode: 'idNumber', |
| | | enCode: 'orginInsurePersonNumber', |
| | | name: '原在保人数', |
| | | }, |
| | | { |
| | | id: '7', |
| | | enCode: 'idNumber', |
| | | enCode: 'addPersonNumber', |
| | | name: '新增', |
| | | }, |
| | | { |
| | | id: '8', |
| | | enCode: 'idNumber', |
| | | enCode: 'subPersonNumber', |
| | | name: '减少', |
| | | }, |
| | | { |
| | | id: '9', |
| | | enCode: 'idNumber', |
| | | enCode: 'checkStatus', |
| | | name: '批单状态', |
| | | }, |
| | | ]; |
| | |
| | | emits: { |
| | | onClick: (role) => handleDetail(role), |
| | | }, |
| | | // extraProps: { |
| | | // hide: (row: API.InsureBatchBillDto) => !row.orderBillFile, |
| | | // }, |
| | | extraProps: { |
| | | hide: (row: API.InsureBatchBillDto) => row.checkStatus !== BatchBillCheckStatus.InValidate, |
| | | }, |
| | | }, |
| | | { |
| | | data: { |
| | |
| | | emits: { |
| | | onClick: (role) => handleDownload(role), |
| | | }, |
| | | // extraProps: { |
| | | // hide: (row: API.InsureBatchBillDto) => !row.orderBillFile, |
| | | // }, |
| | | extraProps: { |
| | | hide: (row: API.InsureBatchBillDto) => row.checkStatus !== BatchBillCheckStatus.InValidate, |
| | | }, |
| | | }, |
| | | ]); |
| | | |
| | |
| | | { |
| | | defaultExtraParams: { |
| | | keyWord: '', |
| | | orderInput: [{ property: 'id', order: OrderInputType.Asc }], |
| | | orderInput: [{ property: 'insureBatchBillId', order: OrderInputType.Asc }], |
| | | }, |
| | | columnsRenderProps: {}, |
| | | columnsRenderProps: { |
| | | creationTime: { |
| | | type: 'date', |
| | | format: 'YYYY-MM-DD', |
| | | }, |
| | | effectTime: { |
| | | type: 'date', |
| | | format: 'YYYY-MM-DD', |
| | | }, |
| | | changeType: { |
| | | type: 'enum', |
| | | valueEnum: BatchChangeTypeEnumText, |
| | | }, |
| | | }, |
| | | } |
| | | ); |
| | | |
| | | async function getInsureBatchDetail(id: string) { |
| | | try { |
| | | return await insureBatchBillServices.getInsureBatchDetail({ batchBillId: id }); |
| | | } catch (error) {} |
| | | } |
| | | |
| | | const { dialogProps, handleEdit } = useFormDialog({ |
| | | defaultFormParams: { |
| | | id: '', |
| | | staffList: [] as API.InsureBatchBillDetailDto[], |
| | | }, |
| | | }); |
| | | |
| | | function handleDetail(row: API.InsureBatchBillDto) { |
| | | handleEdit({ |
| | | id: row.insureBatchBillId, |
| | | }); |
| | | async function handleDetail(row: API.InsureBatchBillDto) { |
| | | try { |
| | | const res = await getInsureBatchDetail(row.insureBatchBillId); |
| | | handleEdit({ |
| | | id: row.insureBatchBillId, |
| | | staffList: res.staffList, |
| | | }); |
| | | } catch (error) {} |
| | | } |
| | | |
| | | function handleDownload(row: API.InsureBatchBillDto) {} |
| | | function handleDownload(row: API.InsureBatchBillDto) { |
| | | downloadFileByUrl(setOSSLink(row.attachmentUrl)); |
| | | } |
| | | |
| | | onMounted(async () => { |
| | | await getBatchRefundInfoDetail(); |
| | |
| | | <ProFormCol> |
| | | <ProFormColItem :span="8"> |
| | | <ProFormItemV2 label="参保机构:" prop="insuranceOrg"> |
| | | <ProFormRadio v-model="detail.insuranceOrg" :value-enum="InsuredInstitutionEnum" /> |
| | | <!-- <ProFormRadio v-model="detail.insuranceOrg" :value-enum="InsuredInstitutionEnum" /> --> |
| | | <ProFormText v-model.trim="detail.insuranceOrg" /> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="8"> |
| | | <ProFormItemV2 label="投保方案:" prop="insuranceScheme"> |
| | | <ProFormRadio v-model="detail.insuranceScheme" :value-enum="InsuranceSchemeEnum" /> |
| | | <!-- <ProFormRadio v-model="detail.insuranceScheme" :value-enum="InsuranceSchemeEnum" /> --> |
| | | <ProFormText v-model.trim="detail.insuranceScheme" /> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="8"> |
| | |
| | | } |
| | | async function handleUploadSuccess(response: UploadUserFile) { |
| | | try { |
| | | // let res = await insuranceOrderServices.importInsuranceOrderData(response.url, { |
| | | // getResponse: true, |
| | | // responseType: 'blob', |
| | | // }); |
| | | let res = await insuranceOrderServices.importInsDetailStaffToList( |
| | | { |
| | | id: id, |
| | | url: response.url, |
| | | }, |
| | | { |
| | | getResponse: true, |
| | | responseType: 'blob', |
| | | } |
| | | ); |
| | | console.log('res: ', res); |
| | | // if (res?.data?.size) { |
| | | // await Message.tipMessage('存在错误数据,是否导出?'); |
| | | // downloadFile(res.data, `错误人员名单`, 'xlsx'); |
| | |
| | | params: { |
| | | id: id, |
| | | }, |
| | | query: { |
| | | insurerName: detail.value?.insurerName ?? '', |
| | | insureBillNo: detail.value?.insureBillNo ?? '', |
| | | }, |
| | | }); |
| | | } |
| | | |
| | |
| | | <ProFormColItem :span="6"> |
| | | <ProFormItemV2 |
| | | label="保单号:" |
| | | prop="name" |
| | | prop="orderNo" |
| | | :check-rules="[{ message: '请输入保单号' }]" |
| | | > |
| | | <ProFormText v-model.trim="form.name" placeholder="请输入保单号" :maxlength="30" /> |
| | | <ProFormText |
| | | v-model.trim="form.orderNo" |
| | | placeholder="请输入保单号" |
| | | :maxlength="30" |
| | | /> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | </ProFormCol> |
| | |
| | | <ProFormColItem :span="6"> |
| | | <ProFormItemV2 |
| | | label="参保机构:" |
| | | prop="insuredInstitution" |
| | | :check-rules="[{ message: '请选择参保机构' }]" |
| | | prop="insuranceOrg" |
| | | :check-rules="[{ message: '请输入参保机构' }]" |
| | | > |
| | | <ProFormSelect |
| | | <!-- <ProFormSelect |
| | | placeholder="请选择参保机构" |
| | | :value-enum="InsuredInstitutionEnum" |
| | | clearable |
| | | v-model="form.insuredInstitution" |
| | | ></ProFormSelect> |
| | | ></ProFormSelect> --> |
| | | <ProFormText |
| | | v-model.trim="form.insuranceOrg" |
| | | :maxlength="30" |
| | | placeholder="请输入参保机构" |
| | | /> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="6"> |
| | | <ProFormItemV2 |
| | | label="投保方案:" |
| | | prop="insuranceScheme" |
| | | :check-rules="[{ message: '请选择投保方案' }]" |
| | | :check-rules="[{ message: '请输入投保方案' }]" |
| | | > |
| | | <ProFormSelect |
| | | <!-- <ProFormSelect |
| | | placeholder="请选择投保方案" |
| | | :value-enum="InsuranceSchemeEnum" |
| | | clearable |
| | | v-model="form.insuranceScheme" |
| | | ></ProFormSelect> |
| | | ></ProFormSelect> --> |
| | | <ProFormText |
| | | v-model.trim="form.insuranceScheme" |
| | | :maxlength="30" |
| | | placeholder="请输入投保方案" |
| | | /> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | </ProFormCol> |
| | |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="6"> |
| | | <ProFormItemV2 label="投保人:" prop="laborContractEnterprise" mode="read"> |
| | | <ProFormText |
| | | v-model.trim="form.laborContractEnterprise" |
| | | placeholder="请输入投保人" |
| | | /> |
| | | <ProFormItemV2 label="投保人:" prop="enterpriseName" mode="read"> |
| | | <ProFormText v-model.trim="form.enterpriseName" placeholder="请输入投保人" /> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="6"> |
| | |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | <ProFormColItem :span="6"> |
| | | <ProFormItemV2 label="被保人:" prop="workEnterprise" mode="read"> |
| | | <ProFormText v-model.trim="form.workEnterprise" placeholder="请输入被保人" /> |
| | | <ProFormItemV2 label="被保人:" prop="enterpriseName" mode="read"> |
| | | <ProFormText v-model.trim="form.enterpriseName" placeholder="请输入被保人" /> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | </ProFormCol> |
| | |
| | | name: form.name, |
| | | idNumber: form.idNumber, |
| | | workType: form.workType, |
| | | laborContractEnterprise: form.laborContractEnterprise, |
| | | workEnterprise: form.workEnterprise, |
| | | laborContractEnterprise: form.enterpriseName, |
| | | workEnterprise: form.enterpriseName, |
| | | insuranceBeginTime: format(form.insuranceBeginTime), |
| | | insuranceEndTime: format(form.insuranceEndTime), |
| | | insuredInstitution: form.insuredInstitution, |
| | | insuredInstitution: form.insuranceOrg, |
| | | insuranceScheme: form.insuranceScheme, |
| | | onJobFlag: form.onJobFlag, |
| | | gender: form.gender, |
| | |
| | | name: '', |
| | | idNumber: '', |
| | | workType: '', |
| | | orderNo: '', |
| | | laborContractEnterprise: '', |
| | | workEnterprise: '', |
| | | enterpriseName: '', |
| | | insuranceBeginTime: '', |
| | | insuranceEndTime: '', |
| | | insuredInstitution: '', |
| | | insuranceOrg: '', |
| | | insuranceScheme: '', |
| | | contactNumber: '', |
| | | bakContactNumber: '', |
| | |
| | | form.idNumber = data.idNumber; |
| | | form.insuranceBeginTime = data.insuranceBeginTime; |
| | | form.insuranceEndTime = data.insuranceEndTime; |
| | | form.insuredInstitution = data.insuredInstitution; |
| | | form.insuranceOrg = data.insuranceOrg; |
| | | form.insuranceScheme = data.insuranceScheme; |
| | | form.laborContractEnterprise = data.laborContractEnterprise; |
| | | form.enterpriseName = data.enterpriseName; |
| | | form.workEnterprise = data.workEnterprise; |
| | | form.workType = data.workType; |
| | | form.channel = data.channel; |
| | | form.onJobFlag = data.onJobFlag; |
| | | form.gender = data.gender; |
| | | form.age = data.age; |
| | | form.orderNo = data.orderNo; |
| | | form.premiumAmount = data.premiumAmount; |
| | | form.incDecAmount = data.incDecAmount; |
| | | } |