Ver Fonte

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

@dongkboy há 7 meses atrás
pai
commit
0ada19b489
33 ficheiros alterados com 3241 adições e 1966 exclusões
  1. 1 1
      src/api/index.ts
  2. 3 1
      src/api/modules/agreement.ts
  3. 4 0
      src/api/modules/insurancePolicy.ts
  4. 1 1
      src/api/modules/project.ts
  5. 10 8
      src/components/SearchForm/index.vue
  6. 69 26
      src/components/ruleCondition/index.vue
  7. 17 4
      src/components/ruleConditionContainer/index.vue
  8. 2 2
      src/layouts/components/InsuranceType/index.vue
  9. 72 2
      src/layouts/components/ruleSelect/index.vue
  10. 8 0
      src/router/modules/insurancePolicy.ts
  11. 1591 1498
      src/views/additionalOrder/additional/index.vue
  12. 105 63
      src/views/externalAgreement/agreement/components/contactPersonFeeDialog.vue
  13. 95 48
      src/views/externalAgreement/agreement/components/contactPersonFeeDialogEdit.vue
  14. 6 3
      src/views/externalAgreement/costManagement.vue
  15. 12 12
      src/views/finance/audit.vue
  16. 314 0
      src/views/insurancePolicy/carRules.vue
  17. 202 108
      src/views/insurancePolicy/index.vue
  18. 235 5
      src/views/insurancePolicy/modules/recognition.vue
  19. 10 5
      src/views/insurancePolicy/modules/underwriting.vue
  20. 4 4
      src/views/insurancePolicy/orderDetail.vue
  21. 1 1
      src/views/payCredit/agentCount.vue
  22. 14 3
      src/views/quoteConfig/agreement/agreementDetails.vue
  23. 74 28
      src/views/quoteConfig/agreement/components/ruleFeeDialog.vue
  24. 94 13
      src/views/quoteConfig/agreement/components/ruleFeeDialogEdit.vue
  25. 51 9
      src/views/quoteConfig/costManagement.vue
  26. 7 0
      src/views/quoteConfig/dispatch/components/rule.vue
  27. 20 13
      src/views/quoteConfig/dispatch/index.vue
  28. 21 9
      src/views/quoteConfig/insuranceCompanyAccount/insuranceCompanyAccount.vue
  29. 73 6
      src/views/quoteConfig/project/modules/projectAdd.vue
  30. 1 2
      src/views/receivable/documentary/documentaryRecord.vue
  31. 7 8
      src/views/receivable/documentary/documentaryReport.vue
  32. 76 55
      src/views/receivable/documentary/index.vue
  33. 41 28
      src/views/receivable/handingFee/index.vue

+ 1 - 1
src/api/index.ts

@@ -81,7 +81,7 @@ axiosInstance.interceptors.response.use(
       if (response.data.msg !== '') {
       if (response.data.msg !== '') {
         // 错误提示
         // 错误提示
         Message.error(response.data.msg, {
         Message.error(response.data.msg, {
-          zIndex: 2000,
+          zIndex: 9000,
         })
         })
         return Promise.resolve(response.data)
         return Promise.resolve(response.data)
       }
       }

+ 3 - 1
src/api/modules/agreement.ts

@@ -23,7 +23,9 @@ const agreementApi = (axiosInstance: ApiInstance) => ({
   sysUpAndDown: (data: Types.sysUpAndDownRequest) => axiosInstance.post('agreement/sysUpAndDown', data),
   sysUpAndDown: (data: Types.sysUpAndDownRequest) => axiosInstance.post('agreement/sysUpAndDown', data),
   //批量删除
   //批量删除
   agreementDelete: (ids: any) => axiosInstance.delete(`/agreement/agreementDelete?ids=${ids}`),
   agreementDelete: (ids: any) => axiosInstance.delete(`/agreement/agreementDelete?ids=${ids}`),
-  //获取保险公司数结构
+  // 新的费用批量删除
+  deleteByIds: (data: any) => axiosInstance.post('/ptlAgreementCost/deleteByIds', data),
+//获取保险公司数结构
   findTree: (data: any) => axiosInstance.post('esmInsCompany/findTree', data),
   findTree: (data: any) => axiosInstance.post('esmInsCompany/findTree', data),
   //复制协议
   //复制协议
   agreementCopy: (data: any) => axiosInstance.post('/agreement/agreementCopy', data),
   agreementCopy: (data: any) => axiosInstance.post('/agreement/agreementCopy', data),

+ 4 - 0
src/api/modules/insurancePolicy.ts

@@ -34,6 +34,10 @@ const insurancePolicyApi = (axiosInstance: ApiInstance) => ({
   exportAdjustList: (data: any) => axiosInstance.post(`/adjust/exportAdjustList`, data, {responseType: 'blob'}), // 订单批改导出
   exportAdjustList: (data: any) => axiosInstance.post(`/adjust/exportAdjustList`, data, {responseType: 'blob'}), // 订单批改导出
   verifyOrder: (data: any) => axiosInstance.post(`/adjust/verifyOrder`, data), // 审核批改订单
   verifyOrder: (data: any) => axiosInstance.post(`/adjust/verifyOrder`, data), // 审核批改订单
 
 
+  getNewCarList: (data: any) => axiosInstance.post('newCarJudgeRules/getNewCarList', data), // 新旧车列表
+  addNewCar: (data: any) => axiosInstance.post('newCarJudgeRules/addNewCar', data), // 新增
+  updateNewCar: (data: any) => axiosInstance.post('newCarJudgeRules/updateNewCar', data), // 编辑
+  delNewCar: (data: any) => axiosInstance.post('newCarJudgeRules/delNewCar', data), // 删除
 })
 })
 
 
 export default insurancePolicyApi
 export default insurancePolicyApi

+ 1 - 1
src/api/modules/project.ts

@@ -11,7 +11,7 @@ export interface GetSchemeList {
 }
 }
 
 
 const projectApi = (axiosInstance: ApiInstance) => ({
 const projectApi = (axiosInstance: ApiInstance) => ({
-  getBusinessInsurance: () => axiosInstance.get('/scheme/getBusinessInsurance'), // 险种
+  getBusinessInsurance: (data?: any) => axiosInstance.get(`/scheme/getBusinessInsurance?productId=${data}`), // 险种
   getScheme: (data: string | null | LocationQueryValue[]) => axiosInstance.get(`/scheme/getScheme?id=${data}`), // 详情
   getScheme: (data: string | null | LocationQueryValue[]) => axiosInstance.get(`/scheme/getScheme?id=${data}`), // 详情
   getSchemeList: (data: GetSchemeList) => axiosInstance.post('/scheme/getSchemeList', data), // 险种
   getSchemeList: (data: GetSchemeList) => axiosInstance.post('/scheme/getSchemeList', data), // 险种
   jyxList: (data: { company: string }) => axiosInstance.post('/jyxConfig/jyxList', data), // 驾意险
   jyxList: (data: { company: string }) => axiosInstance.post('/jyxConfig/jyxList', data), // 驾意险

+ 10 - 8
src/components/SearchForm/index.vue

@@ -51,6 +51,7 @@ const props = withDefaults(defineProps<{
     label: string; // 字段标签
     label: string; // 字段标签
     model: string; // v-model 绑定的字段名
     model: string; // v-model 绑定的字段名
     type: string; // 字段类型 ('input', 'select', 'cascader', 'date')
     type: string; // 字段类型 ('input', 'select', 'cascader', 'date')
+    filterable?: boolean; // 是否支持筛选
     placeholder?: string; // 占位符
     placeholder?: string; // 占位符
     options?: Array<{ [key: string]: any }>; // 选项列表
     options?: Array<{ [key: string]: any }>; // 选项列表
     props?: any; // Cascader 组件的其他 props
     props?: any; // Cascader 组件的其他 props
@@ -72,6 +73,7 @@ const props = withDefaults(defineProps<{
 }>(), {
 }>(), {
   span: 8,
   span: 8,
   isOffset: false,
   isOffset: false,
+  filterable: false
 });
 });
 
 
 const windowWidth = ref(window.innerWidth);
 const windowWidth = ref(window.innerWidth);
@@ -103,14 +105,14 @@ const btnOffset = computed(() => {
   const spanPerItem = props.span; // 每列的span
   const spanPerItem = props.span; // 每列的span
   const itemsOnLastRow = items % columns;
   const itemsOnLastRow = items % columns;
 
 
-  if (itemsOnLastRow === 0) {
-    // 如果刚好占满最后一行,按钮就需要另起一行,并偏移3个位置
-    return (columns - 1) * spanPerItem;
-  } else {
-    // 如果最后一行没占满,计算需要空出的位置数量
-    const emptySlots = columns - 1 - itemsOnLastRow;
-    return emptySlots * spanPerItem;
-  }
+	if (itemsOnLastRow === 0) {
+		// 如果刚好占满最后一行,按钮就需要另起一行,并偏移3个位置
+		return (columns - 1) * spanPerItem;
+	} else {
+		// 如果最后一行没占满,计算需要空出的位置数量
+		const emptySlots = columns - 1 - itemsOnLastRow;
+		return emptySlots * spanPerItem;
+	}
 });
 });
 
 
 const handleSearch = () => {
 const handleSearch = () => {

+ 69 - 26
src/components/ruleCondition/index.vue

@@ -8,7 +8,7 @@
             @keydown.enter="handleEnter" @clear="ruleAttr" />
             @keydown.enter="handleEnter" @clear="ruleAttr" />
           <el-button @click="ruleAttr" type="primary">查找</el-button>
           <el-button @click="ruleAttr" type="primary">查找</el-button>
         </div>
         </div>
-        <div class="conditionSet flex ">
+        <div class="conditionSet flex " v-if="searchShow">
           <div class="tabLeft">
           <div class="tabLeft">
             <ul>
             <ul>
               <li :class="{ active: item.name == activename }" v-for="(item, index) in typeList" :key="index"
               <li :class="{ active: item.name == activename }" v-for="(item, index) in typeList" :key="index"
@@ -44,6 +44,12 @@
             </el-checkbox-group>
             </el-checkbox-group>
           </div>
           </div>
         </div>
         </div>
+        <div class="selectList" v-else>
+            <el-checkbox-group v-model="checked.SearchDataStore" @change="change($event, 'SearchDataStore')"
+                               v-for="(item, index) in dataStore.SearchDataStore" :key="index">
+                <el-checkbox v-model="item.id" :label="item.attrName" :value="item.attrName" size="large" />
+            </el-checkbox-group>
+        </div>
       </div>
       </div>
       <template #footer>
       <template #footer>
         <div class="dialog-footer">
         <div class="dialog-footer">
@@ -81,13 +87,19 @@ watch(props, () => {
     attractivelist.value = props.attrIdList;//获取编辑数据
     attractivelist.value = props.attrIdList;//获取编辑数据
     const matchedid = matchDataByIds(attractivelist.value);//
     const matchedid = matchDataByIds(attractivelist.value);//
     const matchedinfo = matchDataByInfos(attractivelist.value)
     const matchedinfo = matchDataByInfos(attractivelist.value)
+      console.log('编辑的数据: attractivelist', attractivelist.value)
+      console.log('编辑的数据: matchedid', matchedid)
+      console.log('编辑的数据: matchedinfo', matchedinfo)
     Object.keys(checked).forEach(key => { //复选框回显
     Object.keys(checked).forEach(key => { //复选框回显
       checked[key as keyof checkeddata] = matchedid[key] || [];
       checked[key as keyof checkeddata] = matchedid[key] || [];
     });
     });
     Object.keys(checked).forEach(key => {//条件数据回显
     Object.keys(checked).forEach(key => {//条件数据回显
       checkeddata[key as keyof checkeddata] = matchedinfo[key] || [];
       checkeddata[key as keyof checkeddata] = matchedinfo[key] || [];
     });
     });
-
+    checkeddata['SearchDataStore'] = attractivelist.value
+    checked['SearchDataStore'] = attractivelist.value?.map(item => {
+        return item.attrName
+    })
   }
   }
 
 
 })
 })
@@ -101,27 +113,27 @@ const save = () => {
     ...checkeddata.InsuranceInformation,
     ...checkeddata.InsuranceInformation,
     ...checkeddata.InsuranceCostFactor,
     ...checkeddata.InsuranceCostFactor,
   ]
   ]
-    // let arr = [...props.attrIdList, ...mergedData]
+    let arr = props.attrIdList?[...props.attrIdList, ...mergedData]: mergedData
     // console.log('原有的', props.attrIdList)
     // console.log('原有的', props.attrIdList)
     // console.log('新选的', mergedData)
     // console.log('新选的', mergedData)
     // console.log('合并的', arr)
     // console.log('合并的', arr)
-    // let brr = arr.reduce((acc, current) => {
-    //     const a = acc.find(item => item.id === current.id)
-    //     if(!a) {
-    //         return acc.concat([current])
-    //     } else {
-    //         return acc
-    //     }
-    // }, [])
+    let brr = arr.reduce((acc, current) => {
+        const a = acc.find(item => item.attrCode === current.attrCode)
+        if(!a) {
+            return acc.concat([current])
+        } else {
+            return acc
+        }
+    }, [])
     // console.log('去重的', brr)
     // console.log('去重的', brr)
-  if (mergedData.length == 0) {
+  if (brr.length == 0) {
     return ElMessage({
     return ElMessage({
       type: 'error',
       type: 'error',
       message: '至少选一个',
       message: '至少选一个',
       plain: true,
       plain: true,
     })
     })
   }
   }
-  emits("save", mergedData)// 返回已选集合
+  emits("save", brr)// 返回已选集合
 }
 }
 const attractivelist = ref();
 const attractivelist = ref();
 const attrName = ref();
 const attrName = ref();
@@ -133,6 +145,7 @@ const checked = reactive<checkeddata>({
   InsuredInformation: [],//车主信息
   InsuredInformation: [],//车主信息
   InsuranceInformation: [], //车主信息
   InsuranceInformation: [], //车主信息
   InsuranceCostFactor: [],//保司费用因子
   InsuranceCostFactor: [],//保司费用因子
+  SearchDataStore: []
 })
 })
 const licensePlateRegion = ref();//车牌地区
 const licensePlateRegion = ref();//车牌地区
 const licensePlateNumber = ref();//车牌号
 const licensePlateNumber = ref();//车牌号
@@ -208,6 +221,7 @@ const dataStore = reactive<dataStore>({
     InsuredInformation: [],//车主信息
     InsuredInformation: [],//车主信息
     InsuranceInformation: [], //车主信息
     InsuranceInformation: [], //车主信息
     InsuranceCostFactor: [],//保司费用因子
     InsuranceCostFactor: [],//保司费用因子
+    SearchDataStore: [], // 搜索后合并的数据
 })
 })
 interface checkeddata {
 interface checkeddata {
   [key: string]: any[]
   [key: string]: any[]
@@ -219,6 +233,7 @@ const checkeddata = reactive<checkeddata>({
   InsuredInformation: [],//车主信息
   InsuredInformation: [],//车主信息
   InsuranceInformation: [], //车主信息
   InsuranceInformation: [], //车主信息
   InsuranceCostFactor: [],//保司费用因子
   InsuranceCostFactor: [],//保司费用因子
+  SearchDataStore: [], // 搜索后合并的数据
 });
 });
 //已勾选的规则集合
 //已勾选的规则集合
 interface VehicleInformation {
 interface VehicleInformation {
@@ -232,16 +247,25 @@ interface dataStore {
     InsuredInformation: VehicleInformation[],
     InsuredInformation: VehicleInformation[],
     InsuranceInformation: VehicleInformation[],
     InsuranceInformation: VehicleInformation[],
     InsuranceCostFactor: VehicleInformation[],
     InsuranceCostFactor: VehicleInformation[],
+    SearchDataStore: VehicleInformation[],
 }
 }
 
 
 onMounted(() => {
 onMounted(() => {
-  ruleAttr();
+  // ruleAttr();
   regionLicenseRegion('0');//车牌地区
   regionLicenseRegion('0');//车牌地区
   regionLicenseNumber('14');//车牌号
   regionLicenseNumber('14');//车牌号
+
 })
 })
 
 
-const ruleAttr = () => {
-  api.agreementApi.ruleAttrGroup({ attrName: attrName.value }).then((res: any) => {
+
+let searchShow = ref(true)
+const ruleAttr = (id) => {
+    if(attrName.value) {
+        searchShow.value = false
+    } else {
+        searchShow.value = true
+    }
+  api.agreementApi.ruleAttrGroup({ attrName: attrName.value, companyId: id }).then((res: any) => {
     if (res.code == '200') {
     if (res.code == '200') {
       dataStore.VehicleInformation = res.data.VehicleInformation ? processArray(res.data.VehicleInformation) : [];
       dataStore.VehicleInformation = res.data.VehicleInformation ? processArray(res.data.VehicleInformation) : [];
       dataStore.VehicleOwnerInformation = res.data.VehicleOwnerInformation ? processArray(res.data.VehicleOwnerInformation) : [];
       dataStore.VehicleOwnerInformation = res.data.VehicleOwnerInformation ? processArray(res.data.VehicleOwnerInformation) : [];
@@ -249,13 +273,13 @@ const ruleAttr = () => {
       dataStore.InsuredInformation = res.data.InsuredInformation ? processArray(res.data.InsuredInformation) : [];
       dataStore.InsuredInformation = res.data.InsuredInformation ? processArray(res.data.InsuredInformation) : [];
       dataStore.InsuranceInformation = res.data.InsuranceInformation ? processArray(res.data.InsuranceInformation) : [];
       dataStore.InsuranceInformation = res.data.InsuranceInformation ? processArray(res.data.InsuranceInformation) : [];
       dataStore.InsuranceCostFactor = res.data.InsuranceCostFactor ? processArray(res.data.InsuranceCostFactor) : [];
       dataStore.InsuranceCostFactor = res.data.InsuranceCostFactor ? processArray(res.data.InsuranceCostFactor) : [];
+      dataStore.SearchDataStore = [...dataStore.VehicleInformation, ...dataStore.VehicleOwnerInformation, ...dataStore.PolicyholderInformation, ...dataStore.InsuredInformation, ...dataStore.InsuranceInformation, ...dataStore.InsuranceCostFactor ]
     }
     }
   });
   });
 }
 }
 //选择事件集中处理
 //选择事件集中处理
 type title = keyof typeof dataStore;
 type title = keyof typeof dataStore;
 const change = (value: any, title: title) => {
 const change = (value: any, title: title) => {
-    console.log('选择了?', value)
   // 使用动态属性访问
   // 使用动态属性访问
   let arrayToUpdate = dataStore[title];//获取对应类型数组
   let arrayToUpdate = dataStore[title];//获取对应类型数组
   if (arrayToUpdate) {
   if (arrayToUpdate) {
@@ -268,6 +292,16 @@ const change = (value: any, title: title) => {
       })
       })
       return val;
       return val;
     });
     });
+      if(title === 'SearchDataStore' && checkeddata['SearchDataStore'].length > 0) {
+          const matchedid = matchDataByIds(checkeddata['SearchDataStore']);//
+          const matchedinfo = matchDataByInfos(checkeddata['SearchDataStore'])
+          Object.keys(checked).forEach(key => { //复选框回显
+              checked[key as keyof checkeddata] = matchedid[key] || [];
+          });
+          Object.keys(checked).forEach(key => {//条件数据回显
+              checkeddata[key as keyof checkeddata] = matchedinfo[key] || [];
+          });
+      }
   } else {
   } else {
 
 
   }
   }
@@ -275,16 +309,16 @@ const change = (value: any, title: title) => {
 // 遍历并处理每个数组
 // 遍历并处理每个数组
 const processArray = (array: any[]) => {
 const processArray = (array: any[]) => {
   return array?.map((val) => {
   return array?.map((val) => {
-    switch (val.attrType) {
-      case 'inputNumber':
-      case 'datetime':
-        if (!val.operator) {
+      if (!val.operator) {
           val.operator = '1'; // 设置默认值
           val.operator = '1'; // 设置默认值
-        }
-        break;
-      default:
-        break;
-    }
+      }
+    // switch (val.attrType) {
+    //   case 'inputNumber':
+    //   case 'datetime':
+    //     break;
+    //   default:
+    //     break;
+    // }
     if (val.attrCode == 'LicenseNo') {
     if (val.attrCode == 'LicenseNo') {
       val.dictLabal = licensePlateNumber.value;
       val.dictLabal = licensePlateNumber.value;
     }
     }
@@ -332,6 +366,10 @@ const regionLicenseNumber = (value: string) => {
     }
     }
   });
   });
 }
 }
+
+defineExpose({
+    ruleAttr
+})
 </script>
 </script>
 <!-- 样式区域 -->
 <!-- 样式区域 -->
 <style lang='scss' scoped>
 <style lang='scss' scoped>
@@ -376,4 +414,9 @@ const regionLicenseNumber = (value: string) => {
     overflow-y: auto;
     overflow-y: auto;
   }
   }
 }
 }
+.selectList{
+  max-height: 300px;
+  padding: 0 20px;
+  overflow-y: auto;
+}
 </style>
 </style>

+ 17 - 4
src/components/ruleConditionContainer/index.vue

@@ -7,9 +7,8 @@
           <el-input v-model="item.attrName" disabled />
           <el-input v-model="item.attrName" disabled />
         </el-col>
         </el-col>
         <el-col :span="3">
         <el-col :span="3">
-          <el-select v-model="item.operator" placeholder="运算符" style="width: 100px; margin: 0 10px;"
-            :disabled="item.attrType !== 'inputNumber' && item.attrType !== 'datetime' && item.attrType !== 'inputTag'">
-            <template v-if="item.attrType == 'inputTag'">
+          <el-select v-model="item.operator" placeholder="运算符" style="width: 100px; margin: 0 10px;">
+            <template v-if="item.attrType == 'inputTag' || item.attrType == 'checkbox' || item.attrType == 'select'">
               <el-option label="包含" value="1"></el-option>
               <el-option label="包含" value="1"></el-option>
               <el-option label="不包含" value="2"></el-option>
               <el-option label="不包含" value="2"></el-option>
             </template>
             </template>
@@ -19,7 +18,7 @@
             </template>
             </template>
           </el-select>
           </el-select>
         </el-col>
         </el-col>
-        <el-col :span="15">
+        <el-col :span="13">
           <template v-if="item.attrType == 'radio'" >
           <template v-if="item.attrType == 'radio'" >
             <el-select v-model="item.min" placeholder="选择值" clearable filterable :disabled="disabled">
             <el-select v-model="item.min" placeholder="选择值" clearable filterable :disabled="disabled">
               <el-option v-for="dictLabalitem in item.dictLabal" :key="dictLabalitem.id" :label="dictLabalitem.name"
               <el-option v-for="dictLabalitem in item.dictLabal" :key="dictLabalitem.id" :label="dictLabalitem.name"
@@ -128,6 +127,9 @@
             <Delete />
             <Delete />
           </el-icon>
           </el-icon>
         </el-col>
         </el-col>
+          <el-col :span="2">
+              <el-checkbox v-if="item.attrName === '车牌号'" @change="licenseNoSelect($event, item)">全选</el-checkbox>
+          </el-col>
       </el-row>
       </el-row>
     </div>
     </div>
   </div>
   </div>
@@ -148,6 +150,17 @@ const attrDel = (index: number) => {
 const change = (e: string[] | undefined, index: number) => {
 const change = (e: string[] | undefined, index: number) => {
   emits('selectChange', { e, index })
   emits('selectChange', { e, index })
 }
 }
+
+const licenseNoSelect = (e, item) => {
+    if(e) {
+        item.minArray = item.dictLabal.map(a => {
+            return a.name
+        })
+    } else {
+        item.minArray = []
+    }
+}
+
 onMounted(() => {
 onMounted(() => {
   console.log('规则数据', props.rulesAttrList)
   console.log('规则数据', props.rulesAttrList)
 })
 })

+ 2 - 2
src/layouts/components/InsuranceType/index.vue

@@ -120,11 +120,11 @@ const handleConfirm = () => {
 
 
 // 修改数据
 // 修改数据
 let editIndex = ref(0)
 let editIndex = ref(0)
-const initEditData = (data, index, type) => {
+const initEditData = (data, index, type, productId) => {
   editIndex.value = index
   editIndex.value = index
   insuranceType.value = type
   insuranceType.value = type
     console.log('选择好的数据', data)
     console.log('选择好的数据', data)
-  api.projectApi.getBusinessInsurance().then(res => {
+  api.projectApi.getBusinessInsurance(productId).then(res => {
     if(res.code == 200) {
     if(res.code == 200) {
       if(res.data&&res.data.length>0) {
       if(res.data&&res.data.length>0) {
         choiceItem.value = res.data[0]
         choiceItem.value = res.data[0]

+ 72 - 2
src/layouts/components/ruleSelect/index.vue

@@ -7,7 +7,7 @@
                 </template>
                 </template>
             </el-input>
             </el-input>
         </div>
         </div>
-        <div class="content">
+        <div class="content" v-if="searchShow">
             <div class="types">
             <div class="types">
                 <div class="typesItem" :class="{'active': itemIndex === index}" v-for="(item, index) in typeList" :key="index" @click="handleItemClick(item, index)">
                 <div class="typesItem" :class="{'active': itemIndex === index}" v-for="(item, index) in typeList" :key="index" @click="handleItemClick(item, index)">
                     {{ item.name }}
                     {{ item.name }}
@@ -23,6 +23,14 @@
                 </div>
                 </div>
             </template>
             </template>
         </div>
         </div>
+        <div class="content" v-else>
+            <div class="searchList">
+                <div class="selectItem" :class="{'active': item.checked}" v-for="(item,index) in searchDataStore" :key="index" @click="handleSearchClick(item, index)">
+                    <el-icon class="icon"><Select v-show="item.checked" /></el-icon>
+                    <span>{{ item.attrName }}</span>
+                </div>
+            </div>
+        </div>
         <div class="footer">
         <div class="footer">
             <el-button @click="handleCancel">取消</el-button>
             <el-button @click="handleCancel">取消</el-button>
             <el-button type="primary" @click="handleSubmit">确定</el-button>
             <el-button type="primary" @click="handleSubmit">确定</el-button>
@@ -36,7 +44,13 @@ import api from '@/api'
 const emit = defineEmits(['close'])
 const emit = defineEmits(['close'])
 
 
 let searchValue = ref('')
 let searchValue = ref('')
+let searchShow = ref(true)
 const search = () => {
 const search = () => {
+    if(searchValue.value) {
+        searchShow.value = false
+    } else {
+        searchShow.value = true
+    }
     ruleAttr();
     ruleAttr();
 }
 }
 
 
@@ -76,7 +90,9 @@ let itemIndex = ref(0)
 let selectedList = ref([]) // 初始已选数据
 let selectedList = ref([]) // 初始已选数据
 let selectList = ref([]) // 已选的数据
 let selectList = ref([]) // 已选的数据
 let dataStore = ref([])
 let dataStore = ref([])
+let searchDataStore = ref([])
 const ruleAttr = () => {
 const ruleAttr = () => {
+    searchDataStore.value = []
     api.agreementApi.ruleAttrGroup({ attrName: searchValue.value }).then((res: any) => {
     api.agreementApi.ruleAttrGroup({ attrName: searchValue.value }).then((res: any) => {
         if (res.code == '200') {
         if (res.code == '200') {
             let arr = typeList.value
             let arr = typeList.value
@@ -87,6 +103,7 @@ const ruleAttr = () => {
             dataStore.value.forEach(a => {
             dataStore.value.forEach(a => {
                 a.list?.forEach(b => {
                 a.list?.forEach(b => {
                     b.checked = false
                     b.checked = false
+                    searchDataStore.value.push(b)
                     selectList.value.forEach(c => {
                     selectList.value.forEach(c => {
                         if(c.attrName === b.attrName) {
                         if(c.attrName === b.attrName) {
                             b.checked = true
                             b.checked = true
@@ -108,9 +125,29 @@ const handleSubClick = (item, index) => {
         selectList.value = selectList.value.filter(a => a.attrName != item.attrName)
         selectList.value = selectList.value.filter(a => a.attrName != item.attrName)
     }
     }
 }
 }
+const handleSearchClick = (item, index) => {
+    item.checked = !item.checked
+    if(item.checked) {
+        selectList.value.push(item)
+    } else {
+        selectList.value = selectList.value.filter(a => a.attrName != item.attrName)
+    }
+    dataStore.value.forEach(a => {
+        a.list?.forEach(b => {
+            b.checked = false
+            searchDataStore.value.push(b)
+            selectList.value.forEach(c => {
+                if(c.attrName === b.attrName) {
+                    b.checked = true
+                }
+            })
+        })
+    })
+}
 
 
 // 取消
 // 取消
 const handleCancel = () => {
 const handleCancel = () => {
+    searchShow.value = true
     emit('close', selectedList.value)
     emit('close', selectedList.value)
 }
 }
 // 确定
 // 确定
@@ -123,7 +160,17 @@ const handleSubmit = () => {
             }
             }
         })
         })
     })
     })
-    emit('close', arr)
+    let brr = [...selectedList.value, ...arr]
+    let crr = brr.reduce((acc, current) => {
+        const a = acc.find(item => item.attrCode === current.attrCode)
+        if(!a) {
+            return acc.concat([current])
+        } else {
+            return acc
+        }
+    }, [])
+    searchShow.value = true
+    emit('close', crr)
 }
 }
 
 
 const initEditData = (data) => {
 const initEditData = (data) => {
@@ -211,6 +258,29 @@ defineExpose({
 
 
             }
             }
         }
         }
+        .searchList {
+            max-height: 260px;
+            overflow-y: auto;
+            width: 100%;
+            .selectItem{
+                display: flex;
+                align-items: center;
+                justify-content: flex-start;
+                cursor: pointer;
+                .icon{
+                    border: 1px solid #ccc;
+                    margin: 5px;
+                }
+            }
+            .active{
+                .icon{
+                    background: #0083ff;
+                    border-color: #0083ff;
+                    color: #FFFFFF;
+                }
+
+            }
+        }
     }
     }
     .footer{
     .footer{
         display: flex;
         display: flex;

+ 8 - 0
src/router/modules/insurancePolicy.ts

@@ -82,6 +82,14 @@ const routes: RouteRecordRaw = {
           },
           },
         }
         }
       ]
       ]
+    },
+    {
+      path: 'carRules',
+      name: 'CarRules',
+      component: () => import('@/views/insurancePolicy/carRules.vue'),
+      meta: {
+        title: '新车规则维护'
+      }
     }
     }
   ],
   ],
 }
 }

Diff do ficheiro suprimidas por serem muito extensas
+ 1591 - 1498
src/views/additionalOrder/additional/index.vue


+ 105 - 63
src/views/externalAgreement/agreement/components/contactPersonFeeDialog.vue

@@ -84,6 +84,11 @@
                       </el-radio-group>
                       </el-radio-group>
                     </el-form-item>
                     </el-form-item>
                   </ElCol>
                   </ElCol>
+                    <ElCol :md="24" :lg="12">
+                        <el-form-item label="优先级" prop="priorityLevel">
+                            <el-input-number style="width: 100%" v-model="item.priorityLevel" placeholder="请填写优先级" />
+                        </el-form-item>
+                    </ElCol>
                   <ElCol :md="24" :lg="24">
                   <ElCol :md="24" :lg="24">
                     <el-form-item label="费用描述" prop="costDescribe">
                     <el-form-item label="费用描述" prop="costDescribe">
                       <el-input v-model="item.costDescribe" maxlength="500" placeholder="请输入费用描述" show-word-limit
                       <el-input v-model="item.costDescribe" maxlength="500" placeholder="请输入费用描述" show-word-limit
@@ -102,54 +107,46 @@
                   </div>
                   </div>
                 </template>
                 </template>
                 <el-table-column prop="costType" label="类型"></el-table-column>
                 <el-table-column prop="costType" label="类型"></el-table-column>
-                <el-table-column prop="inlet" label="入口比例" width="180" align="center">
-                  <template #default="scope">
-                    <el-input-number v-model="scope.row.inlet" :precision="2" controls-position="right"
-                      style="width: 100%;" :min="0" :max="100">
-                      <template #suffix>%</template>
-                    </el-input-number>
-                  </template>
-                </el-table-column>
-                <el-table-column prop="export" label="出口比例" width="180" align="center">
-                  <template #default="scope">
-                    <el-input-number v-model="scope.row.export" :precision="2" controls-position="right"
-                      style="width: 100%;" :min="0" :max="100">
-                      <template #suffix>%</template>
-                    </el-input-number>
-                  </template>
-                </el-table-column>
-                <el-table-column prop="totalCost" label="总费用比例" width="180" align="center">
-                  <template #default="scope">
-                    <el-input-number v-model="scope.row.totalCost" :precision="2" controls-position="right"
-                      style="width: 100%;" :min="0" :max="100">
-                      <template #suffix>%</template>
-                    </el-input-number>
-                  </template>
-                </el-table-column>
-                <el-table-column prop="other" label="其他费用比例" width="180" align="center">
-                  <template #default="scope">
-                    <el-input-number v-model="scope.row.other" :precision="2" controls-position="right"
-                      style="width: 100%;" :min="0" :max="100">
-                      <template #suffix>%</template>
-                    </el-input-number>
-                  </template>
-                </el-table-column>
-                <el-table-column prop="level1" label="1级比例" width="180" align="center">
-                  <template #default="scope">
-                    <el-input-number v-model="scope.row.level1" :precision="2" controls-position="right"
-                      style="width: 100%;" :min="0" :max="100">
-                      <template #suffix>%</template>
-                    </el-input-number>
-                  </template>
-                </el-table-column>
-                <el-table-column prop="level5" label="5级比例" width="180" align="center">
-                  <template #default="scope">
-                    <el-input-number v-model="scope.row.level5" :precision="2" controls-position="right"
-                      style="width: 100%;" :min="0" :max="100">
-                      <template #suffix>%</template>
-                    </el-input-number>
-                  </template>
-                </el-table-column>
+                  <el-table-column prop="inlet" label="入口比例" width="180" align="center">
+                      <template #default="scope">
+                          <el-input-number v-model="scope.row.inlet" :precision="2" controls-position="right"
+                                           style="width: 100%;" :min="0" :max="100" @change="handelRK(scope)">
+                              <template #suffix>%</template>
+                          </el-input-number>
+                      </template>
+                  </el-table-column>
+                  <el-table-column prop="export" label="出口比例" width="180" align="center">
+                      <template #default="scope">
+                          <el-input-number v-model="scope.row.export" :precision="2" controls-position="right"
+                                           style="width: 100%;" :min="0" :max="100" @change="handelCK(scope)">
+                              <template #suffix>%</template>
+                          </el-input-number>
+                      </template>
+                  </el-table-column>
+                  <!--                      <el-table-column prop="commission" label="手续费比例" width="180" align="center">
+                                          <template #default="scope">
+                                            <el-input-number v-model="scope.row.commission" :precision="2" controls-position="right"
+                                              style="width: 100%;" :min="0" :max="100">
+                                              <template #suffix>%</template>
+                                            </el-input-number>
+                                          </template>
+                                        </el-table-column>-->
+                  <el-table-column prop="addThrow" label="加投比例" width="180" align="center">
+                      <template #default="scope">
+                          <el-input-number v-model="scope.row.addThrow" :precision="2" controls-position="right"
+                                           style="width: 100%;" :min="0" :max="100" @change="handelJT(scope)">
+                              <template #suffix>%</template>
+                          </el-input-number>
+                      </template>
+                  </el-table-column>
+                  <el-table-column prop="keepPointRatio" label="留点比例" width="180" align="center">
+                      <template #default="scope">
+                          <el-input-number v-model="scope.row.keepPointRatio" :precision="2" controls-position="right"
+                                           style="width: 100%;" :min="0" :max="100" @change="handelLD(scope)">
+                              <template #suffix>%</template>
+                          </el-input-number>
+                      </template>
+                  </el-table-column>
               </el-table>
               </el-table>
             </el-tab-pane>
             </el-tab-pane>
           </el-tabs>
           </el-tabs>
@@ -225,6 +222,9 @@ const feerules = ref<FormRules>({
   isInquiry: [
   isInquiry: [
     { required: true, trigger: 'change', message: '请选择是否线询' },
     { required: true, trigger: 'change', message: '请选择是否线询' },
   ],
   ],
+    priorityLevel: [
+        { required: true, trigger: 'blur', message: '请填写优先级' },
+    ]
 })
 })
 watch(props, () => {
 watch(props, () => {
   if (props.contactPersonEditInfo && props.contactPersonEditInfo.contactPerson) {
   if (props.contactPersonEditInfo && props.contactPersonEditInfo.contactPerson) {
@@ -336,20 +336,22 @@ const validateContactPerson = () => {
 const save = async (formEl: FormInstance | undefined | any) => {
 const save = async (formEl: FormInstance | undefined | any) => {
   validateContactPerson();
   validateContactPerson();
   if (!formEl) return
   if (!formEl) return
+
   const validationPromises = ruleFeeinfo.ptlAgreementCostExternalAddList.map((formRef: any, index: any) => {
   const validationPromises = ruleFeeinfo.ptlAgreementCostExternalAddList.map((formRef: any, index: any) => {
     // 轮询验证所有表单校验
     // 轮询验证所有表单校验
+      console.log('index', index, typeof index, typeof activeName.value)
     return new Promise((resolve, reject) => {
     return new Promise((resolve, reject) => {
       if (formRef) {
       if (formRef) {
-        formEl[index].validate((valid: boolean) => {
+        formEl[insuranceTypeIndex.value].validate((valid: boolean) => {
           if (valid) {
           if (valid) {
 
 
             resolve(true);
             resolve(true);
           } else {
           } else {
-            reject(index);
+            reject(insuranceTypeIndex.value);
           }
           }
         });
         });
       } else {
       } else {
-        reject(index);
+        reject(insuranceTypeIndex.value);
       }
       }
     });
     });
   });
   });
@@ -378,28 +380,22 @@ const ptlAgreementCostTypeList = [
     costType: "交强险",
     costType: "交强险",
     inlet: 0,
     inlet: 0,
     export: 0,
     export: 0,
-    totalCost: 0,
-    other: 0,
-    level1: 0,
-    level5: 0,
+    addThrow: 0,
+    keepPointRatio: 0
   },
   },
   {
   {
     costType: "商业险",
     costType: "商业险",
     inlet: 0,
     inlet: 0,
     export: 0,
     export: 0,
-    totalCost: 0,
-    other: 0,
-    level1: 0,
-    level5: 0,
+    addThrow: 0,
+    keepPointRatio: 0
   },
   },
   {
   {
     costType: "驾意险",
     costType: "驾意险",
     inlet: 0,
     inlet: 0,
     export: 0,
     export: 0,
-    totalCost: 0,
-    other: 0,
-    level1: 0,
-    level5: 0,
+    addThrow: 0,
+    keepPointRatio: 0
   }
   }
 ];
 ];
 
 
@@ -448,6 +444,52 @@ const draweropen = () => {
   }
   }
 
 
 }
 }
+
+
+const handelRK = (scope) => {
+    if(scope.row.export&&scope.row.addThrow || scope.row.export&&scope.row.addThrow === 0) {
+        scope.row.keepPointRatio = scope.row.inlet + scope.row.addThrow - scope.row.export
+    }
+    if(scope.row.export&&scope.row.keepPointRatio) {
+        scope.row.addThrow = scope.row.export + scope.row.keepPointRatio - scope.row.inlet
+    }
+    if(scope.row.keepPointRatio&&scope.row.addThrow || scope.row.keepPointRatio&&scope.row.addThrow === 0) {
+        scope.row.export = scope.row.inlet + scope.row.addThrow - scope.row.keepPointRatio
+    }
+}
+const handelCK = (scope) => {
+    if(scope.row.inlet&&scope.row.addThrow || scope.row.inlet&&scope.row.addThrow === 0) {
+        scope.row.keepPointRatio = scope.row.inlet + scope.row.addThrow - scope.row.export
+    }
+    if(scope.row.inlet&&scope.row.keepPointRatio) {
+        scope.row.addThrow = scope.row.export + scope.row.keepPointRatio - scope.row.inlet
+    }
+    if(scope.row.keepPointRatio&&scope.row.addThrow || scope.row.keepPointRatio&&scope.row.addThrow === 0) {
+        scope.row.inlet = scope.row.export + scope.row.keepPointRatio - scope.row.addThrow
+    }
+}
+const handelJT = (scope) => {
+    if(scope.row.inlet&&scope.row.export) {
+        scope.row.keepPointRatio = scope.row.inlet + scope.row.addThrow - scope.row.export
+    }
+    if(scope.row.inlet&&scope.row.keepPointRatio) {
+        scope.row.export = scope.row.addThrow + scope.row.inlet - scope.row.keepPointRatio
+    }
+    if(scope.row.keepPointRatio&&scope.row.export) {
+        scope.row.inlet = scope.row.export + scope.row.keepPointRatio - scope.row.addThrow
+    }
+}
+const handelLD = (scope) => {
+    if(scope.row.inlet&&scope.row.export) {
+        scope.row.addThrow = scope.row.export + scope.row.keepPointRatio - scope.row.inlet
+    }
+    if(scope.row.inlet&&scope.row.addThrow || scope.row.inlet&&scope.row.addThrow === 0) {
+        scope.row.export = scope.row.addThrow + scope.row.inlet - scope.row.keepPointRatio
+    }
+    if(scope.row.addThrow&&scope.row.export || scope.row.addThrow === 0&&scope.row.export) {
+        scope.row.inlet = scope.row.export + scope.row.keepPointRatio - scope.row.addThrow
+    }
+}
 </script>
 </script>
 <!-- 样式区域 -->
 <!-- 样式区域 -->
 <style lang='scss' scoped>
 <style lang='scss' scoped>

+ 95 - 48
src/views/externalAgreement/agreement/components/contactPersonFeeDialogEdit.vue

@@ -61,6 +61,11 @@
                 </el-radio-group>
                 </el-radio-group>
               </el-form-item>
               </el-form-item>
             </ElCol>
             </ElCol>
+              <ElCol :md="24" :lg="12">
+                  <el-form-item label="优先级" prop="priorityLevel">
+                      <el-input-number style="width: 100%" v-model="contactPersonEditInfo.priorityLevel" placeholder="请填写优先级" />
+                  </el-form-item>
+              </ElCol>
             <ElCol :md="24" :lg="24">
             <ElCol :md="24" :lg="24">
               <el-form-item label="费用描述" prop="costDescribe">
               <el-form-item label="费用描述" prop="costDescribe">
                 <el-input v-model="contactPersonEditInfo.costDescribe" maxlength="500" placeholder="请输入费用描述"
                 <el-input v-model="contactPersonEditInfo.costDescribe" maxlength="500" placeholder="请输入费用描述"
@@ -78,54 +83,46 @@
             </div>
             </div>
           </template>
           </template>
           <el-table-column prop="costType" label="类型"></el-table-column>
           <el-table-column prop="costType" label="类型"></el-table-column>
-          <el-table-column prop="inlet" label="入口比例" width="180" align="center">
-            <template #default="scope">
-              <el-input-number v-model="scope.row.inlet" :disabled="disabledShow" :precision="2" controls-position="right" style="width: 100%;"
-                :min="0" :max="100">
-                <template #suffix>%</template>
-              </el-input-number>
-            </template>
-          </el-table-column>
-          <el-table-column prop="export" label="出口比例" width="180" align="center">
-            <template #default="scope">
-              <el-input-number v-model="scope.row.export" :disabled="disabledShow" :precision="2" controls-position="right" style="width: 100%;"
-                :min="0" :max="100">
-                <template #suffix>%</template>
-              </el-input-number>
-            </template>
-          </el-table-column>
-          <el-table-column prop="totalCost" label="总费用比例" width="180" align="center">
-            <template #default="scope">
-              <el-input-number v-model="scope.row.totalCost" :disabled="disabledShow" :precision="2" controls-position="right"
-                style="width: 100%;" :min="0" :max="100">
-                <template #suffix>%</template>
-              </el-input-number>
-            </template>
-          </el-table-column>
-          <el-table-column prop="other" label="其他费用比例" width="180" align="center">
-            <template #default="scope">
-              <el-input-number v-model="scope.row.other" :disabled="disabledShow" :precision="2" controls-position="right" style="width: 100%;"
-                :min="0" :max="100">
-                <template #suffix>%</template>
-              </el-input-number>
-            </template>
-          </el-table-column>
-          <el-table-column prop="level1" label="1级比例" width="180" align="center">
-            <template #default="scope">
-              <el-input-number v-model="scope.row.level1" :disabled="disabledShow" :precision="2" controls-position="right" style="width: 100%;"
-                :min="0" :max="100">
-                <template #suffix>%</template>
-              </el-input-number>
-            </template>
-          </el-table-column>
-          <el-table-column prop="level5" label="5级比例" width="180" align="center">
-            <template #default="scope">
-              <el-input-number v-model="scope.row.level5" :disabled="disabledShow" :precision="2" controls-position="right" style="width: 100%;"
-                :min="0" :max="100">
-                <template #suffix>%</template>
-              </el-input-number>
-            </template>
-          </el-table-column>
+            <el-table-column prop="inlet" label="入口比例" width="180" align="center">
+                <template #default="scope">
+                    <el-input-number v-model="scope.row.inlet" :precision="2" controls-position="right"
+                                     style="width: 100%;" :min="0" :max="100" @change="handelRK(scope)">
+                        <template #suffix>%</template>
+                    </el-input-number>
+                </template>
+            </el-table-column>
+            <el-table-column prop="export" label="出口比例" width="180" align="center">
+                <template #default="scope">
+                    <el-input-number v-model="scope.row.export" :precision="2" controls-position="right"
+                                     style="width: 100%;" :min="0" :max="100" @change="handelCK(scope)">
+                        <template #suffix>%</template>
+                    </el-input-number>
+                </template>
+            </el-table-column>
+            <!--                      <el-table-column prop="commission" label="手续费比例" width="180" align="center">
+                                    <template #default="scope">
+                                      <el-input-number v-model="scope.row.commission" :precision="2" controls-position="right"
+                                        style="width: 100%;" :min="0" :max="100">
+                                        <template #suffix>%</template>
+                                      </el-input-number>
+                                    </template>
+                                  </el-table-column>-->
+            <el-table-column prop="addThrow" label="加投比例" width="180" align="center">
+                <template #default="scope">
+                    <el-input-number v-model="scope.row.addThrow" :precision="2" controls-position="right"
+                                     style="width: 100%;" :min="0" :max="100" @change="handelJT(scope)">
+                        <template #suffix>%</template>
+                    </el-input-number>
+                </template>
+            </el-table-column>
+            <el-table-column prop="keepPointRatio" label="留点比例" width="180" align="center">
+                <template #default="scope">
+                    <el-input-number v-model="scope.row.keepPointRatio" :precision="2" controls-position="right"
+                                     style="width: 100%;" :min="0" :max="100" @change="handelLD(scope)">
+                        <template #suffix>%</template>
+                    </el-input-number>
+                </template>
+            </el-table-column>
         </el-table>
         </el-table>
       </template>
       </template>
       <template #footer>
       <template #footer>
@@ -193,6 +190,9 @@ const feerules = ref<FormRules>({
   isInquiry: [
   isInquiry: [
     { required: true, trigger: 'change', message: '请选择是否线询' },
     { required: true, trigger: 'change', message: '请选择是否线询' },
   ],
   ],
+    priorityLevel: [
+        { required: true, trigger: 'blur', message: '请填写优先级' },
+    ]
 })
 })
 // 禁用失效时间选择
 // 禁用失效时间选择
 const disabledEndDate = (date: any) => {
 const disabledEndDate = (date: any) => {
@@ -253,6 +253,53 @@ const rejectOperation = () => {
 const auditOperation = () => {
 const auditOperation = () => {
   emits("auditOperation", automatic.value,contactPersonEditInfo.value.id)
   emits("auditOperation", automatic.value,contactPersonEditInfo.value.id)
 }
 }
+
+
+const handelRK = (scope) => {
+    if(scope.row.export&&scope.row.addThrow || scope.row.export&&scope.row.addThrow === 0) {
+        scope.row.keepPointRatio = scope.row.inlet + scope.row.addThrow - scope.row.export
+    }
+    if(scope.row.export&&scope.row.keepPointRatio) {
+        scope.row.addThrow = scope.row.export + scope.row.keepPointRatio - scope.row.inlet
+    }
+    if(scope.row.keepPointRatio&&scope.row.addThrow || scope.row.keepPointRatio&&scope.row.addThrow === 0) {
+        scope.row.export = scope.row.inlet + scope.row.addThrow - scope.row.keepPointRatio
+    }
+}
+const handelCK = (scope) => {
+    if(scope.row.inlet&&scope.row.addThrow || scope.row.inlet&&scope.row.addThrow === 0) {
+        scope.row.keepPointRatio = scope.row.inlet + scope.row.addThrow - scope.row.export
+    }
+    if(scope.row.inlet&&scope.row.keepPointRatio) {
+        scope.row.addThrow = scope.row.export + scope.row.keepPointRatio - scope.row.inlet
+    }
+    if(scope.row.keepPointRatio&&scope.row.addThrow || scope.row.keepPointRatio&&scope.row.addThrow === 0) {
+        scope.row.inlet = scope.row.export + scope.row.keepPointRatio - scope.row.addThrow
+    }
+}
+const handelJT = (scope) => {
+    if(scope.row.inlet&&scope.row.export) {
+        scope.row.keepPointRatio = scope.row.inlet + scope.row.addThrow - scope.row.export
+    }
+    if(scope.row.inlet&&scope.row.keepPointRatio) {
+        scope.row.export = scope.row.addThrow + scope.row.inlet - scope.row.keepPointRatio
+    }
+    if(scope.row.keepPointRatio&&scope.row.export) {
+        scope.row.inlet = scope.row.export + scope.row.keepPointRatio - scope.row.addThrow
+    }
+}
+const handelLD = (scope) => {
+    if(scope.row.inlet&&scope.row.export) {
+        scope.row.addThrow = scope.row.export + scope.row.keepPointRatio - scope.row.inlet
+    }
+    if(scope.row.inlet&&scope.row.addThrow || scope.row.inlet&&scope.row.addThrow === 0) {
+        scope.row.export = scope.row.addThrow + scope.row.inlet - scope.row.keepPointRatio
+    }
+    if(scope.row.addThrow&&scope.row.export || scope.row.addThrow === 0&&scope.row.export) {
+        scope.row.inlet = scope.row.export + scope.row.keepPointRatio - scope.row.addThrow
+    }
+}
+
 </script>
 </script>
 <!-- 样式区域 -->
 <!-- 样式区域 -->
 <style lang='scss' scoped>
 <style lang='scss' scoped>

+ 6 - 3
src/views/externalAgreement/costManagement.vue

@@ -242,11 +242,14 @@ const columns = [
   },
   },
   { prop: "effectiveTime", label: "生效时间", width: '200' },
   { prop: "effectiveTime", label: "生效时间", width: '200' },
   { prop: "failureTime", label: "失效时间", width: '200' },
   { prop: "failureTime", label: "失效时间", width: '200' },
+  {
+      prop: "costDescribe", label: "费用描述", width: '500',
+  },
   {
   {
     prop: "costExternalTypeAdds", label: "交强险费用", width: '300', formatter: (row: any) => {
     prop: "costExternalTypeAdds", label: "交强险费用", width: '300', formatter: (row: any) => {
       let info = row.costExternalTypeAdds.find((val: any) => val.costType == '交强险');
       let info = row.costExternalTypeAdds.find((val: any) => val.costType == '交强险');
       if (info) {
       if (info) {
-        return `入口:${info.inlet.toFixed(2)}% 出口:${info.export.toFixed(2)}%\n一级:${info.level1?.toFixed(2)}% 五级:${info.level5?.toFixed(2)}%`
+        return `入口:${info.inlet.toFixed(2)}% 出口:${info.export.toFixed(2)}%\n加投:${info.addThrow?.toFixed(2)}%`
       } else {
       } else {
         return '-'
         return '-'
       }
       }
@@ -256,7 +259,7 @@ const columns = [
     prop: "costExternalTypeAdds", label: "商业险费用", width: '300', formatter: (row: any) => {
     prop: "costExternalTypeAdds", label: "商业险费用", width: '300', formatter: (row: any) => {
       let info = row.costExternalTypeAdds.find((val: any) => val.costType == '商业险');
       let info = row.costExternalTypeAdds.find((val: any) => val.costType == '商业险');
       if (info) {
       if (info) {
-        return `入口:${info.inlet.toFixed(2)}% 出口:${info.export.toFixed(2)}%\n一级:${info.level1?.toFixed(2)}% 五级:${info.level5?.toFixed(2)}%`
+        return `入口:${info.inlet.toFixed(2)}% 出口:${info.export.toFixed(2)}%\n加投:${info.addThrow?.toFixed(2)}%`
       } else {
       } else {
         return '-'
         return '-'
       }
       }
@@ -266,7 +269,7 @@ const columns = [
     prop: "costExternalTypeAdds", label: "驾意险费用", width: '300', formatter: (row: any) => {
     prop: "costExternalTypeAdds", label: "驾意险费用", width: '300', formatter: (row: any) => {
       let info = row.costExternalTypeAdds.find((val: any) => val.costType == '驾意险');
       let info = row.costExternalTypeAdds.find((val: any) => val.costType == '驾意险');
       if (info) {
       if (info) {
-        return `入口:${info.inlet.toFixed(2)}% 出口:${info.export.toFixed(2)}%\n一级:${info.level1?.toFixed(2)}% 五级:${info.level5?.toFixed(2)}%`
+        return `入口:${info.inlet.toFixed(2)}% 出口:${info.export.toFixed(2)}%\n加投:${info.addThrow?.toFixed(2)}%`
       } else {
       } else {
         return '-'
         return '-'
       }
       }

+ 12 - 12
src/views/finance/audit.vue

@@ -56,12 +56,12 @@
                                 ></el-cascader>
                                 ></el-cascader>
                             </el-form-item>
                             </el-form-item>
                         </el-col>
                         </el-col>
-                        <el-col v-show="isTrue" :span="8">
+                        <el-col :span="8">
                             <el-form-item label="被保人">
                             <el-form-item label="被保人">
                                 <el-input v-model="firstForm.insurName" placeholder="请输入" clearable></el-input>
                                 <el-input v-model="firstForm.insurName" placeholder="请输入" clearable></el-input>
                             </el-form-item>
                             </el-form-item>
                         </el-col>
                         </el-col>
-                        <el-col v-show="isTrue" :span="8">
+                        <el-col :span="8">
                             <el-form-item label="报价时间">
                             <el-form-item label="报价时间">
                                 <el-date-picker
                                 <el-date-picker
                                     v-model="firstForm.quotationTime"
                                     v-model="firstForm.quotationTime"
@@ -74,7 +74,7 @@
                                 />
                                 />
                             </el-form-item>
                             </el-form-item>
                         </el-col>
                         </el-col>
-                        <el-col v-show="isTrue" :span="8">
+                        <el-col :span="8">
                             <el-form-item label="签单时间">
                             <el-form-item label="签单时间">
                                 <el-date-picker
                                 <el-date-picker
                                     v-model="firstForm.signingTime"
                                     v-model="firstForm.signingTime"
@@ -200,12 +200,12 @@
                                 ></el-cascader>
                                 ></el-cascader>
                             </el-form-item>
                             </el-form-item>
                         </el-col>
                         </el-col>
-                        <el-col v-show="isTrue" :span="8">
+                        <el-col :span="8">
                             <el-form-item label="被保人">
                             <el-form-item label="被保人">
                                 <el-input v-model="firstForm.insurName" placeholder="请输入" clearable></el-input>
                                 <el-input v-model="firstForm.insurName" placeholder="请输入" clearable></el-input>
                             </el-form-item>
                             </el-form-item>
                         </el-col>
                         </el-col>
-                        <el-col v-show="isTrue" :span="8">
+                        <el-col :span="8">
                             <el-form-item label="报价时间">
                             <el-form-item label="报价时间">
                                 <el-date-picker
                                 <el-date-picker
                                     v-model="firstForm.quotationTime"
                                     v-model="firstForm.quotationTime"
@@ -218,7 +218,7 @@
                                 />
                                 />
                             </el-form-item>
                             </el-form-item>
                         </el-col>
                         </el-col>
-                        <el-col v-show="isTrue" :span="8">
+                        <el-col :span="8">
                             <el-form-item label="签单时间">
                             <el-form-item label="签单时间">
                                 <el-date-picker
                                 <el-date-picker
                                     v-model="firstForm.signingTime"
                                     v-model="firstForm.signingTime"
@@ -345,12 +345,12 @@
                                 ></el-cascader>
                                 ></el-cascader>
                             </el-form-item>
                             </el-form-item>
                         </el-col>
                         </el-col>
-                        <el-col v-show="isTrue" :span="8">
+                        <el-col :span="8">
                             <el-form-item label="被保人">
                             <el-form-item label="被保人">
                                 <el-input v-model="firstForm.insurName" placeholder="请输入" clearable></el-input>
                                 <el-input v-model="firstForm.insurName" placeholder="请输入" clearable></el-input>
                             </el-form-item>
                             </el-form-item>
                         </el-col>
                         </el-col>
-                        <el-col v-show="isTrue" :span="8">
+                        <el-col :span="8">
                             <el-form-item label="报价时间">
                             <el-form-item label="报价时间">
                                 <el-date-picker
                                 <el-date-picker
                                     v-model="firstForm.quotationTime"
                                     v-model="firstForm.quotationTime"
@@ -363,7 +363,7 @@
                                 />
                                 />
                             </el-form-item>
                             </el-form-item>
                         </el-col>
                         </el-col>
-                        <el-col v-show="isTrue" :span="8">
+                        <el-col :span="8">
                             <el-form-item label="签单时间">
                             <el-form-item label="签单时间">
                                 <el-date-picker
                                 <el-date-picker
                                     v-model="firstForm.signingTime"
                                     v-model="firstForm.signingTime"
@@ -491,12 +491,12 @@
                                 ></el-cascader>
                                 ></el-cascader>
                             </el-form-item>
                             </el-form-item>
                         </el-col>
                         </el-col>
-                        <el-col v-show="isTrue" :span="8">
+                        <el-col :span="8">
                             <el-form-item label="被保人">
                             <el-form-item label="被保人">
                                 <el-input v-model="firstForm.insurName" placeholder="请输入" clearable></el-input>
                                 <el-input v-model="firstForm.insurName" placeholder="请输入" clearable></el-input>
                             </el-form-item>
                             </el-form-item>
                         </el-col>
                         </el-col>
-                        <el-col v-show="isTrue" :span="8">
+                        <el-col :span="8">
                             <el-form-item label="报价时间">
                             <el-form-item label="报价时间">
                                 <el-date-picker
                                 <el-date-picker
                                     v-model="firstForm.quotationTime"
                                     v-model="firstForm.quotationTime"
@@ -509,7 +509,7 @@
                                 />
                                 />
                             </el-form-item>
                             </el-form-item>
                         </el-col>
                         </el-col>
-                        <el-col v-show="isTrue" :span="8">
+                        <el-col :span="8">
                             <el-form-item label="签单时间">
                             <el-form-item label="签单时间">
                                 <el-date-picker
                                 <el-date-picker
                                     v-model="firstForm.signingTime"
                                     v-model="firstForm.signingTime"

+ 314 - 0
src/views/insurancePolicy/carRules.vue

@@ -0,0 +1,314 @@
+<template>
+    <div class="carRules">
+        <div class="btn">
+            <el-button icon="Plus" type="primary" @click="add">添加</el-button>
+        </div>
+        <el-table
+            :data="tableData"
+            style="width: 100%"
+        >
+            <el-table-column type="index" label="序号" width="80"></el-table-column>
+            <el-table-column prop="companyName" label="保险公司名称"></el-table-column>
+            <el-table-column prop="unitTypeCode" label="新车判断单位">
+                <template #default="scope">
+                    {{ scope.row.unitTypeCode === '1'?'天':scope.row.unitTypeCode === '2'?'月':'' }}
+                </template>
+            </el-table-column>
+            <el-table-column prop="vehicleType" label="车辆类型">
+                <template #default="scope">
+                    {{ scope.row.vehicleType === 'A1'?'货车':scope.row.vehicleType === 'A0'?'客车':'' }}
+                </template>
+            </el-table-column>
+            <el-table-column prop="unitTypeValue" label="新车判断单位值"></el-table-column>
+            <el-table-column label="操作">
+                <template #default="scope">
+                    <el-button link type="primary" size="small" @click="handleEdit(scope)">编辑</el-button>
+                    <el-button link type="primary" size="small" @click="handleDel(scope)">删除</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination">
+            <el-pagination
+                v-model:current-page="pageNum"
+                v-model:page-size="pageSize"
+                :page-sizes="[10, 20, 30, 40]"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="total"
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+            ></el-pagination>
+        </div>
+        <el-dialog
+            v-model="addShow"
+            title="新增"
+            width="800"
+        >
+            <el-form ref="AddFormRefs" :model="addForm" :rules="addRules" label-width="100">
+                <el-form-item prop="companyId" label="归属保司">
+                    <el-select v-model="addForm.companyId" placeholder="请选择" filterable clearable>
+                        <el-option v-for="(item, index) in companyList" :key="item.id" :value="item.id" :label="item.name"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item prop="vehicleType" label="车辆类型">
+                    <el-radio-group v-model="addForm.vehicleType">
+                        <el-radio v-for="(item, index) in carType" :key="item.value" :value="item.value">{{ item.label }}</el-radio>
+                    </el-radio-group>
+                </el-form-item>
+                <el-form-item prop="unitTypeCode" label="单位">
+                    <el-select v-model="addForm.unitTypeCode" placeholder="请选择">
+                        <el-option v-for="(item, index) in unit" :key="item.id" :value="item.value" :label="item.label"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item prop="unitTypeValue" label="单位值">
+                    <el-input-number v-model="addForm.unitTypeValue"/>
+                </el-form-item>
+            </el-form>
+            <template #footer>
+                <el-button @click="handleCancel">取消</el-button>
+                <el-button type="primary" @click="handleSave(AddFormRefs)">保存</el-button>
+            </template>
+        </el-dialog>
+    </div>
+</template>
+
+<script setup lang="ts">
+import api from '@/api'
+import {ElMessage, ElMessageBox} from "element-plus";
+
+let id = ref('')
+const add = ()=> {
+    id.value = ''
+    addForm.value = {
+        companyId: '',
+        vehicleType: '',
+        unitTypeCode: '',
+        unitTypeValue: 0
+    }
+    addShow.value = true
+}
+
+let tableData = ref([])
+let pageNum = ref(1)
+let pageSize = ref(10)
+let total = ref(0)
+const initData = () => {
+    api.insurancePolicyApi.getNewCarList({
+        pageNum: pageNum.value,
+        pageSize: pageSize.value
+    }).then((res: any) => {
+        if(res.code == 200) {
+            tableData.value = res.data.records
+            total.value = res.data.total
+        } else {
+            ElMessage({
+                message: res.msg,
+                type: 'warning'
+            })
+        }
+    })
+}
+const handleSizeChange = (size) => {
+    pageNum.value = 1
+    pageSize.value = size
+    initData()
+}
+const handleCurrentChange = (page) => {
+    pageNum.value = page
+    initData()
+}
+
+let addShow = ref(false)
+let AddFormRefs = ref()
+let addForm = ref({
+    companyId: '',
+    vehicleType: '',
+    unitTypeCode: '',
+    unitTypeValue: 0
+})
+let addRules = ref({
+    companyId: [
+        { required: true, message: "请选择归属公司", trigger: "change" },
+    ],
+    vehicleType: [
+        { required: true, message: "请选择车辆类型", trigger: "change" },
+    ],
+    unitTypeCode: [
+        { required: true, message: "请选择单位", trigger: "change" },
+    ],
+    unitTypeValue: [
+        { required: true, message: "请填写单位值", trigger: "blur" },
+    ],
+})
+
+const handleCancel = () => {
+    addForm.value = {
+        companyId: '',
+        vehicleType: '',
+        unitTypeCode: '',
+        unitTypeValue: 0
+    }
+    addShow.value = false
+}
+const handleSave = async (form) => {
+    if(!form) {
+        form.resetFields()
+        return
+    }
+    await form.validate((valid) => {
+        if(valid) {
+            if(id.value) {
+                api.insurancePolicyApi.updateNewCar({
+                    ...addForm.value,
+                    id: id.value
+                }).then((res: any) => {
+                    if(res.code == 200) {
+                        addForm.value = {
+                            companyId: '',
+                            vehicleType: '',
+                            unitTypeCode: '',
+                            unitTypeValue: 0
+                        }
+                        ElMessage({
+                            message: res.msg,
+                            type: 'success'
+                        })
+                        initData()
+                    } else {
+                        ElMessage({
+                            message: res.msg,
+                            type: 'warning'
+                        })
+                    }
+                })
+            } else {
+                api.insurancePolicyApi.addNewCar({
+                    ...addForm.value
+                }).then((res: any) => {
+                    if(res.code == 200) {
+                        addForm.value = {
+                            companyId: '',
+                            vehicleType: '',
+                            unitTypeCode: '',
+                            unitTypeValue: 0
+                        }
+                        ElMessage({
+                            message: res.msg,
+                            type: 'success'
+                        })
+                        initData()
+                    } else {
+                        ElMessage({
+                            message: res.msg,
+                            type: 'warning'
+                        })
+                    }
+                })
+            }
+        }
+    })
+    addShow.value = false
+}
+
+const handleEdit = (scow) => {
+    addForm.value = {
+        companyId: scow.row.companyId,
+        vehicleType: scow.row.vehicleType,
+        unitTypeCode: scow.row.unitTypeCode,
+        unitTypeValue: scow.row.unitTypeValue,
+    }
+    id.value = scow.row.id
+    addShow.value = true
+}
+const handleDel = (scow) => {
+    ElMessageBox({
+        title: '提示',
+        message: '确认要删除当前数据吗?',
+        confirmButtonText: "确认",
+        cancelButtonText: "取消",
+        type: "warning",
+        center:true
+    }).then((action) => {
+        if(action === 'confirm') {
+            api.insurancePolicyApi.delNewCar({
+                id: scow.row.id
+            }).then((res: any) => {
+                if(res.code == 200) {
+                    ElMessage({
+                        message: res.msg,
+                        type: 'success'
+                    })
+                    initData();
+                } else {
+                    ElMessage({
+                        message: res.msg,
+                        type: 'warning'
+                    })
+                }
+            })
+        }
+    })
+}
+
+let companyList = ref([])
+const initCompany = ()=> {
+    api.insuranceApi.leftList('').then((res: any) => {
+        if(res.code == 200) {
+            companyList.value = res.data
+        } else {
+            ElMessage({
+                message: res.msg,
+                type: 'warning'
+            })
+        }
+    })
+}
+
+let carType = ref([])
+let unit = ref([])
+const initDict = ()=> {
+    api.commonApi.personInfo('car_kind_code').then((res: any) => {
+        if(res.code == 200) {
+            carType.value = res.data
+        } else {
+            ElMessage({
+                message: res.msg,
+                type: 'warning'
+            })
+        }
+    })
+    api.commonApi.personInfo('new_car_unit').then((res: any) => {
+        if(res.code == 200) {
+            unit.value = res.data
+        } else {
+            ElMessage({
+                message: res.msg,
+                type: 'warning'
+            })
+        }
+    })
+}
+
+onMounted(() => {
+    initData();
+    initCompany();
+    initDict();
+})
+</script>
+
+<style scoped lang="scss">
+.carRules {
+    width: calc(100% - 48px);
+    height: calc(100vh - 130px);
+    margin: 10px auto;
+    overflow: hidden;
+    .btn{
+        margin-bottom: 20px;
+    }
+    .pagination{
+        margin-top: 20px;
+        display: flex;
+        align-items: center;
+        justify-content: flex-end;
+    }
+}
+</style>

+ 202 - 108
src/views/insurancePolicy/index.vue

@@ -205,7 +205,7 @@
           </el-row>
           </el-row>
           <template #icon="{ isActive }">
           <template #icon="{ isActive }">
             <span class="icon">
             <span class="icon">
-              <el-button link type="primary" @click.stop="handleRecognition"><img src="@/assets/images/insurancePolicy/sao.png" class="myIcon" />证件识别</el-button>
+              <el-button link type="primary" @click.stop="handleRecognition('clxx')"><img src="@/assets/images/insurancePolicy/sao.png" class="myIcon" />证件识别</el-button>
               <span class="icon-ele">
               <span class="icon-ele">
                 {{ isActive ? '收起' : '展开' }}
                 {{ isActive ? '收起' : '展开' }}
               </span>
               </span>
@@ -224,7 +224,7 @@
             </el-col>
             </el-col>
             <el-col :span="6">
             <el-col :span="6">
               <el-form-item label="车主手机号" prop="mobile1">
               <el-form-item label="车主手机号" prop="mobile1">
-                <el-input v-model="insurancePolicyForm.mobile1" placeholder="请输入车主手机号"></el-input>
+                <el-input v-model="insurancePolicyForm.mobile1" placeholder="请输入车主手机号" maxlength="11" show-word-limit></el-input>
               </el-form-item>
               </el-form-item>
             </el-col>
             </el-col>
             <el-col :span="6">
             <el-col :span="6">
@@ -254,6 +254,7 @@
                   placeholder="请选择"
                   placeholder="请选择"
                   value-format="YYYY-MM-DD"
                   value-format="YYYY-MM-DD"
                   style="width: 100%"
                   style="width: 100%"
+                  @blur="(e) => insurancePolicyForm.identifyValidDate1 = changeDate(e)"
                 />
                 />
               </el-form-item>
               </el-form-item>
             </el-col>
             </el-col>
@@ -266,6 +267,7 @@
                             placeholder="请选择"
                             placeholder="请选择"
                             value-format="YYYY-MM-DD"
                             value-format="YYYY-MM-DD"
                             style="width: calc(100% - 64px)"
                             style="width: calc(100% - 64px)"
+                            @blur="(e) => insurancePolicyForm.identifyValidEndDate1 = changeDate(e)"
                     />
                     />
                     <el-button type="primary" @click="longTime">长期</el-button>
                     <el-button type="primary" @click="longTime">长期</el-button>
                 </div>
                 </div>
@@ -348,7 +350,7 @@
           </el-row>
           </el-row>
           <template #icon="{ isActive }">
           <template #icon="{ isActive }">
             <span class="icon">
             <span class="icon">
-              <el-button link type="primary" @click.stop="handleRecognition"><img src="@/assets/images/insurancePolicy/sao.png" class="myIcon" />证件识别</el-button>
+              <el-button link type="primary" @click.stop="handleRecognition('czxx')"><img src="@/assets/images/insurancePolicy/sao.png" class="myIcon" />证件识别</el-button>
               <span class="icon-ele">
               <span class="icon-ele">
                 {{ isActive ? '收起' : '展开' }}
                 {{ isActive ? '收起' : '展开' }}
               </span>
               </span>
@@ -402,6 +404,7 @@
                   placeholder="请选择"
                   placeholder="请选择"
                   value-format="YYYY-MM-DD"
                   value-format="YYYY-MM-DD"
                   style="width: 100%"
                   style="width: 100%"
+                  @blur="(e) => insurancePolicyForm.identifyValidDate2 = changeDate(e)"
                 />
                 />
               </el-form-item>
               </el-form-item>
             </el-col>
             </el-col>
@@ -413,6 +416,7 @@
                   placeholder="请选择"
                   placeholder="请选择"
                   value-format="YYYY-MM-DD"
                   value-format="YYYY-MM-DD"
                   style="width: 100%"
                   style="width: 100%"
+                  @blur="(e) => insurancePolicyForm.identifyValidEndDate2 = changeDate(e)"
                 />
                 />
               </el-form-item>
               </el-form-item>
             </el-col>
             </el-col>
@@ -493,7 +497,7 @@
           </el-row>
           </el-row>
           <template #icon="{ isActive }">
           <template #icon="{ isActive }">
             <span class="icon">
             <span class="icon">
-              <el-button link type="primary" @click.stop="handleRecognition"><img src="@/assets/images/insurancePolicy/sao.png" class="myIcon" />证件识别</el-button>
+              <el-button link type="primary" @click.stop="handleRecognition('tbrxx')"><img src="@/assets/images/insurancePolicy/sao.png" class="myIcon" />证件识别</el-button>
               <span class="icon-ele">
               <span class="icon-ele">
                 {{ isActive ? '收起' : '展开' }}
                 {{ isActive ? '收起' : '展开' }}
               </span>
               </span>
@@ -547,6 +551,7 @@
                   placeholder="请选择"
                   placeholder="请选择"
                   value-format="YYYY-MM-DD"
                   value-format="YYYY-MM-DD"
                   style="width: 100%"
                   style="width: 100%"
+                  @blur="(e) => insurancePolicyForm.identifyValidDate3 = changeDate(e)"
                 />
                 />
               </el-form-item>
               </el-form-item>
             </el-col>
             </el-col>
@@ -558,6 +563,7 @@
                   placeholder="请选择"
                   placeholder="请选择"
                   value-format="YYYY-MM-DD"
                   value-format="YYYY-MM-DD"
                   style="width: 100%"
                   style="width: 100%"
+                  @blur="(e) => insurancePolicyForm.identifyValidEndDate3 = changeDate(e)"
                 />
                 />
               </el-form-item>
               </el-form-item>
             </el-col>
             </el-col>
@@ -638,7 +644,7 @@
           </el-row>
           </el-row>
           <template #icon="{ isActive }">
           <template #icon="{ isActive }">
             <span class="icon">
             <span class="icon">
-              <el-button link type="primary" @click.stop="handleRecognition"><img src="@/assets/images/insurancePolicy/sao.png" class="myIcon" />证件识别</el-button>
+              <el-button link type="primary" @click.stop="handleRecognition('bbrxx')"><img src="@/assets/images/insurancePolicy/sao.png" class="myIcon" />证件识别</el-button>
               <span class="icon-ele">
               <span class="icon-ele">
                 {{ isActive ? '收起' : '展开' }}
                 {{ isActive ? '收起' : '展开' }}
               </span>
               </span>
@@ -811,6 +817,7 @@
                   placeholder="请选择"
                   placeholder="请选择"
                   value-format="YYYY-MM-DD HH:mm:ss"
                   value-format="YYYY-MM-DD HH:mm:ss"
                   style="width: 100%"
                   style="width: 100%"
+                  @change="jqChange"
                 />
                 />
               </el-form-item>
               </el-form-item>
               &nbsp;&nbsp;&nbsp;至&nbsp;&nbsp;&nbsp;
               &nbsp;&nbsp;&nbsp;至&nbsp;&nbsp;&nbsp;
@@ -836,6 +843,7 @@
                   placeholder="请选择"
                   placeholder="请选择"
                   value-format="YYYY-MM-DD HH:mm:ss"
                   value-format="YYYY-MM-DD HH:mm:ss"
                   style="width: 100%"
                   style="width: 100%"
+                  @change="syChange"
                 />
                 />
               </el-form-item>
               </el-form-item>
               &nbsp;&nbsp;&nbsp;至&nbsp;&nbsp;&nbsp;
               &nbsp;&nbsp;&nbsp;至&nbsp;&nbsp;&nbsp;
@@ -1078,6 +1086,18 @@
                   <img :src="scope.row.logo"/>
                   <img :src="scope.row.logo"/>
                   <span>{{ scope.row.name }}</span>
                   <span>{{ scope.row.name }}</span>
                 </div>
                 </div>
+                  <div class="company" style="margin-top: 10px;" v-if="scope.row.underwritingMsg">
+                      <span style="display: flex; align-items: center; color: #FF4545;"><el-icon style=" font-size: 14px"><Warning /></el-icon>核保失败</span>
+                      <el-popover
+                              title="提示"
+                              :content="scope.row.underwritingMsg"
+                              placement="bottom-end"
+                      >
+                          <template #reference>
+                              <el-button link type="primary">查看详情</el-button>
+                          </template>
+                      </el-popover>
+                  </div>
               </template>
               </template>
             </el-table-column>
             </el-table-column>
             <el-table-column label="报价协议" prop="" align="center" width="260">
             <el-table-column label="报价协议" prop="" align="center" width="260">
@@ -1098,8 +1118,8 @@
                 <div class="result" v-if="currentRow.some(a => a.id === scope.row.id)">
                 <div class="result" v-if="currentRow.some(a => a.id === scope.row.id)">
                   <span class="resultItem">
                   <span class="resultItem">
                     <span v-if="scope.row.quoteResult?.costs?.sumPremium">总保费:{{ scope.row.quoteResult?.costs?.sumPremium }}</span>
                     <span v-if="scope.row.quoteResult?.costs?.sumPremium">总保费:{{ scope.row.quoteResult?.costs?.sumPremium }}</span>
-                    <span class="resultTips" v-if="scope.row.quoteResult?.feeNoDescription">
-                      <el-icon style="color: #FF4545; font-size: 14px"><Warning /></el-icon>&nbsp;&nbsp;{{ scope.row.quoteResult?.feeNoDescription }}
+                    <span class="resultTips" v-if="scope.row.quoteResult?.feeNoDescription" @click="handleOpen(scope)">
+                      <el-icon style="color: #FF4545; font-size: 14px"><Warning /></el-icon>&nbsp;&nbsp;未匹配费用
                     </span>
                     </span>
                   </span>
                   </span>
                   <div class="resultItem">
                   <div class="resultItem">
@@ -1118,9 +1138,9 @@
                   </span>
                   </span>
                   <div>
                   <div>
                     <div class="quoteFail" v-if="scope.row.quoteResult?.failMsg">
                     <div class="quoteFail" v-if="scope.row.quoteResult?.failMsg">
-                      <el-icon style="color: #FF4545; font-size: 14px"><Warning /></el-icon>&nbsp;&nbsp;报价失败
+                      <el-icon style="color: #FF4545; font-size: 14px" @click="handleOpen"><Warning /></el-icon>&nbsp;&nbsp;报价失败
                     </div>
                     </div>
-                    <div class="quoteReason">{{ scope.row.quoteResult?.failMsg }}</div>
+<!--                    <div class="quoteReason">{{ scope.row.quoteResult?.failMsg }}</div>-->
                   </div>
                   </div>
                 </div>
                 </div>
                 <div class="loader" v-show="scope.row.loading">
                 <div class="loader" v-show="scope.row.loading">
@@ -1141,69 +1161,73 @@
                 </div>
                 </div>
               </template>
               </template>
             </el-table-column>
             </el-table-column>
-              <el-table-column label="费用因子" align="center">
+            <el-table-column label="费用因子" align="center">
                   <template #default="scope">
                   <template #default="scope">
-                      <div class="costFactor" v-if="scope.row.quoteResult?.scoreVo">
-                          <span>评分:</span><span>{{ scope.row.quoteResult?.scoreVo?.score || '--' }}</span>
-                      </div>
-                      <div class="costFactor" v-if="scope.row.quoteResult?.scoreVo">
-                          <span>交强险系数:</span><span>{{ scope.row.quoteResult?.scoreVo?.jqLossRation || '--' }}</span>
-                      </div>
-                      <div class="costFactor" v-if="scope.row.quoteResult?.scoreVo">
-                          <span>商业险系数:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--' }}</span>
-                      </div>
-                      <div class="costFactor" v-if="scope.row.quoteResult?.scoreVo">
-                          <el-popover
-                                  :width="200"
-                                  placement="bottom"
-                                  trigger="hover"
-                          >
-                              <template #reference>
-                                  <span style="display: flex; align-items: center">更多信息:<el-icon color="#409eff"><InfoFilled /></el-icon></span>
-                              </template>
-                              <div class="moreFactor">
-                                  <span>NCD折扣系数:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
-                              </div>
-                              <div class="moreFactor">
-                                  <span>交通违法系数:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
-                              </div>
-                              <div class="moreFactor">
-                                  <span>自主定价系数:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
-                              </div>
-                              <div class="moreFactor">
-                                  <span>自助渠道系数:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
-                              </div>
-                              <div class="moreFactor">
-                                  <span>鼎然车险风险评分:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
-                              </div>
-                              <div class="moreFactor">
-                                  <span>交强评分:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
-                              </div>
-                              <div class="moreFactor">
-                                  <span>商业评分:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
-                              </div>
-                              <div class="moreFactor">
-                                  <span>出险信息:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
-                              </div>
-                              <div class="moreFactor">
-                                  <span>总赔付率:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
-                              </div>
-                              <div class="moreFactor">
-                                  <span>商业赔付率:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
-                              </div>
-                              <div class="moreFactor">
-                                  <span>总折扣率:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
+                      <div style="width: 100%;" v-if="scope.row.quoteResult?.scoreVo?.scoreJson">
+                          <template v-for="(item, index) in scope.row.quoteResult?.scoreVo?.scoreJson" :key="index">
+                              <div class="costFactor">
+                                  <span>{{ item.scoreName }}:</span><span>{{ item.score || '--' }}</span>
                               </div>
                               </div>
-                              <div class="moreFactor">
-                                  <span>交强折扣:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
+                              <div class="costFactor" v-if="scope.row.quoteResult?.scoreVo">
+                                  <span>交强险系数:</span><span>{{ item.jqLossRation || '--' }}</span>
                               </div>
                               </div>
-                              <div class="moreFactor">
-                                  <span>商业折扣:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
+                              <div class="costFactor" v-if="scope.row.quoteResult?.scoreVo">
+                                  <span>商业险系数:</span><span>{{ item.syLossRation || '--' }}</span>
                               </div>
                               </div>
-                              <div class="moreFactor">
-                                  <span>类型:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
+                              <div class="costFactor" v-if="scope.row.quoteResult?.scoreVo">
+                                  <el-popover
+                                      :width="200"
+                                      placement="bottom"
+                                      trigger="hover"
+                                  >
+                                      <template #reference>
+                                          <span style="display: flex; align-items: center">更多信息:<el-icon color="#409eff"><InfoFilled /></el-icon></span>
+                                      </template>
+                                      <div class="moreFactor">
+                                          <span>NCD折扣系数:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
+                                      </div>
+                                      <div class="moreFactor">
+                                          <span>交通违法系数:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
+                                      </div>
+                                      <div class="moreFactor">
+                                          <span>自主定价系数:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
+                                      </div>
+                                      <div class="moreFactor">
+                                          <span>自助渠道系数:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
+                                      </div>
+                                      <div class="moreFactor">
+                                          <span>鼎然车险风险评分:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
+                                      </div>
+                                      <div class="moreFactor">
+                                          <span>交强评分:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
+                                      </div>
+                                      <div class="moreFactor">
+                                          <span>商业评分:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
+                                      </div>
+                                      <div class="moreFactor">
+                                          <span>出险信息:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
+                                      </div>
+                                      <div class="moreFactor">
+                                          <span>总赔付率:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
+                                      </div>
+                                      <div class="moreFactor">
+                                          <span>商业赔付率:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
+                                      </div>
+                                      <div class="moreFactor">
+                                          <span>总折扣率:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
+                                      </div>
+                                      <div class="moreFactor">
+                                          <span>交强折扣:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
+                                      </div>
+                                      <div class="moreFactor">
+                                          <span>商业折扣:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
+                                      </div>
+                                      <div class="moreFactor">
+                                          <span>类型:</span><span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--'  }}</span>
+                                      </div>
+                                  </el-popover>
                               </div>
                               </div>
-                          </el-popover>
+                          </template>
                       </div>
                       </div>
                   </template>
                   </template>
               </el-table-column>
               </el-table-column>
@@ -1300,7 +1324,8 @@
     </el-form>
     </el-form>
     <div class="footer">
     <div class="footer">
       <span>已选保司:{{ currentRow.length }}家</span>&nbsp;&nbsp;&nbsp;
       <span>已选保司:{{ currentRow.length }}家</span>&nbsp;&nbsp;&nbsp;
-      <el-button type="primary" :loading="loading" @click="handleSubmit(InsurancePolicyRefs)">确定</el-button>
+        <el-button type="primary" :loading="loading" @click="handleSubmit(InsurancePolicyRefs)">确定</el-button>
+        <el-button type="primary" @click="handleNext">录下一单</el-button>
     </div>
     </div>
     <el-dialog
     <el-dialog
       title="选择业务员"
       title="选择业务员"
@@ -1331,7 +1356,7 @@
     </el-dialog>
     </el-dialog>
     <el-dialog
     <el-dialog
       title="提交核保"
       title="提交核保"
-      width="930"
+      width="1100"
       v-model="underwritingShow"
       v-model="underwritingShow"
     >
     >
       <underwriting ref="UnderwritingRefs" @close="handleUnderwritingClose"></underwriting>
       <underwriting ref="UnderwritingRefs" @close="handleUnderwritingClose"></underwriting>
@@ -1365,9 +1390,9 @@
       <el-table
       <el-table
         ref="LicenseNoTable"
         ref="LicenseNoTable"
         :data="licenseNoData"
         :data="licenseNoData"
-        @row-click="handleSelectedRow"
         row-key="id"
         row-key="id"
         @select="handleSelectedChange"
         @select="handleSelectedChange"
+        @row-dblclick="handleSelectedRow"
       >
       >
         <el-table-column type="selection"></el-table-column>
         <el-table-column type="selection"></el-table-column>
         <el-table-column prop="modelCode" label="厂牌型号代码"></el-table-column>
         <el-table-column prop="modelCode" label="厂牌型号代码"></el-table-column>
@@ -1416,7 +1441,7 @@
 <script setup lang="ts">
 <script setup lang="ts">
 import type { FormInstance, FormRules } from 'element-plus'
 import type { FormInstance, FormRules } from 'element-plus'
 import api from "@/api";
 import api from "@/api";
-import { ElMessage } from "element-plus";
+import { ElMessage, ElNotification } from "element-plus";
 import { useRoute, useRouter } from 'vue-router'
 import { useRoute, useRouter } from 'vue-router'
 import underwriting from './modules/underwriting.vue'
 import underwriting from './modules/underwriting.vue'
 import recognition from './modules/recognition.vue'
 import recognition from './modules/recognition.vue'
@@ -1426,8 +1451,9 @@ import insurance from "../additionalOrder/additional/modules/insuranceSelect.vue
 import driving from '../../layouts/components/DrivingType/index.vue'
 import driving from '../../layouts/components/DrivingType/index.vue'
 import detail from '../../layouts/components/JYXDetail/index.vue'
 import detail from '../../layouts/components/JYXDetail/index.vue'
 import QRCode from 'qrcode'
 import QRCode from 'qrcode'
+import dayjs from "dayjs";
 
 
-
+const RecognitionRefs = ref()
 const SalesmanSelectRef = ref()
 const SalesmanSelectRef = ref()
 const InsuranceTypeRef = ref()
 const InsuranceTypeRef = ref()
 const DrivingTypeRef = ref()
 const DrivingTypeRef = ref()
@@ -1438,6 +1464,10 @@ const JYXDetail = ref()
 const myRoute = useRoute()
 const myRoute = useRoute()
 const router = useRouter()
 const router = useRouter()
 
 
+const changeDate = (e) => {
+    return dayjs(e.target.value).format('YYYY-MM-DD')
+}
+
 const initDetail = () => {
 const initDetail = () => {
     api.insurancePolicyApi.getOrderDetail(myRoute.query.orderNo).then((res: any) => {
     api.insurancePolicyApi.getOrderDetail(myRoute.query.orderNo).then((res: any) => {
         if(res.code == 200) {
         if(res.code == 200) {
@@ -1526,13 +1556,13 @@ const initDetail = () => {
             }
             }
             if(obj?.ownersInfo?.identifyNumber == obj?.insuredPersonInfo?.identifyNumber) {
             if(obj?.ownersInfo?.identifyNumber == obj?.insuredPersonInfo?.identifyNumber) {
                 btns.value.owner2[1].checked = true
                 btns.value.owner2[1].checked = true
-                btns.value.owner1Text = '同车主'
+                btns.value.owner2Text = '同车主'
             } else if(obj?.policyHolderInfo?.identifyNumber == obj?.insuredPersonInfo?.identifyNumber) {
             } else if(obj?.policyHolderInfo?.identifyNumber == obj?.insuredPersonInfo?.identifyNumber) {
                 btns.value.owner2[0].checked = true
                 btns.value.owner2[0].checked = true
-                btns.value.owner1Text = '同投保人'
+                btns.value.owner2Text = '同投保人'
             } else {
             } else {
                 btns.value.owner2[2].checked = true
                 btns.value.owner2[2].checked = true
-                btns.value.owner1Text = '其他人'
+                btns.value.owner2Text = '其他人'
             }
             }
             // 车船税
             // 车船税
             insurancePolicyForm.value.extendChar2 = obj?.vehicleAndVesselTaxVo?.extendChar2
             insurancePolicyForm.value.extendChar2 = obj?.vehicleAndVesselTaxVo?.extendChar2
@@ -1783,15 +1813,15 @@ let insurancePolicyRules = ref<FormRules>({
   completeKerbMass: [
   completeKerbMass: [
     { required: true, trigger: 'blur', message: '请输入整备质量' }
     { required: true, trigger: 'blur', message: '请输入整备质量' }
   ],
   ],
-  limitLoad: [
-    { required: true, trigger: 'blur', message: '请输入核定载质量' }
-  ],
+  // limitLoad: [
+  //   { required: true, trigger: 'blur', message: '请输入核定载质量' }
+  // ],
   seatCount: [
   seatCount: [
     { required: true, trigger: 'blur', message: '请输入座位数' }
     { required: true, trigger: 'blur', message: '请输入座位数' }
   ],
   ],
-  carYear: [
-    { required: true, trigger: 'blur', message: '请输入年款' }
-  ],
+  // carYear: [
+  //   { required: true, trigger: 'blur', message: '请输入年款' }
+  // ],
   purchasePrice: [
   purchasePrice: [
     { required: true, trigger: 'blur', message: '请输入新车购置价' }
     { required: true, trigger: 'blur', message: '请输入新车购置价' }
   ],
   ],
@@ -1801,6 +1831,9 @@ let insurancePolicyRules = ref<FormRules>({
   powerScale: [
   powerScale: [
     { required: true, trigger: 'blur', message: '请输入功率' }
     { required: true, trigger: 'blur', message: '请输入功率' }
   ],
   ],
+  transferDate: [
+      { required: true, trigger: 'change', message: '请选择转移登记日期' },
+  ],
   name1: [
   name1: [
     { required: true, trigger: 'blur', message: '请输入姓名' }
     { required: true, trigger: 'blur', message: '请输入姓名' }
   ],
   ],
@@ -1950,6 +1983,7 @@ const handleSelectedRow = (row: any, column: any) => {
   })
   })
   LicenseNoTable.value.toggleRowSelection(row, true)
   LicenseNoTable.value.toggleRowSelection(row, true)
   selectRowData.value = row
   selectRowData.value = row
+    licenseNoDataSubmit()
 }
 }
 const handleSelectedChange = (rows: any, row: any) => {
 const handleSelectedChange = (rows: any, row: any) => {
   licenseNoData.value.forEach((item) => {
   licenseNoData.value.forEach((item) => {
@@ -1963,7 +1997,6 @@ const licenseNoDataCancel = () => {
   licenseNoShow.value = false
   licenseNoShow.value = false
 }
 }
 const licenseNoDataSubmit = () => {
 const licenseNoDataSubmit = () => {
-    console.log(123123123, selectRowData.value)
   insurancePolicyForm.value.seatCount = selectRowData.value.ratedPassengerCapacity
   insurancePolicyForm.value.seatCount = selectRowData.value.ratedPassengerCapacity
     insurancePolicyForm.value.brandName = selectRowData.value.modelName
     insurancePolicyForm.value.brandName = selectRowData.value.modelName
   insurancePolicyForm.value.carYear = selectRowData.value.marketYear
   insurancePolicyForm.value.carYear = selectRowData.value.marketYear
@@ -2340,6 +2373,9 @@ const JQChange = (item) => {
     insurancePolicyForm.value.JQInstantFlag = false
     insurancePolicyForm.value.JQInstantFlag = false
   }
   }
 }
 }
+const jqChange = (e) => {
+    insurancePolicyForm.value.JQEndDate = oneYearPast1(e)
+}
 // 商业即时生效
 // 商业即时生效
 let syWork = ref([
 let syWork = ref([
   { text: '即时生效', checked: false }
   { text: '即时生效', checked: false }
@@ -2360,6 +2396,9 @@ const SYChange = (item) => {
     insurancePolicyForm.value.SYInstantFlag = false
     insurancePolicyForm.value.SYInstantFlag = false
   }
   }
 }
 }
+const syChange = (e) => {
+    insurancePolicyForm.value.SYEndDate = oneYearPast1(e)
+}
 
 
 // 报价公司
 // 报价公司
 let currentRow = ref([])
 let currentRow = ref([])
@@ -2710,47 +2749,59 @@ const handlePopoverConfirm = async () => {
 
 
 // 提交核保
 // 提交核保
 let underwritingShow = ref(false)
 let underwritingShow = ref(false)
+let underwritingIndex = ref(-1)
 const handleUnderwriting = (scope) => {
 const handleUnderwriting = (scope) => {
     console.log('要去核保的数据', scope.row)
     console.log('要去核保的数据', scope.row)
   underwritingShow.value = true
   underwritingShow.value = true
+    underwritingIndex.value = scope.$index
     // insurancePolicyForm.value.imageVoList
     // insurancePolicyForm.value.imageVoList
   let data = {
   let data = {
 
 
     // ordersNo: '1915570359429222400'
     // ordersNo: '1915570359429222400'
     ordersNo: scope.row.quoteResult.ordersNo,
     ordersNo: scope.row.quoteResult.ordersNo,
     quoteNo: insurancePolicyForm.value.order.quoteNo,
     quoteNo: insurancePolicyForm.value.order.quoteNo,
-      list: insurancePolicyForm.value.imageVoList
+      list: images.value
   }
   }
-  nextTick(() => {
-      UnderwritingRefs.value.initEdit({
-          ...data
-      })
-  })
-  // api.insurancePolicyApi.imagesUpload({
-  //   order: {
-  //     ...data
-  //   }
-  // }).then((res: any) => {
-  //   if(res.code === 200) {
-  //     nextTick(() => {
-  //       UnderwritingRefs.value.initEdit(data)
-  //     })
-  //   } else {
-  //     ElMessage({
-  //       message: res.msg,
-  //       type: 'warning'
+  // nextTick(() => {
+  //     UnderwritingRefs.value.initEdit({
+  //         ...data
   //     })
   //     })
-  //   }
   // })
   // })
+  api.insurancePolicyApi.imagesUpload({
+    order: {
+      ...data
+    }
+  }).then((res: any) => {
+    if(res.code === 200) {
+      nextTick(() => {
+        UnderwritingRefs.value.initEdit(data)
+      })
+    } else {
+      ElMessage({
+        message: res.msg,
+        type: 'warning'
+      })
+    }
+  })
 }
 }
-const handleUnderwritingClose = () => {
-  underwritingShow.value = false
+
+const handleUnderwritingClose = (bool, msg) => {
+    underwritingShow.value = false
+    if(msg) {
+        quoteData.value[underwritingIndex.value].underwritingMsg = msg
+    }
 }
 }
 
 
 // 证件识别
 // 证件识别
 let imageShow = ref(false)
 let imageShow = ref(false)
 let images = ref([])
 let images = ref([])
 const handleImageClose = (data) => {
 const handleImageClose = (data) => {
+    btns.value.owner1.forEach(a => {
+        a.checked = false
+    })
+    btns.value.owner2.forEach(a => {
+        a.checked = false
+    })
   imageShow.value = false
   imageShow.value = false
     images.value = []
     images.value = []
   if(data) {
   if(data) {
@@ -2765,7 +2816,7 @@ const handleImageClose = (data) => {
       insurancePolicyForm.value.vehicleUseCode = carForm.vehicleUseCode || hadWritedData.value.vehicleUseCode
       insurancePolicyForm.value.vehicleUseCode = carForm.vehicleUseCode || hadWritedData.value.vehicleUseCode
       insurancePolicyForm.value.carTypeCode = carForm.carTypeCode || hadWritedData.value.carTypeCode
       insurancePolicyForm.value.carTypeCode = carForm.carTypeCode || hadWritedData.value.carTypeCode
       insurancePolicyForm.value.plateType = carForm.plateType || hadWritedData.value.plateType
       insurancePolicyForm.value.plateType = carForm.plateType || hadWritedData.value.plateType
-      insurancePolicyForm.value.energyTypeCode = carForm.energyTypeCode || hadWritedData.value.energyTypeCode
+      insurancePolicyForm.value.energyTypeCode = carForm.energyTypeCode || hadWritedData.value.energyTypeCode || insurancePolicyForm.value.licenseNo.length == 7?'0' : insurancePolicyForm.value.licenseNo.length == 8?'1' : ''
       insurancePolicyForm.value.registerDate = carForm.registerDate || hadWritedData.value.registerDate
       insurancePolicyForm.value.registerDate = carForm.registerDate || hadWritedData.value.registerDate
       insurancePolicyForm.value.issueDate = carForm.issueDate || hadWritedData.value.issueDate
       insurancePolicyForm.value.issueDate = carForm.issueDate || hadWritedData.value.issueDate
       insurancePolicyForm.value.completeKerbMass = carForm.completeKerbMass || hadWritedData.value.completeKerbMass
       insurancePolicyForm.value.completeKerbMass = carForm.completeKerbMass || hadWritedData.value.completeKerbMass
@@ -2812,6 +2863,13 @@ const handleImageClose = (data) => {
       insurancePolicyForm.value.address2 = ower1Form.address || hadWritedData.value.address2
       insurancePolicyForm.value.address2 = ower1Form.address || hadWritedData.value.address2
       insurancePolicyForm.value.registeredCapital2 = ower1Form.registeredCapital || hadWritedData.value.registeredCapital2
       insurancePolicyForm.value.registeredCapital2 = ower1Form.registeredCapital || hadWritedData.value.registeredCapital2
       insurancePolicyForm.value.email2 = ower1Form.email || hadWritedData.value.email2
       insurancePolicyForm.value.email2 = ower1Form.email || hadWritedData.value.email2
+      if(!insurancePolicyForm.value.identifyNumber2 || insurancePolicyForm.value.identifyNumber2 && insurancePolicyForm.value.identifyNumber1 == insurancePolicyForm.value.identifyNumber2) {
+          btns.value.owner1[0].checked = true
+          btns.value.owner1Text = '同车主'
+      } else if(insurancePolicyForm.value.identifyNumber2 && insurancePolicyForm.value.identifyNumber1 != insurancePolicyForm.value.identifyNumber2) {
+          btns.value.owner1[1].checked = true
+          btns.value.owner1Text = '其他人'
+      }
     }
     }
     if(ower2Form) {
     if(ower2Form) {
       insurancePolicyForm.value.name3 = ower2Form.name || hadWritedData.value.name3
       insurancePolicyForm.value.name3 = ower2Form.name || hadWritedData.value.name3
@@ -2827,6 +2885,16 @@ const handleImageClose = (data) => {
       insurancePolicyForm.value.address3 = ower2Form.address || hadWritedData.value.address3
       insurancePolicyForm.value.address3 = ower2Form.address || hadWritedData.value.address3
       insurancePolicyForm.value.registeredCapital3 = ower2Form.registeredCapital || hadWritedData.value.registeredCapital3
       insurancePolicyForm.value.registeredCapital3 = ower2Form.registeredCapital || hadWritedData.value.registeredCapital3
       insurancePolicyForm.value.email3 = ower2Form.email || hadWritedData.value.email3
       insurancePolicyForm.value.email3 = ower2Form.email || hadWritedData.value.email3
+      if(insurancePolicyForm.value.identifyNumber3 && insurancePolicyForm.value.identifyNumber1 == insurancePolicyForm.value.identifyNumber3) {
+          btns.value.owner2[1].checked = true
+          btns.value.owner2Text = '同车主'
+      } else if(!insurancePolicyForm.value.identifyNumber3 || insurancePolicyForm.value.identifyNumber3 && insurancePolicyForm.value.identifyNumber2 == insurancePolicyForm.value.identifyNumber3) {
+          btns.value.owner2[0].checked = true
+          btns.value.owner2Text = '同投保人'
+      } else if(insurancePolicyForm.value.identifyNumber3 && insurancePolicyForm.value.identifyNumber2 != insurancePolicyForm.value.identifyNumber3) {
+          btns.value.owner2[2].checked = true
+          btns.value.owner2Text = '其他人'
+      }
     }
     }
     if(imageVoList&&imageVoList.length>0) {
     if(imageVoList&&imageVoList.length>0) {
       insurancePolicyForm.value.imageVoList = imageVoList.filter(a => a.imageBase64List[0].imageId)
       insurancePolicyForm.value.imageVoList = imageVoList.filter(a => a.imageBase64List[0].imageId)
@@ -2839,14 +2907,26 @@ const handleImageClose = (data) => {
 
 
 // 记录已填好的信息,防止再次进行证件识别
 // 记录已填好的信息,防止再次进行证件识别
 let hadWritedData = ref({})
 let hadWritedData = ref({})
-const handleRecognition = () => {
+const handleRecognition = (achor) => {
   imageShow.value = true
   imageShow.value = true
     hadWritedData.value = JSON.parse(JSON.stringify(insurancePolicyForm.value))
     hadWritedData.value = JSON.parse(JSON.stringify(insurancePolicyForm.value))
+    nextTick(() => {
+        RecognitionRefs.value.setAnchor(achor)
+    })
 }
 }
 
 
 // 提交
 // 提交
 let loading = ref(false)
 let loading = ref(false)
 const handleSubmit = async (InsurancePolicyRefs: FormInstance | undefined, scope) => {
 const handleSubmit = async (InsurancePolicyRefs: FormInstance | undefined, scope) => {
+    if(insurancePolicyForm.value.plateType == 'A1') {
+        if(!insurancePolicyForm.value.limitLoad) {
+            ElMessage({
+                message: '车辆种类为货车时,核定载质量必传!',
+                type: 'warning'
+            })
+            return
+        }
+    }
   if(!InsurancePolicyRefs) {
   if(!InsurancePolicyRefs) {
     InsurancePolicyRefs?.resetFields()
     InsurancePolicyRefs?.resetFields()
     return
     return
@@ -2932,9 +3012,9 @@ const handleSubmit = async (InsurancePolicyRefs: FormInstance | undefined, scope
         order: {
         order: {
           insuranceCompanyCode: quoteData.value[scope.$index].id,
           insuranceCompanyCode: quoteData.value[scope.$index].id,
           quoteNo: insurancePolicyForm.value.order.quoteNo,
           quoteNo: insurancePolicyForm.value.order.quoteNo,
-          agreementId: quoteData.value[scope.$index].isDispatch?quoteData.value[scope.$index].dispatchAgreementId:quoteData.value[scope.$index].agreement
+          agreementId: quoteData.value[scope.$index].isDispatch?quoteData.value[scope.$index].dispatchAgreementId:quoteData.value[scope.$index].agreement,
+          productId: insurancePolicyForm.value.productId,
         },
         },
-        productId: insurancePolicyForm.value.productId,
         carInfoVo: {
         carInfoVo: {
           licenseKindCode: '02',
           licenseKindCode: '02',
           propertyCode: insurancePolicyForm.value.propertyCode,
           propertyCode: insurancePolicyForm.value.propertyCode,
@@ -3186,6 +3266,20 @@ const handleSubmit = async (InsurancePolicyRefs: FormInstance | undefined, scope
   })
   })
 }
 }
 
 
+const handleNext = () => {
+    const urlLink = router.resolve({
+        path: '/insurancePolicy/index',
+    })
+    window.open(urlLink.href, '_blank')
+}
+
+const handleOpen = (scope) => {
+    ElNotification({
+        title: '费用匹配错误信息',
+        message: h('p', { style: 'white-space: pre-line' }, `${scope.row.quoteResult?.feeNoDescription}`),
+    })
+}
+
 // 获取保司
 // 获取保司
 const ruleFilterCompany = (item) => {
 const ruleFilterCompany = (item) => {
   let data = {
   let data = {

+ 235 - 5
src/views/insurancePolicy/modules/recognition.vue

@@ -6,7 +6,7 @@
         点击示例图上传 或 拖拽证件照到对应虚线框内 放大:鼠标滚轮上下滑动可放大缩小图片 移动:鼠标左键按住图片可移动图片位置
         点击示例图上传 或 拖拽证件照到对应虚线框内 放大:鼠标滚轮上下滑动可放大缩小图片 移动:鼠标左键按住图片可移动图片位置
       </p>
       </p>
     </div>-->
     </div>-->
-    <el-row :gutter="20" style="margin-bottom: 20px">
+    <el-row id="clxx" :gutter="20" style="margin-bottom: 20px">
       <el-col :span="11">
       <el-col :span="11">
         <div class="imageItem">
         <div class="imageItem">
           <p>行驶证正面页</p>
           <p>行驶证正面页</p>
@@ -21,6 +21,10 @@
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'xszf')">
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'xszf')">
             <div class="upload-box">
             <div class="upload-box">
               <img class="upload-image" :src="xszFront"/>
               <img class="upload-image" :src="xszFront"/>
+                <div class="btns">
+                    <span style="margin-right: 20px" @click.stop="handleViewImage('xszf')"><el-icon><ZoomIn /></el-icon>查看大图</span>
+                    <span @click.stop="handleDelImage('xszf')"><el-icon><Delete /></el-icon>删除</span>
+                </div>
             </div>
             </div>
           </el-upload>
           </el-upload>
         </div>
         </div>
@@ -37,6 +41,10 @@
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'xszb')">
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'xszb')">
             <div class="upload-box">
             <div class="upload-box">
               <img class="upload-image" :src="xszBack"/>
               <img class="upload-image" :src="xszBack"/>
+                <div class="btns">
+                    <span style="margin-right: 20px" @click.stop="handleViewImage('xszb')"><el-icon><ZoomIn /></el-icon>查看大图</span>
+                    <span @click.stop="handleDelImage('xszb')"><el-icon><Delete /></el-icon>删除</span>
+                </div>
             </div>
             </div>
           </el-upload>
           </el-upload>
         </div>
         </div>
@@ -112,7 +120,7 @@
       </el-col>
       </el-col>
     </el-row>
     </el-row>
 
 
-    <div class="type">
+    <div class="type" id="czxx">
       <span class="btnItem" :class="{'btnActive': btn.ownerShow === item}" v-for="item in btn.owner" @click="btn.ownerShow = item">{{ item }}</span>
       <span class="btnItem" :class="{'btnActive': btn.ownerShow === item}" v-for="item in btn.owner" @click="btn.ownerShow = item">{{ item }}</span>
     </div>
     </div>
     <el-row :gutter="20" style="margin-bottom: 20px">
     <el-row :gutter="20" style="margin-bottom: 20px">
@@ -130,6 +138,10 @@
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'sfzf')">
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'sfzf')">
             <div class="upload-box">
             <div class="upload-box">
               <img class="upload-image" :src="sfzFront"/>
               <img class="upload-image" :src="sfzFront"/>
+                <div class="btns">
+                    <span style="margin-right: 20px" @click.stop="handleViewImage('sfzf')"><el-icon><ZoomIn /></el-icon>查看大图</span>
+                    <span @click.stop="handleDelImage('sfzf')"><el-icon><Delete /></el-icon>删除</span>
+                </div>
             </div>
             </div>
           </el-upload>
           </el-upload>
         </div>
         </div>
@@ -146,6 +158,10 @@
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'sfzb')">
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'sfzb')">
             <div class="upload-box">
             <div class="upload-box">
               <img class="upload-image" :src="sfzBack"/>
               <img class="upload-image" :src="sfzBack"/>
+                <div class="btns">
+                    <span style="margin-right: 20px" @click.stop="handleViewImage('sfzb')"><el-icon><ZoomIn /></el-icon>查看大图</span>
+                    <span @click.stop="handleDelImage('sfzb')"><el-icon><Delete /></el-icon>删除</span>
+                </div>
             </div>
             </div>
           </el-upload>
           </el-upload>
         </div>
         </div>
@@ -164,6 +180,10 @@
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'yyzz')">
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'yyzz')">
             <div class="upload-box">
             <div class="upload-box">
               <img class="upload-image" :src="yyzzFront"/>
               <img class="upload-image" :src="yyzzFront"/>
+                <div class="btns">
+                    <span style="margin-right: 20px" @click.stop="handleViewImage('yyzz')"><el-icon><ZoomIn /></el-icon>查看大图</span>
+                    <span @click.stop="handleDelImage('yyzz')"><el-icon><Delete /></el-icon>删除</span>
+                </div>
             </div>
             </div>
           </el-upload>
           </el-upload>
         </div>
         </div>
@@ -183,7 +203,10 @@
             <el-input v-model="owerForm.nation" placeholder="请填写"></el-input>
             <el-input v-model="owerForm.nation" placeholder="请填写"></el-input>
           </el-form-item>
           </el-form-item>
           <el-form-item class="m-b-5" label="住址">
           <el-form-item class="m-b-5" label="住址">
-            <el-input v-model="owerForm.addr" placeholder="请填写" ></el-input>
+              <el-input v-model="owerForm.addr" placeholder="请填写" ></el-input>
+          </el-form-item>
+          <el-form-item class="m-b-5" label="身份证号">
+              <el-input v-model="owerForm.identifyNumber" placeholder="请填写" ></el-input>
           </el-form-item>
           </el-form-item>
           <el-form-item class="m-b-5" label="出生日期">
           <el-form-item class="m-b-5" label="出生日期">
             <el-date-picker
             <el-date-picker
@@ -239,7 +262,7 @@
       </el-col>
       </el-col>
     </el-row>
     </el-row>
 
 
-    <div class="type">
+    <div class="type" id="tbrxx">
       <span class="btnItem" :class="{'btnActive': btn.owner1Show === item}" v-for="item in btn.owner1" @click="btn.owner1Show = item">{{ item }}</span>
       <span class="btnItem" :class="{'btnActive': btn.owner1Show === item}" v-for="item in btn.owner1" @click="btn.owner1Show = item">{{ item }}</span>
     </div>
     </div>
     <el-row :gutter="20" style="margin-bottom: 20px">
     <el-row :gutter="20" style="margin-bottom: 20px">
@@ -257,6 +280,10 @@
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'tbrf')">
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'tbrf')">
             <div class="upload-box">
             <div class="upload-box">
               <img class="upload-image" :src="tbrFront"/>
               <img class="upload-image" :src="tbrFront"/>
+                <div class="btns">
+                    <span style="margin-right: 20px" @click.stop="handleViewImage('tbrf')"><el-icon><ZoomIn /></el-icon>查看大图</span>
+                    <span @click.stop="handleDelImage('tbrf')"><el-icon><Delete /></el-icon>删除</span>
+                </div>
             </div>
             </div>
           </el-upload>
           </el-upload>
         </div>
         </div>
@@ -273,6 +300,10 @@
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'tbrb')">
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'tbrb')">
             <div class="upload-box">
             <div class="upload-box">
               <img class="upload-image" :src="tbrBack"/>
               <img class="upload-image" :src="tbrBack"/>
+                <div class="btns">
+                    <span style="margin-right: 20px" @click.stop="handleViewImage('tbrb')"><el-icon><ZoomIn /></el-icon>查看大图</span>
+                    <span @click.stop="handleDelImage('tbrb')"><el-icon><Delete /></el-icon>删除</span>
+                </div>
             </div>
             </div>
           </el-upload>
           </el-upload>
         </div>
         </div>
@@ -291,6 +322,10 @@
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'tbryyzz')">
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'tbryyzz')">
             <div class="upload-box">
             <div class="upload-box">
               <img class="upload-image" :src="tbryyzzFront"/>
               <img class="upload-image" :src="tbryyzzFront"/>
+                <div class="btns">
+                    <span style="margin-right: 20px" @click.stop="handleViewImage('tbryyzz')"><el-icon><ZoomIn /></el-icon>查看大图</span>
+                    <span @click.stop="handleDelImage('tbryyzz')"><el-icon><Delete /></el-icon>删除</span>
+                </div>
             </div>
             </div>
           </el-upload>
           </el-upload>
         </div>
         </div>
@@ -312,6 +347,9 @@
           <el-form-item class="m-b-5" label="住址">
           <el-form-item class="m-b-5" label="住址">
             <el-input v-model="ower1Form.addr" placeholder="请填写" ></el-input>
             <el-input v-model="ower1Form.addr" placeholder="请填写" ></el-input>
           </el-form-item>
           </el-form-item>
+          <el-form-item class="m-b-5" label="身份证号">
+              <el-input v-model="ower1Form.identifyNumber" placeholder="请填写" ></el-input>
+          </el-form-item>
           <el-form-item class="m-b-5" label="出生日期">
           <el-form-item class="m-b-5" label="出生日期">
             <el-date-picker
             <el-date-picker
               type="datetime"
               type="datetime"
@@ -366,7 +404,7 @@
       </el-col>
       </el-col>
     </el-row>
     </el-row>
 
 
-    <div class="type">
+    <div class="type" id="bbrxx">
       <span class="btnItem" :class="{'btnActive': btn.owner2Show === item}" v-for="item in btn.owner2" @click="btn.owner2Show = item">{{ item }}</span>
       <span class="btnItem" :class="{'btnActive': btn.owner2Show === item}" v-for="item in btn.owner2" @click="btn.owner2Show = item">{{ item }}</span>
     </div>
     </div>
     <el-row :gutter="20" style="margin-bottom: 20px">
     <el-row :gutter="20" style="margin-bottom: 20px">
@@ -384,6 +422,10 @@
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'bbrf')">
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'bbrf')">
             <div class="upload-box">
             <div class="upload-box">
               <img class="upload-image" :src="bbrFront"/>
               <img class="upload-image" :src="bbrFront"/>
+                <div class="btns">
+                    <span style="margin-right: 20px" @click.stop="handleViewImage('bbrf')"><el-icon><ZoomIn /></el-icon>查看大图</span>
+                    <span @click.stop="handleDelImage('bbrf')"><el-icon><Delete /></el-icon>删除</span>
+                </div>
             </div>
             </div>
           </el-upload>
           </el-upload>
         </div>
         </div>
@@ -400,6 +442,10 @@
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'bbrb')">
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'bbrb')">
             <div class="upload-box">
             <div class="upload-box">
               <img class="upload-image" :src="bbrBack"/>
               <img class="upload-image" :src="bbrBack"/>
+                <div class="btns">
+                    <span style="margin-right: 20px" @click.stop="handleViewImage('bbrb')"><el-icon><ZoomIn /></el-icon>查看大图</span>
+                    <span @click.stop="handleDelImage('bbrb')"><el-icon><Delete /></el-icon>删除</span>
+                </div>
             </div>
             </div>
           </el-upload>
           </el-upload>
         </div>
         </div>
@@ -418,6 +464,10 @@
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'bbryyzz')">
           <el-upload v-else drag :auto-upload="false" :show-file-list="false" @change="uploadImage($event, 'bbryyzz')">
             <div class="upload-box">
             <div class="upload-box">
               <img class="upload-image" :src="bbryyzzFront"/>
               <img class="upload-image" :src="bbryyzzFront"/>
+                <div class="btns">
+                    <span style="margin-right: 20px" @click.stop="handleViewImage('bbryyzz')"><el-icon><ZoomIn /></el-icon>查看大图</span>
+                    <span @click.stop="handleDelImage('bbryyzz')"><el-icon><Delete /></el-icon>删除</span>
+                </div>
             </div>
             </div>
           </el-upload>
           </el-upload>
         </div>
         </div>
@@ -439,6 +489,9 @@
           <el-form-item class="m-b-5" label="住址">
           <el-form-item class="m-b-5" label="住址">
             <el-input v-model="ower2Form.addr" placeholder="请填写" ></el-input>
             <el-input v-model="ower2Form.addr" placeholder="请填写" ></el-input>
           </el-form-item>
           </el-form-item>
+          <el-form-item class="m-b-5" label="身份证号">
+              <el-input v-model="ower2Form.identifyNumber" placeholder="请填写" ></el-input>
+          </el-form-item>
           <el-form-item class="m-b-5" label="出生日期">
           <el-form-item class="m-b-5" label="出生日期">
             <el-date-picker
             <el-date-picker
               type="datetime"
               type="datetime"
@@ -497,6 +550,11 @@
       <el-button plain type="primary" @click="handleCancel">取消</el-button>
       <el-button plain type="primary" @click="handleCancel">取消</el-button>
       <el-button type="primary" @click="handleConfirm">确定</el-button>
       <el-button type="primary" @click="handleConfirm">确定</el-button>
     </div>
     </div>
+    <el-image-viewer
+      v-if="showImage"
+      :url-list="showImageUrl"
+      @close="showImage = false"
+    />
   </div>
   </div>
 </template>
 </template>
 
 
@@ -725,6 +783,7 @@ const uploadImage = async (file, type) => {
                   owerForm.value.name = data.name
                   owerForm.value.name = data.name
                   owerForm.value.mobile = data.mobile
                   owerForm.value.mobile = data.mobile
                   owerForm.value.addr = data.addr
                   owerForm.value.addr = data.addr
+                  owerForm.value.nation = data.nation
                   owerForm.value.identifyNumber = data.identifyNumber
                   owerForm.value.identifyNumber = data.identifyNumber
                   owerForm.value.identifyValidDate =
                   owerForm.value.identifyValidDate =
                       data.identifyValidDate.substring(0, 4) +
                       data.identifyValidDate.substring(0, 4) +
@@ -769,6 +828,7 @@ const uploadImage = async (file, type) => {
                   owerForm.value.name = data.name
                   owerForm.value.name = data.name
                   owerForm.value.mobile = data.mobile
                   owerForm.value.mobile = data.mobile
                   owerForm.value.addr = data.addr
                   owerForm.value.addr = data.addr
+                  owerForm.value.nation = data.nation
                   owerForm.value.identifyNumber = data.identifyNumber
                   owerForm.value.identifyNumber = data.identifyNumber
                   owerForm.value.identifyValidDate =
                   owerForm.value.identifyValidDate =
                       data.identifyValidDate.substring(0, 4) +
                       data.identifyValidDate.substring(0, 4) +
@@ -833,6 +893,7 @@ const uploadImage = async (file, type) => {
                   ower1Form.value.name = data.name
                   ower1Form.value.name = data.name
                   ower1Form.value.mobile = data.mobile
                   ower1Form.value.mobile = data.mobile
                   ower1Form.value.addr = data.addr
                   ower1Form.value.addr = data.addr
+                  ower1Form.value.nation = data.nation
                   ower1Form.value.identifyNumber = data.identifyNumber
                   ower1Form.value.identifyNumber = data.identifyNumber
                   ower1Form.value.identifyValidDate =
                   ower1Form.value.identifyValidDate =
                       data.identifyValidDate.substring(0, 4) +
                       data.identifyValidDate.substring(0, 4) +
@@ -877,6 +938,7 @@ const uploadImage = async (file, type) => {
                   ower1Form.value.name = data.name
                   ower1Form.value.name = data.name
                   ower1Form.value.mobile = data.mobile
                   ower1Form.value.mobile = data.mobile
                   ower1Form.value.addr = data.addr
                   ower1Form.value.addr = data.addr
+                  ower1Form.value.nation = data.nation
                   ower1Form.value.identifyNumber = data.identifyNumber
                   ower1Form.value.identifyNumber = data.identifyNumber
                   ower1Form.value.identifyValidDate =
                   ower1Form.value.identifyValidDate =
                       data.identifyValidDate.substring(0, 4) +
                       data.identifyValidDate.substring(0, 4) +
@@ -941,6 +1003,7 @@ const uploadImage = async (file, type) => {
                   ower2Form.value.name = data.name
                   ower2Form.value.name = data.name
                   ower2Form.value.mobile = data.mobile
                   ower2Form.value.mobile = data.mobile
                   ower2Form.value.addr = data.addr
                   ower2Form.value.addr = data.addr
+                  ower2Form.value.nation = data.nation
                   ower2Form.value.identifyNumber = data.identifyNumber
                   ower2Form.value.identifyNumber = data.identifyNumber
                   ower2Form.value.identifyValidDate =
                   ower2Form.value.identifyValidDate =
                       data.identifyValidDate.substring(0, 4) +
                       data.identifyValidDate.substring(0, 4) +
@@ -985,6 +1048,7 @@ const uploadImage = async (file, type) => {
                   ower2Form.value.name = data.name
                   ower2Form.value.name = data.name
                   ower2Form.value.mobile = data.mobile
                   ower2Form.value.mobile = data.mobile
                   ower2Form.value.addr = data.addr
                   ower2Form.value.addr = data.addr
+                  ower2Form.value.nation = data.nation
                   ower2Form.value.identifyNumber = data.identifyNumber
                   ower2Form.value.identifyNumber = data.identifyNumber
                   ower2Form.value.identifyValidDate =
                   ower2Form.value.identifyValidDate =
                       data.identifyValidDate.substring(0, 4) +
                       data.identifyValidDate.substring(0, 4) +
@@ -1039,8 +1103,144 @@ const uploadImage = async (file, type) => {
     })
     })
   }
   }
 }
 }
+let showImage = ref(false)
+let showImageUrl = ref([])
+const handleViewImage = (type) => {
+    showImage.value = true
+    switch (type) {
+        case 'xszf':
+            showImageUrl.value = [xszFront.value]
+            break;
+        case 'xszb':
+            showImageUrl.value = [xszBack.value]
+            break;
+        case 'sfzf':
+            showImageUrl.value = [sfzFront.value]
+            break;
+        case 'sfzb':
+            showImageUrl.value = [sfzBack.value]
+            break;
+        case 'yyzz':
+            showImageUrl.value = [yyzzFront.value]
+            break;
+        case 'tbrf':
+            showImageUrl.value = [tbrFront.value]
+            break;
+        case 'tbrb':
+            showImageUrl.value = [tbrBack.value]
+            break;
+        case 'tbryyzz':
+            showImageUrl.value = [tbryyzzFront.value]
+            break;
+        case 'bbrf':
+            showImageUrl.value = [bbrFront.value]
+            break;
+        case 'bbrb':
+            showImageUrl.value = [bbrBack.value]
+            break;
+        case 'bbryyzz':
+            showImageUrl.value = [bbryyzzFront.value]
+            break;
+    }
+}
+const handleDelImage = (type) => {
+    switch (type) {
+        case 'xszf':
+            xszFrontResult.value = null
+            xszFront.value = ''
+            xszFrontFile.value = null
+            break;
+        case 'xszb':
+            xszBackResult.value = null
+            xszBack.value = ''
+            xszBackFile.value = null
+            break;
+        case 'sfzf':
+            sfzFrontResult.value = null
+            sfzFront.value = ''
+            sfzFrontFile.value = null
+            break;
+        case 'sfzb':
+            sfzBackResult.value = null
+            sfzBack.value = ''
+            sfzBackFile.value = null
+            break;
+        case 'yyzz':
+            yyzzFrontResult.value = null
+            yyzzFront.value = ''
+            yyzzFrontFile.value = null
+            break;
+        case 'tbrf':
+            tbrFrontResult.value = null
+            tbrFront.value = ''
+            tbrFrontFile.value = null
+            break;
+        case 'tbrb':
+            tbrBackResult.value = null
+            tbrBack.value = ''
+            tbrBackFile.value = null
+            break;
+        case 'tbryyzz':
+            tbryyzzFrontResult.value = null
+            tbryyzzFront.value = ''
+            tbryyzzFrontFile.value = null
+            break;
+        case 'bbrf':
+            bbrFrontResult.value = null
+            bbrFront.value = ''
+            bbrFrontFile.value = null
+            break;
+        case 'bbrb':
+            bbrBackResult.value = null
+            bbrBack.value = ''
+            bbrBackFile.value = null
+            break;
+        case 'bbryyzz':
+            bbryyzzFrontResult.value = null
+            bbryyzzFront.value = ''
+            bbryyzzFrontFile.value = null
+            break;
+    }
+}
 
 
 const handleCancel = () => {
 const handleCancel = () => {
+    carForm.value = {}
+    owerForm.value = {}
+    ower1Form.value = {}
+    ower2Form.value = {}
+    xszFrontResult.value = null
+    xszFront.value = ''
+    xszFrontFile.value = null
+    xszBackResult.value = null
+    xszBack.value = ''
+    xszBackFile.value = null
+    sfzFrontResult.value = null
+    sfzFront.value = ''
+    sfzFrontFile.value = null
+    sfzBackResult.value = null
+    sfzBack.value = ''
+    sfzBackFile.value = null
+    yyzzFrontResult.value = null
+    yyzzFront.value = ''
+    yyzzFrontFile.value = null
+    tbrFrontResult.value = null
+    tbrFront.value = ''
+    tbrFrontFile.value = null
+    tbrBackResult.value = null
+    tbrBack.value = ''
+    tbrBackFile.value = null
+    tbryyzzFrontResult.value = null
+    tbryyzzFront.value = ''
+    tbryyzzFrontFile.value = null
+    bbrFrontResult.value = null
+    bbrFront.value = ''
+    bbrFrontFile.value = null
+    bbrBackResult.value = null
+    bbrBack.value = ''
+    bbrBackFile.value = null
+    bbryyzzFrontResult.value = null
+    bbryyzzFront.value = ''
+    bbryyzzFrontFile.value = null
   emit('close')
   emit('close')
 }
 }
 
 
@@ -1199,6 +1399,17 @@ const handleConfirm = () => {
   emit('close', data)
   emit('close', data)
 }
 }
 
 
+const setAnchor = (anchor) => {
+    const element = document.getElementById(`${anchor}`)
+    if(element) {
+        element.scrollIntoView({behavior: 'smooth'})
+    }
+}
+
+defineExpose({
+    setAnchor
+})
+
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">
@@ -1228,6 +1439,7 @@ const handleConfirm = () => {
     display: flex;
     display: flex;
     align-items: center;
     align-items: center;
     justify-content: center;
     justify-content: center;
+    position: relative;
     .icon-box{
     .icon-box{
       text-align: center;
       text-align: center;
       color: #999999;
       color: #999999;
@@ -1240,6 +1452,24 @@ const handleConfirm = () => {
       width: 100%;
       width: 100%;
       height: 100%;
       height: 100%;
     }
     }
+    .btns{
+      height: 30px;
+      width: 100%;
+      background: rgba(0, 0, 0, .5);
+      position: absolute;
+      display: flex;
+      align-items: center;
+      justify-content: space-around;
+      left: 0;
+      bottom: 0;
+      span{
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        font-size: 16px;
+        color: #ffffff;
+      }
+    }
   }
   }
   .m-b-5{
   .m-b-5{
     margin-bottom: 5px !important;
     margin-bottom: 5px !important;

+ 10 - 5
src/views/insurancePolicy/modules/underwriting.vue

@@ -201,14 +201,19 @@ const handleSubmit = (bool) => {
           message: res.msg,
           message: res.msg,
           type: 'success'
           type: 'success'
         })
         })
+          emit('close', false)
       } else {
       } else {
-        ElMessage({
-          message: res.msg,
-          type: 'warning'
-        })
+          if(res.code == 500) {
+              emit('close', false, res.msg)
+          } else {
+              emit('close', false)
+          }
+          ElMessage({
+            message: res.msg,
+            type: 'warning'
+          })
       }
       }
     })
     })
-    emit('close', false)
   } else {
   } else {
     emit('close', false)
     emit('close', false)
   }
   }

+ 4 - 4
src/views/insurancePolicy/orderDetail.vue

@@ -264,7 +264,7 @@
                                     </el-tooltip>
                                     </el-tooltip>
                                 </template>
                                 </template>
                             </el-table-column>
                             </el-table-column>
-                            <el-table-column label="保费" prop="unitAmount" align="center">
+                            <el-table-column label="保费" prop="premium" align="center">
                                 <template #default="scope">
                                 <template #default="scope">
                                     <el-tooltip
                                     <el-tooltip
                                         effect="dark"
                                         effect="dark"
@@ -274,7 +274,7 @@
                                     >
                                     >
                                         <span :style="{
                                         <span :style="{
                                             color: !scope.row.type || !scope.row.afterPremium ? 'inherit' : '#F56C6C'
                                             color: !scope.row.type || !scope.row.afterPremium ? 'inherit' : '#F56C6C'
-                                        }">{{ scope.row.unitAmount }}</span>
+                                        }">{{ scope.row.premium }}</span>
                                     </el-tooltip>
                                     </el-tooltip>
                                 </template>
                                 </template>
                             </el-table-column>
                             </el-table-column>
@@ -1653,7 +1653,6 @@ const initDetail = () => {
             drivingData.value = detailData.value.accidentalDrivings
             drivingData.value = detailData.value.accidentalDrivings
             // 批改数据的判断
             // 批改数据的判断
             if (detailData.value.insOrderAdjustVo && detailData.value.insOrderAdjustVo.adjustInfoList?.length > 0) {
             if (detailData.value.insOrderAdjustVo && detailData.value.insOrderAdjustVo.adjustInfoList?.length > 0) {
-                console.log('有批改数据')
                 let adjustInfoList = detailData.value.insOrderAdjustVo.adjustInfoList;
                 let adjustInfoList = detailData.value.insOrderAdjustVo.adjustInfoList;
                 insuranceData.value = adjustInfoList.filter((item: any) => item.kindType !== 2 && item.isHide !== 1).map((item: any) => ({
                 insuranceData.value = adjustInfoList.filter((item: any) => item.kindType !== 2 && item.isHide !== 1).map((item: any) => ({
                     ...item,
                     ...item,
@@ -1746,7 +1745,7 @@ const dictChange = (list, value) => {
 // 编辑
 // 编辑
 const handleEdit = () => {
 const handleEdit = () => {
     myRouter.push({
     myRouter.push({
-        name: 'InsurancePolicy',
+        path: '/insurancePolicy/index',
         query: {
         query: {
             orderNo: myRoute.query.orderNo
             orderNo: myRoute.query.orderNo
         }
         }
@@ -1885,6 +1884,7 @@ const onComplete = () => {
 // 换取对应保额的别名
 // 换取对应保额的别名
 const getValAlias = (code: any, val: any) => {
 const getValAlias = (code: any, val: any) => {
     let data = insuranceAllData.value;
     let data = insuranceAllData.value;
+    console.log(12312323, insuranceAllData.value)
     // 特殊处理,null转为投保的值
     // 特殊处理,null转为投保的值
     if (val === null) val = '1';
     if (val === null) val = '1';
     let objs = data.find((item: any) => item.kindCode === code)?.options.find((item: any) => item.value == val);
     let objs = data.find((item: any) => item.kindCode === code)?.options.find((item: any) => item.value == val);

+ 1 - 1
src/views/payCredit/agentCount.vue

@@ -78,7 +78,7 @@
                             <el-button link type="primary" size="small" @click="agentPass(scope.row)">申请通过</el-button>
                             <el-button link type="primary" size="small" @click="agentPass(scope.row)">申请通过</el-button>
                             <el-popover placement="top" width="300" trigger="click" v-model:visible="scope.row.agentShow">
                             <el-popover placement="top" width="300" trigger="click" v-model:visible="scope.row.agentShow">
                                 <template #reference>
                                 <template #reference>
-                                    <el-button link type="primary" size="small">驳回</el-button>
+                                    <el-button link type="primary" size="small" >驳回</el-button>
                                 </template>
                                 </template>
                                 <el-input type="textarea" v-model="agentReason" maxlength="200"></el-input>
                                 <el-input type="textarea" v-model="agentReason" maxlength="200"></el-input>
                                 <div style="display: flex; align-items: center; justify-content: flex-end; margin-top: 10px">
                                 <div style="display: flex; align-items: center; justify-content: flex-end; margin-top: 10px">

+ 14 - 3
src/views/quoteConfig/agreement/agreementDetails.vue

@@ -144,7 +144,7 @@
                 <el-tabs :tab-position="ruleFeePosition" class="ruleFee" v-if="item.costVoList">
                 <el-tabs :tab-position="ruleFeePosition" class="ruleFee" v-if="item.costVoList">
                   <el-tab-pane v-for="(costitem, costindex) in item.costVoList" :key="costindex"
                   <el-tab-pane v-for="(costitem, costindex) in item.costVoList" :key="costindex"
                     :label="costitem.productName" :name="costitem.productName">
                     :label="costitem.productName" :name="costitem.productName">
-                    <span class="strong">单交费用({{ costitem.ptlAgreementCostVoList.length }}条)</span>
+                    <span class="strong">{{ costitem.productName }}费用({{ costitem.ptlAgreementCostVoList.length }}条)</span>
                     <ComplexTable :tableData="costitem.ptlAgreementCostVoList" :columns="columns" :maxHeight="250"
                     <ComplexTable :tableData="costitem.ptlAgreementCostVoList" :columns="columns" :maxHeight="250"
                       :showIndex="false" :columnwidth="200" :showSelect="false">
                       :showIndex="false" :columnwidth="200" :showSelect="false">
                       <template v-slot:operation="scope">
                       <template v-slot:operation="scope">
@@ -171,7 +171,7 @@
       <template #default>
       <template #default>
         <div class="flex a-c j-s ">
         <div class="flex a-c j-s ">
           <span class="strong title" style="margin-right: 20px;">规则条件</span>
           <span class="strong title" style="margin-right: 20px;">规则条件</span>
-          <el-button type="primary" link @click="ruleConditionVisible = true">
+          <el-button type="primary" link @click="addRules">
             添加条件
             添加条件
             <template #icon>
             <template #icon>
               <el-icon>
               <el-icon>
@@ -195,7 +195,7 @@
     <auth-Drawer :Drawer="agreementAuthDrawer" @cancel="agreementAuthDrawer = false" @save="DrawerSave"
     <auth-Drawer :Drawer="agreementAuthDrawer" @cancel="agreementAuthDrawer = false" @save="DrawerSave"
       @query="Drawerquery" @echoValue="echoValue" :deptlist="deptauthList" :checkedKeys="checkedKeys" :checkedIds="checkedIds"></auth-Drawer>
       @query="Drawerquery" @echoValue="echoValue" :deptlist="deptauthList" :checkedKeys="checkedKeys" :checkedIds="checkedIds"></auth-Drawer>
     <!-- 规则条件弹窗 -->
     <!-- 规则条件弹窗 -->
-    <RuleCondition :ruleConditionVisible="ruleConditionVisible" @cancel="ruleConditionVisible = false"
+    <RuleCondition ref="RuleConditionRefs" :ruleConditionVisible="ruleConditionVisible" @cancel="ruleConditionVisible = false"
       @save="ruleConditionSave" :attrIdList="rulesAttrListInfo.rulesAttrList" />
       @save="ruleConditionSave" :attrIdList="rulesAttrListInfo.rulesAttrList" />
     <!-- 规则费用抽屉组件 -->
     <!-- 规则费用抽屉组件 -->
     <ruleFeeDialog v-if="ruleFeeVisible" :ruleFeeVisible="ruleFeeVisible" :agreementInfo="agreementInfo"
     <ruleFeeDialog v-if="ruleFeeVisible" :ruleFeeVisible="ruleFeeVisible" :agreementInfo="agreementInfo"
@@ -228,6 +228,13 @@ const router = useRouter();
 const id = ref(route.query.id as string);//id参数
 const id = ref(route.query.id as string);//id参数
 const activeName = ref('agreementInfo')//默认标签页
 const activeName = ref('agreementInfo')//默认标签页
 const authDeptlength = ref<number>(0);
 const authDeptlength = ref<number>(0);
+
+let RuleConditionRefs = ref()
+const addRules = () => {
+    ruleConditionVisible.value = true
+    RuleConditionRefs.value.ruleAttr(agreementInfo.value.companyId)
+}
+
 onBeforeMount(async () => {
 onBeforeMount(async () => {
   await loadDicts(['agreement_type', 'valid_status', 'is_enable', 'with_tax', 'audit_status']);//获取多个字典
   await loadDicts(['agreement_type', 'valid_status', 'is_enable', 'with_tax', 'audit_status']);//获取多个字典
 
 
@@ -451,6 +458,7 @@ const ruleFeePosition = ref<TabsInstance['tabPosition']>('left')
 const direction = ref<DrawerProps['direction']>('rtl')
 const direction = ref<DrawerProps['direction']>('rtl')
 const addUnderwritingRule = () => {
 const addUnderwritingRule = () => {
   addUnderwritingRuleShow.value = true;
   addUnderwritingRuleShow.value = true;
+    rulesAttrListInfo.rulesAttrList = []
 }
 }
 //承保规则保存事件
 //承保规则保存事件
 const UnderwritingRuleSave = () => {
 const UnderwritingRuleSave = () => {
@@ -469,6 +477,7 @@ const UnderwritingRuleSave = () => {
           name: 'reload',
           name: 'reload',
         })
         })
       } else {
       } else {
+
       }
       }
     });
     });
   } else {
   } else {
@@ -650,6 +659,7 @@ const ruleFeeSave = (data: object) => {
   api.agreementApi.ptlAgreementCostsave(data).then((res: any) => {
   api.agreementApi.ptlAgreementCostsave(data).then((res: any) => {
     if (res.code == '200') {
     if (res.code == '200') {
       ruleFeeVisible.value = false;
       ruleFeeVisible.value = false;
+      agreementRulesList()
     } else {
     } else {
       ElMessage({
       ElMessage({
         type: 'error',
         type: 'error',
@@ -667,6 +677,7 @@ const ruleFeeEditSave = (data: object) => {
         message: res.msg,
         message: res.msg,
         plain: true,
         plain: true,
       })
       })
+      agreementRulesList()
     } else {
     } else {
     }
     }
   });
   });

+ 74 - 28
src/views/quoteConfig/agreement/components/ruleFeeDialog.vue

@@ -72,14 +72,19 @@
                               :disabled-date="(date: any) => disabledEndDate(date, index, Costindex)" />
                               :disabled-date="(date: any) => disabledEndDate(date, index, Costindex)" />
                           </el-form-item>
                           </el-form-item>
                         </ElCol>
                         </ElCol>
-                        <ElCol :md="24" :lg="12">
-                          <el-form-item label="审核方式" prop="auditMethod">
-                            <el-select v-model="Costitem.auditMethod" placeholder="选择审核方式">
-                              <el-option label="自动审核" value="0" />
-                              <el-option label="手动审核" value="1" />
-                            </el-select>
-                          </el-form-item>
-                        </ElCol>
+                          <ElCol :md="24" :lg="12">
+                              <el-form-item label="审核方式" prop="auditMethod">
+                                  <el-select v-model="Costitem.auditMethod" placeholder="选择审核方式">
+                                      <el-option label="自动审核" value="0" />
+                                      <el-option label="手动审核" value="1" />
+                                  </el-select>
+                              </el-form-item>
+                          </ElCol>
+                          <ElCol :md="24" :lg="12">
+                              <el-form-item label="优先级" prop="priorityLevel">
+                                  <el-input-number style="width: 100%" v-model="Costitem.priorityLevel" placeholder="请填写优先级" />
+                              </el-form-item>
+                          </ElCol>
                         <ElCol :md="24" :lg="24">
                         <ElCol :md="24" :lg="24">
                           <el-form-item label="费用描述" prop="costDescribe">
                           <el-form-item label="费用描述" prop="costDescribe">
                             <el-input v-model="Costitem.costDescribe" maxlength="500" placeholder="请输入费用描述"
                             <el-input v-model="Costitem.costDescribe" maxlength="500" placeholder="请输入费用描述"
@@ -172,7 +177,7 @@
       </template>
       </template>
     </el-drawer>
     </el-drawer>
     <!-- 规则条件弹窗 -->
     <!-- 规则条件弹窗 -->
-    <RuleCondition :ruleConditionVisible="ruleConditionVisible" @cancel="ruleConditionVisible = false"
+    <RuleCondition ref="RuleConditionRefs" :ruleConditionVisible="ruleConditionVisible" @cancel="ruleConditionVisible = false"
       @save="ruleConditionSave" :attrIdList="echoResponse" />
       @save="ruleConditionSave" :attrIdList="echoResponse" />
   </div>
   </div>
 </template>
 </template>
@@ -186,6 +191,8 @@ import { defineProps, defineEmits } from "vue";
 const direction = ref<DrawerProps['direction']>('rtl')
 const direction = ref<DrawerProps['direction']>('rtl')
 const fromSize = ref<ComponentSize>('default')
 const fromSize = ref<ComponentSize>('default')
 
 
+let RuleConditionRefs = ref()
+
 const activeName = ref('单交')
 const activeName = ref('单交')
 const props = defineProps<{
 const props = defineProps<{
   ruleFeeVisible: boolean,
   ruleFeeVisible: boolean,
@@ -209,10 +216,13 @@ const feerules = ref<FormRules>({
   auditMethod: [
   auditMethod: [
     { required: true, trigger: 'change', message: '请选择审核方式' },
     { required: true, trigger: 'change', message: '请选择审核方式' },
   ],
   ],
-
+    priorityLevel: [
+        { required: true, trigger: 'blur', message: '请填写优先级' },
+    ]
 })
 })
 interface RuleCondition {
 interface RuleCondition {
   min: number | string;
   min: number | string;
+  operator: number | string;
 }
 }
 onMounted(async () => {
 onMounted(async () => {
   await loadDicts(['insurance_type'])
   await loadDicts(['insurance_type'])
@@ -289,18 +299,27 @@ const save = async (formEl: FormInstance | undefined | any) => {
                 plain: true,
                 plain: true,
               });
               });
               return;
               return;
-            } else {
-              resolve(true);
             }
             }
-            const result = checkArrayValues(ruleFeeinfo.value[insuranceTypeIndex.value].ptlAgreementCostAddList[index].ruleConditions as RuleCondition[], "min");
+            // const resultInputTag = checkArrayValues(ruleFeeinfo.value[insuranceTypeIndex.value].ptlAgreementCostAddList[index].ruleConditions as RuleCondition[], "operator");
+            // if(!resultInputTag){
+            //     ElMessage({
+            //         type: 'error',
+            //         message: `规则运算符不能为空值`,
+            //         plain: true,
+            //     });
+            //     return;
+            // }
+            const result = checkArrayValues(ruleFeeinfo.value[insuranceTypeIndex.value].ptlAgreementCostAddList[index].ruleConditions as RuleCondition[]);
             if(!result){
             if(!result){
               ElMessage({
               ElMessage({
                 type: 'error',
                 type: 'error',
                 message: `规则条件不能为空值`,
                 message: `规则条件不能为空值`,
                 plain: true,
                 plain: true,
               });
               });
-            }else{
-              resolve(true);
+              return;
+            }
+            if(ruleFeeinfo.value[insuranceTypeIndex.value].ptlAgreementCostAddList[index].ruleConditions.length && result ) {
+                resolve(true);
             }
             }
           } else {
           } else {
             reject(index);
             reject(index);
@@ -321,8 +340,6 @@ const save = async (formEl: FormInstance | undefined | any) => {
 
 
       return val;
       return val;
     })
     })
-    // console.log(ruleFeeinfo.value)
-    // return;
     emits("save",{ptlAgreementCode:props.agreementInfo.agreementCode,ptlAgreementName:props.agreementInfo.agreementTitle,costAddList:ruleFeeinfo.value} )
     emits("save",{ptlAgreementCode:props.agreementInfo.agreementCode,ptlAgreementName:props.agreementInfo.agreementTitle,costAddList:ruleFeeinfo.value} )
   } catch (error) {
   } catch (error) {
     const invalidIndex: any = error; // 获取未通过校验的表单索引
     const invalidIndex: any = error; // 获取未通过校验的表单索引
@@ -338,13 +355,41 @@ const save = async (formEl: FormInstance | undefined | any) => {
     });
     });
   }
   }
 };
 };
-const checkArrayValues = <T, K extends keyof T>(arr: T[], key: K) => {
+const checkArrayValues = <T, K extends keyof T>(arr: T[]) => {
+    console.log('规则数组', arr)
   // 遍历数组
   // 遍历数组
   for (let item of arr) {
   for (let item of arr) {
-    // 检查指定键的值是否为空
-    if (item[key] === null || item[key] === undefined || item[key] === "") {
-      return false; // 如果为空,返回 false
-    }
+      // 检查指定键的值是否为空
+      if (item.operator === null || item.operator === undefined || item.operator === "") {
+          return false; // 如果为空,返回 false
+      }
+      if(item.attrType == 'radio') {
+          if (item.min === null || item.min === undefined || item.min === "") {
+              return false; // 如果为空,返回 false
+          }
+      }
+      if(item.attrType == 'checkbox' || item.attrType == 'select' || item.attrType == 'inputTag') {
+          if (item.minArray === null || item.minArray === undefined || item.minArray === "") {
+              return false; // 如果为空,返回 false
+          }
+      }
+      if(item.attrType == 'inputNumber' || item.attrType == 'datetime') {
+        if(item.operator == '1' || item.operator == null) {
+            if ((item.min === null || item.min === undefined || item.min === "") || (item.max === null || item.max === undefined || item.max === "")) {
+                return false; // 如果为空,返回 false
+            }
+        }
+        if(item.operator == '2' || item.operator == '3') {
+            if(item.min === null || item.min === undefined || item.min === "") {
+                return false; // 如果为空,返回 false
+            }
+        }
+        if(item.operator == '4' || item.operator == '5') {
+            if(item.max === null || item.max === undefined || item.max === "") {
+                return false; // 如果为空,返回 false
+            }
+        }
+      }
   }
   }
   return true; // 如果所有值都不为空,返回 true
   return true; // 如果所有值都不为空,返回 true
 }
 }
@@ -353,27 +398,28 @@ const addRuleCondition = (index: number, Costindex: number) => {
   insuranceTypeIndex.value = index;
   insuranceTypeIndex.value = index;
   feeIndex.value = Costindex;
   feeIndex.value = Costindex;
   ruleConditionVisible.value = true;
   ruleConditionVisible.value = true;
+    RuleConditionRefs.value.ruleAttr(props.agreementInfo.companyId)
 }
 }
 
 
 const handelRK = (scope) => {
 const handelRK = (scope) => {
-    if(scope.row.export&&scope.row.addThrow) {
+    if(scope.row.export&&scope.row.addThrow || scope.row.export&&scope.row.addThrow === 0) {
         scope.row.keepPointRatio = scope.row.inlet + scope.row.addThrow - scope.row.export
         scope.row.keepPointRatio = scope.row.inlet + scope.row.addThrow - scope.row.export
     }
     }
     if(scope.row.export&&scope.row.keepPointRatio) {
     if(scope.row.export&&scope.row.keepPointRatio) {
         scope.row.addThrow = scope.row.export + scope.row.keepPointRatio - scope.row.inlet
         scope.row.addThrow = scope.row.export + scope.row.keepPointRatio - scope.row.inlet
     }
     }
-    if(scope.row.keepPointRatio&&scope.row.addThrow) {
+    if(scope.row.keepPointRatio&&scope.row.addThrow || scope.row.keepPointRatio&&scope.row.addThrow === 0) {
         scope.row.export = scope.row.inlet + scope.row.addThrow - scope.row.keepPointRatio
         scope.row.export = scope.row.inlet + scope.row.addThrow - scope.row.keepPointRatio
     }
     }
 }
 }
 const handelCK = (scope) => {
 const handelCK = (scope) => {
-    if(scope.row.inlet&&scope.row.addThrow) {
+    if(scope.row.inlet&&scope.row.addThrow || scope.row.inlet&&scope.row.addThrow === 0) {
         scope.row.keepPointRatio = scope.row.inlet + scope.row.addThrow - scope.row.export
         scope.row.keepPointRatio = scope.row.inlet + scope.row.addThrow - scope.row.export
     }
     }
     if(scope.row.inlet&&scope.row.keepPointRatio) {
     if(scope.row.inlet&&scope.row.keepPointRatio) {
         scope.row.addThrow = scope.row.export + scope.row.keepPointRatio - scope.row.inlet
         scope.row.addThrow = scope.row.export + scope.row.keepPointRatio - scope.row.inlet
     }
     }
-    if(scope.row.keepPointRatio&&scope.row.addThrow) {
+    if(scope.row.keepPointRatio&&scope.row.addThrow || scope.row.keepPointRatio&&scope.row.addThrow === 0) {
         scope.row.inlet = scope.row.export + scope.row.keepPointRatio - scope.row.addThrow
         scope.row.inlet = scope.row.export + scope.row.keepPointRatio - scope.row.addThrow
     }
     }
 }
 }
@@ -392,10 +438,10 @@ const handelLD = (scope) => {
     if(scope.row.inlet&&scope.row.export) {
     if(scope.row.inlet&&scope.row.export) {
         scope.row.addThrow = scope.row.export + scope.row.keepPointRatio - scope.row.inlet
         scope.row.addThrow = scope.row.export + scope.row.keepPointRatio - scope.row.inlet
     }
     }
-    if(scope.row.inlet&&scope.row.addThrow) {
+    if(scope.row.inlet&&scope.row.addThrow || scope.row.inlet&&scope.row.addThrow === 0) {
         scope.row.export = scope.row.addThrow + scope.row.inlet - scope.row.keepPointRatio
         scope.row.export = scope.row.addThrow + scope.row.inlet - scope.row.keepPointRatio
     }
     }
-    if(scope.row.addThrow&&scope.row.export) {
+    if(scope.row.addThrow&&scope.row.export || scope.row.addThrow === 0&&scope.row.export) {
         scope.row.inlet = scope.row.export + scope.row.keepPointRatio - scope.row.addThrow
         scope.row.inlet = scope.row.export + scope.row.keepPointRatio - scope.row.addThrow
     }
     }
 }
 }

+ 94 - 13
src/views/quoteConfig/agreement/components/ruleFeeDialogEdit.vue

@@ -28,8 +28,8 @@
             </ElCol>
             </ElCol>
           </ElRow>
           </ElRow>
           <ElRow :gutter="20" class="m-top-20">
           <ElRow :gutter="20" class="m-top-20">
-            <el-form :model="costitemEditInfo" label-width="80px" ref="productFormRef" style="width: 100%;"
-              :disabled="disabledShow" class="flex a-c f-wrap" :size="fromSize">
+            <el-form :model="costitemEditInfo" ref="editFormRefs" label-width="80px" style="width: 100%;"
+              :disabled="disabledShow" class="flex a-c f-wrap" :size="fromSize" :rules="editRules">
               <ElCol :md="24" :lg="12">
               <ElCol :md="24" :lg="12">
                 <el-form-item label="生效时间" prop="effectiveTime">
                 <el-form-item label="生效时间" prop="effectiveTime">
                   <el-date-picker v-model="costitemEditInfo.effectiveTime" style="width: 100%;" type="datetime"
                   <el-date-picker v-model="costitemEditInfo.effectiveTime" style="width: 100%;" type="datetime"
@@ -52,6 +52,11 @@
                   </el-select>
                   </el-select>
                 </el-form-item>
                 </el-form-item>
               </ElCol>
               </ElCol>
+                <ElCol :md="24" :lg="12">
+                    <el-form-item label="优先级" prop="priorityLevel">
+                        <el-input-number style="width: 100%" v-model="costitemEditInfo.priorityLevel" placeholder="请填写优先级" />
+                    </el-form-item>
+                </ElCol>
               <ElCol :md="24" :lg="24">
               <ElCol :md="24" :lg="24">
                 <el-form-item label="费用描述" prop="costDescribe">
                 <el-form-item label="费用描述" prop="costDescribe">
                   <el-input v-model="costitemEditInfo.costDescribe" maxlength="500" placeholder="请输入费用描述"
                   <el-input v-model="costitemEditInfo.costDescribe" maxlength="500" placeholder="请输入费用描述"
@@ -66,7 +71,7 @@
               <span class="strong m-right-20">规则条件</span>
               <span class="strong m-right-20">规则条件</span>
             </ElCol>
             </ElCol>
             <ElCol :md="24" :lg="22">
             <ElCol :md="24" :lg="22">
-              <el-button type="primary" :disabled="disabledShow" plain @click="ruleConditionVisible = true">
+              <el-button type="primary" :disabled="disabledShow" plain @click="addRules">
                 添加条件
                 添加条件
                 <template #icon>
                 <template #icon>
                   <el-icon>
                   <el-icon>
@@ -90,7 +95,7 @@
             <el-table-column prop="inlet" label="入口比例" width="180" align="center">
             <el-table-column prop="inlet" label="入口比例" width="180" align="center">
               <template #default="scope">
               <template #default="scope">
                 <el-input-number v-model="scope.row.inlet" :disabled="disabledShow" :precision="2"
                 <el-input-number v-model="scope.row.inlet" :disabled="disabledShow" :precision="2"
-                  controls-position="right" style="width: 100%;" :min="0" :max="100">
+                  controls-position="right" style="width: 100%;" :min="0" :max="100" @change="handelRK(scope)">
                   <template #suffix>%</template>
                   <template #suffix>%</template>
                 </el-input-number>
                 </el-input-number>
               </template>
               </template>
@@ -98,7 +103,7 @@
             <el-table-column prop="export" label="出口比例" width="180" align="center">
             <el-table-column prop="export" label="出口比例" width="180" align="center">
               <template #default="scope">
               <template #default="scope">
                 <el-input-number v-model="scope.row.export" :disabled="disabledShow" :precision="2"
                 <el-input-number v-model="scope.row.export" :disabled="disabledShow" :precision="2"
-                  controls-position="right" style="width: 100%;" :min="0" :max="100">
+                  controls-position="right" style="width: 100%;" :min="0" :max="100" @change="handelCK(scope)">
                   <template #suffix>%</template>
                   <template #suffix>%</template>
                 </el-input-number>
                 </el-input-number>
               </template>
               </template>
@@ -114,7 +119,7 @@
             <el-table-column prop="addThrow" label="加投比例" width="180" align="center">
             <el-table-column prop="addThrow" label="加投比例" width="180" align="center">
                 <template #default="scope">
                 <template #default="scope">
                     <el-input-number v-model="scope.row.addThrow" :disabled="disabledShow" :precision="2"
                     <el-input-number v-model="scope.row.addThrow" :disabled="disabledShow" :precision="2"
-                                     controls-position="right" style="width: 100%;" :min="0" :max="100">
+                                     controls-position="right" style="width: 100%;" :min="0" :max="100" @change="handelJT(scope)">
                         <template #suffix>%</template>
                         <template #suffix>%</template>
                     </el-input-number>
                     </el-input-number>
                 </template>
                 </template>
@@ -122,7 +127,7 @@
             <el-table-column prop="keepPointRatio" label="留点比例" width="180" align="center">
             <el-table-column prop="keepPointRatio" label="留点比例" width="180" align="center">
                 <template #default="scope">
                 <template #default="scope">
                     <el-input-number v-model="scope.row.keepPointRatio" :disabled="disabledShow" :precision="2"
                     <el-input-number v-model="scope.row.keepPointRatio" :disabled="disabledShow" :precision="2"
-                                     controls-position="right" style="width: 100%;" :min="0" :max="100">
+                                     controls-position="right" style="width: 100%;" :min="0" :max="100" @change="handelLD(scope)">
                         <template #suffix>%</template>
                         <template #suffix>%</template>
                     </el-input-number>
                     </el-input-number>
                 </template>
                 </template>
@@ -134,7 +139,7 @@
       <template #footer>
       <template #footer>
         <div class="flex a-c j-c" v-if="!disabledShow">
         <div class="flex a-c j-c" v-if="!disabledShow">
           <el-button @click="cancel">取消</el-button>
           <el-button @click="cancel">取消</el-button>
-          <el-button type="primary" @click="save">提交审核</el-button>
+          <el-button type="primary" @click="save(editFormRefs)">提交审核</el-button>
         </div>
         </div>
         <div class="flex f-c " v-if="!costitemEditInfo?.reviewDescription && props.operationType == 'audit'">
         <div class="flex f-c " v-if="!costitemEditInfo?.reviewDescription && props.operationType == 'audit'">
           <el-checkbox v-model="automatic" label="审核后,自动跳支审核下一条费用" size="large" />
           <el-checkbox v-model="automatic" label="审核后,自动跳支审核下一条费用" size="large" />
@@ -146,7 +151,7 @@
       </template>
       </template>
     </el-drawer>
     </el-drawer>
     <!-- 规则条件弹窗 -->
     <!-- 规则条件弹窗 -->
-    <RuleCondition :ruleConditionVisible="ruleConditionVisible" @cancel="ruleConditionVisible = false"
+    <RuleCondition ref="RuleConditionRefs" :ruleConditionVisible="ruleConditionVisible" @cancel="ruleConditionVisible = false"
       @save="ruleConditionSave" :attrIdList="ruleConditions" />
       @save="ruleConditionSave" :attrIdList="ruleConditions" />
 
 
   </div>
   </div>
@@ -161,6 +166,10 @@ import { defineProps, defineEmits } from "vue";
 const direction = ref<DrawerProps['direction']>('rtl')
 const direction = ref<DrawerProps['direction']>('rtl')
 const fromSize = ref<ComponentSize>('default')
 const fromSize = ref<ComponentSize>('default')
 
 
+let editFormRefs = ref()
+
+let RuleConditionRefs = ref()
+
 const props = defineProps<{
 const props = defineProps<{
   ruleFeeVisible: boolean,
   ruleFeeVisible: boolean,
   agreementInfo: any,//协议信息
   agreementInfo: any,//协议信息
@@ -192,6 +201,71 @@ watch(props, () => {
   }
   }
 })
 })
 
 
+let editRules = ref({
+    effectiveTime: [
+        { required: true, trigger: 'change', message: '请选择生效时间' },
+    ],
+    failureTime: [
+        { required: true, trigger: 'change', message: '请选择失效时间' },
+    ],
+    auditMethod: [
+        { required: true, trigger: 'change', message: '请选择审核方式' },
+    ],
+    priorityLevel: [
+        { required: true, trigger: 'blur', message: '请填写优先级' },
+    ]
+})
+
+const addRules = () => {
+    ruleConditionVisible.value = true
+    RuleConditionRefs.value.ruleAttr(props.agreementInfo.companyId)
+}
+
+const handelRK = (scope) => {
+    if(scope.row.export&&scope.row.addThrow || scope.row.export&&scope.row.addThrow === 0) {
+        scope.row.keepPointRatio = scope.row.inlet + scope.row.addThrow - scope.row.export
+    }
+    if(scope.row.export&&scope.row.keepPointRatio) {
+        scope.row.addThrow = scope.row.export + scope.row.keepPointRatio - scope.row.inlet
+    }
+    if(scope.row.keepPointRatio&&scope.row.addThrow || scope.row.keepPointRatio&&scope.row.addThrow === 0) {
+        scope.row.export = scope.row.inlet + scope.row.addThrow - scope.row.keepPointRatio
+    }
+}
+const handelCK = (scope) => {
+    if(scope.row.inlet&&scope.row.addThrow || scope.row.inlet&&scope.row.addThrow === 0) {
+        scope.row.keepPointRatio = scope.row.inlet + scope.row.addThrow - scope.row.export
+    }
+    if(scope.row.inlet&&scope.row.keepPointRatio) {
+        scope.row.addThrow = scope.row.export + scope.row.keepPointRatio - scope.row.inlet
+    }
+    if(scope.row.keepPointRatio&&scope.row.addThrow || scope.row.keepPointRatio&&scope.row.addThrow === 0) {
+        scope.row.inlet = scope.row.export + scope.row.keepPointRatio - scope.row.addThrow
+    }
+}
+const handelJT = (scope) => {
+    if(scope.row.inlet&&scope.row.export) {
+        scope.row.keepPointRatio = scope.row.inlet + scope.row.addThrow - scope.row.export
+    }
+    if(scope.row.inlet&&scope.row.keepPointRatio) {
+        scope.row.export = scope.row.addThrow + scope.row.inlet - scope.row.keepPointRatio
+    }
+    if(scope.row.keepPointRatio&&scope.row.export) {
+        scope.row.inlet = scope.row.export + scope.row.keepPointRatio - scope.row.addThrow
+    }
+}
+const handelLD = (scope) => {
+    if(scope.row.inlet&&scope.row.export) {
+        scope.row.addThrow = scope.row.export + scope.row.keepPointRatio - scope.row.inlet
+    }
+    if(scope.row.inlet&&scope.row.addThrow || scope.row.inlet&&scope.row.addThrow === 0) {
+        scope.row.export = scope.row.addThrow + scope.row.inlet - scope.row.keepPointRatio
+    }
+    if(scope.row.addThrow&&scope.row.export || scope.row.addThrow === 0&&scope.row.export) {
+        scope.row.inlet = scope.row.export + scope.row.keepPointRatio - scope.row.addThrow
+    }
+}
+
 
 
 // 禁用失效时间选择
 // 禁用失效时间选择
 const disabledEndDate = (date: any,) => {
 const disabledEndDate = (date: any,) => {
@@ -226,7 +300,9 @@ const rulesAttrselectChange = (item: any) => {
 }
 }
 //获取到的规则条件列表数据
 //获取到的规则条件列表数据
 const ruleConditionSave = (list: string[]) => {//获取规则条件选中集合
 const ruleConditionSave = (list: string[]) => {//获取规则条件选中集合
+  console.log('选中的数据', list)
   costitemEditInfo.value.ruleConditions = list;
   costitemEditInfo.value.ruleConditions = list;
+  ruleConditions.value = list
   ruleConditionVisible.value = false;
   ruleConditionVisible.value = false;
 }
 }
 const cancel = () => {
 const cancel = () => {
@@ -235,10 +311,15 @@ const cancel = () => {
 const close=()=>{
 const close=()=>{
   emits("cancel")
   emits("cancel")
 }
 }
-const save = () => {
-  console.log(costitemEditInfo.value)
-  // return;
-  emits("save", costitemEditInfo.value)
+const save = (formRef) => {
+    if (!formRef) return
+    if (formRef) {
+        formRef.validate((valid) => {
+            if(valid) {
+                emits("save", costitemEditInfo.value)
+            }
+        })
+    }
 }
 }
 
 
 
 

+ 51 - 9
src/views/quoteConfig/costManagement.vue

@@ -51,7 +51,7 @@
           <div class="flex a-c">
           <div class="flex a-c">
             <el-input v-model="agreementQueryName" style="width: 240px;margin-right: 10px;"
             <el-input v-model="agreementQueryName" style="width: 240px;margin-right: 10px;"
               placeholder="输入协议名称,简称,编码查找" />
               placeholder="输入协议名称,简称,编码查找" />
-            <el-button type="primary">查询</el-button>
+            <el-button type="primary" @click="agreement">查询</el-button>
           </div>
           </div>
           <div class="flex f-c m-top-20" style="max-height: 400px;overflow-y: auto;">
           <div class="flex f-c m-top-20" style="max-height: 400px;overflow-y: auto;">
             <div class="agreementItem flex f-c " :class="{ active: agritem.id == AgreementId }"
             <div class="agreementItem flex f-c " :class="{ active: agritem.id == AgreementId }"
@@ -116,6 +116,7 @@ onBeforeMount(async () => {
   findpage();//列表数据
   findpage();//列表数据
   getDeptTree();
   getDeptTree();
   agreement();
   agreement();
+  initCompany();
   valid_status.value = getDict('valid_status');//生效状态
   valid_status.value = getDict('valid_status');//生效状态
   is_enable.value = getDict('is_enable');//协议状态
   is_enable.value = getDict('is_enable');//协议状态
   insurance_type.value = getDict('insurance_type')
   insurance_type.value = getDict('insurance_type')
@@ -151,8 +152,30 @@ const formInline = reactive({
   validState: "",
   validState: "",
   effectiveTime: [],
   effectiveTime: [],
   failureTime: [],
   failureTime: [],
+  updateTimeArr: [],
 })
 })
 
 
+// 保险公司
+let companyOption = ref([])
+const initCompany = () => {
+    // api.projectApi.getCompanyList().then(res => {
+    api.insuranceApi.leftList('').then((res: any) => {
+        if(res.code == 200) {
+            companyOption.value = res.data.map(item => {
+                return {
+                    label: item.name,
+                    value: item.id
+                }
+            })
+        } else {
+            ElMessage({
+                message: res.msg,
+                type: 'warning'
+            })
+        }
+    })
+}
+
 //表格字段数据
 //表格字段数据
 const fields = ref([
 const fields = ref([
   { label: "所属协议", model: "agreement", type: "input", placeholder: "输入协议号,名称,简称查找" },
   { label: "所属协议", model: "agreement", type: "input", placeholder: "输入协议号,名称,简称查找" },
@@ -163,7 +186,7 @@ const fields = ref([
     label: "承保规则", model: "rulesName", type: "input", placeholder: "输入业务规则查找",
     label: "承保规则", model: "rulesName", type: "input", placeholder: "输入业务规则查找",
   },
   },
   {
   {
-    label: "费用规则", model: "costRules", type: "input", placeholder: "输入费用规则关键字查找",
+    label: "费用描述", model: "costRules", type: "input", placeholder: "输入费用描述关键字查找",
   },
   },
 
 
   {
   {
@@ -190,6 +213,18 @@ const fields = ref([
       formInline.failureTime = value;
       formInline.failureTime = value;
     }
     }
   },
   },
+    {
+        label: "保险公司", model: "companyId", type: "select", placeholder: "选择保险公司", options: companyOption, filterable: true
+    },
+    {
+        label: "对接人", model: "contactPerson", type: "input", placeholder: "输入对接人",
+    },
+    {
+        label: "修改时间", model: "updateTimeArr", type: "date", dateType: "datetimerange", startplaceholder: "开始时间", endplaceholder: "结束时间",
+        onChange: (value: any) => {
+            formInline.updateTimeArr = value;
+        }
+    },
 ]);
 ]);
 
 
 //费用数据查询
 //费用数据查询
@@ -214,6 +249,7 @@ function agreement() {
   });
   });
 }
 }
 const columns = [
 const columns = [
+    { prop: "companyName", label: "保险公司", width: '120', },
   {
   {
     prop: "agreementAbbreviation", label: "协议信息", width: '300',
     prop: "agreementAbbreviation", label: "协议信息", width: '300',
     formatter: (row: any) => {
     formatter: (row: any) => {
@@ -225,7 +261,10 @@ const columns = [
   },
   },
   { prop: "productName", label: "险种", width: '120', },
   { prop: "productName", label: "险种", width: '120', },
   {
   {
-    prop: "costRules", label: "费用规则", width: '500',
+      prop: "costRules", label: "费用规则", width: '500',
+  },
+  {
+      prop: "costDescribe", label: "费用描述", width: '500',
   },
   },
   {
   {
     prop: "isEnabled", label: "费用状态", width: '100', component: "Tag",
     prop: "isEnabled", label: "费用状态", width: '100', component: "Tag",
@@ -245,8 +284,10 @@ const columns = [
       }
       }
     }
     }
   },
   },
-  { prop: "effectiveTime", label: "生效时间", width: '200' },
-  { prop: "failureTime", label: "失效时间", width: '200' },
+    { prop: "dockingPerson", label: "对接人", width: '100' },
+    { prop: "effectiveTime", label: "生效时间", width: '200' },
+    { prop: "failureTime", label: "失效时间", width: '200' },
+    { prop: "updateTime", label: "修改时间", width: '200' },
   {
   {
     prop: "ruleConditions", label: "交强费用", width: '300', formatter: (row: any) => {
     prop: "ruleConditions", label: "交强费用", width: '300', formatter: (row: any) => {
       let info = row.ruleConditions.find((val: any) => val.costType == '交强险');
       let info = row.ruleConditions.find((val: any) => val.costType == '交强险');
@@ -412,14 +453,15 @@ const del = (value: string) => {
     .then(() => {
     .then(() => {
       api.agreementApi.AgreementFeedeleteByIds([value]).then((res: any) => {
       api.agreementApi.AgreementFeedeleteByIds([value]).then((res: any) => {
         if (res.code == '200') {
         if (res.code == '200') {
+          findpage()
           ElMessage({
           ElMessage({
             type: 'success',
             type: 'success',
             message: res.msg,
             message: res.msg,
             plain: true,
             plain: true,
           })
           })
-          router.push({
-            name: 'reload',
-          })
+          // router.push({
+          //   name: 'reload',
+          // })
         }
         }
       });
       });
     })
     })
@@ -437,7 +479,7 @@ const batchDel = () => {
     }
     }
   )
   )
     .then(() => {
     .then(() => {
-      api.agreementApi.agreementDelete(sysUpAndDownList.value).then((res: any) => {
+      api.agreementApi.deleteByIds(sysUpAndDownList.value).then((res: any) => {
         if (res.code == '200') {
         if (res.code == '200') {
           ElMessage({
           ElMessage({
             type: 'success',
             type: 'success',

+ 7 - 0
src/views/quoteConfig/dispatch/components/rule.vue

@@ -802,6 +802,13 @@ const submit = async () => {
       },
       },
     },
     },
   ];
   ];
+  if(!actionJson[0].agreementId) {
+      ElMessage({
+          message: '请选择指定报价协议!',
+          type: 'error'
+      })
+      return
+  }
 
 
   const submitData = {
   const submitData = {
     companyId: props.companyId + "",
     companyId: props.companyId + "",

+ 20 - 13
src/views/quoteConfig/dispatch/index.vue

@@ -38,7 +38,7 @@
               <div
               <div
                 class="list-item"
                 class="list-item"
                 :class="currentIndex == index ? 'active' : ''"
                 :class="currentIndex == index ? 'active' : ''"
-                v-for="(item, index) in tenantList"
+                v-for="(item, index) in filterList"
                 :key="item.id"
                 :key="item.id"
                 @click="roleitemClick(item, index)"
                 @click="roleitemClick(item, index)"
               >
               >
@@ -64,7 +64,7 @@
                 class="rule-item"
                 class="rule-item"
                 v-for="(item, ruleIndex) in ruleList"
                 v-for="(item, ruleIndex) in ruleList"
                 :key="item.dispatchId"
                 :key="item.dispatchId"
-                
+
               >
               >
                 <div class="item-title">
                 <div class="item-title">
                   <div class="name" v-if="!item.editMode">
                   <div class="name" v-if="!item.editMode">
@@ -121,7 +121,7 @@
                         <!-- <div class="value">
                         <!-- <div class="value">
                           <template
                           <template
                             v-if="
                             v-if="
-                              
+
                               row.operator == 1
                               row.operator == 1
                             "
                             "
                           >
                           >
@@ -134,7 +134,7 @@
                           <template v-else-if="
                           <template v-else-if="
                               row.operator == 2 ||
                               row.operator == 2 ||
                               row.operator == 3
                               row.operator == 3
-                              
+
                             ">
                             ">
                             {{ row.min }}
                             {{ row.min }}
                           </template>
                           </template>
@@ -343,6 +343,7 @@ const formatAttrLinksBySection = (attrLinks: any[]) => {
 const getCompanyList = () => {
 const getCompanyList = () => {
   api.dispatchApi.getCompanyList().then((res) => {
   api.dispatchApi.getCompanyList().then((res) => {
     tenantList.value = res.data || [];
     tenantList.value = res.data || [];
+    filterList.value = tenantList.value
     // 安全获取第一个租户的id(避免数组为空)
     // 安全获取第一个租户的id(避免数组为空)
     if (tenantList.value.length > 0) {
     if (tenantList.value.length > 0) {
       currentId.value = tenantList.value[0].id;
       currentId.value = tenantList.value[0].id;
@@ -386,16 +387,22 @@ const deleteRule = (id: string) => {
   });
   });
 };
 };
 
 
+let filterList = ref([])
 // 搜索租户(需后端配合实现,此处预留方法)
 // 搜索租户(需后端配合实现,此处预留方法)
 const findpage = () => {
 const findpage = () => {
-  if (!searchValue.value.trim()) {
-    getCompanyList(); // 无搜索值时加载全部
-    return;
-  }
-  // 调用搜索接口(示例,需按实际接口调整)
-  api.dispatchApi.searchCompany({ keyword: searchValue.value }).then((res) => {
-    tenantList.value = res.data || [];
-  });
+  // if (!searchValue.value.trim()) {
+  //   getCompanyList(); // 无搜索值时加载全部
+  //   return;
+  // }
+  // // 调用搜索接口(示例,需按实际接口调整)
+  // api.dispatchApi.searchCompany({ keyword: searchValue.value }).then((res) => {
+  //   tenantList.value = res.data || [];
+  // });
+    if(searchValue.value) {
+        filterList.value = tenantList.value.filter(a => a.name.includes(searchValue.value))
+    } else {
+        filterList.value = tenantList.value
+    }
 };
 };
 
 
 const editDispatch = (item: any) => {
 const editDispatch = (item: any) => {
@@ -645,4 +652,4 @@ getCompanyList();
 :deep(.el-drawer__body) {
 :deep(.el-drawer__body) {
   padding: 0 24px;
   padding: 0 24px;
 }
 }
-</style>
+</style>

+ 21 - 9
src/views/quoteConfig/insuranceCompanyAccount/insuranceCompanyAccount.vue

@@ -182,22 +182,34 @@ import api from '@/api'
 
 
 const myRouter = useRouter()
 const myRouter = useRouter()
 
 
-let insuranceForm = ref({})
+let insuranceForm = ref({
+    username: '',
+    insCompanyId: '',
+    userDeptId: [],
+    useStatus: '',
+    quoteStatus: '',
+    userDept: ''
+})
 
 
 // 列表数据
 // 列表数据
-let tableData = ref([
-  {
-    id: '111'
-  }
-])
+let tableData = ref([])
 // 查询
 // 查询
 const search = () => {
 const search = () => {
-  insuranceForm.value.userDept = insuranceForm.value.userDeptId?.[insuranceForm.value.userDeptId?.length - 1]
-  initData()
+    if(insuranceForm.value.userDeptId.length > 0) {
+        insuranceForm.value.userDept = insuranceForm.value.userDeptId[insuranceForm.value.userDeptId.length - 1]
+    }
+    initData()
 }
 }
 // 重置
 // 重置
 const reset = () => {
 const reset = () => {
-  insuranceForm.value = {}
+  insuranceForm.value = {
+      username: '',
+      insCompanyId: '',
+      userDeptId: [],
+      useStatus: '',
+      quoteStatus: '',
+      userDept: ''
+  }
   initData()
   initData()
 }
 }
 // 新增账号
 // 新增账号

+ 73 - 6
src/views/quoteConfig/project/modules/projectAdd.vue

@@ -186,11 +186,52 @@ const JYXDetail = ref(null)
 
 
 let RuleSelect = ref()
 let RuleSelect = ref()
 
 
+const licensePlateRegion = ref();//车牌地区
+const licensePlateNumber = ref();//车牌号
+const regionLicenseRegion = (value: string) => {
+    api.agreementApi.getAreaLicense(value).then((res: any) => {
+        if (res.code == '200') {
+            let data: any = [];
+            res.data.map((val: any) => {
+                data.push({
+                    code: val.areaNumber,
+                    name: val.license,
+                })
+                return val;
+            })
+            licensePlateRegion.value = data;
+        } else {
+        }
+    });
+}
+const regionLicenseNumber = (value: string) => {
+    api.agreementApi.getAreaLicense(value).then((res: any) => {
+        if (res.code == '200') {
+            let data: any = [];
+            res.data.map((val: any) => {
+                data.push({
+                    code: val.areaNumber,
+                    name: val.license,
+                })
+                return val;
+            })
+            licensePlateNumber.value = data;
+        } else {
+        }
+    });
+}
+
 // 规则条件
 // 规则条件
 let ruleSelectShow = ref(false)
 let ruleSelectShow = ref(false)
 const handleRuleSelectClose = (data) => {
 const handleRuleSelectClose = (data) => {
     if(data&&data.length>0) {
     if(data&&data.length>0) {
         rulesAttrList.value = data.map(a => {
         rulesAttrList.value = data.map(a => {
+            if (a.attrCode == 'LicenseNo') {
+                a.dictLabal = licensePlateNumber.value;
+            }
+            if (a.attrCode == 'LicenseArea') {
+                a.dictLabal = licensePlateRegion.value;
+            }
             return {
             return {
                 ...a,
                 ...a,
                 min: a.attrName == '能源类型'? '0':a.min?a.min: '',
                 min: a.attrName == '能源类型'? '0':a.min?a.min: '',
@@ -207,6 +248,7 @@ let isEdit = ref(false)
 let projectAddFrom = ref({
 let projectAddFrom = ref({
   ruleAttrs: [],
   ruleAttrs: [],
   schemeType: 1,
   schemeType: 1,
+  productId: '',
   schemeList: [{
   schemeList: [{
     schemeName: '',
     schemeName: '',
     description: '',
     description: '',
@@ -331,7 +373,15 @@ const initProduct = (e) => {
             })
             })
           })
           })
           projectAddFrom.value = res.data
           projectAddFrom.value = res.data
-          rulesAttrList.value = res.data.ruleAttrs
+          rulesAttrList.value = res.data.ruleAttrs.map(val => {
+              if (val.attrCode == 'LicenseNo') {
+                  val.dictLabal = licensePlateNumber.value;
+              }
+              if (val.attrCode == 'LicenseArea') {
+                  val.dictLabal = licensePlateRegion.value;
+              }
+              return val
+          })
         }
         }
       } else {
       } else {
         // projectAddFrom.value.ruleAttrs = []
         // projectAddFrom.value.ruleAttrs = []
@@ -373,7 +423,8 @@ const initProduct = (e) => {
 // 险种
 // 险种
 let insuranceTypeList = ref([])
 let insuranceTypeList = ref([])
 const initInsurance = () => {
 const initInsurance = () => {
-  api.projectApi.getBusinessInsurance().then(res => {
+    console.log(111, projectAddFrom.value)
+  api.projectApi.getBusinessInsurance(projectAddFrom.value.productId).then(res => {
     if(res.code == 200) {
     if(res.code == 200) {
       // res.data.forEach(item => {
       // res.data.forEach(item => {
       //   item.options.forEach(sub => {
       //   item.options.forEach(sub => {
@@ -468,7 +519,6 @@ const addProject = () => {
 let rulesShow = ref(false)
 let rulesShow = ref(false)
 const addRules = () => {
 const addRules = () => {
     ruleSelectShow.value = true
     ruleSelectShow.value = true
-    console.log('数据是:', rulesAttrList.value)
     nextTick(() => {
     nextTick(() => {
         RuleSelect.value.initEditData(rulesAttrList.value)
         RuleSelect.value.initEditData(rulesAttrList.value)
     })
     })
@@ -499,6 +549,7 @@ const initType = () => {
     if(res.code == 200) {
     if(res.code == 200) {
       insuranceType.value = res.data
       insuranceType.value = res.data
       projectAddFrom.value.productId = insuranceType.value[0].value
       projectAddFrom.value.productId = insuranceType.value[0].value
+      initInsurance()
     } else {
     } else {
       ElMessage({
       ElMessage({
         message: res.msg,
         message: res.msg,
@@ -570,7 +621,7 @@ const drivingTypeDel = (item, row) => {
 const handlePopover = (item, index) => {
 const handlePopover = (item, index) => {
   insuranceShow.value = true
   insuranceShow.value = true
   nextTick(() => {
   nextTick(() => {
-    InsuranceTypeRef.value.initEditData(item.tableData, index, projectAddFrom.value.schemeType)
+    InsuranceTypeRef.value.initEditData(item.tableData, index, projectAddFrom.value.schemeType, projectAddFrom.value.productId)
   })
   })
 }
 }
 
 
@@ -580,8 +631,15 @@ const initAttr = () => {
     if(res.code == 200) {
     if(res.code == 200) {
       let list = res.data?.VehicleInformation?.filter(e => e.attrName === '能源类型' || e.attrName === '使用性质' || e.attrName === '车辆种类')
       let list = res.data?.VehicleInformation?.filter(e => e.attrName === '能源类型' || e.attrName === '使用性质' || e.attrName === '车辆种类')
       rulesAttrList.value = list?.map(a => {
       rulesAttrList.value = list?.map(a => {
+          if (a.attrCode == 'LicenseNo') {
+              a.dictLabal = licensePlateNumber.value;
+          }
+          if (a.attrCode == 'LicenseArea') {
+              a.dictLabal = licensePlateRegion.value;
+          }
           return {
           return {
               ...a,
               ...a,
+              operator: '1',
               min: a.attrName == '能源类型'? '0':'',
               min: a.attrName == '能源类型'? '0':'',
               minArray: a.minArray?a.minArray:a.attrName == '使用性质' || a.attrName == '车辆种类'?[a.dictLabal[0].code]:[]
               minArray: a.minArray?a.minArray:a.attrName == '使用性质' || a.attrName == '车辆种类'?[a.dictLabal[0].code]:[]
           }
           }
@@ -614,7 +672,15 @@ const initEdit = () => {
           })
           })
         })
         })
         projectAddFrom.value = res.data
         projectAddFrom.value = res.data
-        rulesAttrList.value = res.data.ruleAttrs
+        rulesAttrList.value = res.data.ruleAttrs.map(val => {
+            if (val.attrCode == 'LicenseNo') {
+                val.dictLabal = licensePlateNumber.value;
+            }
+            if (val.attrCode == 'LicenseArea') {
+                val.dictLabal = licensePlateRegion.value;
+            }
+            return val
+        })
       }
       }
     } else {
     } else {
       ElMessage({
       ElMessage({
@@ -693,9 +759,10 @@ const save = async (ProjectAddRef: FormInstance | undefined) => {
 }
 }
 
 
 onMounted(() => {
 onMounted(() => {
-  initInsurance()
   initType()
   initType()
   initCompany()
   initCompany()
+  regionLicenseRegion('0')
+  regionLicenseNumber('14')
   projectAddFrom.value.companyId = myRoute.query.companyId
   projectAddFrom.value.companyId = myRoute.query.companyId
   // initAttr()
   // initAttr()
   if(myRoute.query.id) {
   if(myRoute.query.id) {

+ 1 - 2
src/views/receivable/documentary/documentaryRecord.vue

@@ -68,10 +68,9 @@
             </el-table-column>
             </el-table-column>
             <el-table-column prop="invoiceParty" label="开票方" width="150"></el-table-column>
             <el-table-column prop="invoiceParty" label="开票方" width="150"></el-table-column>
             <el-table-column prop="accountsReceivable" label="应收项" width="100"></el-table-column>
             <el-table-column prop="accountsReceivable" label="应收项" width="100"></el-table-column>
-            <el-table-column prop="receivableSupervisePremium" label="应收手续费" width="120"></el-table-column>
+            <el-table-column prop="receivableSupervisePremium" label="应收跟单费" width="120"></el-table-column>
             <el-table-column prop="overinflatedAmount" label="虚增金额" width="120"></el-table-column>
             <el-table-column prop="overinflatedAmount" label="虚增金额" width="120"></el-table-column>
             <el-table-column prop="taxPoint" label="税点" width="120"></el-table-column>
             <el-table-column prop="taxPoint" label="税点" width="120"></el-table-column>
-            <el-table-column prop="actualReceivedAmount" label="开票金额" width="120"></el-table-column>
             <el-table-column prop="receivableSupervisePremium" label="应收金额" width="120"></el-table-column>
             <el-table-column prop="receivableSupervisePremium" label="应收金额" width="120"></el-table-column>
             <el-table-column prop="settlementStatus" label="结算状态" width="120"></el-table-column>
             <el-table-column prop="settlementStatus" label="结算状态" width="120"></el-table-column>
             <el-table-column prop="a" label="已结算" width="120"></el-table-column>
             <el-table-column prop="a" label="已结算" width="120"></el-table-column>

+ 7 - 8
src/views/receivable/documentary/documentaryReport.vue

@@ -47,8 +47,8 @@
                                                 展开
                                                 展开
                                             </template>
                                             </template>
                                         </el-table-column>-->
                                         </el-table-column>-->
-                    <el-table-column prop="totalReceivable" label="应收金额" width="240"></el-table-column>
-                    <el-table-column prop="superviseFee" label="应收手续费" width="240"></el-table-column>
+                    <el-table-column prop="totalReceivable" label="累计应收" width="240"></el-table-column>
+                    <el-table-column prop="superviseFee" label="应收跟单费" width="240"></el-table-column>
                     <el-table-column prop="invoicedAmount" label="已开票" width="200"></el-table-column>
                     <el-table-column prop="invoicedAmount" label="已开票" width="200"></el-table-column>
                     <el-table-column prop="settledAmount" label="已结算" width="200"></el-table-column>
                     <el-table-column prop="settledAmount" label="已结算" width="200"></el-table-column>
                     <el-table-column prop="unInvoicedAmount" label="未开票" width="200"></el-table-column>
                     <el-table-column prop="unInvoicedAmount" label="未开票" width="200"></el-table-column>
@@ -217,12 +217,12 @@
                     <el-table-column prop="status" label="状态" width="100"></el-table-column>
                     <el-table-column prop="status" label="状态" width="100"></el-table-column>
                     <el-table-column prop="licenseNo" label="车牌号" width="120"></el-table-column>
                     <el-table-column prop="licenseNo" label="车牌号" width="120"></el-table-column>
                     <el-table-column prop="productName" label="险种" width="120"></el-table-column>
                     <el-table-column prop="productName" label="险种" width="120"></el-table-column>
-                    <el-table-column prop="receivableSuperviseCosts" label="应收手续费" width="100"></el-table-column>
+                    <el-table-column prop="receivableSuperviseCosts" label="应收跟单费" width="100"></el-table-column>
                     <el-table-column prop="jqPremium" label="交强险保费" width="100"></el-table-column>
                     <el-table-column prop="jqPremium" label="交强险保费" width="100"></el-table-column>
                     <el-table-column prop="taxPremium" label="车船税" width="100"></el-table-column>
                     <el-table-column prop="taxPremium" label="车船税" width="100"></el-table-column>
-                    <el-table-column prop="jqSuperviseCostsProportion" label="交强险手续费比例" width="100"></el-table-column>
+                    <el-table-column prop="jqSuperviseCostsProportion" label="交强险跟单费比例" width="100"></el-table-column>
                     <el-table-column prop="syPremium" label="商业险保费" width="100"></el-table-column>
                     <el-table-column prop="syPremium" label="商业险保费" width="100"></el-table-column>
-                    <el-table-column prop="sySuperviseCostsProportion" label="商业险手续费比例" width="100"></el-table-column>
+                    <el-table-column prop="sySuperviseCostsProportion" label="商业险跟单费比例" width="100"></el-table-column>
                     <el-table-column prop="jqPolicyNo" label="交强险保单号" width="200"></el-table-column>
                     <el-table-column prop="jqPolicyNo" label="交强险保单号" width="200"></el-table-column>
                     <el-table-column prop="syPolicyNo" label="商业险保单号" width="200"></el-table-column>
                     <el-table-column prop="syPolicyNo" label="商业险保单号" width="200"></el-table-column>
                     <el-table-column prop="invoicePerson" label="开票人" width="100"></el-table-column>
                     <el-table-column prop="invoicePerson" label="开票人" width="100"></el-table-column>
@@ -304,11 +304,10 @@
                     <el-table-column prop="status" label="状态" width="100"></el-table-column>
                     <el-table-column prop="status" label="状态" width="100"></el-table-column>
                     <el-table-column prop="licenseNo" label="车牌号" width="120"></el-table-column>
                     <el-table-column prop="licenseNo" label="车牌号" width="120"></el-table-column>
                     <el-table-column prop="productName" label="险种" width="120"></el-table-column>
                     <el-table-column prop="productName" label="险种" width="120"></el-table-column>
-                    <el-table-column prop="receivableSuperviseCosts" label="应收手续费" width="100"></el-table-column>
+                    <el-table-column prop="receivableSuperviseCosts" label="应收跟单费" width="100"></el-table-column>
                     <el-table-column prop="jyPremium" label="非车险保费" width="100"></el-table-column>
                     <el-table-column prop="jyPremium" label="非车险保费" width="100"></el-table-column>
-                    <el-table-column prop="jySuperviseCostsProportion" label="非车险手续费比例" width="100"></el-table-column>
+                    <el-table-column prop="jySuperviseCostsProportion" label="非车险跟单费比例" width="100"></el-table-column>
                     <el-table-column prop="jyPolicyNo" label="非车险保单号" width="200"></el-table-column>
                     <el-table-column prop="jyPolicyNo" label="非车险保单号" width="200"></el-table-column>
-                    <el-table-column prop="syPolicyNo" label="商业险保单号" width="200"></el-table-column>
                     <el-table-column prop="invoicePerson" label="开票人" width="100"></el-table-column>
                     <el-table-column prop="invoicePerson" label="开票人" width="100"></el-table-column>
                     <el-table-column prop="invoiceTime" label="开票时间" width="150"></el-table-column>
                     <el-table-column prop="invoiceTime" label="开票时间" width="150"></el-table-column>
                 </el-table>
                 </el-table>

+ 76 - 55
src/views/receivable/documentary/index.vue

@@ -116,8 +116,8 @@
                             </el-form-item>
                             </el-form-item>
                         </el-col>
                         </el-col>
                         <el-col :span="24" style="display: flex; align-items: center; justify-content: flex-end">
                         <el-col :span="24" style="display: flex; align-items: center; justify-content: flex-end">
-                            <el-button type="primary">搜索</el-button>
-                            <el-button plain>重置</el-button>
+                            <el-button type="primary" @click="search">搜索</el-button>
+                            <el-button plain @click="reset">重置</el-button>
                             <span class="icon_s">
                             <span class="icon_s">
                                 <span @click="isTrue = !isTrue">高级搜索</span>
                                 <span @click="isTrue = !isTrue">高级搜索</span>
                                 <el-icon class="is_icon" :class="{ 'is_down': isTrue }"><ArrowDown /></el-icon>
                                 <el-icon class="is_icon" :class="{ 'is_down': isTrue }"><ArrowDown /></el-icon>
@@ -163,30 +163,32 @@
                     @select-all="handleSelectAll1"
                     @select-all="handleSelectAll1"
                 >
                 >
                     <el-table-column type="selection" width="80"></el-table-column>
                     <el-table-column type="selection" width="80"></el-table-column>
-                    <el-table-column prop="a" label="签单时间" width="150"></el-table-column>
-                    <el-table-column prop="a" label="订单号" width="150"></el-table-column>
-                    <el-table-column prop="a" label="保险公司" width="120"></el-table-column>
-                    <el-table-column prop="a" label="出单机构" width="120"></el-table-column>
-                    <el-table-column prop="a" label="出单协议" width="150"></el-table-column>
-                    <el-table-column prop="a" label="订单类型" width="100"></el-table-column>
-                    <el-table-column prop="a" label="车牌号" width="100"></el-table-column>
-                    <el-table-column prop="a" label="应收手续费" width="100"></el-table-column>
-                    <el-table-column prop="a" label="险种" width="100"></el-table-column>
-                    <el-table-column prop="a" label="被保人" width="100"></el-table-column>
-                    <el-table-column prop="a" label="交强险保费" width="100"></el-table-column>
-                    <el-table-column prop="a" label="车船税" width="100"></el-table-column>
-                    <el-table-column prop="a" label="交强险手续费比例" width="100"></el-table-column>
-                    <el-table-column prop="a" label="商业险保费" width="100"></el-table-column>
-                    <el-table-column prop="a" label="商业险手续费比例" width="100"></el-table-column>
-                    <el-table-column prop="a" label="交强险保单号" width="150"></el-table-column>
-                    <el-table-column prop="a" label="商业险保单号" width="150"></el-table-column>
-                    <el-table-column prop="a" label="交强险起保日期" width="150"></el-table-column>
-                    <el-table-column prop="a" label="商业险起保日期" width="150"></el-table-column>
-                    <el-table-column prop="a" label="创建时间" width="150"></el-table-column>
-                    <el-table-column prop="a" label="对接人" width="100"></el-table-column>
+                    <el-table-column prop="signingTime" label="签单时间" width="150"></el-table-column>
+                    <el-table-column prop="orderNo" label="订单号" width="150"></el-table-column>
+                    <el-table-column prop="companyName" label="保险公司" width="120"></el-table-column>
+                    <el-table-column prop="deptName" label="出单机构" width="120"></el-table-column>
+                    <el-table-column prop="agreementName" label="出单协议" width="150"></el-table-column>
+                    <el-table-column prop="orderType" label="订单类型" width="100"></el-table-column>
+                    <el-table-column prop="licenseNo" label="车牌号" width="100"></el-table-column>
+                    <el-table-column prop="otherCostsPremiums" label="应收跟单费" width="100"></el-table-column>
+                    <el-table-column prop="productName" label="险种" width="100"></el-table-column>
+                    <el-table-column prop="insuredPerson" label="被保人" width="100"></el-table-column>
+                    <el-table-column prop="jqPremium" label="交强险保费" width="100"></el-table-column>
+<!--                    <el-table-column prop="a" label="交强险不含税保费" width="100"></el-table-column>-->
+                    <el-table-column prop="taxPremium" label="车船税" width="100"></el-table-column>
+                    <el-table-column prop="jqSuperviseCostsProportion" label="交强险跟单费比例" width="100"></el-table-column>
+                    <el-table-column prop="syPremium" label="商业险保费" width="100"></el-table-column>
+<!--                    <el-table-column prop="a" label="商业险不含税保费" width="100"></el-table-column>-->
+                    <el-table-column prop="sySuperviseCostsProportion" label="商业险跟单费比例" width="100"></el-table-column>
+                    <el-table-column prop="jqPolicyNo" label="交强险保单号" width="150"></el-table-column>
+                    <el-table-column prop="syPolicyNo" label="商业险保单号" width="150"></el-table-column>
+                    <el-table-column prop="jqStartDate" label="交强险起保日期" width="150"></el-table-column>
+                    <el-table-column prop="syStartDate" label="商业险起保日期" width="150"></el-table-column>
+                    <el-table-column prop="createTime" label="创建时间" width="150"></el-table-column>
+                    <el-table-column prop="dockingPerson" label="对接人" width="100"></el-table-column>
                     <el-table-column label="操作" width="120" fixed="right">
                     <el-table-column label="操作" width="120" fixed="right">
                         <template #default="scope">
                         <template #default="scope">
-                            <el-button link type="primary">编辑</el-button>
+                            <el-button link type="primary" @click="toEdit(scope)">编辑</el-button>
                         </template>
                         </template>
                     </el-table-column>
                     </el-table-column>
                 </el-table>
                 </el-table>
@@ -317,8 +319,8 @@
                             </el-form-item>
                             </el-form-item>
                         </el-col>
                         </el-col>
                         <el-col :span="24" style="display: flex; align-items: center; justify-content: flex-end">
                         <el-col :span="24" style="display: flex; align-items: center; justify-content: flex-end">
-                            <el-button type="primary">搜索</el-button>
-                            <el-button plain>重置</el-button>
+                            <el-button type="primary" @click="search">搜索</el-button>
+                            <el-button plain @click="reset">重置</el-button>
                             <span class="icon_s">
                             <span class="icon_s">
                                 <span @click="isTrue = !isTrue">高级搜索</span>
                                 <span @click="isTrue = !isTrue">高级搜索</span>
                                 <el-icon class="is_icon" :class="{ 'is_down': isTrue }"><ArrowDown /></el-icon>
                                 <el-icon class="is_icon" :class="{ 'is_down': isTrue }"><ArrowDown /></el-icon>
@@ -355,36 +357,38 @@
                     @select-all="handleSelectAll2"
                     @select-all="handleSelectAll2"
                 >
                 >
                     <el-table-column type="selection" width="80"></el-table-column>
                     <el-table-column type="selection" width="80"></el-table-column>
-                    <el-table-column prop="a" label="签单时间" width="150"></el-table-column>
-                    <el-table-column prop="a" label="订单号" width="150"></el-table-column>
-                    <el-table-column prop="a" label="保险公司" width="120"></el-table-column>
-                    <el-table-column prop="a" label="出单机构" width="120"></el-table-column>
-                    <el-table-column prop="a" label="出单协议" width="150"></el-table-column>
-                    <el-table-column prop="a" label="订单类型" width="100"></el-table-column>
-                    <el-table-column prop="a" label="车牌号" width="100"></el-table-column>
-                    <el-table-column prop="a" label="应收总额" width="100"></el-table-column>
-                    <el-table-column prop="a" label="险种" width="100"></el-table-column>
-                    <el-table-column prop="a" label="结算状态" width="100"></el-table-column>
-                    <el-table-column prop="a" label="被保人" width="100"></el-table-column>
-                    <el-table-column prop="a" label="非车险保费" width="100"></el-table-column>
-                    <el-table-column prop="a" label="非车险手续费比例" width="100"></el-table-column>
-                    <el-table-column prop="a" label="交强险起保日期" width="150"></el-table-column>
-                    <el-table-column prop="a" label="商业险起保日期" width="150"></el-table-column>
-                    <el-table-column prop="a" label="创建时间" width="150"></el-table-column>
-                    <el-table-column prop="a" label="对接人" width="100"></el-table-column>
-                    <el-table-column label="操作" width="120" fixed="right">
+                    <el-table-column prop="signingTime" label="签单时间" width="150"></el-table-column>
+                    <el-table-column prop="orderNo" label="订单号" width="150"></el-table-column>
+                    <el-table-column prop="companyName" label="保险公司" width="120"></el-table-column>
+                    <el-table-column prop="deptName" label="出单机构" width="120"></el-table-column>
+                    <el-table-column prop="agreementName" label="出单协议" width="150"></el-table-column>
+                    <el-table-column prop="orderType" label="订单类型" width="100"></el-table-column>
+                    <el-table-column prop="licenseNo" label="车牌号" width="100"></el-table-column>
+                    <el-table-column prop="otherCostsPremiums" label="应收跟单费" width="100"></el-table-column>
+                    <el-table-column prop="productName" label="险种" width="100"></el-table-column>
+                    <el-table-column prop="insuredPerson" label="被保人" width="100"></el-table-column>
+                    <el-table-column prop="jyPremium" label="非车险保费" width="100"></el-table-column>
+<!--                    <el-table-column prop="a" label="非车险不含税保费" width="100"></el-table-column>-->
+                    <el-table-column prop="jySuperviseCostsProportion" label="非车险跟单费比例" width="100"></el-table-column>
+                    <el-table-column prop="jyPolicyNo" label="非车险保单号" width="100"></el-table-column>
+                    <el-table-column prop="jqStartDate" label="交强险起保日期" width="150"></el-table-column>
+                    <el-table-column prop="syStartDate" label="商业险起保日期" width="150"></el-table-column>
+                    <el-table-column prop="createTime" label="创建时间" width="150"></el-table-column>
+                    <el-table-column label="操作" width="180" fixed="right">
                         <template #default="scope">
                         <template #default="scope">
-                            <el-button link type="primary">编辑</el-button>
-                            <el-dropdown class="width-100" trigger="click" placement="bottom" @command="dropdownCommand">
-                                <el-button class="radius-2px width-100">
-                                    更多&nbsp;&nbsp;<el-icon><ArrowDown /></el-icon>
-                                </el-button>
-                                <template #dropdown>
-                                    <el-dropdown-menu>
-                                        <el-dropdown-item command="数据导入">数据导入</el-dropdown-item>
-                                    </el-dropdown-menu>
-                                </template>
-                            </el-dropdown>
+                            <div style="display: flex; align-items: center; justify-content: center">
+                                <el-button link type="primary">编辑</el-button>
+                                <el-dropdown trigger="click" placement="bottom" @command="dropdownCommand">
+                                    <el-button link type="primary">
+                                        更多
+                                    </el-button>
+                                    <template #dropdown>
+                                        <el-dropdown-menu>
+                                            <el-dropdown-item command="数据导入">数据导入</el-dropdown-item>
+                                        </el-dropdown-menu>
+                                    </template>
+                                </el-dropdown>
+                            </div>
                         </template>
                         </template>
                     </el-table-column>
                     </el-table-column>
                 </el-table>
                 </el-table>
@@ -914,6 +918,23 @@ const handleCurrentChange = (page) => {
     pages.value = page
     pages.value = page
 }
 }
 
 
+const search = () => {
+    pages.value = 1
+    size.value = 10
+    if(activeName.value == '1') {
+        getOtherReceivableList()
+    }
+    if(activeName.value == '2') {
+        getJyOtherReceivableList()
+    }
+}
+const reset = () => {
+    receivableForm.value = {}
+    pages.value = 1
+    size.value = 10
+    search()
+
+}
 const getOtherReceivableList = () => {
 const getOtherReceivableList = () => {
     let params = {
     let params = {
         licenseNo: receivableForm.value?.licenseNo,
         licenseNo: receivableForm.value?.licenseNo,

+ 41 - 28
src/views/receivable/handingFee/index.vue

@@ -116,8 +116,8 @@
                             </el-form-item>
                             </el-form-item>
                         </el-col>
                         </el-col>
                         <el-col :span="24" style="display: flex; align-items: center; justify-content: flex-end">
                         <el-col :span="24" style="display: flex; align-items: center; justify-content: flex-end">
-                            <el-button type="primary">搜索</el-button>
-                            <el-button plain>重置</el-button>
+                            <el-button type="primary" @click="search">搜索</el-button>
+                            <el-button plain @click="reset">重置</el-button>
                             <span class="icon_s">
                             <span class="icon_s">
                                 <span @click="isTrue = !isTrue">高级搜索</span>
                                 <span @click="isTrue = !isTrue">高级搜索</span>
                                 <el-icon class="is_icon" :class="{ 'is_down': isTrue }"><ArrowDown /></el-icon>
                                 <el-icon class="is_icon" :class="{ 'is_down': isTrue }"><ArrowDown /></el-icon>
@@ -170,12 +170,8 @@
                     <el-table-column prop="agreementName" label="出单协议" width="150"></el-table-column>
                     <el-table-column prop="agreementName" label="出单协议" width="150"></el-table-column>
                     <el-table-column prop="orderType" label="订单类型" width="100"></el-table-column>
                     <el-table-column prop="orderType" label="订单类型" width="100"></el-table-column>
                     <el-table-column prop="licenseNo" label="车牌号" width="100"></el-table-column>
                     <el-table-column prop="licenseNo" label="车牌号" width="100"></el-table-column>
-                    <el-table-column label="应收手续费" width="100">
-                        <template #default="scope">
-                            {{ scope.row.productId === '0330' || scope.row.productId === '0330034002' || scope.row.productId === '034002'?scope.row.jqSuperviseCostsPremiums:scope.row.productId === '034001' || scope.row.productId === '0330034001'?scope.row.sySuperviseCostsPremiums: ''  }}
-                        </template>
-                    </el-table-column>
-                    <el-table-column prop="productId" label="险种" width="100"></el-table-column>
+                    <el-table-column prop="superviseCostsPremiums" label="应收手续费" width="100"></el-table-column>
+                    <el-table-column prop="productName" label="险种" width="100"></el-table-column>
                     <el-table-column prop="insuredPerson" label="被保人" width="100"></el-table-column>
                     <el-table-column prop="insuredPerson" label="被保人" width="100"></el-table-column>
                     <el-table-column prop="jqPremium" label="交强险保费" width="100"></el-table-column>
                     <el-table-column prop="jqPremium" label="交强险保费" width="100"></el-table-column>
                     <el-table-column prop="taxPremium" label="车船税" width="100"></el-table-column>
                     <el-table-column prop="taxPremium" label="车船税" width="100"></el-table-column>
@@ -321,8 +317,8 @@
                             </el-form-item>
                             </el-form-item>
                         </el-col>
                         </el-col>
                         <el-col :span="24" style="display: flex; align-items: center; justify-content: flex-end">
                         <el-col :span="24" style="display: flex; align-items: center; justify-content: flex-end">
-                            <el-button type="primary">搜索</el-button>
-                            <el-button plain>重置</el-button>
+                            <el-button type="primary" @click="search">搜索</el-button>
+                            <el-button plain @click="reset">重置</el-button>
                             <span class="icon_s">
                             <span class="icon_s">
                                 <span @click="isTrue = !isTrue">高级搜索</span>
                                 <span @click="isTrue = !isTrue">高级搜索</span>
                                 <el-icon class="is_icon" :class="{ 'is_down': isTrue }"><ArrowDown /></el-icon>
                                 <el-icon class="is_icon" :class="{ 'is_down': isTrue }"><ArrowDown /></el-icon>
@@ -359,23 +355,22 @@
                     @select-all="handleSelectAll2"
                     @select-all="handleSelectAll2"
                 >
                 >
                     <el-table-column type="selection" width="80"></el-table-column>
                     <el-table-column type="selection" width="80"></el-table-column>
-                    <el-table-column prop="a" label="签单时间" width="150"></el-table-column>
-                    <el-table-column prop="a" label="订单号" width="150"></el-table-column>
-                    <el-table-column prop="a" label="保险公司" width="120"></el-table-column>
-                    <el-table-column prop="a" label="出单机构" width="120"></el-table-column>
-                    <el-table-column prop="a" label="出单协议" width="150"></el-table-column>
-                    <el-table-column prop="a" label="订单类型" width="100"></el-table-column>
-                    <el-table-column prop="a" label="车牌号" width="100"></el-table-column>
-                    <el-table-column prop="a" label="应收总额" width="100"></el-table-column>
-                    <el-table-column prop="a" label="险种" width="100"></el-table-column>
-                    <el-table-column prop="a" label="结算状态" width="100"></el-table-column>
-                    <el-table-column prop="a" label="被保人" width="100"></el-table-column>
-                    <el-table-column prop="a" label="非车险保费" width="100"></el-table-column>
-                    <el-table-column prop="a" label="非车险手续费比例" width="100"></el-table-column>
-                    <el-table-column prop="a" label="交强险起保日期" width="150"></el-table-column>
-                    <el-table-column prop="a" label="商业险起保日期" width="150"></el-table-column>
-                    <el-table-column prop="a" label="创建时间" width="150"></el-table-column>
-                    <el-table-column prop="a" label="对接人" width="100"></el-table-column>
+                    <el-table-column prop="signingTime" label="签单时间" width="150"></el-table-column>
+                    <el-table-column prop="orderNo" label="订单号" width="150"></el-table-column>
+                    <el-table-column prop="companyName" label="保险公司" width="120"></el-table-column>
+                    <el-table-column prop="deptName" label="出单机构" width="120"></el-table-column>
+                    <el-table-column prop="agreementName" label="出单协议" width="150"></el-table-column>
+                    <el-table-column prop="orderType" label="订单类型" width="100"></el-table-column>
+                    <el-table-column prop="licenseNo" label="车牌号" width="100"></el-table-column>
+                    <el-table-column prop="superviseCostsPremiums" label="应收总额" width="100"></el-table-column>
+                    <el-table-column prop="productName" label="险种" width="100"></el-table-column>
+                    <el-table-column prop="insuredPerson" label="被保人" width="100"></el-table-column>
+                    <el-table-column prop="jyPremium" label="非车险保费" width="100"></el-table-column>
+                    <el-table-column prop="jySuperviseCostsProportion" label="非车险手续费比例" width="100"></el-table-column>
+                    <el-table-column prop="jqStartDate" label="交强险起保日期" width="150"></el-table-column>
+                    <el-table-column prop="syStartDate" label="商业险起保日期" width="150"></el-table-column>
+                    <el-table-column prop="createTime" label="创建时间" width="150"></el-table-column>
+                    <el-table-column prop="dockingPerson" label="对接人" width="100"></el-table-column>
                     <el-table-column label="操作" width="120" fixed="right">
                     <el-table-column label="操作" width="120" fixed="right">
                         <template #default="scope">
                         <template #default="scope">
                             <el-button link type="primary" @click="toEdit(scope.row)">编辑</el-button>
                             <el-button link type="primary" @click="toEdit(scope.row)">编辑</el-button>
@@ -613,6 +608,7 @@ const handleTabsClick = (e) => {
     isTrue.value = false
     isTrue.value = false
     receivableForm.value = {}
     receivableForm.value = {}
     selectedList.value = []
     selectedList.value = []
+    activeName.value = e
 }
 }
 
 
 let isTrue = ref(false)
 let isTrue = ref(false)
@@ -917,7 +913,7 @@ const handleCurrentChange = (page) => {
 // 编辑
 // 编辑
 const toEdit = (row: any) => {
 const toEdit = (row: any) => {
     myRouter.push({
     myRouter.push({
-        path: '/insurancePolicy/index',
+        path: '/insurancePolicy/order/insurancePolicyOrderDetail',
         query: {
         query: {
             orderNo: row.orderNo
             orderNo: row.orderNo
         }
         }
@@ -964,6 +960,23 @@ const initDept = () => {
     })
     })
 }
 }
 
 
+const search = () => {
+    pages.value = 1
+    size.value = 10
+    if(activeName.value == '1') {
+        getCommissionReceivableList()
+    }
+    if(activeName.value == '2') {
+        getJyReceivableList()
+    }
+}
+const reset = () => {
+    receivableForm.value = {}
+    pages.value = 1
+    size.value = 10
+    search()
+
+}
 // 车险列表
 // 车险列表
 const getCommissionReceivableList = () => {
 const getCommissionReceivableList = () => {
     let params = {
     let params = {

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff