Commit d9ec28db by Sweet Zhang

新单跟进

parent b567c4f0
......@@ -15,6 +15,7 @@
class="upload-file-uploader"
ref="fileUpload"
:drag="drag"
:name="name"
v-if="!disabled"
>
<!-- 上传按钮 -->
......@@ -49,6 +50,11 @@ import Sortable from 'sortablejs'
export default {
name: "FileUpload",
props: {
// 上传文件名称
name: {
type: String,
default: "file"
},
// 上传按钮文字
uploadBtnText: {
type: String,
......
......@@ -87,7 +87,7 @@
<el-table-column prop="fortuneUnpaidRatio" label="剩余出账比例" width="120" sortable :formatter="(row) => `${row.fortuneUnpaidRatio }%`" />
<el-table-column prop="status" label="出账状态" width="120" sortable>
<template #default="{ row }">
{{ getDictLabel('csf_fortune_status', row.status) }}
{{ selectDictLabel(csf_fortune_status, row.status) }}
</template>
</el-table-column>
<el-table-column prop="premium" label="期交保费" width="120" sortable />
......@@ -148,7 +148,10 @@ import { Select } from '@element-plus/icons-vue'
// 接口
import { getPolicyFortuneList, addCheckRecordaddBatch, updatePayoutAmount, downloadPolicyFortuneAccount } from '@/api/financial/commission'
import useUserStore from '@/store/modules/user'
import { loadDicts, getDictLabel } from '@/utils/useDict'
const { proxy } = getCurrentInstance()
const { csf_fortune_status } = proxy.useDict('csf_fortune_status')
const userStore = useUserStore()
// 分页相关
......@@ -535,15 +538,8 @@ const onSubmit = (data) => {
// 调用保存 API
}
// 获取入账状态,字典值转化方法
onMounted(async () => {
try {
await loadDicts(['csf_fortune_status'])
} catch (error) {
console.error('字典加载失败', error)
} finally {
loading.value = false
}
})
</script>
......
......@@ -91,7 +91,7 @@
<el-table-column type="selection" width="40" :selectable="selectableFn" />
<el-table-column prop="commissionStatus" label="比对状态" width="120" sortable fixed="left">
<template #default="{ row }">
{{ getDictLabel('csf_commission_status', row.commissionStatus) }}
{{ selectDictLabel(csf_commission_status, row.commissionStatus) }}
</template>
</el-table-column>
<el-table-column prop="commissionBizType" label="业务类型" width="120" sortable>
......@@ -103,8 +103,11 @@
<el-table-column prop="policyNo" label="保单号" width="120" sortable />
<el-table-column prop="reconciliationCompany" label="对账公司" width="120" sortable />
<el-table-column prop="commissionDate" label="入账日" width="120" sortable />
<el-table-column prop="commissionExpectedStatus" label="入账状态" width="120" sortable
:formatter="formatStatus" />
<el-table-column prop="commissionExpectedStatus" label="入账状态" width="120" sortable>
<template #default="{ row }">
{{ selectDictLabel(csf_expected_commission_status, row.commissionExpectedStatus) }}
</template>
</el-table-column>
<el-table-column prop="currentCommissionRatio" label="本次入账比例" width="130" sortable :formatter="formatRatio" />
<el-table-column prop="paidRatio" label="累积入账比例" width="130" sortable :formatter="formatRatio" />
<el-table-column prop="pendingRatio" label="待入账比例" width="120" sortable :formatter="formatRatio" />
......@@ -194,7 +197,7 @@
<el-table-column prop="policyNo" label="关联保单号" width="120" />
<el-table-column prop="commissionStatus" label="比对状态" width="120" fixed="left">
<template #default="{ row }">
{{ getDictLabel('csf_commission_status', row.commissionStatus) }}
{{ selectDictLabel(csf_commission_status, row.commissionStatus) }}
</template>
</el-table-column>
<el-table-column prop="commissionPeriod" label="佣金期数" width="120" />
......@@ -296,6 +299,12 @@ import {
import { InfoFilled, Select, Upload, Plus } from '@element-plus/icons-vue'
import FileUpload from '@/components/FileUpload/index.vue'
import { loadDicts, getDictLabel } from '@/utils/useDict'
const { proxy } = getCurrentInstance()
const { csf_expected_commission_status } = proxy.useDict('csf_expected_commission_status')
const { csf_commission_status } = proxy.useDict('csf_commission_status')
const formatRatio = (row, column, cellValue, index) => {
if (cellValue == null || cellValue == '' || cellValue == 0) {
return '-'
......@@ -478,20 +487,11 @@ const deletePolicyCommissionApi = async (row) => {
// 生成可出账记录按钮
const updatePayRollStatusDisable = ref(true)
// 获取入账状态,字典值转化方法
onMounted(async () => {
try {
await loadDicts(['csf_expected_commission_status', 'csf_commission_status'])
} catch (error) {
console.error('字典加载失败', error)
} finally {
loading.value = false
}
})
// 格式化函数(每次渲染都会调用,所以能拿到最新字典)
const formatStatus = (row, column, cellValue, index) => {
return getDictLabel('csf_expected_commission_status', cellValue) // 实时查缓存
}
// 应收单类型
const commissionBizTypeOptions = [
{ value: 'R', label: '关联保单应收单' },
......@@ -651,7 +651,7 @@ const handleAddCheckRecord = async () => {
}
const clearForm = (type) => {
if (type === 'addReceivablesFormModel')
if(addCheckRecordFormRef.value){
if (addCheckRecordFormRef.value) {
addReceivablesFormModel.value = {}
addCheckRecordFormRef.value.resetForm()
}
......
......@@ -50,7 +50,7 @@
</el-col>
<el-col :sm="12" :lg="6" :xs="24">
<el-form-item label="状态" prop="status">
<el-form-item label="流程状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择" clearable>
<el-option
v-for="dict in csf_fna_status"
......@@ -77,8 +77,9 @@
>
<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 label="状态" align="center" prop="status" width="100" :formatter="getDictLabel('csf_fna_status')"/> -->
<el-table-column label="状态" sortable align="center" prop="status" width="200">
<el-table-column label="流程状态" sortable align="center" prop="status" width="200">
<template #default="scope">
<span>{{ selectDictLabel(csf_fna_status, scope.row.status) }}</span>
</template>
......
......@@ -104,7 +104,7 @@
<div v-else-if="activeTab === 'attachment'" class="tab-content">
<div class="section">
<h3 class="sectionTitle">附件</h3>
<el-button type="primary" @click="handleUpload" :disabled="props.mode === 'viewDetail'">
<el-button type="primary" @click="fileUploadDialogFlag = true" :disabled="props.mode === 'viewDetail'">
<el-icon class="el-icon--right">
<Upload />
</el-icon>上传附件
......@@ -137,15 +137,25 @@
<el-button type="primary" size="default" @click="handleSubmit">确认</el-button>
</div>
</el-form>
<CommonDialog dialogTitle='文件导入' dialogWidth='80%' :openDialog=fileUploadDialogFlag :showAction='true'
:showClose='true' @close='fileUploadDialogFlag = false; files = ""'
@confirm='fileUploadDialogFlag = false; files = ""'>
<FileUpload v-model="files" :data="{ obiectTableName: 'policy_follow',objectBizId: props.policyBizId }"
:file-type="['xlsx', 'xls', 'doc', 'docx', 'pdf', 'txt', 'jpg', 'jpeg', 'png', 'gif']" :action="'/oss/api/oss/batch/upload'" :limit="10" :fileSize="15" :name="'files'"
@uploadEnd="handleUploadEnd" />
</CommonDialog>
</div>
</template>
<script setup>
import { ref, reactive, watch, nextTick, onMounted, computed } from 'vue'
import SearchForm from '@/components/SearchForm/SearchForm.vue'
import CommonDialog from '@/components/commonDialog'
import { ElMessage } from 'element-plus'
import { Delete, Edit, Search, Share, Upload } from '@element-plus/icons-vue'
import { getPolicyfollow, getProductList } from '@/api/sign/underwritingMain'
import {uploadOssFileList} from '@/api/common'
import { uploadOssFileList } from '@/api/common'
import { getProcessDetail } from '@/api/sign/fna'
import { premiumReconciliationList } from '@/api/sign/policy'
import { loadDicts, getDictLabel } from '@/utils/useDict'
......@@ -154,6 +164,8 @@ import EditableTable from '@/components/csf-common/EditableTable.vue'
import useUserStore from '@/store/modules/user'
const router = useRouter()
const userStore = useUserStore()
const files = ref('')
const fileUploadDialogFlag = ref(false)
// ===== Props & Emits =====
const props = defineProps({
modelValue: {
......@@ -484,7 +496,7 @@ const basicPlanFormConfig = computed(() => {
projectBizId: userStore.projectInfo.projectBizId || '',
fieldBizId: 'field_olk1qZe81qHHKXbw',
fieldValueBizId: 'field_value_uOfJH5ucA2YwJpbn',
categoryCodeList: [basicPlanFormData.value.productCate || ''],
categoryCodeList: [basicPlanFormData.value.insuranceCategoryBizId || ''],
insuranceCompanyBizIdList: [basicPlanFormData.value.insuranceCompanyBizId || ''],
pageNo: 1,
pageSize: 20
......@@ -700,9 +712,10 @@ const postalFormConfig = ref([
const relatedTableData = ref([])
const attachmentTableData = ref([])
const attachmentTableColumns = ref([
{ prop: 'objectName', label: '文件名', sortable: true, width: '150', formatter: (row) => row.objectName || '-' },
{ prop: 'originalName', label: '文件名', sortable: true, width: '150', formatter: (row) => row.originalName || '-' },
{ prop: 'fileType', label: '文件类型', sortable: true, width: '150', formatter: (row) => row.fileType || '-' },
{ prop: 'createTime', label: '上传时间', sortable: true, width: '150', formatter: (row) => row.createTime || '-' },
{ prop: 'creatorName', label: '上传人', sortable: true, width: '150', formatter: (row) => row.creatorName || '-' },
])
// ===== 本地响应式数据 =====
......@@ -744,15 +757,6 @@ watch(
const formRef = ref()
const activeTab = ref('basic')
// ===== 添加附加险计划方法 =====
const addAdditionalPlan = () => {
localData.additionalPlans.push({})
}
const deleteRow = (index) => {
localData.additionalPlans.splice(index, 1)
}
const handleTabClick = (tab) => {
if (tab.props.name === 'firstPayment') {
firstPremiumFormConfig.value = firstPremiumFormConfig ? applyViewMode(firstPremiumFormConfig.value, props.mode) : []
......@@ -842,14 +846,23 @@ const getAttachmentListDetail = (policyBizId) => {
}
uploadOssFileList(params).then(res => {
if (res.code === 200) {
attachmentTableData.value = res.data.records || []
attachmentTableData.value = res.data || []
console.log('attachmentTableData', res.data)
}
})
}
// 附件上传方法
const handleUploadEnd = (code) => {
if (code === 200) {
ElMessage.success('上传文件成功')
fileUploadDialogFlag.value = false
files.value = ''
getAttachmentListDetail(props.policyBizId)
} else {
ElMessage.error('上传文件失败')
}
}
// 组装表单数据
const transformToFormData = (apiData, formConfig) => {
......
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