Commit daf22e2d by yuzhenWang

Merge branch 'test' into 'dev'

Test

See merge request !80
parents de175da7 5acadb8b
......@@ -82,7 +82,7 @@ const props = defineProps({
type: Boolean,
default: true
},
// 打开弹窗
// 确定按钮loading效果
confirmLoading: {
type: Boolean,
default: false
......
const fnaForm = [
// 介绍人信息
{
fatherTitle: '转介人信息',
keyType: 'Array',
key: 'brokerList',
anchorKey: 'brokerList',
moudleType: 'brokerList',
dataLength: 1,
showMoudle: true,
showTable: true,
addChildren: true,
addChildrenTxt: '转介人',
fatherRequired: false,
isOpen: false,
// 新增表格列配置
columns: [
{
label: '姓名',
prop: 'brokerName',
type: 'remoteSelect',
searchType: 'brokerName',
placeholder: '请输入关键词搜索',
required: false
},
{
label: '性别',
prop: 'brokerGender',
type: 'select',
dictType: 'sys_gender',
placeholder: '请选择',
required: false
},
{
label: '内部编号',
prop: 'brokerNumber',
type: 'input',
placeholder: '请输入',
required: false
},
{
label: '所属团队',
prop: 'brokerTeam',
type: 'remoteSelect',
searchType: 'brokerTeam',
placeholder: '请输入关键词搜索',
required: false
},
{
label: '分配比例',
prop: 'brokerRatio',
type: 'inputNumber',
placeholder: '请输入',
required: true
},
{
label: '备注',
prop: 'remark',
type: 'input',
placeholder: '请输入',
required: false
}
],
data: [
// {
// brokerName: '',
// brokerGender: '',
// brokerNumber: '',
// brokerTeam: '',
// brokerRatio: '',
// remark: ''
// }
]
},
// {
// fatherTitle: '转介人信息',
// keyType: 'Array',
// key: 'brokerList',
// anchorKey: 'brokerList',
// moudleType: 'brokerList',
// dataLength: 1,
// showMoudle: true,
// showTable: true,
// addChildren: true,
// addChildrenTxt: '转介人',
// fatherRequired: false,
// isOpen: false,
// // 新增表格列配置
// columns: [
// {
// label: '姓名',
// prop: 'brokerName',
// type: 'remoteSelect',
// searchType: 'brokerName',
// placeholder: '请输入关键词搜索',
// required: false
// },
// {
// label: '性别',
// prop: 'brokerGender',
// type: 'select',
// dictType: 'sys_gender',
// placeholder: '请选择',
// required: false
// },
// {
// label: '内部编号',
// prop: 'brokerNumber',
// type: 'input',
// placeholder: '请输入',
// required: false
// },
// {
// label: '所属团队',
// prop: 'brokerTeam',
// type: 'remoteSelect',
// searchType: 'brokerTeam',
// placeholder: '请输入关键词搜索',
// required: false
// },
// {
// label: '分配比例',
// prop: 'brokerRatio',
// type: 'inputNumber',
// placeholder: '请输入',
// required: true
// },
// {
// label: '备注',
// prop: 'remark',
// type: 'input',
// placeholder: '请输入',
// required: false
// }
// ],
// data: [
// // {
// // brokerName: '',
// // brokerGender: '',
// // brokerNumber: '',
// // brokerTeam: '',
// // brokerRatio: '',
// // remark: ''
// // }
// ]
// },
// 受供养人信息
{
fatherTitle: '受供养人信息',
......
......@@ -9,6 +9,20 @@ const productPlan = [
fatherRequired: true, //父级必填,代表个人资料这个模块有必填项
data: [
{
label: '出单经纪公司',
key: 'reconciliationCompanyName',
domType: 'SearchSelect',
required: false,
maxLength: 30,
disabled: false,
placeholder: '请输入',
show: true,
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
labelPosition: 'top', //标签的位置
lg: 8 //栅格布局份数
},
{
label: '保险公司',
key: 'companyName',
domType: 'SearchSelect',
......@@ -253,20 +267,6 @@ const productPlan = [
lg: 8 //栅格布局份数
},
{
label: '出单经纪公司',
key: 'reconciliationCompanyName',
domType: 'SearchSelect',
required: false,
maxLength: 30,
disabled: false,
placeholder: '请输入',
show: true,
labelWidth: '120px', //标签宽度
sm: 12, //栅格布局份数
labelPosition: 'top', //标签的位置
lg: 8 //栅格布局份数
},
{
label: '保单额度(重疾)',
key: 'sumInsured',
domType: 'Input',
......
import { ElMessage } from 'element-plus'
export function copyToClipboard(text) {
// 方案1:使用现代 Clipboard API
if (navigator.clipboard && navigator.clipboard.writeText) {
return navigator.clipboard.writeText(text).catch((err) => {
console.error('Clipboard API 写入失败:', err);
ElMessage.error('复制失败')
// 降级到传统方案
fallbackCopyText(text);
});
}
// 方案2:降级使用传统方法
else {
fallbackCopyText(text);
}
}
// 传统复制方法
function fallbackCopyText(text, typeName = '内容') {
const textarea = document.createElement('textarea');
textarea.value = text;
textarea.style.position = 'fixed';
textarea.style.opacity = '0';
document.body.appendChild(textarea);
try {
textarea.select();
textarea.setSelectionRange(0, 99999); // 对于移动设备
document.execCommand('copy');
console.log('传统方法复制成功');
ElMessage.success(`${typeName}已复制`)
} catch (err) {
console.error('传统方法复制失败:', err)
ElMessage.error('复制失败');
} finally {
document.body.removeChild(textarea);
}
}
export default {
copyToClipboard
}
......@@ -52,14 +52,14 @@
</div>
</el-card>
</el-col>
<el-col :xs="24" :sm="12" :md="4" :lg="4">
<!-- <el-col :xs="24" :sm="12" :md="4" :lg="4">
<el-card shadow="hover" class="statistics-card">
<div class="card-content">
<div class="card-label">差额(估)</div>
<div class="card-value">{{ statisticsData.differenceAmount ? formatCurrency(statisticsData.differenceAmount) : 0 }}</div>
</div>
</el-card>
</el-col>
</el-col> -->
</el-row>
</div>
<el-table :data="tableData" @selection-change="handleSelectionChange" height="400" border highlight-current-row
......@@ -79,20 +79,23 @@
<el-table-column prop="fortuneTotalPeriod" label="总期数" width="120" sortable />
<el-table-column prop="broker" label="转介人" width="130" sortable />
<el-table-column prop="team" label="所属团队" width="120" sortable />
<el-table-column prop="amount" label="应出账金额" width="140" sortable />
<el-table-column prop="exchangeRate" label="结算汇率(估)" width="140" sortable />
<el-table-column prop="hkdAmount" label="应出账金额(HKD)" width="160" sortable/>
<el-table-column prop="currency" label="出账币种" width="130" sortable />
<el-table-column prop="fortunePaidAmount" label="已出账金额" width="120" sortable />
<el-table-column prop="fortuneUnpaidAmount" label="剩余出账金额" width="120" sortable />
<el-table-column prop="currentPaymentAmount" label="本期出账金额" width="120" sortable/>
<el-table-column prop="fortunePaidAmount" label="已出账金额" width="160" sortable />
<el-table-column prop="fortuneUnpaidAmount" label="剩余出账金额" width="160" sortable />
<!-- <el-table-column prop="currentPaymentAmount" label="本期出账金额" width="120" sortable/> -->
<el-table-column prop="currentPaymentHkdAmount" label="本期出账金额(HKD)" width="160" sortable/>
<el-table-column prop="fortuneUnpaidRatio" label="剩余出账比例" width="120" sortable :formatter="(row) => `${row.fortuneUnpaidRatio }%`" />
<el-table-column prop="status" label="出账状态" width="120" sortable>
<el-table-column prop="status" label="出账状态" width="160" sortable>
<template #default="{ row }">
{{ selectDictLabel(csf_fortune_status, row.status) }}
</template>
</el-table-column>
<el-table-column prop="premium" label="期交保费" width="120" sortable />
<el-table-column prop="policyCurrency" label="保单币种" width="120" sortable />
<el-table-column prop="payoutDate" label="出账日(实)" width="120" sortable />
<el-table-column prop="payoutDate" label="出账日(估)" width="120" sortable />
<el-table-column prop="actualPayoutDate" label="出账日(实)" width="120" sortable />
<el-table-column prop="remark" label="备注" width="120" sortable />
<el-table-column fixed="right" label="操作" min-width="120">
<template #default="{ row }">
......@@ -330,18 +333,20 @@ const setPayoutAmountDialogFlag = ref(false)
const setPayoutAmountConfig = [
{
type: 'input',
prop: 'currentPaymentAmount',
label: '出账金额',
prop: 'currentPaymentHkdAmount',
label: '本期出账金额(HKD)',
inputType: 'decimal',
rules: [
{ pattern: /^\d+$/, message: '只能输入正整数', trigger: 'blur' }
]
}, {
type: 'select',
prop: 'currency',
label: '出账币种',
dictType: 'bx_currency_type'
}, {
},
// {
// type: 'select',
// prop: 'currency',
// label: '出账币种',
// dictType: 'bx_currency_type'
// },
{
type: 'select',
prop: 'status',
label: '出账状态',
......
......@@ -564,10 +564,10 @@ const addCheckRecordConfig = ref([
prop: 'amount',
label: '入账金额',
inputType: 'decimal',
decimalDigits: 2,
decimalDigits: 4,
rules: [
{ required: true, message: '请输入金额', trigger: 'blur' },
{ pattern: /^\d+(\.\d{1,2})?$/, message: '最多两位小数', trigger: 'blur' }
{ pattern: /^\d+(\.\d{1,4})?$/, message: '最多四位小数', trigger: 'blur' }
]
}, {
type: 'select',
......@@ -615,10 +615,10 @@ const addCheckRecordConfig = ref([
prop: 'exchangeRate',
label: '结算汇率(实)',
inputType: 'decimal',
decimalDigits: 2,
decimalDigits: 4,
rules: [
{ required: true, message: '请输入金额', trigger: 'blur' },
{ pattern: /^\d+(\.\d{1,2})?$/, message: '最多两位小数', trigger: 'blur' }
{ pattern: /^\d+(\.\d{1,4})?$/, message: '最多四位小数', trigger: 'blur' }
]
},
])
......
......@@ -25,9 +25,9 @@
<el-table-column type="selection" width="55" :reserve-selection="true" />
<el-table-column prop="broker" label="转介人" min-width="120" sortable />
<el-table-column prop="team" label="所属团队" min-width="120" sortable />
<el-table-column prop="amount" label="出账金额" width="120" sortable>
<el-table-column prop="hkdAmount" label="出账金额" width="120" sortable>
<template #default="scope">
{{ formatCurrency(scope.row.amount) }}
{{ formatCurrency(scope.row.hkdAmount) }}
</template>
</el-table-column>
<el-table-column prop="currency" label="出账币种" width="120" sortable>
......
......@@ -204,7 +204,7 @@ const payableReportTableColumns = ref([
{ prop: 'unpaidRatio', label: '待出账比例', sortable: true, width: '120', formatter: (row) => (row.unpaidRatio || 0) + '%' || '-' },
{ prop: 'paidAmount', label: '已出账金额', sortable: true, width: '120', formatter: (row) => formatCurrency(row.paidAmount || 0) },
{ prop: 'unpaidAmount', label: '待出账金额', sortable: true, width: '120', formatter: (row) => formatCurrency(row.unpaidAmount || 0) },
{ prop: 'amount', label: '应出账金额', sortable: true, width: '120', formatter: (row) => formatCurrency(row.amount || 0) },
{ prop: 'hkdAmount', label: '应出账金额(估)', sortable: true, width: '120', formatter: (row) => formatCurrency(row.hkdAmount || 0) },
{ prop: 'currency', label: '出账币种', sortable: true, width: '120', formatter: (row) => row.currency || '-' },
{ prop: 'premium', label: '期交保费', sortable: true, width: '120', formatter: (row) => formatCurrency(row.premium || 0) },
{ prop: 'insuranceCompany', label: '保险公司', sortable: true, width: '120', formatter: (row) => row.insuranceCompany || '-' },
......@@ -226,7 +226,7 @@ const payableReportListTableColumns = ref([
{ prop: 'fortuneTotalPeriod', label: '出账总期数', sortable: true, width: '100', formatter: (row) => row.fortuneTotalPeriod || '-' },
{ prop: 'payoutDate', label: '出账日(估)', sortable: true, width: '120', formatter: (row) => row.payoutDate || '-' },
{ prop: 'actualPayoutDate', label: '出账日(实)', sortable: true, width: '120', formatter: (row) => row.actualPayoutDate || '-' },
{ prop: 'commissionRatio', label: '发佣率(对应职级)', sortable: true, width: '120', formatter: (row) => (row.commissionRatio || 0) + '%' || '-' },
// { prop: 'commissionRatio', label: '职级对应积分比例', sortable: true, width: '120', formatter: (row) => (row.commissionRatio || 0) || '-' },
{ prop: 'hkdAmount', label: '应出账金额(估)', sortable: true, width: '120', formatter: (row) => formatCurrency(row.hkdAmount || 0) },
{ prop: 'paidRatio', label: '已出账比例', sortable: true, width: '120', formatter: (row) => (row.paidRatio || 0) + '%' || '-' },
{ prop: 'paidAmount', label: '已出账金额', sortable: true, width: '120', formatter: (row) => formatCurrency(row.paidAmount || 0) },
......
......@@ -248,22 +248,22 @@ const addReceivablesFormConfig = [
prop: 'amount',
label: '入账金额',
inputType: 'decimal',
decimalDigits: 2,
decimalDigits: 4,
visible: (formData) => formData.commissionBizType === 'U',
rules: [
{ required: true, message: '请输入金额', trigger: 'blur' },
{ pattern: /^\d+(\.\d{1,2})?$/, message: '最多两位小数', trigger: 'blur' }
{ pattern: /^\d+(\.\d{1,4})?$/, message: '最多四位小数', trigger: 'blur' }
]
}, {
type: 'input',
prop: 'commissionRatio',
label: '入账比例(%)',
inputType: 'decimal',
decimalDigits: 2,
decimalDigits: 4,
visible: (formData) => formData.commissionBizType === 'R',
rules: [
{ required: true, message: '请输入入账比例', trigger: 'blur' },
{ pattern: /^\d+(\.\d{1,2})?$/, message: '最多两位小数', trigger: 'blur' }
{ pattern: /^\d+(\.\d{1,4})?$/, message: '最多四位小数', trigger: 'blur' }
]
}, {
type: 'select',
......@@ -755,7 +755,7 @@ const receivableReportTableColumns = ref([
{ prop: 'commissionPeriod', label: '入账期数', sortable: true, width: '120', formatter: (row) => row.commissionPeriod || '-' },
{ prop: 'totalPeriod', label: '入账总期数', sortable: true, width: '120', formatter: (row) => row.totalPeriod || '-' },
{ prop: 'commissionDate', label: '入账日(估)', sortable: true, width: '130', },
{ prop: 'commissionRatio', label: '预估入账比例', sortable: true, width: '120', formatter: (row) => (row.commissionRatio || 0) + '%' || '-' },
{ prop: 'commissionRatio', label: '产品对应来佣率', sortable: true, width: '120', formatter: (row) => (row.commissionRatio || 0) + '%' || '-' },
{ prop: 'hkdAmount', label: '预估入账金额HKD', sortable: true, width: '120', formatter: (row) => formatCurrency(row.hkdAmount || 0) },
{ prop: 'paidRatio', label: '已入账比例', sortable: true, width: '120', formatter: (row) => (row.paidRatio || 0) + '%' || '-' },
{ prop: 'paidAmount', label: '已入账金额HKD', sortable: true, width: '120', formatter: (row) => formatCurrency(row.paidAmount || 0) },
......@@ -777,7 +777,7 @@ const receivableReportItemTableColumns = ref([
{ prop: 'totalPeriod', label: '入账总期数', sortable: true, width: '120', formatter: (row) => row.totalPeriod || '-' },
{ prop: 'commissionName', label: '入账项目', sortable: true, width: '130', formatter: (row) => row.commissionName || '-' },
{ prop: 'commissionDate', label: '入账日(估)', sortable: true, width: '130', formatter: (row) => row.commissionDate || '-' },
{ prop: 'commissionRatio', label: '预估入账比例', sortable: true, width: '120', formatter: (row) => (row.commissionRatio || 0) + '%' || '-' },
{ prop: 'commissionRatio', label: '产品对应来佣率', sortable: true, width: '120', formatter: (row) => (row.commissionRatio || 0) + '%' || '-' },
{ prop: 'expectedAmount', label: '预估入账金额', sortable: true, width: '120', formatter: (row) => formatCurrency(row.expectedAmount || 0) },
{ prop: 'paidRatio', label: '已入账比例', sortable: true, width: '120', formatter: (row) => (row.paidRatio || 0) + '%' || '-' },
{ prop: 'paidAmount', label: '已入账金额', sortable: true, width: '120', formatter: (row) => formatCurrency(row.paidAmount || 0) },
......
......@@ -1506,6 +1506,8 @@ const handleFormValues = source => {
}
if (props.customerBizId && props.activeName == 'customer') {
submitObj['fnaBizId'] = props.idsObj.fnaBizId
editCustomer(submitObj).then(res => {
if (res.code == 200) {
handleEditStatus()
......@@ -1520,6 +1522,7 @@ const handleFormValues = source => {
} else if (!props.customerBizId && props.activeName == 'customer') {
addFna({ remark: '' }).then(response => {
if (response.code == 200) {
submitObj['fnaBizId'] = response.data.fnaBizId
addCustomer(submitObj).then(res => {
if (res.code == 200) {
proxy.$message.success('客户新增成功')
......@@ -1604,14 +1607,15 @@ watch(
editStatus.value = false
customerRightRef.value = null
if (newVal === 'customer') {
if (JSON.stringify(customerForm.value) != '{}') {
form.value = JSON.parse(JSON.stringify(customerForm.value))
processFormData()
// if (JSON.stringify(customerForm.value) != '{}') {
// form.value = JSON.parse(JSON.stringify(customerForm.value))
processedCustomerData.value = JSON.parse(JSON.stringify(tempCustomerDom.value))
return
} else {
processFormData()
}
// processedCustomerData.value = JSON.parse(JSON.stringify(tempCustomerDom.value))
// return
// } else {
// processFormData()
// }
// 因为客户资料里的编辑状态是单独控制的
if (props.tabSource == 'customer' && props.customerBizId) {
editStatus.value = true
......
......@@ -446,7 +446,7 @@ const searchSelectList = async (query, fieldKey, row) => {
const params5 = {
pageNo: 1,
pageSize: 10,
queryContent: queryString
realName: queryString
}
const response5 = await getUserSaleExpandList(params5)
if (response5.code == 200) {
......
......@@ -96,6 +96,7 @@
:tabIndex="tabsList.findIndex(t => t.name === 'customer')"
anchorContainer=".tabPaneBox"
tabSource="customer"
:idsObj="processInfo"
/>
<div v-if="tab.name === 'fnaform'">
<FanForm
......
......@@ -75,9 +75,21 @@
border
max-height="380px"
>
<el-table-column type="index" width="60" label="序号" />
<el-table-column label="客户姓名" align="center" prop="customerName" width="100" />
<el-table-column label="中文姓名" align="center" prop="customerNameCn" width="100" />
<el-table-column type="index" width="100" label="序号" />
<el-table-column label="客户姓名" align="center" prop="customerName" width="180" >
<template #default="scope">
<el-button link size="default">
<span @click="copyToClipboard(scope.row.customerName,'客户姓名')">{{ scope.row.customerName }}</span>
</el-button>
</template>
</el-table-column>
<el-table-column label="中文姓名" align="center" prop="customerNameCn" width="180" >
<template #default="scope">
<el-button link size="default">
<span @click="copyToClipboard(scope.row.customerNameCn,'中文姓名')">{{ scope.row.customerNameCn }}</span>
</el-button>
</template>
</el-table-column>
<!-- <el-table-column label="状态" align="center" prop="status" width="100" :formatter="getDictLabel('csf_fna_status')"/> -->
<el-table-column label="流程状态" sortable align="center" prop="status" width="200">
<template #default="scope">
......@@ -88,18 +100,29 @@
label="流程编号"
align="center"
prop="fnaNo"
width="200"
show-overflow-tooltip
/>
width="240"
show-overflow-tooltip>
<template #default="scope">
<el-button link size="default">
<span @click="copyToClipboard(scope.row.fnaNo,'流程编号')">{{ scope.row.fnaNo }}</span>
</el-button>
</template>
</el-table-column>
<el-table-column
label="预约编号"
align="center"
prop="appointmentNo"
width="200"
width="240"
show-overflow-tooltip
/>
<el-table-column label="新单编号" align="center" prop="policyId" />
<el-table-column label="保单号" align="center" prop="policyNo" width="150" />
>
<template #default="scope">
<el-button link size="default">
<span @click="copyToClipboard(scope.row.appointmentNo,'预约编号')">{{ scope.row.appointmentNo }}</span>
</el-button>
</template>
</el-table-column>
<!-- <el-table-column label="新单编号" align="center" prop="policyId" /> -->
<el-table-column label="保单号" align="center" prop="policyNo" width="180" />
<el-table-column label="创建时间" sortable align="center" prop="createTime" width="200">
<template #default="scope">
......@@ -107,7 +130,7 @@
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" width="80" align="center">
<el-table-column fixed="right" label="操作" width="150" align="center">
<template #default="{ row }">
<el-popover placement="left" :width="160" trigger="click">
<template #reference>
......@@ -158,6 +181,7 @@ import { getFnaList, deleteFna, subProcess } from '@/api/sign/fna'
import useUserStore from '@/store/modules/user'
import { MoreFilled, InfoFilled } from '@element-plus/icons-vue'
import useDictStore from '@/store/modules/dict'
import copyToClipboard from '@/utils/copyToClipboard';
const dictStore = useDictStore()
const userStore = useUserStore()
const router = useRouter()
......
......@@ -321,7 +321,7 @@
:policyMailing="policyDetailInfo.policyMailing"
/>
</div>
<div v-if="tab.name === 'newpolicyTodo'">新单事项</div>
<div v-if="tab.name === 'verifyPolicyInfo'">
<VerifyPolicyInfo
:activeName="activeName"
......@@ -752,7 +752,6 @@ function getCustomerInfo(customerBizId) {
}
// 获取各个流程所需要得字典数据
const getDictsData = async () => {
if (route.query.source == 'policyList') {
const params4 = {
pageNo: 1,
......@@ -947,6 +946,7 @@ const handleSubmit = async type => {
submitAppointmentObj.value.apiAppointmentInfoDto = result
if (!submitAppointmentObj.value.apiAppointmentInfoDto) return
}
if (productPlanRef.value) {
submitAppointmentObj.value.apiProductPlanInfoDto =
await productPlanRef.value[0].handleSubmitForm()
......
......@@ -16,7 +16,7 @@
>
<template #form-right>
<el-form ref="appointmentInfoFormRef" :model="form" :rules="rules" label-width="120px">
<div v-for="father in processedAppointmentData">
<div v-for="(father, fIndex) in processedAppointmentData">
<el-row style="margin-bottom: 10px" v-if="father.showMoudle" :id="father.anchorKey">
<div class="formBox">
<CardOne :title="father.fatherTitle">
......@@ -52,7 +52,7 @@
<template #content>
<!-- 不是表格 -->
<el-row :gutter="20" v-if="!father.showTable">
<template v-for="child in father.data" :key="child.key">
<template v-for="(child, cIndex) in father.data" :key="child.key">
<el-col
:sm="child.sm"
:lg="child.lg"
......@@ -829,10 +829,9 @@ const changePageSize = val => {
queryParams.value.pageSize = val
viewHistory()
}
const timeValueChange = child => {
if (form.value[child.key]) {
child.finishTime = `${form.value[child.key]} ${child.timeValue}:00`
} else if (!form.value[child.key]) {
if (!form.value[child.key]) {
proxy.$message.warning(`请先选择${child.label}日期`)
child.timeValue = ''
}
......@@ -1058,6 +1057,7 @@ const disabledDate = (time, child) => {
}
}
const handleDateClear = child => {
form.value[child.key] = ''
if (child.key == 'openAccountStartTime' && !form.value['openAccountStartTime']) {
form.value['openAccountEndTime'] = ''
resetShow({ type: 'child', key: 'openAccountEndTime', status: true, flag: 'disabled' })
......@@ -1070,28 +1070,11 @@ const handleDateClear = child => {
}
}
const handleDateChange = child => {
// debugger;
if (child.key == 'openAccountStartTime' && form.value['openAccountStartTime']) {
resetShow({ type: 'child', key: 'openAccountEndTime', status: false, flag: 'disabled' })
disabledDate(form.value['openAccountStartTime'], { key: 'openAccountEndTime' })
}
// 拼接日期与时分
if (child.key == 'arrivalTime' && child.finishTime && child.finishTime.split(' ').length == 2) {
child.finishTime = `${form.value[child.key]} ${child.timeValue}:00`
} else if (
child.key == 'departureTime' &&
child.finishTime &&
child.finishTime.split(' ').length == 2
) {
child.finishTime = `${form.value[child.key]} ${child.timeValue}:00`
} else if (
child.key == 'signDate' &&
child.finishTime &&
child.finishTime.split(' ').length == 2
) {
child.finishTime = `${form.value[child.key]} ${child.timeValue}:00`
console.log('signDate', child.finishTime)
}
// 离港时间在到港时间之前
if (
child.key == 'arrivalTime' &&
......@@ -1203,8 +1186,6 @@ const processFormData = async () => {
processedAppointmentData.value = processedData
console.log('processedAppointmentData.value', processedAppointmentData.value)
}
console.log('processedAppointmentData.value', processedAppointmentData.value)
console.log('form.value', form.value)
anchorListReady.value = true
}
......@@ -1673,7 +1654,13 @@ const handleFormValues = () => {
})
}
if (item1.compositionTime) {
submitObj[item1.key] = item1.finishTime
let dateTime = ''
if (item1.timeValue) {
dateTime = proxy.formatToDateTime(`${form.value[item1.key]} ${item1.timeValue}`)
} else if (form.value[item1.key]) {
dateTime = proxy.formatToDateTime(`${form.value[item1.key]}`)
}
submitObj[item1.key] = dateTime
}
})
}
......@@ -1710,7 +1697,7 @@ const handleFormValues = () => {
}
})
console.log('submitObj', submitObj)
console.log('submitObj表单值', submitObj)
if (submitObj['departureTime']) {
// 开始时间是否在结束时间之前
if (
......
......@@ -435,23 +435,6 @@ const handleSearchSelectChange = (father, key) => {
form.value[father.key][key] = item1.label
form.value[father.key]['productLaunchBizId'] = item1.value
console.log('item1.apiAttributeSettingDtoList', item1.apiAttributeSettingDtoList)
// item1.apiAttributeSettingDtoList.forEach(item2 => {
// if (item2.fieldBizId == 'field_eWCnuwS3WPKog5kZ' && item.key == 'issueNumber') {
// if (item2.value) {
// item.options = item2.value
// .split(/[,,;;\s]+/)
// .map(item => item.trim())
// .filter(item => item !== '')
// .map(item => {
// return { label: item, value: item }
// })
// if (item.options.length > 0)
// form.value[father.key]['issueNumber'] = item.options[0].value
// }
// console.log(item.options, item, '1111')
// }
// })
}
})
})
......@@ -482,6 +465,7 @@ const handleSearchSelectChange = (father, key) => {
if (form.value[father.key][key] == item.value) {
form.value[father.key][key] = item.label
form.value[father.key].reconciliationCompanyId = item.value
form.value[father.key].reconciliationCompanyCode = item.code
}
})
}
......
......@@ -70,7 +70,13 @@
prop="appointmentNo"
width="200"
fixed="left"
/>
>
<template #default="scope">
<el-button link size="default">
<span @click="copyToClipboard(scope.row.appointmentNo,'预约编号')">{{ scope.row.appointmentNo }}</span>
</el-button>
</template>
</el-table-column>
<el-table-column label="预约状态" align="center" prop="status" fixed="left" width="100">
<template #default="scope">
<dict-tag :options="csf_ap_status" :value="scope.row.status" />
......@@ -94,16 +100,11 @@
<el-table-column label="投保人" align="center" prop="policyholder" width="150" />
<el-table-column label="受保人" align="center" prop="insurant" width="150" />
<!-- <el-table-column label="供款频率" align="center" prop="paymentFrequency" width="100">
<!-- <el-table-column label="供款频率" align="center" width="150" prop="paymentFrequency">
<template #default="scope">
<dict-tag :options="csf_ap_frequency" :value="scope.row.paymentFrequency" />
</template>
</el-table-column> -->
<el-table-column label="供款频率" align="center" width="150" prop="paymentFrequency">
<template #default="scope">
<dict-tag :options="csf_ap_frequency" :value="scope.row.paymentFrequency" />
</template>
</el-table-column>
<el-table-column label="供款期数" align="center" prop="paymentTerm" width="100" />
<el-table-column label="每期保费" align="center" prop="eachIssuePremium" width="100" />
......@@ -212,6 +213,7 @@ import {
getItineraryExprot
} from '@/api/sign/appointment'
import useUserStore from '@/store/modules/user'
import {copyToClipboard} from '@/utils/copyToClipboard'
const dictStore = useDictStore()
const userStore = useUserStore()
const router = useRouter()
......@@ -270,7 +272,7 @@ const { bx_currency_type, csf_ap_status, csf_ap_meeting_point, csf_ap_frequency
const baseDropdownItems = [
{ label: '修改', value: 'edit', confirm: '' },
{
label: '生成行程单',
label: '确认生成行程单',
value: 'viewItinerary',
confirm: '',
// 只有当 row.status == 1 时才显示
......
......@@ -330,7 +330,8 @@ const setPayoutAmountConfig = [
prop: 'currentPaymentAmount',
label: '出账金额',
inputType: 'decimal',
rules: [{ pattern: /^\d+$/, message: '只能输入正整数', trigger: 'blur' }]
decimalDigits: 4,
rules: [{ pattern: /^\d+(\.\d{1,4})?$/, message: '最多四位小数', trigger: 'blur' }]
},
{
type: 'select',
......
......@@ -36,7 +36,6 @@
? '首期保费对账'
: '续期保费对账'
}}
</template>
</el-table-column>
<el-table-column prop="insuranceCompany" label="保险公司" width="150" />
......@@ -218,6 +217,7 @@
:showClose="true"
@close="showAffirm = false"
@confirm="confirmAffirm"
:confirmLoading="settingAffirmLoading"
>
<SearchForm ref="affirmFormRef" :config="affirmConfig" v-model="affirmFormModel" />
</CommonDialog>
......@@ -320,6 +320,7 @@ const showRemittance = ref(false)
const remittanceFormRef = ref(null)
const bankOptions = ref([]) //银行options
const currentRow = ref({}) //银行options
const settingAffirmLoading = ref(false)
const searchConfig = ref([
{
type: 'select',
......@@ -460,9 +461,10 @@ const affirmConfig = [
prop: 'recognizedAmount',
label: '保司认定金额',
inputType: 'decimal',
decimalDigits: 4,
rules: [
{ required: true, message: '请输入', trigger: 'blur' },
{ pattern: /^\d+$/, message: '只能输入正整数' }
{ pattern: /^\d+(\.\d{1,4})?$/, message: '最多四位小数', trigger: 'blur' }
]
},
{
......@@ -494,7 +496,8 @@ const affirmConfig = [
placeholder: '请选择',
maxDate: 'today',
visible: formData =>
formData.remainingUnpaidAmount && Number(formData.remainingUnpaidAmount) < 0 || Number(formData.remainingUnpaidAmount) == 0,
(formData.remainingUnpaidAmount && Number(formData.remainingUnpaidAmount) < 0) ||
Number(formData.remainingUnpaidAmount) == 0,
rules: [{ required: true, message: '请输入', trigger: 'blur' }]
},
{
......@@ -505,7 +508,8 @@ const affirmConfig = [
maxDate: 'today',
rules: [{ required: true, message: '请输入', trigger: 'blur' }],
visible: formData =>
formData.remainingUnpaidAmount && Number(formData.remainingUnpaidAmount) < 0 || Number(formData.remainingUnpaidAmount) == 0,
(formData.remainingUnpaidAmount && Number(formData.remainingUnpaidAmount) < 0) ||
Number(formData.remainingUnpaidAmount) == 0
},
{
type: 'select',
......@@ -513,7 +517,30 @@ const affirmConfig = [
label: '保单状态',
dictType: 'csf_policy_status_new',
visible: formData =>
formData.remainingUnpaidAmount && Number(formData.remainingUnpaidAmount) < 0 || Number(formData.remainingUnpaidAmount) == 0,
(formData.remainingUnpaidAmount && Number(formData.remainingUnpaidAmount) < 0) ||
Number(formData.remainingUnpaidAmount) == 0
},
{
type: 'date',
prop: 'policyExpirationDate',
label: '保单截至日',
placeholder: '请选择',
// maxDate: 'today',
visible: formData =>
(formData.remainingUnpaidAmount && Number(formData.remainingUnpaidAmount) < 0) ||
Number(formData.remainingUnpaidAmount) == 0
// rules: [{ required: true, message: '请输入', trigger: 'blur' }]
},
{
type: 'date',
prop: 'coolingOffEndDate',
label: '冷静期到期日',
placeholder: '请选择',
// maxDate: 'today',
visible: formData =>
(formData.remainingUnpaidAmount && Number(formData.remainingUnpaidAmount) < 0) ||
Number(formData.remainingUnpaidAmount) == 0,
rules: [{ required: true, message: '请输入', trigger: 'blur' }]
}
]
//计算待付金额
......@@ -533,6 +560,7 @@ const calculateAmount = async () => {
}
}
const confirmAffirm = async () => {
settingAffirmLoading.value = true
try {
const formData = await affirmFormRef.value.validate()
console.log(formData.value)
......@@ -545,6 +573,7 @@ const confirmAffirm = async () => {
newObj.premiumReconciliationBizId = currentRow.value.premiumReconciliationBizId
let res = await submitResult(newObj)
if (res.code == 200) {
settingAffirmLoading.value = false
ElMessage.success('认定成功')
showAffirm.value = false
affirmFormModel.value = {}
......@@ -587,6 +616,7 @@ const remittanceConfig = [
prop: 'paymentAmount',
label: '付款金额',
inputType: 'decimal',
decimalDigits: 4,
rules: [
{ required: true, message: '请输入', trigger: 'blur' },
{
......@@ -766,10 +796,10 @@ const handleUploadSuccess = (prop, Model) => {
// 代表是从新增保单对账开始
if (item.response) {
let newObj = JSON.parse(JSON.stringify(item.response.data))
;(item.fileName = newObj.originalName), //文件名
;((item.fileName = newObj.originalName), //文件名
(item.fileType = newObj.fileType), //文件类型
(item.fileUrl = newObj.url), //文件URL,
(item.url = newObj.url)
(item.url = newObj.url))
}
})
tempOtherFileList.value = list
......@@ -1186,6 +1216,7 @@ const handleSelect = (command, row) => {
getPremiumReconciliationDetail(row)
} else if (command === 'settingResult') {
affirmFormModel.value = {}
settingAffirmLoading.value = false
showAffirm.value = true
currentRow.value = JSON.parse(JSON.stringify(row))
}
......
<template>
<div>
<CommonPage :operationBtnList='operationBtnList' :visibleDefaultButtons="visibleDefaultButtons"
<CommonPage :operationBtnList='operationBtnList' :visibleDefaultButtons="visibleDefaultButtons" v-loading.fullscreen.lock="statusLoading"
:showSearchForm='true' :show-pagination='true' :total='pageTotal' :current-page='currentPage'
:page-size='pageSize' @size-change='handleSizeChange' @current-change='handleCurrentChange'>
<!-- 搜索区域 -->
......@@ -45,7 +45,7 @@
</CommonPage>
<!-- 弹窗-->
<CommonDialog dialogTitle='修改状态' dialogWidth='80%' :openDialog=editStatusDialogFlag :showAction='true'
:showClose='true' @close='editStatusDialogFlag = false' @confirm='handleEditStatusSubmit' v-loading="statusLoading">
:showClose='true' @close='editStatusDialogFlag = false' @confirm='handleEditStatusSubmit'>
<SearchForm ref="editStatusFormRef" :config="editStatusFormConfig" v-model="editStatusFormData" />
</CommonDialog>
......@@ -96,7 +96,7 @@ import {
policyFollowReport,
saveMailingInfo, updatePolicyfollow, batchSaveBrokers, saveInitialPayment,updatePolicyProduct
} from '@/api/sign/underwritingMain'
import {copyToClipboard} from '@/utils/copyToClipboard'
import PolicyDetail from './policyDetail.vue'
const policyDetailFormRef = ref(null)
const policyDetailFormData = ref({})
......@@ -200,7 +200,7 @@ const onSubmit = async (data) => {
} else if (data.activeTab === 'productPlan') {
params = {
policyBizId: selectedRow.value.policyBizId,
...data,
apiProductPlanMainInfoDto:{...data},
activeTab: undefined
}
const res = await updatePolicyProduct(params)
......@@ -454,7 +454,9 @@ const handleSelect = async (e, row) => {
}
editStatusDialogFlag.value = true
editStatusFormData.value = {
status: row.status
status: row.status,
effectiveDate:row.effectiveDate,
underwritingDate:row.underwritingDate
}
break
case 'viewRelated':
......
......@@ -297,7 +297,13 @@ const introducerConfig = [
}))
}
},
{
type: 'input',
prop: 'brokerName',
label: '转介人姓名',
span: 4,
disabled: true
},
// {
// type: 'select',
// prop: 'gender',
......@@ -607,7 +613,9 @@ const basicPlanFormConfig = ref([
return res?.data.records || []
},
onChangeExtraFields: {
insuranceCompany: 'fullName'
insuranceCompany: 'fullName',
companyId: 'insuranceCompanyId',
companyName: 'fullName'
}
},
{
......@@ -670,17 +678,26 @@ const basicPlanFormConfig = ref([
type: 'input',
prop: 'issueNumber',
label: '供款期数',
inputType: 'decimal'
},
{
type: 'input',
prop: 'guaranteePeriod',
label: '保障期限'
label: '保障年期',
inputType: 'decimal',
decimalDigits: 4,
rules: [
{ pattern: /^\d+(\.\d{1,4})?$/, message: '最多四位小数', trigger: 'blur' }
]
},
{
type: 'input',
prop: 'sumInsured',
label: '保额(重疾险)'
label: '保额(重疾险)',
inputType: 'decimal',
decimalDigits: 4,
rules: [
{ pattern: /^\d+(\.\d{1,4})?$/, message: '最多四位小数', trigger: 'blur' }
]
},
{
type: 'select',
......@@ -690,13 +707,13 @@ const basicPlanFormConfig = ref([
},
{
type: 'input',
prop: 'initialPremium',
prop: 'eachIssuePremium',
label: '每期保费',
inputType: 'decimal',
decimalDigits: 2,
decimalDigits: 4,
rules: [
{ required: true, message: '请输入金额', trigger: 'blur' },
{ pattern: /^\d+(\.\d{1,2})?$/, message: '最多两位小数', trigger: 'blur' }
{ pattern: /^\d+(\.\d{1,4})?$/, message: '最多四位小数', trigger: 'blur' }
]
},
{
......@@ -704,10 +721,10 @@ const basicPlanFormConfig = ref([
prop: 'policyLevy',
label: '保单征费',
inputType: 'decimal',
decimalDigits: 2,
decimalDigits: 4,
rules: [
{ required: true, message: '请输入金额', trigger: 'blur' },
{ pattern: /^\d+(\.\d{1,2})?$/, message: '最多两位小数', trigger: 'blur' }
{ pattern: /^\d+(\.\d{1,4})?$/, message: '最多四位小数', trigger: 'blur' }
]
},
{
......@@ -765,10 +782,10 @@ const firstPremiumFormConfig = ref([
prop: 'initialPremium',
label: '首期保费',
inputType: 'decimal',
decimalDigits: 2,
decimalDigits: 4,
rules: [
{ required: true, message: '请输入金额', trigger: 'blur' },
{ pattern: /^\d+(\.\d{1,2})?$/, message: '最多两位小数', trigger: 'blur' }
{ pattern: /^\d+(\.\d{1,4})?$/, message: '最多四位小数', trigger: 'blur' }
]
},
{
......@@ -776,10 +793,10 @@ const firstPremiumFormConfig = ref([
prop: 'policyLevy',
label: '保单征费',
inputType: 'decimal',
decimalDigits: 2,
decimalDigits: 4,
rules: [
{ required: true, message: '请输入金额', trigger: 'blur' },
{ pattern: /^\d+(\.\d{1,2})?$/, message: '最多两位小数', trigger: 'blur' }
{ pattern: /^\d+(\.\d{1,4})?$/, message: '最多四位小数', trigger: 'blur' }
]
},
{
......@@ -793,10 +810,10 @@ const firstPremiumFormConfig = ref([
prop: 'initialPremiumPaid',
label: '首期已缴保费',
inputType: 'decimal',
decimalDigits: 2,
decimalDigits: 4,
rules: [
{ required: true, message: '请输入金额', trigger: 'blur' },
{ pattern: /^\d+(\.\d{1,2})?$/, message: '最多两位小数', trigger: 'blur' }
{ pattern: /^\d+(\.\d{1,4})?$/, message: '最多四位小数', trigger: 'blur' }
]
},
{
......@@ -804,10 +821,10 @@ const firstPremiumFormConfig = ref([
prop: 'initialPremiumDue',
label: '首期待缴保费',
inputType: 'decimal',
decimalDigits: 2,
decimalDigits: 4,
rules: [
{ required: true, message: '请输入金额', trigger: 'blur' },
{ pattern: /^\d+(\.\d{1,2})?$/, message: '最多两位小数', trigger: 'blur' }
{ pattern: /^\d+(\.\d{1,4})?$/, message: '最多四位小数', trigger: 'blur' }
]
},
{
......@@ -815,10 +832,10 @@ const firstPremiumFormConfig = ref([
prop: 'initialPremiumTotal',
label: '首期缴费总额',
inputType: 'decimal',
decimalDigits: 2,
decimalDigits: 4,
rules: [
{ required: true, message: '请输入金额', trigger: 'blur' },
{ pattern: /^\d+(\.\d{1,2})?$/, message: '最多两位小数', trigger: 'blur' }
{ pattern: /^\d+(\.\d{1,4})?$/, message: '最多四位小数', trigger: 'blur' }
]
},
// {
......@@ -839,10 +856,10 @@ const firstPremiumFormConfig = ref([
prop: 'initialPremiumDiscount',
label: '首期保费优惠金额',
inputType: 'decimal',
decimalDigits: 2,
decimalDigits: 4,
rules: [
{ required: true, message: '请输入金额', trigger: 'blur' },
{ pattern: /^\d+(\.\d{1,2})?$/, message: '最多两位小数', trigger: 'blur' }
{ pattern: /^\d+(\.\d{1,4})?$/, message: '最多四位小数', trigger: 'blur' }
]
}
])
......
......@@ -5,7 +5,7 @@
<el-col :sm="12" :lg="12" :xs="24">
<div class="headerLeft">
<div class="top">欢迎!</div>
<div class="bottom">王力群</div>
<div class="bottom">CSF-HK</div>
</div>
</el-col>
<el-col :sm="12" :lg="12" :xs="24" class="right">
......@@ -180,14 +180,14 @@ const headerList = ref([
id: '1',
title: '总保费(HKD)',
icon: 'icon-zongbaofei',
count: '392.52',
count: '--',
url: '/todo'
},
{
id: '2',
title: '有效保单数',
icon: 'icon-youxiaobaodan',
count: '0.00',
count: '--',
url: '/todo'
},
......@@ -195,7 +195,7 @@ const headerList = ref([
id: '3',
title: '待来佣保单',
icon: 'icon-daijiesuan',
count: '10',
count: '--',
url: '/todo'
}
])
......@@ -275,7 +275,7 @@ const staticList = ref([
id: '1',
title: '财务需求分析数',
icon: 'icon-xiexian',
count: '3735',
count: '--',
unit: '条',
url: '/todo',
color: '#F53F3F'
......@@ -284,7 +284,7 @@ const staticList = ref([
id: '2',
title: '预约单数',
icon: 'icon-xiexian',
count: '12',
count: '--',
unit: '单',
url: '/todo',
color: '#0FC6C2'
......@@ -293,7 +293,7 @@ const staticList = ref([
id: '3',
title: '新单数',
icon: 'icon-xiexian',
count: '12',
count: '--',
unit: '单',
url: '/todo',
color: '#165DFF'
......@@ -302,7 +302,7 @@ const staticList = ref([
id: '4',
title: '续期保单数',
icon: 'icon-xiexian',
count: '13',
count: '--',
unit: '份',
url: '/todo',
color: '#0FC6C2'
......@@ -312,22 +312,22 @@ const infoList = ref([
{
id: '1',
title: '产品优惠',
subTitle: 'XXXXX第四季度优惠政策'
subTitle: '暂未开放'
},
{
id: '2',
title: '产品培训',
subTitle: 'XXXXX产品培训回放'
subTitle: '暂未开放'
},
{
id: '3',
title: '重要通知',
subTitle: 'XXXXX保单未续费'
subTitle: '暂未开放'
},
{
id: '4',
title: '系统消息',
subTitle: 'FNA导出成功!'
subTitle: '暂未开放!'
}
])
const timeList = ref([
......@@ -351,21 +351,21 @@ const workList = ref([
{
id: '1',
title: '新单跟进',
subTitle: '张三预约单待录入',
subTitle: '暂未开放',
unit: 'Q',
color: '#7BC616'
},
{
id: '2',
title: '续费提醒',
subTitle: 'bug fix',
subTitle: '暂未开放',
unit: 'Y',
color: '#14C9C9'
},
{
id: '3',
title: '预约单生成',
subTitle: '车险预约单已生成',
subTitle: '暂未开放',
unit: 'N',
color: '#168CFF'
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment