mirror of
http://112.124.100.131/ebiz-ai/ebiz-ai-knowledge-manage.git
synced 2025-12-15 22:06:50 +08:00
1336 lines
45 KiB
Vue
1336 lines
45 KiB
Vue
<template>
|
||
<div class="ta-data-form">
|
||
<h3>审批单录入</h3>
|
||
<!-- 审批单基本信息 -->
|
||
<el-card class="box-card">
|
||
<div slot="header" class="clearfix">
|
||
<span>审批单基本信息</span>
|
||
</div>
|
||
<el-row :gutter="20">
|
||
<el-col :span="12">
|
||
<el-form ref="form" :model="formData" label-width="120px">
|
||
<el-form-item label="审批单号">
|
||
<el-input
|
||
v-model="formData.orderCode"
|
||
placeholder="请输入审批单号"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="审批单出单时间">
|
||
<el-date-picker
|
||
v-model="formData.orderTime"
|
||
type="datetime"
|
||
placeholder="选择日期时间"
|
||
format="yyyy-MM-dd HH:mm:ss"
|
||
value-format="yyyy-MM-dd HH:mm:ss"
|
||
></el-date-picker>
|
||
</el-form-item>
|
||
</el-form>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<!-- 右侧留空,保持对称 -->
|
||
</el-col>
|
||
</el-row>
|
||
</el-card>
|
||
|
||
<!-- 基本信息 -->
|
||
<!-- 基本信息 -->
|
||
<el-card class="box-card">
|
||
<div slot="header" class="clearfix">
|
||
<span>基本信息</span>
|
||
</div>
|
||
<el-row :gutter="20">
|
||
<el-col :span="12">
|
||
<el-form
|
||
ref="form"
|
||
:model="formData.data.baseInfo"
|
||
label-width="120px"
|
||
>
|
||
<el-form-item label="客户名称">
|
||
<el-input
|
||
v-model="formData.data.baseInfo.customerName"
|
||
placeholder="请输入客户名称"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="起保日期">
|
||
<el-date-picker
|
||
v-model="formData.data.baseInfo.insureStartDate"
|
||
type="date"
|
||
placeholder="选择起保日期"
|
||
format="yyyy-MM-dd"
|
||
value-format="yyyy-MM-dd"
|
||
></el-date-picker>
|
||
</el-form-item>
|
||
<el-form-item label="归属机构">
|
||
<el-input
|
||
type="text"
|
||
placeholder="输入归属机构"
|
||
v-model="formData.data.baseInfo.orgName"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="是否续保">
|
||
<el-radio-group v-model="formData.data.baseInfo.isRenew">
|
||
<el-radio label="是">是</el-radio>
|
||
<el-radio label="否">否</el-radio>
|
||
</el-radio-group>
|
||
</el-form-item>
|
||
<el-form-item label="业务来源">
|
||
<el-input
|
||
type="text"
|
||
placeholder="输入业务来源"
|
||
v-model="formData.data.baseInfo.bizSource"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="签报有效起期">
|
||
<el-date-picker
|
||
v-model="formData.data.baseInfo.signStartDate"
|
||
type="date"
|
||
placeholder="选择签报有效起期"
|
||
format="yyyy-MM-dd"
|
||
value-format="yyyy-MM-dd"
|
||
></el-date-picker>
|
||
</el-form-item>
|
||
<el-form-item label="业务详细说明">
|
||
<el-input
|
||
type="textarea"
|
||
:rows="3"
|
||
placeholder="说明业务来源、背景及分公司初步风险判断"
|
||
v-model="formData.data.baseInfo.bizDescription"
|
||
></el-input>
|
||
</el-form-item>
|
||
</el-form>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<el-form
|
||
ref="form"
|
||
:model="formData.data.baseInfo"
|
||
label-width="120px"
|
||
>
|
||
<el-form-item label="终保日期">
|
||
<el-date-picker
|
||
v-model="formData.data.baseInfo.insureEndDate"
|
||
type="date"
|
||
placeholder="选择终保日期"
|
||
format="yyyy-MM-dd"
|
||
value-format="yyyy-MM-dd"
|
||
></el-date-picker>
|
||
</el-form-item>
|
||
<el-form-item label="共保标志">
|
||
<el-select
|
||
v-model="formData.data.baseInfo.isCoUnderwriting"
|
||
placeholder="请选择共保标志"
|
||
>
|
||
<el-option label="独家承保" value="独家承保"></el-option>
|
||
<el-option label="共保" value="共保"></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="业务细分">
|
||
<el-input
|
||
type="text"
|
||
placeholder="输入业务细分"
|
||
v-model="formData.data.baseInfo.bizDetailSource"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="签报有效止期">
|
||
<el-date-picker
|
||
v-model="formData.data.baseInfo.signEndDate"
|
||
type="date"
|
||
placeholder="选择签报有效止期"
|
||
format="yyyy-MM-dd"
|
||
value-format="yyyy-MM-dd"
|
||
></el-date-picker>
|
||
</el-form-item>
|
||
<!-- 补充的字段 -->
|
||
<el-form-item label="主险代码">
|
||
<el-input
|
||
v-model="formData.data.baseInfo.mainRiskCode"
|
||
placeholder="请输入主险代码"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="总保额">
|
||
<el-input
|
||
v-model="formData.data.baseInfo.totalAmt"
|
||
placeholder="请输入总保额"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="总保费">
|
||
<el-input
|
||
v-model="formData.data.baseInfo.totalPrem"
|
||
placeholder="请输入总保费"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="币种">
|
||
<el-input
|
||
v-model="formData.data.baseInfo.currency"
|
||
placeholder="如:CNY"
|
||
></el-input>
|
||
</el-form-item>
|
||
</el-form>
|
||
</el-col>
|
||
</el-row>
|
||
</el-card>
|
||
|
||
<!-- 标的基本信息 -->
|
||
<el-card class="box-card">
|
||
<div slot="header" class="clearfix">
|
||
<span>标的基本信息</span>
|
||
</div>
|
||
<el-row :gutter="20">
|
||
<el-col :span="12">
|
||
<el-form
|
||
ref="form"
|
||
:model="formData.data.targetInfo"
|
||
label-width="120px"
|
||
>
|
||
<el-form-item label="企业是否首次投保">
|
||
<el-radio-group v-model="formData.data.targetInfo.isFirstAppnt">
|
||
<el-radio label="是">是</el-radio>
|
||
<el-radio label="否">否</el-radio>
|
||
</el-radio-group>
|
||
</el-form-item>
|
||
<el-form-item label="渠道名称">
|
||
<el-select
|
||
v-model="formData.data.targetInfo.channelName"
|
||
placeholder="请选择渠道名称"
|
||
>
|
||
<el-option label="线上渠道" value="线上渠道"></el-option>
|
||
<el-option label="线下渠道" value="线下渠道"></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="首席承保人名称">
|
||
<el-input
|
||
v-model="formData.data.targetInfo.firstAppntName"
|
||
placeholder="请输入首席承保人名称"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="我司份额">
|
||
<el-input
|
||
v-model="formData.data.targetInfo.myShare"
|
||
placeholder="请输入我司份额"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="绿色产业">
|
||
<el-radio-group v-model="formData.data.targetInfo.isGreen">
|
||
<el-radio label="是">是</el-radio>
|
||
<el-radio label="否">否</el-radio>
|
||
</el-radio-group>
|
||
</el-form-item>
|
||
<el-form-item label="投保工伤人数">
|
||
<el-input
|
||
v-model="formData.data.targetInfo.insureInjuryCount"
|
||
placeholder="请输入投保工伤人数"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="雇员总人数">
|
||
<el-input
|
||
v-model="formData.data.targetInfo.totalEmployeeCount"
|
||
placeholder="请输入雇员总人数"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="年龄结构:65岁(含)以内比例">
|
||
<el-input
|
||
v-model="formData.data.targetInfo.agePercentUnder65"
|
||
placeholder="请输入比例"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="续保类型">
|
||
<el-select
|
||
v-model="formData.data.targetInfo.renewType"
|
||
placeholder="请选择续保类型"
|
||
>
|
||
<el-option label="正常续保" value="正常续保"></el-option>
|
||
<el-option label="降额续保" value="降额续保"></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="是否存在系统外赔案">
|
||
<el-radio-group
|
||
v-model="formData.data.targetInfo.hasOutofSysClaim"
|
||
>
|
||
<el-radio label="是">是</el-radio>
|
||
<el-radio label="否">否</el-radio>
|
||
</el-radio-group>
|
||
</el-form-item>
|
||
</el-form>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<el-form
|
||
ref="form"
|
||
:model="formData.data.targetInfo"
|
||
label-width="120px"
|
||
>
|
||
<el-form-item label="是否渠道业务">
|
||
<el-radio-group
|
||
v-model="formData.data.targetInfo.isChannelBusiness"
|
||
>
|
||
<el-radio label="是">是</el-radio>
|
||
<el-radio label="否">否</el-radio>
|
||
</el-radio-group>
|
||
</el-form-item>
|
||
<el-form-item label="审批单有效期">
|
||
<el-input
|
||
v-model="formData.data.targetInfo.approvalValidityPeriod"
|
||
placeholder="请输入审批单有效期"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="首席承保人比例">
|
||
<el-input
|
||
v-model="formData.data.targetInfo.chiefInsurerRatio"
|
||
placeholder="请输入首席承保人比例"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="原审批号">
|
||
<el-input
|
||
v-model="formData.data.targetInfo.originTaCode"
|
||
placeholder="请输入原审批号"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="投保雇员人数">
|
||
<el-input
|
||
v-model="formData.data.targetInfo.insuredEmployeeCount"
|
||
placeholder="请输入投保雇员人数"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="年龄结构:67岁以上比例">
|
||
<el-input
|
||
v-model="formData.data.targetInfo.agePercentAbove67"
|
||
placeholder="请输入比例"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="续保单号">
|
||
<el-input
|
||
v-model="formData.data.targetInfo.renewalPolicyNumber"
|
||
placeholder="请输入续保单号"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="未决立案是否充足">
|
||
<el-radio-group
|
||
v-model="formData.data.targetInfo.isPendingCaseSufficient"
|
||
>
|
||
<el-radio label="是">是</el-radio>
|
||
<el-radio label="否">否</el-radio>
|
||
</el-radio-group>
|
||
</el-form-item>
|
||
</el-form>
|
||
</el-col>
|
||
</el-row>
|
||
</el-card>
|
||
|
||
<!-- 特别约定 -->
|
||
<el-card class="box-card">
|
||
<div slot="header" class="clearfix">
|
||
<span>特别约定</span>
|
||
<el-button
|
||
style="float: right;"
|
||
size="mini"
|
||
type="primary"
|
||
@click="addSpecAgreement"
|
||
>新增约定</el-button
|
||
>
|
||
</div>
|
||
<!-- 特别约定表格 -->
|
||
<el-table
|
||
:data="formData.data.specAgreement"
|
||
border
|
||
style="width: 100%"
|
||
v-if="formData.data.specAgreement.length > 0"
|
||
>
|
||
<el-table-column type="index" label="序号" width="60"></el-table-column>
|
||
<el-table-column prop="specCode" label="特别约定编码" width="180">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.specCode"
|
||
placeholder="请输入编码"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="specName" label="特别约定名称" width="180">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.specName"
|
||
placeholder="请输入名称"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="specContent" label="特别约定内容">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.specContent"
|
||
type="textarea"
|
||
:rows="2"
|
||
placeholder="请详细描述约定内容"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="操作" width="100">
|
||
<template slot-scope="scope">
|
||
<el-button
|
||
size="mini"
|
||
type="danger"
|
||
@click="deleteSpecAgreement(scope.$index)"
|
||
>删除</el-button
|
||
>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
</el-card>
|
||
<!-- 主险-->
|
||
<el-card class="box-card">
|
||
<div slot="header" class="clearfix">
|
||
<span>主险信息</span>
|
||
</div>
|
||
<el-form
|
||
ref="mainRiskForm"
|
||
:model="formData.data.mainRisk"
|
||
label-width="140px"
|
||
>
|
||
<el-row :gutter="20">
|
||
<el-col :span="12">
|
||
<el-form-item label="风险代码">
|
||
<el-input
|
||
v-model="formData.data.mainRisk.riskCode"
|
||
placeholder="请输入风险代码"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="风险名称">
|
||
<el-input
|
||
v-model="formData.data.mainRisk.riskName"
|
||
placeholder="如:雇主责任险(2015版)"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="是否计入总保额">
|
||
<el-radio-group v-model="formData.data.mainRisk.incluedAmt">
|
||
<el-radio label="计入总保额">计入总保额</el-radio>
|
||
<el-radio label="不计入总保额">不计入总保额</el-radio>
|
||
</el-radio-group>
|
||
</el-form-item>
|
||
<el-form-item label="累计赔偿限额">
|
||
<el-input
|
||
v-model="formData.data.mainRisk.aggregateLiabilityLimit"
|
||
placeholder="请输入累计赔偿限额"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="费率 (‰)">
|
||
<el-input
|
||
v-model="formData.data.mainRisk.rate"
|
||
placeholder="如:0.789474"
|
||
></el-input>
|
||
</el-form-item>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<el-form-item label="保险保费">
|
||
<el-input
|
||
v-model="formData.data.mainRisk.insurePrem"
|
||
placeholder="请输入保险保费"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="项目保费">
|
||
<el-input
|
||
v-model="formData.data.mainRisk.itemPrem"
|
||
placeholder="请输入项目保费"
|
||
></el-input>
|
||
</el-form-item>
|
||
<!-- 这里是占位,为免赔设置和责任限额预留空间,实际中可能需要更复杂的组件 -->
|
||
<el-form-item label="免赔设置">
|
||
<el-button type="text" disabled
|
||
>待实现 (DeductibleDTO[])</el-button
|
||
>
|
||
</el-form-item>
|
||
<el-form-item label="责任赔偿限额">
|
||
<el-button type="text" disabled
|
||
>待实现 (LiabilityLimitDTO[])</el-button
|
||
>
|
||
</el-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
</el-form>
|
||
</el-card>
|
||
<!-- 附加险 -->
|
||
<el-card class="box-card">
|
||
<div slot="header" class="clearfix">
|
||
<span>附加险</span>
|
||
<el-button
|
||
style="float: right;"
|
||
size="mini"
|
||
type="primary"
|
||
@click="addAdditionalRisk"
|
||
>新增附加险</el-button
|
||
>
|
||
</div>
|
||
<!-- 附加险表格 -->
|
||
<el-table
|
||
:data="formData.data.additionalRisk"
|
||
border
|
||
style="width: 100%"
|
||
v-if="formData.data.additionalRisk.length > 0"
|
||
>
|
||
<el-table-column type="index" label="序号" width="60"></el-table-column>
|
||
<el-table-column prop="riskCode" label="风险代码" width="140">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.riskCode"
|
||
placeholder="请输入代码"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="riskName" label="风险名称" width="140">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.riskName"
|
||
placeholder="如:附加24小时"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="incluedAmt" label="是否计入总保额" width="120">
|
||
<template slot-scope="scope">
|
||
<el-radio-group v-model="scope.row.incluedAmt">
|
||
<el-radio label="计入">计入</el-radio>
|
||
<el-radio label="不计入">不计入</el-radio>
|
||
</el-radio-group>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="personDailyLiabilityLimit"
|
||
label="每人每日责任限额"
|
||
width="150"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.personDailyLiabilityLimit"
|
||
placeholder="请输入限额"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="indemnityDays" label="赔偿天数" width="100">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.indemnityDays"
|
||
placeholder="请输入天数"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="aggregateLiabilityLimit"
|
||
label="累计赔偿限额"
|
||
width="150"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.aggregateLiabilityLimit"
|
||
placeholder="请输入限额"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="personLiabilityLimit"
|
||
label="每人赔偿限额"
|
||
width="150"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.personLiabilityLimit"
|
||
placeholder="可为空"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="rate" label="费率 (‰)" width="120">
|
||
<template slot-scope="scope">
|
||
<el-input v-model="scope.row.rate" placeholder="如:0.1"></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="shortRateLabel" label="短期费率标签" width="120">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.shortRateLabel"
|
||
placeholder="如:3"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="insurePrem" label="保险保费" width="120">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.insurePrem"
|
||
placeholder="请输入保费"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="itemPrem" label="项目保费" width="120">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.itemPrem"
|
||
placeholder="请输入保费"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="操作" width="100">
|
||
<template slot-scope="scope">
|
||
<el-button
|
||
size="mini"
|
||
type="danger"
|
||
@click="deleteAdditionalRisk(scope.$index)"
|
||
>删除</el-button
|
||
>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
</el-card>
|
||
<!-- 标的物清单 -->
|
||
<el-card class="box-card">
|
||
<div slot="header" class="clearfix">
|
||
<span>标的物清单(按岗位分类)</span>
|
||
<el-button
|
||
style="float: right;"
|
||
size="mini"
|
||
type="primary"
|
||
@click="addTargetListItem"
|
||
>新增岗位</el-button
|
||
>
|
||
</div>
|
||
<!-- 标的物清单表格 -->
|
||
<el-table
|
||
:data="formData.data.targetListInfo"
|
||
border
|
||
style="width: 100%"
|
||
v-if="formData.data.targetListInfo.length > 0"
|
||
>
|
||
<el-table-column type="index" label="序号" width="60"></el-table-column>
|
||
<el-table-column
|
||
prop="insureEmployeeCount"
|
||
label="投保员工人数"
|
||
width="120"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.insureEmployeeCount"
|
||
placeholder="请输入人数"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="jobType" label="工种代码" width="120">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.jobType"
|
||
placeholder="请输入代码"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="jobTypeName" label="工种名称" width="140">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.jobTypeName"
|
||
placeholder="请输入名称"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="jobCategory" label="岗位类别代码" width="130">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.jobCategory"
|
||
placeholder="请输入代码"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="jobCategoryName"
|
||
label="岗位类别名称"
|
||
width="140"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.jobCategoryName"
|
||
placeholder="请输入名称"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="jobClassification"
|
||
label="岗位分类代码"
|
||
width="130"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.jobClassification"
|
||
placeholder="请输入代码"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="jobClassificationName"
|
||
label="岗位分类名称"
|
||
width="140"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.jobClassificationName"
|
||
placeholder="请输入名称"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="industry" label="行业类别" width="120">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.industry"
|
||
placeholder="请输入编码"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="perInjuryDustLimit"
|
||
label="每人伤残赔偿限额"
|
||
width="150"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.perInjuryDustLimit"
|
||
placeholder="请输入限额"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="perInjuryDustLimitFee"
|
||
label="伤残限额费率 (‰)"
|
||
width="140"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.perInjuryDustLimitFee"
|
||
placeholder="如:1"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="lawCostDustLimit"
|
||
label="法律费用赔偿限额"
|
||
width="150"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.lawCostDustLimit"
|
||
placeholder="可为空"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="lawCostDustLimitFee"
|
||
label="法律费用费率 (‰)"
|
||
width="140"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.lawCostDustLimitFee"
|
||
placeholder="可为空"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="perMedicalCostLimit"
|
||
label="每人医疗费用限额"
|
||
width="150"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.perMedicalCostLimit"
|
||
placeholder="请输入限额"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="perMedicalCostLimitFee"
|
||
label="医疗费用费率 (‰)"
|
||
width="140"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.perMedicalCostLimitFee"
|
||
placeholder="如:0.555556"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="prem" label="岗位保费" width="120">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.prem"
|
||
placeholder="请输入保费"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="aggregateLiabilityLimit"
|
||
label="累计赔偿限额"
|
||
width="150"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.aggregateLiabilityLimit"
|
||
placeholder="请输入限额"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="操作" width="80">
|
||
<template slot-scope="scope">
|
||
<el-button
|
||
size="mini"
|
||
type="danger"
|
||
@click="deleteTargetListItem(scope.$index)"
|
||
>删除</el-button
|
||
>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
</el-card>
|
||
|
||
<!-- 销售成本 -->
|
||
<el-card class="box-card">
|
||
<div slot="header" class="clearfix">
|
||
<span>销售成本</span>
|
||
<el-button
|
||
style="float: right;"
|
||
size="mini"
|
||
type="primary"
|
||
@click="addSellingCost"
|
||
>新增成本项</el-button
|
||
>
|
||
</div>
|
||
<!-- 销售成本表格 -->
|
||
<el-table
|
||
:data="formData.data.sellingCosts"
|
||
border
|
||
style="width: 100%"
|
||
v-if="formData.data.sellingCosts.length > 0"
|
||
>
|
||
<el-table-column type="index" label="序号" width="60"></el-table-column>
|
||
<el-table-column prop="riskCode" label="风险代码" width="140">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.riskCode"
|
||
placeholder="请输入代码"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="costType" label="成本类型" width="160">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.costType"
|
||
placeholder="如:基本绩效比例"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="announceCostRate"
|
||
label="公布成本率 (%)"
|
||
width="140"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.announceCostRate"
|
||
placeholder="如:2"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="costRate" label="实际成本率 (%)" width="140">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.costRate"
|
||
placeholder="如:2"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="操作" width="80">
|
||
<template slot-scope="scope">
|
||
<el-button
|
||
size="mini"
|
||
type="danger"
|
||
@click="deleteSellingCost(scope.$index)"
|
||
>删除</el-button
|
||
>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
</el-card>
|
||
|
||
<!-- 手续费/佣金信息 -->
|
||
<el-card class="box-card">
|
||
<div slot="header" class="clearfix">
|
||
<span>手续费/佣金信息</span>
|
||
<el-button
|
||
style="float: right;"
|
||
size="mini"
|
||
type="primary"
|
||
@click="addCommission"
|
||
>新增佣金项</el-button
|
||
>
|
||
</div>
|
||
<!-- 手续费/佣金信息表格 -->
|
||
<el-table
|
||
:data="formData.data.commission"
|
||
border
|
||
style="width: 100%"
|
||
v-if="formData.data.commission.length > 0"
|
||
>
|
||
<el-table-column type="index" label="序号" width="60"></el-table-column>
|
||
<el-table-column prop="riskCode" label="风险代码" width="140">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.riskCode"
|
||
placeholder="请输入代码"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="costType" label="成本类型" width="160">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.costType"
|
||
placeholder="如:代理手续费"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="announceCostRate"
|
||
label="公布成本率 (%)"
|
||
width="140"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.announceCostRate"
|
||
placeholder="如:13"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="costRate" label="实际成本率 (%)" width="140">
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.costRate"
|
||
placeholder="如:13"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="操作" width="80">
|
||
<template slot-scope="scope">
|
||
<el-button
|
||
size="mini"
|
||
type="danger"
|
||
@click="deleteCommission(scope.$index)"
|
||
>删除</el-button
|
||
>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
</el-card>
|
||
|
||
<el-card class="box-card">
|
||
<div slot="header" class="clearfix">
|
||
<span>影像件上传</span>
|
||
</div>
|
||
<el-form label-width="270px">
|
||
<!-- 文件上传-->
|
||
<el-form-item
|
||
label=""
|
||
required
|
||
prop="file"
|
||
label-width="0"
|
||
class="el-form--label-top"
|
||
>
|
||
<div
|
||
@click.stop="createFiled"
|
||
@dragover.prevent="handleDragOver"
|
||
@dragleave.prevent="handleDragLeave"
|
||
@drop.prevent="handleDrop"
|
||
class="upload-demo"
|
||
:class="{ 'drag-over': isDragOver }"
|
||
>
|
||
<el-empty v-if="fileList.length === 0">
|
||
<template #image>
|
||
<img :src="uloadPng" alt="" style="width: 50px;height: 50px;" />
|
||
</template>
|
||
<template #description>
|
||
<div class="flex flex-direction-c">
|
||
<span class="upload-tip">点击或将图片拖拽到这里上传</span>
|
||
<span class="upload-tip-field">支持扩展名:.jpg.png</span>
|
||
</div>
|
||
</template>
|
||
</el-empty>
|
||
<div v-else>
|
||
<el-result
|
||
v-if="fileList.length === 1"
|
||
icon="success"
|
||
title="文件上传成功"
|
||
:sub-title="`已上传文件:${fileList[0].name}`"
|
||
style="height: 100%; display: flex; flex-direction: column; justify-content: center; align-items: center;"
|
||
>
|
||
<template slot="extra">
|
||
<el-button
|
||
type="primary"
|
||
size="medium"
|
||
@click.stop="removeFile(0)"
|
||
>移除</el-button
|
||
>
|
||
</template>
|
||
</el-result>
|
||
|
||
<el-result v-else class="more-files">
|
||
<template slot="icon">
|
||
<div class="text-left">
|
||
<el-button class="line-button" size="medium">
|
||
文件上传</el-button
|
||
>
|
||
</div>
|
||
</template>
|
||
<template slot="extra" style="width: 100%;">
|
||
<r-table
|
||
:data="fileList"
|
||
:columns="columns"
|
||
style="width: 100%;"
|
||
@removeFiled="removeFiled"
|
||
:deletion="false"
|
||
></r-table>
|
||
</template>
|
||
</el-result>
|
||
</div>
|
||
</div>
|
||
</el-form-item>
|
||
</el-form>
|
||
</el-card>
|
||
<!-- 提交按钮 -->
|
||
<div class="form-actions">
|
||
<el-button type="primary" @click="handleSubmit">提交</el-button>
|
||
<el-button @click="handleReset">重置</el-button>
|
||
</div>
|
||
|
||
<!-- <!– 当前表单数据预览 –>-->
|
||
<!-- <div class="form-preview">-->
|
||
<!-- <h4>当前表单数据(JSON 预览):</h4>-->
|
||
<!-- <pre>{{ JSON.stringify(formData, null, 4) }}</pre>-->
|
||
<!-- </div>-->
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import { taDataSubmit } from '@/api/riskCheck'
|
||
import uloadPng from '@/assets/images/konwledge/upload.png'
|
||
|
||
export default {
|
||
name: 'TaDataForm',
|
||
data() {
|
||
return {
|
||
isDragOver: false,
|
||
fileList: [], //列表 文件
|
||
uloadPng,
|
||
formData: {
|
||
orderCode: '', // 审批单号
|
||
orderTime: '', // 审批单出单时间
|
||
data: {
|
||
// 基本信息
|
||
baseInfo: {
|
||
customerName: '', // 客户名称
|
||
insureStartDate: '', // 起保日期
|
||
insureEndDate: '', // 终保日期
|
||
isRenew: '', // 是否续保
|
||
orgCode: '', // 承保机构编码
|
||
orgName: '', // 承保机构名称
|
||
isCoUnderwriting: '', // 是否共保
|
||
bizSource: '', //业务来源编码及名称,如“1990203-专业代理”,
|
||
bizDetailSource: '', // 业务细类来源,如“1990203001-其他”
|
||
signStartDate: '', // 签单开始日期(格式:yyyy-MM-dd)
|
||
signEndDate: '', // 签单结束日期(格式:yyyy-MM-dd)
|
||
bizDescription: '', // 业务详细说明描述
|
||
mainRiskCode: '', //主险代码
|
||
totalAmt: '', // 总保额(金额数值,单位分或元,依系统而定)
|
||
totalPrem: '', //总保费(金额数值)
|
||
currency: '' //币种:如 CNY
|
||
},
|
||
// 标的信息
|
||
targetInfo: {
|
||
isFirstAppnt: '', // 是否为首席承保人:是/否
|
||
isChannel: '', // 是否通过渠道出单:是/否
|
||
channelCode: '', // 渠道编码
|
||
channelName: '', // 渠道名称
|
||
effectivePeriod: '', // 承保有效期,例如“2个月”
|
||
firstAppntName: '', // 首席承保人名称
|
||
firstAppntRate: '', // 首席承保人份额比例,如“60%”
|
||
ourPortion: '', // 我司承保份额说明
|
||
originTaCode: '', // 原审批号(用于续保或关联旧单)
|
||
isGreen: '', // 是否绿色项目:是/否
|
||
insureInjuryCount: '', // 投保伤残人数
|
||
insureEmployeeCount: '', // 投保员工人数
|
||
totalEmployeeCount: '', // 总员工人数
|
||
agePercentUnder65: '', // 年龄在65岁以下人员占比
|
||
agePercentBetween65And67: '', // 年龄在65至67岁之间人员占比
|
||
agePercentAbove67: '', // 年龄超过67岁人员占比
|
||
renewType: '', // 续保类型(空表示无)
|
||
renewContCode: '', // 续保合同编号
|
||
canProvideClaim: '', // 是否能提供理赔数据支持:是/否
|
||
isOutstandingAdequate: '', // 出险准备金是否充足:是/否
|
||
hasOutofSysClaim: '' // 是否存在系统外理赔记录:是/否
|
||
},
|
||
// 特别约定
|
||
specAgreement: [],
|
||
// 主险信息
|
||
mainRisk: {
|
||
riskCode: '', // 风险代码
|
||
riskName: '', // 风险名称,如“雇主责任险(2015版)”
|
||
incluedAmt: '', // 是否计入总保额:“计入总保额” / “不计入总保额”
|
||
aggregateLiabilityLimit: '', // 累计赔偿限额
|
||
rate: '', // 费率,如“0.789474‰”
|
||
insurePrem: '', // 保险保费
|
||
itemPrem: '', // 项目保费
|
||
deductible: [], // 免赔设置列表(数组,元素为 DeductibleDTO 结构)
|
||
liabilityLimit: [] // 责任赔偿限额列表(数组,元素为 LiabilityLimitDTO 结构)
|
||
},
|
||
// 附加险
|
||
additionalRisk: [],
|
||
// 标的物清单:按岗位分类的被保人明细列表
|
||
targetListInfo: [],
|
||
// 销售成本:各项销售绩效费用比例信息
|
||
sellingCosts: [],
|
||
// 手续费/佣金信息:各项代理、经纪、渠道等佣金比例
|
||
commission: []
|
||
}
|
||
}
|
||
}
|
||
},
|
||
methods: {
|
||
handleSubmit() {
|
||
let formData = new FormData()
|
||
this.fileList.forEach(file => {
|
||
formData.append('files', file)
|
||
})
|
||
formData.append('formData', JSON.stringify(this.formData))
|
||
this.fileList = []
|
||
taDataSubmit(formData).then(res => {
|
||
if (res.success) {
|
||
this.handleReset()
|
||
localStorage.setItem(
|
||
'riskResult',
|
||
JSON.stringify(res.content.content)
|
||
)
|
||
this.goToRiskResultView()
|
||
}
|
||
})
|
||
},
|
||
handleReset() {
|
||
this.formData = ''
|
||
},
|
||
// 新增特别约定
|
||
addSpecAgreement() {
|
||
this.formData.data.specAgreement.push({
|
||
specCode: '',
|
||
specName: '',
|
||
specContent: ''
|
||
})
|
||
},
|
||
// 删除特别约定
|
||
deleteSpecAgreement(index) {
|
||
// 至少保留一条
|
||
this.formData.data.specAgreement.splice(index, 1)
|
||
},
|
||
// 新增附加险
|
||
addAdditionalRisk() {
|
||
this.formData.data.additionalRisk.push({
|
||
riskCode: '',
|
||
riskName: '',
|
||
incluedAmt: '',
|
||
personDailyLiabilityLimit: '',
|
||
indemnityDays: '',
|
||
aggregateLiabilityLimit: '',
|
||
personLiabilityLimit: '',
|
||
rate: '',
|
||
shortRate: '', // 注意:虽然数据结构里有,但表单未展示
|
||
shortRateLabel: '',
|
||
insurePrem: '',
|
||
itemPrem: '',
|
||
deductible: [],
|
||
liabilityLimit: []
|
||
})
|
||
},
|
||
// 删除附加险
|
||
deleteAdditionalRisk(index) {
|
||
this.formData.data.additionalRisk.splice(index, 1)
|
||
},
|
||
// 标的物清单
|
||
addTargetListItem() {
|
||
this.formData.data.targetListInfo.push({
|
||
insureEmployeeCount: '',
|
||
jobType: '',
|
||
jobTypeName: '',
|
||
jobCategory: '',
|
||
jobCategoryName: '',
|
||
jobClassification: '',
|
||
jobClassificationName: '',
|
||
industry: '',
|
||
perInjuryDustLimit: '',
|
||
perInjuryDustLimitFee: '',
|
||
lawCostDustLimit: '',
|
||
lawCostDustLimitFee: '',
|
||
perMedicalCostLimit: '',
|
||
perMedicalCostLimitFee: '',
|
||
prem: '',
|
||
aggregateLiabilityLimit: ''
|
||
})
|
||
},
|
||
deleteTargetListItem(index) {
|
||
this.formData.data.targetListInfo.splice(index, 1)
|
||
},
|
||
|
||
// 销售成本
|
||
addSellingCost() {
|
||
this.formData.data.sellingCosts.push({
|
||
riskCode: '',
|
||
costType: '',
|
||
announceCostRate: '',
|
||
costRate: ''
|
||
})
|
||
},
|
||
deleteSellingCost(index) {
|
||
this.formData.data.sellingCosts.splice(index, 1)
|
||
},
|
||
|
||
// 手续费/佣金信息
|
||
addCommission() {
|
||
this.formData.data.commission.push({
|
||
riskCode: '',
|
||
costType: '',
|
||
announceCostRate: '',
|
||
costRate: ''
|
||
})
|
||
},
|
||
deleteCommission(index) {
|
||
this.formData.data.commission.splice(index, 1)
|
||
},
|
||
// 生成filed
|
||
createFiled() {
|
||
let input = document.createElement('input')
|
||
input.type = 'file'
|
||
input.multiple = true // 支持多文件选择
|
||
|
||
// 对文件的类型做出限制
|
||
input.accept = '.jpg,.png'
|
||
|
||
input.onchange = e => {
|
||
const newFiles = Array.from(e.target.files)
|
||
if (this.fileList.length + newFiles.length > 10) {
|
||
this.$message.error('最多只能上传10个文件')
|
||
return
|
||
}
|
||
|
||
// 校验 最新上传的文件是否之前上传过
|
||
for (let i = 0; i < newFiles.length; i++) {
|
||
for (let j = 0; j < this.fileList.length; j++) {
|
||
if (newFiles[i].name === this.fileList[j].name) {
|
||
this.$message.error('请勿重复上传文件,请检查文件')
|
||
return
|
||
}
|
||
}
|
||
}
|
||
|
||
this.fileList = [...this.fileList, ...newFiles] // 将新选择的文件添加到文件列表
|
||
}
|
||
input.click()
|
||
},
|
||
handleDragOver() {
|
||
this.isDragOver = true
|
||
},
|
||
|
||
handleDragLeave() {
|
||
this.isDragOver = false
|
||
},
|
||
|
||
handleDrop(event) {
|
||
this.isDragOver = false
|
||
const files = event.dataTransfer.files
|
||
if (this.fileList.length + files.length > 10) {
|
||
this.$message.error('最多只能上传10个文件')
|
||
return
|
||
}
|
||
this.fileList = [...this.fileList, ...Array.from(files)] // 将拖拽的文件添加到文件列表
|
||
},
|
||
removeFiled(item) {
|
||
this.removeFile(item.index)
|
||
},
|
||
// 新增:移除文件
|
||
removeFile(index) {
|
||
this.fileList.splice(index, 1)
|
||
},
|
||
formatFileSize(size) {
|
||
return (size / 1024 / 1024).toFixed(2) + 'MB'
|
||
},
|
||
goToRiskResultView() {
|
||
this.$router.push(`/riskResult`)
|
||
}
|
||
},
|
||
computed: {
|
||
columns: vm => {
|
||
return [
|
||
{
|
||
type: 'index',
|
||
title: '序号'
|
||
},
|
||
{
|
||
title: '文件名称',
|
||
prop: 'name'
|
||
},
|
||
{
|
||
title: '文件大小',
|
||
prop: 'size',
|
||
render: (h, params) => {
|
||
return h('span', vm.formatFileSize(params.row.size))
|
||
}
|
||
},
|
||
{
|
||
title: '文件类型',
|
||
prop: 'type',
|
||
render: (h, params) => {
|
||
// 根据文件类型展示 是什么类型文件
|
||
switch (params.row.type) {
|
||
case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':
|
||
return h('span', 'Excel')
|
||
case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':
|
||
return h('span', 'Word')
|
||
case 'application/pdf':
|
||
return h('span', 'PDF')
|
||
case 'text/plain':
|
||
return h('span', 'TXT')
|
||
}
|
||
return h('span', params.row.type)
|
||
}
|
||
},
|
||
{
|
||
title: '操作',
|
||
selfBtn: [
|
||
{
|
||
name: '移除',
|
||
size: 'mini',
|
||
type: 'primary',
|
||
method: 'removeFiled',
|
||
class: 'tableBtn'
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style scoped>
|
||
.ta-data-form {
|
||
max-width: 1200px;
|
||
margin: 20px auto;
|
||
padding: 20px;
|
||
font-family: Arial, sans-serif;
|
||
}
|
||
.box-card {
|
||
margin-bottom: 20px;
|
||
}
|
||
.form-actions {
|
||
text-align: center;
|
||
margin-top: 20px;
|
||
}
|
||
.form-preview {
|
||
margin-top: 20px;
|
||
background: #f5f5f5;
|
||
padding: 10px;
|
||
border: 1px solid #ddd;
|
||
border-radius: 4px;
|
||
overflow: auto;
|
||
font-size: 12px;
|
||
}
|
||
</style>
|