Просмотр исходного кода

Merge branch 'dev' of http://39.101.143.165:8090/dong_k/tenant-Platform into dev

@dongkboy 1 месяц назад
Родитель
Сommit
54059ee105

+ 9 - 7
src/views/insurancePolicy/index.vue

@@ -1183,7 +1183,7 @@
             <el-table-column label="报价协议" prop="" align="center" width="300">
             <el-table-column label="报价协议" prop="" align="center" width="300">
               <template #default="scope">
               <template #default="scope">
                 <el-select v-model="scope.row.agreement" :disabled="scope.row.isDispatch"
                 <el-select v-model="scope.row.agreement" :disabled="scope.row.isDispatch"
-                  v-if="scope.row.checked || isViewSuccess" :placeholder="scope.row.isDispatch===1 ? '默认' : '请选择'">
+                  v-if="scope.row.checked || isViewSuccess" :placeholder="scope.row.isDispatch === 1 ? '默认' : '请选择'">
                   <el-option v-for="item in scope.row.agreements" :value="item.id"
                   <el-option v-for="item in scope.row.agreements" :value="item.id"
                     :label="item.agreementName"></el-option>
                     :label="item.agreementName"></el-option>
                 </el-select>
                 </el-select>
@@ -3804,6 +3804,13 @@ const quoteInsurance = async (companyId: any, companyIndex: any, val: any) => {
       // 设置折扣信息
       // 设置折扣信息
       const feeOrders = res.data?.feeOrders || {};
       const feeOrders = res.data?.feeOrders || {};
       setDiscounts(companyIndex, feeOrders)
       setDiscounts(companyIndex, feeOrders)
+      if (quoteData.value[companyIndex]) {
+        // 保存报价结果
+        quoteData.value[companyIndex].quoteResult = res.data
+        quoteData.value[companyIndex].quoteCode = 200
+        loading.value = false
+        quoteData.value[companyIndex].loading = false
+      }
     } else {
     } else {
       if (quoteData.value[companyIndex]) {
       if (quoteData.value[companyIndex]) {
         quoteData.value[companyIndex].quoteResult = res.data
         quoteData.value[companyIndex].quoteResult = res.data
@@ -3861,11 +3868,6 @@ const setDiscounts = (companyIndex, feeOrders) => {
         commissionRatio: '--',
         commissionRatio: '--',
       },
       },
     ]
     ]
-    // 保存报价结果
-    quoteData.value[companyIndex].quoteResult = res.data
-    quoteData.value[companyIndex].quoteCode = 200
-    loading.value = false
-    quoteData.value[companyIndex].loading = false
   }
   }
 }
 }
 /**
 /**
@@ -4001,7 +4003,7 @@ const ruleFilterCompany = (item: any, obj: any) => {
                 item.failMsg = obj.errorMessage
                 item.failMsg = obj.errorMessage
               }
               }
               insurancePolicyForm.value.order.insuranceCompanyCode = a.id
               insurancePolicyForm.value.order.insuranceCompanyCode = a.id
-              setDiscounts(i, obj.insFeeOrders)
+              setDiscounts(i, obj.insFeeOrders ?? {})
               getSchemeResult(true)
               getSchemeResult(true)
             }
             }
             return a
             return a

+ 50 - 40
src/views/quoteConfig/agreement/agreementAdd.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
   <div>
   <div>
-    <PageMain style="margin-bottom: 96px;" >
+    <PageMain style="margin-bottom: 96px;">
       <ElRow :gutter="60">
       <ElRow :gutter="60">
         <ElCol :md="24" :lg="24" style="padding-bottom: 10px;font-size: 14px;">
         <ElCol :md="24" :lg="24" style="padding-bottom: 10px;font-size: 14px;">
           <span class="strong">协议信息</span>
           <span class="strong">协议信息</span>
@@ -34,23 +34,26 @@
             </el-form-item>
             </el-form-item>
           </ElCol>
           </ElCol>
 
 
-            <ElCol :md="24" :lg="6">
-                <el-form-item label="交强险入口手续费比例" prop="jqEntranceFeeRatio">
-                    <el-input-number v-model="agreementFrom.jqEntranceFeeRatio" placeholder="输入交强险入口手续费比例" :precision="2" :max="99" />
-                </el-form-item>
-            </ElCol>
-            <ElCol :md="24" :lg="6">
-                <el-form-item label="商业险入口手续费比例" prop="syEntranceFeeRatio">
-                    <el-input-number v-model="agreementFrom.syEntranceFeeRatio" placeholder="输入商业险入口手续费比例" :precision="2" :max="99" />
-                </el-form-item>
-            </ElCol>
-            <ElCol :md="24" :lg="6">
-                <el-form-item label="驾意险入口手续费比例" prop="jyEntranceFeeRatio">
-                    <el-input-number v-model="agreementFrom.jyEntranceFeeRatio" placeholder="输入驾意险入口手续费比例" :precision="2" :max="99" />
-                </el-form-item>
-            </ElCol>
+          <ElCol :md="24" :lg="6">
+            <el-form-item label="交强险入口手续费比例" prop="jqEntranceFeeRatio">
+              <el-input-number v-model="agreementFrom.jqEntranceFeeRatio" placeholder="输入交强险入口手续费比例" :precision="2"
+                :max="99" />
+            </el-form-item>
+          </ElCol>
+          <ElCol :md="24" :lg="6">
+            <el-form-item label="商业险入口手续费比例" prop="syEntranceFeeRatio">
+              <el-input-number v-model="agreementFrom.syEntranceFeeRatio" placeholder="输入商业险入口手续费比例" :precision="2"
+                :max="99" />
+            </el-form-item>
+          </ElCol>
+          <ElCol :md="24" :lg="6">
+            <el-form-item label="驾意险入口手续费比例" prop="jyEntranceFeeRatio">
+              <el-input-number v-model="agreementFrom.jyEntranceFeeRatio" placeholder="输入驾意险入口手续费比例" :precision="2"
+                :max="99" />
+            </el-form-item>
+          </ElCol>
 
 
-            <ElCol :md="24" :lg="6">
+          <ElCol :md="24" :lg="6">
             <el-form-item label="是否含增值税结算" prop="withTax">
             <el-form-item label="是否含增值税结算" prop="withTax">
               <el-radio-group v-model="agreementFrom.withTax">
               <el-radio-group v-model="agreementFrom.withTax">
                 <el-radio-button :label="item.label" :value="item.value" v-for="(item, index) in getDict('with_tax')"
                 <el-radio-button :label="item.label" :value="item.value" v-for="(item, index) in getDict('with_tax')"
@@ -82,14 +85,17 @@
             </el-form-item>
             </el-form-item>
           </ElCol>
           </ElCol>
           <ElCol :md="24" :lg="6">
           <ElCol :md="24" :lg="6">
-              <el-form-item label="保险公司" prop="companyId">
-                  <el-cascader v-model="agreementFrom.companyId" style="width: 100%;" filterable clearable :options="companyOptions" :props="companyIdprops" :show-all-levels="false" @change="companyIdChange" />
-              </el-form-item>
+            <el-form-item label="保险公司" prop="companyId">
+              <el-cascader v-model="agreementFrom.companyId" style="width: 100%;" filterable clearable
+                :options="companyOptions" :props="companyIdprops" :show-all-levels="false" @change="companyIdChange" />
+            </el-form-item>
           </ElCol>
           </ElCol>
           <ElCol :md="24" :lg="6">
           <ElCol :md="24" :lg="6">
-              <el-form-item label="合作保险公司" prop="companyId">
-                  <el-cascader v-model="agreementFrom.partnerCompanyId" style="width: 100%;" filterable clearable :options="companyOptions1" :props="companyIdprops" :show-all-levels="false" @change="partnerCompanyIdChange" />
-              </el-form-item>
+            <el-form-item label="合作保险公司" prop="companyId">
+              <el-cascader v-model="agreementFrom.partnerCompanyId" style="width: 100%;" filterable clearable
+                :options="companyOptions1" :props="companyIdprops" :show-all-levels="false"
+                @change="partnerCompanyIdChange" />
+            </el-form-item>
           </ElCol>
           </ElCol>
           <ElCol :md="24" :lg="6">
           <ElCol :md="24" :lg="6">
             <el-form-item label="协议类型" prop="agreementType">
             <el-form-item label="协议类型" prop="agreementType">
@@ -102,7 +108,7 @@
           <ElCol :md="24" :lg="6">
           <ElCol :md="24" :lg="6">
             <el-form-item label="管理人" prop="custodianId">
             <el-form-item label="管理人" prop="custodianId">
               <el-input v-model="managerName" @click="managerModalVisible = true">{{ agreementFrom.custodianId
               <el-input v-model="managerName" @click="managerModalVisible = true">{{ agreementFrom.custodianId
-                }}</el-input>
+              }}</el-input>
             </el-form-item>
             </el-form-item>
           </ElCol>
           </ElCol>
           <ElCol :md="24" :lg="6">
           <ElCol :md="24" :lg="6">
@@ -119,13 +125,14 @@
           <ElCol :md="24" :lg="6">
           <ElCol :md="24" :lg="6">
             <el-form-item label="出单账号" prop="attributionId">
             <el-form-item label="出单账号" prop="attributionId">
               <el-input v-model="attributionName" placeholder="请选择" type="textarea"
               <el-input v-model="attributionName" placeholder="请选择" type="textarea"
-                        @click="orderAccountVisible = true" />
+                @click="orderAccountVisible = true" />
             </el-form-item>
             </el-form-item>
           </ElCol>
           </ElCol>
           <ElCol :md="24" :lg="6">
           <ElCol :md="24" :lg="6">
             <el-form-item label="api类型" prop="apiType">
             <el-form-item label="api类型" prop="apiType">
               <el-select v-model="agreementFrom.apiType">
               <el-select v-model="agreementFrom.apiType">
-                <el-option v-for="item in apiOptions" :label="item.label" :value="item.value" :key="item.value"></el-option>
+                <el-option v-for="item in apiOptions" :label="item.label" :value="item.value"
+                  :key="item.value"></el-option>
               </el-select>
               </el-select>
             </el-form-item>
             </el-form-item>
           </ElCol>
           </ElCol>
@@ -198,6 +205,8 @@ import { Fileonload, formatFileSize, processFileName } from '@/utils/composables
 import { useRoute, useRouter } from 'vue-router';
 import { useRoute, useRouter } from 'vue-router';
 import managerModal from "./components/managerModal.vue";
 import managerModal from "./components/managerModal.vue";
 import orderAccount from "./components/orderAccount.vue";
 import orderAccount from "./components/orderAccount.vue";
+import { emitEvent } from './eventBus.js';
+
 import api from '@/api';
 import api from '@/api';
 const parentIdprops = {
 const parentIdprops = {
   expandTrigger: 'hover' as const,
   expandTrigger: 'hover' as const,
@@ -331,13 +340,13 @@ const agreementFromRules = ref<FormRules>({
     { required: true, trigger: 'change', message: '请选择api类型' },
     { required: true, trigger: 'change', message: '请选择api类型' },
   ],
   ],
   jqEntranceFeeRatio: [
   jqEntranceFeeRatio: [
-      { required: true, trigger: 'blur', message: '请输入交强险入口手续费比例' }
+    { required: true, trigger: 'blur', message: '请输入交强险入口手续费比例' }
   ],
   ],
   syEntranceFeeRatio: [
   syEntranceFeeRatio: [
-      { required: true, trigger: 'blur', message: '请输入商业险入口手续费比例人' }
+    { required: true, trigger: 'blur', message: '请输入商业险入口手续费比例人' }
   ],
   ],
   jyEntranceFeeRatio: [
   jyEntranceFeeRatio: [
-      { required: true, trigger: 'blur', message: '请输入驾意险入口手续费比例' }
+    { required: true, trigger: 'blur', message: '请输入驾意险入口手续费比例' }
   ],
   ],
 });
 });
 onBeforeMount(async () => {
 onBeforeMount(async () => {
@@ -363,10 +372,10 @@ const detailsInfo = () => {
       });
       });
       console.log(res.data.agreement)
       console.log(res.data.agreement)
       imageUrl.value = res.data.agreement.fileUrl
       imageUrl.value = res.data.agreement.fileUrl
-      if(res.data.agreement.fileName){
+      if (res.data.agreement.fileName) {
         imageName.value = processFileName(res.data.agreement.fileName)
         imageName.value = processFileName(res.data.agreement.fileName)
       }
       }
-      fileSize.value = res.data.agreement.fileSize?formatFileSize(res.data.agreement.fileSize):''
+      fileSize.value = res.data.agreement.fileSize ? formatFileSize(res.data.agreement.fileSize) : ''
       managerName.value = res.data.agreement.managerName + ' - ' + res.data.agreement.deptName;
       managerName.value = res.data.agreement.managerName + ' - ' + res.data.agreement.deptName;
       attributionName.value = `用户名:${res.data.agreement.username}\n简称:${res.data.agreement.userAbbr}`;
       attributionName.value = `用户名:${res.data.agreement.username}\n简称:${res.data.agreement.userAbbr}`;
     } else {
     } else {
@@ -379,9 +388,9 @@ const companyIdChange = (value: any) => {
   }
   }
 }
 }
 const partnerCompanyIdChange = (value: any) => {
 const partnerCompanyIdChange = (value: any) => {
-    if (value) {
-        agreementFrom.partnerCompanyId = value[value.length - 1]
-    }
+  if (value) {
+    agreementFrom.partnerCompanyId = value[value.length - 1]
+  }
 }
 }
 const deptIdChange = (value: any) => {
 const deptIdChange = (value: any) => {
   if (value) {
   if (value) {
@@ -434,6 +443,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
               message: res.msg,
               message: res.msg,
               plain: true,
               plain: true,
             })
             })
+            emitEvent('sendData',);
             router.back()
             router.back()
           } else {
           } else {
           }
           }
@@ -446,6 +456,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
               message: res.msg,
               message: res.msg,
               plain: true,
               plain: true,
             })
             })
+            emitEvent('sendData',);
             router.back()
             router.back()
           } else {
           } else {
           }
           }
@@ -482,12 +493,12 @@ const company = () => {
   });
   });
 }
 }
 // 处理公司选项数据,禁用 parentId 不为 0 的选项
 // 处理公司选项数据,禁用 parentId 不为 0 的选项
-function processCompanyOptions(data:any) {
-  const processNodes = (nodes:any[]) => {
-    return nodes.map((node:any) => {
+function processCompanyOptions(data: any) {
+  const processNodes = (nodes: any[]) => {
+    return nodes.map((node: any) => {
       const processedNode = {
       const processedNode = {
         ...node,
         ...node,
-        disabled: node.parentId !=0,
+        disabled: node.parentId != 0,
       };
       };
 
 
       if (node.children && node.children.length > 0) {
       if (node.children && node.children.length > 0) {
@@ -547,7 +558,7 @@ let apiOptions = ref([])
 const getApi = () => {
 const getApi = () => {
   api.commonApi.personInfo('api_type').then(res => {
   api.commonApi.personInfo('api_type').then(res => {
     console.log(123123213123, res.data)
     console.log(123123213123, res.data)
-    if(res.code == 200) {
+    if (res.code == 200) {
       apiOptions.value = res.data
       apiOptions.value = res.data
     } else {
     } else {
       ElMessage({
       ElMessage({
@@ -610,5 +621,4 @@ onMounted(() => {
     }
     }
   }
   }
 }
 }
-
 </style>
 </style>

+ 4 - 5
src/views/quoteConfig/agreement/agreementDetails.vue

@@ -32,7 +32,7 @@
                   getDict('is_enable').find(val => val.value == agreementInfo.isEnable)?.label}}</el-tag>
                   getDict('is_enable').find(val => val.value == agreementInfo.isEnable)?.label}}</el-tag>
                 <el-tag type="success">{{getDict('valid_status').find(val => val.value ==
                 <el-tag type="success">{{getDict('valid_status').find(val => val.value ==
                   agreementInfo.validStatus)?.label
                   agreementInfo.validStatus)?.label
-                }}</el-tag>
+                  }}</el-tag>
               </div>
               </div>
             </div>
             </div>
             <el-descriptions :column="3" style="margin-top: 10px;">
             <el-descriptions :column="3" style="margin-top: 10px;">
@@ -50,9 +50,9 @@
           </div>
           </div>
           <el-descriptions title="基本信息" class="m-top-20" :column="3">
           <el-descriptions title="基本信息" class="m-top-20" :column="3">
             <el-descriptions-item label="协议名称:">{{ agreementInfo.agreementTitle
             <el-descriptions-item label="协议名称:">{{ agreementInfo.agreementTitle
-            }}</el-descriptions-item>
+              }}</el-descriptions-item>
             <el-descriptions-item label="协议简称:">{{ agreementInfo.agreementAbbreviation
             <el-descriptions-item label="协议简称:">{{ agreementInfo.agreementAbbreviation
-            }}</el-descriptions-item>
+              }}</el-descriptions-item>
             <el-descriptions-item label="协议生效时间:">{{ agreementInfo.startDate }}</el-descriptions-item>
             <el-descriptions-item label="协议生效时间:">{{ agreementInfo.startDate }}</el-descriptions-item>
             <el-descriptions-item label="协议失效时间:">{{ agreementInfo.endDate }}</el-descriptions-item>
             <el-descriptions-item label="协议失效时间:">{{ agreementInfo.endDate }}</el-descriptions-item>
             <el-descriptions-item label="是否含增值税结算:">
             <el-descriptions-item label="是否含增值税结算:">
@@ -116,7 +116,7 @@
                   <div class="flex a-c">
                   <div class="flex a-c">
                     <img src="../../../assets/images/fee.png" alt="">
                     <img src="../../../assets/images/fee.png" alt="">
                     <span style="margin-right: 30px;font-size: 16px;" class="strong m-left-10">承保规则一{{ index + 1
                     <span style="margin-right: 30px;font-size: 16px;" class="strong m-left-10">承保规则一{{ index + 1
-                      }}</span>
+                    }}</span>
                   </div>
                   </div>
                   <div class="flex">
                   <div class="flex">
                     <el-button link type="primary" :icon="CopyDocument" @click="handleCopy(item, {})">复制费用</el-button>
                     <el-button link type="primary" :icon="CopyDocument" @click="handleCopy(item, {})">复制费用</el-button>
@@ -898,7 +898,6 @@ const columns = computed(() => [
   },
   },
   {
   {
     prop: "approved", label: "审核状态", width: '200', component: "Tag", filters: getDict('audit_status').map(v => ({ text: v.label, value: Number(v.value) })),
     prop: "approved", label: "审核状态", width: '200', component: "Tag", filters: getDict('audit_status').map(v => ({ text: v.label, value: Number(v.value) })),
-    filteredValue: [1],
     formatter: (row: any) => {
     formatter: (row: any) => {
       let name = getDict('audit_status').find(val => val.value == row.approved).label
       let name = getDict('audit_status').find(val => val.value == row.approved).label
       if (name) {
       if (name) {

+ 16 - 1
src/views/quoteConfig/agreement/agreementIndex.vue

@@ -45,7 +45,8 @@
                 <el-dropdown-item @click="agreemenCopy(scope.operationData.id)">复制协议</el-dropdown-item>
                 <el-dropdown-item @click="agreemenCopy(scope.operationData.id)">复制协议</el-dropdown-item>
                 <el-dropdown-item @click="batchAuthorization(scope.operationData.id)">协议授权</el-dropdown-item>
                 <el-dropdown-item @click="batchAuthorization(scope.operationData.id)">协议授权</el-dropdown-item>
                 <el-dropdown-item @click="cost(scope.operationData.id)">费用管理</el-dropdown-item>
                 <el-dropdown-item @click="cost(scope.operationData.id)">费用管理</el-dropdown-item>
-                <el-dropdown-item @click="operatorTrajectoryRef.operAtorTrajectory(scope.operationData.id)">轨迹查看</el-dropdown-item>
+                <el-dropdown-item
+                  @click="operatorTrajectoryRef.operAtorTrajectory(scope.operationData.id)">轨迹查看</el-dropdown-item>
               </el-dropdown-menu>
               </el-dropdown-menu>
             </template>
             </template>
           </el-dropdown>
           </el-dropdown>
@@ -70,6 +71,8 @@ import { ElMessage, ElMessageBox } from 'element-plus'
 import { loadDicts, getDict } from '@/utils/composables/dictService';//字典组件
 import { loadDicts, getDict } from '@/utils/composables/dictService';//字典组件
 import authDrawer from "./components/agreementAuth.vue";
 import authDrawer from "./components/agreementAuth.vue";
 import operatorTrajectory from "./components/operatorTrajectory.vue";
 import operatorTrajectory from "./components/operatorTrajectory.vue";
+import { onEvent, offEvent } from './eventBus.js';
+
 const operatorTrajectoryRef = ref(null)
 const operatorTrajectoryRef = ref(null)
 import api from '@/api';
 import api from '@/api';
 interface PageInfo {
 interface PageInfo {
@@ -550,6 +553,18 @@ const getDeptTree = () => {
     }
     }
   });
   });
 }
 }
+
+onMounted(() => {
+  // 监听事件,接收数据
+  onEvent('sendData', () => {
+    findpage();
+  });
+});
+
+onUnmounted(() => {
+  // 组件销毁时取消监听,避免内存泄漏
+  offEvent('sendData');
+});
 </script>
 </script>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>

+ 20 - 0
src/views/quoteConfig/agreement/eventBus.js

@@ -0,0 +1,20 @@
+// 定义总线容器
+const bus = ref({});
+
+// 触发事件(发送数据)
+export const emitEvent = (eventName, data) => {
+  // 若有监听该事件的回调,执行并传递数据
+  bus.value[eventName]?.(data);
+};
+
+// 监听事件(接收数据)
+export const onEvent = (eventName, callback) => {
+  // 注册回调函数
+  bus.value[eventName] = callback;
+};
+
+// 取消监听(避免内存泄漏)
+export const offEvent = (eventName) => {
+  // 删除事件回调
+  delete bus.value[eventName];
+};