Commit 6d6b77eb by Sweet Zhang

新增来佣接口对接

parent af056850
...@@ -159,6 +159,17 @@ export function deletePolicyFortuneAccount(data) { ...@@ -159,6 +159,17 @@ export function deletePolicyFortuneAccount(data) {
}) })
} }
// 新建来佣
// /csf/api/commission/add
export function addPolicyCommission(data) {
return request({
url: '/csf/api/commission/add',
method: 'post',
data: data
})
}
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
<!-- 操作区域 --> <!-- 操作区域 -->
<div class="action-area"> <div class="action-area">
<!-- <el-button type="primary" :icon="Plus" @click="handleAdd">新增入账</el-button> --> <el-button type="primary" :icon="Plus" @click="handleAdd">新增入账</el-button>
<!-- 导入区域 --> <!-- 导入区域 -->
<el-card class="import-card"> <el-card class="import-card">
...@@ -125,64 +125,68 @@ ...@@ -125,64 +125,68 @@
</el-button> </el-button>
</div> </div>
<!-- 编辑对话框 --> <!-- 编辑对话框 -->
<el-dialog <!-- 入账记录对话框(新增/编辑共用) -->
v-model="editDialogVisible" <el-dialog
:title="editDialogTitle" v-model="incomeDialogVisible"
:title="incomeDialogTitle"
width="600px" width="600px"
:before-close="handleCloseDialog" :before-close="handleCloseDialog"
> >
<el-form :model="editForm" label-width="100px" :rules="editFormRules" ref="editFormRef"> <el-form :model="incomeForm" label-width="100px" :rules="incomeFormRules" ref="incomeFormRef">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="保单号" prop="policyNo"> <el-form-item label="保单号" prop="policyNo">
<el-input v-model="editForm.policyNo" placeholder="请输入保单号" /> <el-input v-model="incomeForm.policyNo" placeholder="请输入保单号" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="对账公司" prop="reconciliationCompany"> <el-form-item label="对账公司" prop="reconciliationCompany">
<el-select v-model="editForm.reconciliationCompany" placeholder="请选择对账公司"> <el-select v-model="incomeForm.reconciliationCompany" placeholder="请选择对账公司">
<el-option <el-option
v-for="item in companyOptions" v-for="item in companyOptions"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="item.label"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="当前期数" prop="commissionPeriod"> <el-form-item label="当前期数" prop="commissionPeriod">
<el-input-number v-model="editForm.commissionPeriod" :min="1" /> <el-input-number v-model="incomeForm.commissionPeriod" :min="1" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="总期数" prop="totalPeriod"> <el-form-item label="总期数" prop="totalPeriod">
<el-input-number v-model="editForm.totalPeriod" :min="1" /> <el-input-number v-model="incomeForm.totalPeriod" :min="1" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="入账项目" prop="commissionName"> <el-form-item label="入账项目" prop="commissionName">
<el-input v-model="editForm.commissionName" placeholder="请输入入账项目" /> <el-input v-model="incomeForm.commissionName" placeholder="请输入入账项目" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="入账金额" prop="amount"> <el-form-item label="入账金额" prop="amount">
<el-input v-model="editForm.amount" placeholder="请输入金额" /> <el-input v-model="incomeForm.amount" placeholder="请输入金额" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="币种" prop="currency"> <el-form-item label="币种" prop="currency">
<el-select v-model="editForm.currency" placeholder="请选择币种"> <el-select v-model="incomeForm.currency" placeholder="请选择币种">
<el-option label="人民币" value="CNY" /> <el-option
<el-option label="港币" value="HKD" /> v-for="item in currencyTypeOptions"
<el-option label="美元" value="USD" /> :key="item.itemValue"
:label="item.itemLabel"
:value="item.itemValue"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="入账日期" prop="commissionDate"> <el-form-item label="入账日期" prop="commissionDate">
<el-date-picker <el-date-picker
v-model="editForm.commissionDate" v-model="incomeForm.commissionDate"
type="date" type="date"
placeholder="选择日期" placeholder="选择日期"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
...@@ -192,7 +196,7 @@ ...@@ -192,7 +196,7 @@
<el-col :span="24"> <el-col :span="24">
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input <el-input
v-model="editForm.remark" v-model="incomeForm.remark"
type="textarea" type="textarea"
:rows="3" :rows="3"
placeholder="请输入备注信息" placeholder="请输入备注信息"
...@@ -204,9 +208,9 @@ ...@@ -204,9 +208,9 @@
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
<el-button @click="editDialogVisible = false">取消</el-button> <el-button @click="incomeDialogVisible = false">取消</el-button>
<el-button type="primary" @click="submitEditForm" :loading="editLoading"> <el-button type="primary" @click="submitIncomeForm" :loading="incomeLoading">
确认 {{ isEditMode ? '更新' : '新增' }}
</el-button> </el-button>
</span> </span>
</template> </template>
...@@ -229,17 +233,22 @@ const router = useRouter() ...@@ -229,17 +233,22 @@ const router = useRouter()
import { listType } from '@/api/system/dict/type' import { listType } from '@/api/system/dict/type'
// 通过dictType=csf_commission_status获取比对状态字典值,获取对象中的dictItemList // 通过dictType=csf_commission_status获取比对状态字典值,获取对象中的dictItemList
const dictLists = ref([]); const dictLists = ref([]);
const currencyTypeOptions = ref([])
const getLists = () => { const getLists = () => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
listType({typeList: ['csf_commission_status']}).then(res => { listType({typeList: ['csf_commission_status','bx_currency_type']}).then(res => {
if (res.code === 200 && res.data) { if (res.code === 200 && res.data) {
const dictData = res.data.find(item => item.dictType === 'csf_commission_status'); const dictData = res.data.find(item => item.dictType === 'csf_commission_status');
dictLists.value = dictData?.dictItemList || []; dictLists.value = dictData?.dictItemList || [];
console.log('获取到的字典数据:', dictLists.value); // 处理币种字典值
resolve(dictLists.value); const currencyData = res.data.find(item => item.dictType === 'bx_currency_type');
currencyTypeOptions.value = currencyData?.dictItemList || [];
console.log('获取到的币种字典数据:', currencyTypeOptions.value);
resolve(dictLists.value,currencyTypeOptions.value);
} else { } else {
dictLists.value = []; dictLists.value = [];
resolve([]); currencyTypeOptions.value = [];
resolve([],[]);
} }
}).catch(error => { }).catch(error => {
console.error('获取状态列表失败:', error); console.error('获取状态列表失败:', error);
...@@ -304,9 +313,6 @@ const pagination = reactive({ ...@@ -304,9 +313,6 @@ const pagination = reactive({
total: 0 total: 0
}) })
// Excel导入相关
const selectedFile = ref(null)
const importLoading = ref(false)
onMounted(() => { onMounted(() => {
// 获取字典值后,再调用接口获取来佣列表 // 获取字典值后,再调用接口获取来佣列表
...@@ -413,9 +419,32 @@ const downloadTemplate = () => { ...@@ -413,9 +419,32 @@ const downloadTemplate = () => {
// 新增入账 // 新增入账
const handleAdd = () => { const handleAdd = () => {
ElMessage.info('打开新增入账对话框') incomeDialogTitle.value = '新增入账记录'
isEditMode.value = false
// 重置表单数据
Object.assign(incomeForm, {
commissionBizId: '',
policyNo: '',
reconciliationCompany: '',
commissionPeriod: 1,
totalPeriod: 1,
commissionName: '',
amount: 0,
currency: 'HKD',
commissionDate: '',
remark: ''
})
// 重置表单验证
if (incomeFormRef.value) {
incomeFormRef.value.clearValidate()
}
incomeDialogVisible.value = true
} }
import { deletePolicyCommission } from '@/api/financial/commission' import { deletePolicyCommission } from '@/api/financial/commission'
// 删除 // 删除
const handleDelete = (row) => { const handleDelete = (row) => {
...@@ -465,18 +494,19 @@ const handleGenerateBilling = async () => { ...@@ -465,18 +494,19 @@ const handleGenerateBilling = async () => {
} }
} }
// 编辑对话框相关 // 入账记录对话框相关
const editDialogVisible = ref(false) const incomeDialogVisible = ref(false)
const editDialogTitle = ref('编辑入账记录') const incomeDialogTitle = ref('入账记录')
const editLoading = ref(false) const incomeLoading = ref(false)
const editFormRef = ref() const isEditMode = ref(false)
const incomeFormRef = ref()
// 编辑表单数据 // 入账表单数据
const editForm = reactive({ const incomeForm = reactive({
commissionBizId: '', commissionBizId: '',
policyNo: '', policyNo: '',
reconciliationCompany: '', reconciliationCompany: '',
currentPeriod: 1, commissionPeriod: 1,
totalPeriod: 1, totalPeriod: 1,
commissionName: '', commissionName: '',
amount: 0, amount: 0,
...@@ -484,9 +514,8 @@ const editForm = reactive({ ...@@ -484,9 +514,8 @@ const editForm = reactive({
commissionDate: '', commissionDate: '',
remark: '' remark: ''
}) })
// 表单验证规则 // 表单验证规则
const editFormRules = { const incomeFormRules = {
policyNo: [{ required: true, message: '请输入保单号', trigger: 'blur' }], policyNo: [{ required: true, message: '请输入保单号', trigger: 'blur' }],
reconciliationCompany: [{ required: true, message: '请选择对账公司', trigger: 'change' }], reconciliationCompany: [{ required: true, message: '请选择对账公司', trigger: 'change' }],
commissionName: [{ required: true, message: '请输入入账项目', trigger: 'blur' }], commissionName: [{ required: true, message: '请输入入账项目', trigger: 'blur' }],
...@@ -494,12 +523,14 @@ const editFormRules = { ...@@ -494,12 +523,14 @@ const editFormRules = {
commissionDate: [{ required: true, message: '请选择入账日期', trigger: 'change' }] commissionDate: [{ required: true, message: '请选择入账日期', trigger: 'change' }]
} }
// 编辑入账记录 // 编辑入账记录
const handleEdit = (row) => { const handleEdit = (row) => {
editDialogTitle.value = `编辑入账记录 - ${row.policyNo}` incomeDialogTitle.value = `编辑入账记录 - ${row.policyNo}`
isEditMode.value = true
// 填充表单数据 // 填充表单数据
Object.assign(editForm, { Object.assign(incomeForm, {
commissionBizId: row.commissionBizId, commissionBizId: row.commissionBizId,
policyNo: row.policyNo, policyNo: row.policyNo,
reconciliationCompany: row.reconciliationCompany, reconciliationCompany: row.reconciliationCompany,
...@@ -512,37 +543,61 @@ const handleEdit = (row) => { ...@@ -512,37 +543,61 @@ const handleEdit = (row) => {
remark: row.remark || '' remark: row.remark || ''
}) })
editDialogVisible.value = true // 重置表单验证
if (incomeFormRef.value) {
incomeFormRef.value.clearValidate()
}
incomeDialogVisible.value = true
} }
// 提交编辑表单
const submitEditForm = async () => { // 提交入账表单(新增/编辑共用)
import { addPolicyCommission } from '@/api/financial/commission'
const submitIncomeForm = async () => {
if (!incomeFormRef.value) {
ElMessage.error('请先初始化表单')
return
}
try { try {
await editFormRef.value.validate() // 表单验证
const valid = await incomeFormRef.value.validate()
if (!valid) {
ElMessage.warning('请完善表单信息')
return
}
editLoading.value = true incomeLoading.value = true
console.log(editForm)
// 调用更新接口
await updatePolicyCommission(editForm)
if (isEditMode.value) {
// 编辑模式 - 调用更新接口
await updatePolicyCommission(incomeForm)
ElMessage.success('更新成功') ElMessage.success('更新成功')
editDialogVisible.value = false } else {
// 新增模式 - 调用新增接口
// 注意:这里需要根据实际的新增API进行调整
await addPolicyCommission(incomeForm)
ElMessage.success('新增成功')
}
incomeDialogVisible.value = false
fetchTableData() // 刷新表格数据 fetchTableData() // 刷新表格数据
} catch (error) { } catch (error) {
if (error && error.errorFields) { if (error && error.errorFields) {
ElMessage.warning('请完善表单信息') ElMessage.warning('请完善表单信息')
} else { } else {
console.error('更新失败:', error) console.error(isEditMode.value ? '更新失败:' : '新增失败:', error)
ElMessage.error('更新失败') ElMessage.error(isEditMode.value ? '更新失败' : '新增失败')
} }
} finally { } finally {
editLoading.value = false incomeLoading.value = false
} }
} }
// 关闭对话框处理 // 关闭对话框处理
const handleCloseDialog = (done) => { const handleCloseDialog = (done) => {
if (editLoading.value) { if (incomeLoading.value) {
ElMessage.info('正在保存,请稍候...') ElMessage.info('正在保存,请稍候...')
return return
} }
...@@ -554,6 +609,8 @@ const handleCloseDialog = (done) => { ...@@ -554,6 +609,8 @@ const handleCloseDialog = (done) => {
}).catch(() => {}) }).catch(() => {})
} }
</script> </script>
<style scoped> <style scoped>
......
...@@ -461,6 +461,7 @@ const getDictLists = () => { ...@@ -461,6 +461,7 @@ const getDictLists = () => {
resolve(dictLists.value,currencyTypeOptions.value); resolve(dictLists.value,currencyTypeOptions.value);
} else { } else {
currencyTypeOptions.value = []; currencyTypeOptions.value = [];
dictLists.value = [];
resolve([],[]); resolve([],[]);
} }
}).catch(error => { }).catch(error => {
......
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