Przeglądaj źródła

复制完费用后可以显示复制后的数据供运营进行操作+复制添加选择险种下拉框

祁鹏飞 1 miesiąc temu
rodzic
commit
b6bbc3ec10

+ 4 - 3
src/components/complexTable/index.vue

@@ -4,7 +4,7 @@
       <div class="table-title-btn">
         <slot name="table-title-btn"></slot>
       </div>
-      <el-table ref="multipleTableRef" row-key="id"
+      <el-table ref="multipleTableRef" :row-key="rowKey"
         :header-cell-style="{ 'background-color': '#F7F7F9', 'border-bottom': '1px solid #EEF1F6', 'font-size': '15px', 'color': '#333', 'padding': '10px 0' }"
         :data="props.tableData" :height="tableHeight" :max-height="maxHeight" table-layout="fixed" style="width: 100%;"
         @selection-change="selectionChange" @select-all="selectAllChange"  @cell-mouse-enter="handleMouseEnter"
@@ -17,7 +17,7 @@
             <span style="font-size: 14px;color: #909399;">暂无数据</span>
           </div>
         </template>
-        <el-table-column type="selection" v-if="showSelect" reserve-selection :selectable="selectable" width="55" fixed="left" />
+        <el-table-column type="selection" v-if="showSelect" :reserve-selection="typeof rowKey === 'string'" :selectable="selectable" width="55" fixed="left" />
         <el-table-column type="expand" v-if="secondaryTable">
           <template #default="props">
             <div>
@@ -58,7 +58,7 @@
           :sortable="column.sortable ?'custom' : false" :width="column.width" :filters="column.filters"
           :filter-method="column.filters?(value, row) =>  row[column.prop] === value:undefined"
           :filtered-value="column.filteredValue?column.filteredValue:undefined"
-          :align="column.align ? column.align : 'center'" show-overflow-tooltip>
+          :align="column.align ? column.align : 'center'" show-overflow-tooltip >
           <template #header>
             <slot name="search" :slotData="column"></slot>
           </template>
@@ -155,6 +155,7 @@ interface Props{
   tableheight?: (number | string),
   maxHeight?: (number | string),
   uniqueIdName?: string,
+  rowKey?: string,
 };
 interface Row {
   [key: string]: any; // 假设Row是一个具有任意属性的对象

+ 26 - 14
src/views/quoteConfig/costManagement.vue

@@ -3,7 +3,7 @@
     <PageMain class="vh100">
       <SearchForm :fields="fields" isOffset :formInline="formInline" :onSearch="agreementQuery" :onReset="resetForm" />
       <ComplexTable :tableData="tableData" :columns="columns" :showIndex="false" :columnwidth="200" :showSelect="true"
-        :pageInfo="pageInfo" @getList="getList" @selectionChange="selectionChange" uniqueIdName="costId">
+        :pageInfo="pageInfo" @getList="getList" rowKey="costId" @selectionChange="selectionChange" uniqueIdName="costId">
         <template v-slot:table-title-btn>
           <el-button type="primary" @click="agreementSelection()">
             添加费用
@@ -136,20 +136,26 @@
         <autoLoadingButton type="primary" :on-click="submitUpdate1">确定</autoLoadingButton>
       </template>
     </el-dialog>
-    <el-dialog :close-on-click-modal="false" v-model="copyDialog" title="复制" width="800">
+    <el-dialog :close-on-click-modal="false" v-model="copyDialog" title="复制" width="880">
       <el-form inline>
         <el-form-item label="协议">
-          <el-select style="width:300px" v-model="agreementId" placeholder="请选择协议" @change="changeAgreement" filterable>
+          <el-select style="width:200px" v-model="agreementId" placeholder="请选择协议" @change="changeAgreement" filterable>
             <el-option v-for="item in agreementList" :key="item.id" :value="item.id"
               :label="item.agreementTitle"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="规则">
-          <el-select style="width:300px" :disabled="!agreementId" v-model="coverRuleId" placeholder="请选择规则">
+          <el-select style="width:200px" :disabled="!agreementId" v-model="coverRuleId" placeholder="请选择规则">
             <el-option v-for="(item, index) in rulesList" :key="item.id" :value="item.id"
               :label="'承保规则一' + (index + 1)"></el-option>
           </el-select>
         </el-form-item>
+        <el-form-item label="险种">
+          <el-select style="width:200px" v-model="productId" placeholder="请选择险种">
+            <el-option v-for="item in insurance_type" :key="item.id" :value="item.value"
+              :label="item.label"></el-option>
+          </el-select>
+        </el-form-item>
       </el-form>
       <template #footer>
         <el-button type="primary" @click="costitemCopy">确定</el-button>
@@ -307,14 +313,17 @@ const fields = ref([
 ]);
 
 //费用数据查询
-function findpage() {
-  api.agreementApi.queryByFeePage({ pages: pageInfo.value.pageNum, size: pageInfo.value.pageSize, ...formInline }).then((res: any) => {
+function findpage(newCostIds = []) {
+  let params = {
+    pages: pageInfo.value.pageNum, size: pageInfo.value.pageSize, ...formInline
+  }
+  if (newCostIds.length) params = { pages: 1, size: newCostIds.length, newCostIds }
+  api.agreementApi.queryByFeePage(params).then((res: any) => {
     if (res.code == '200') {
       tableData.value = res.data.records;
       pageInfo.value.pageNum = res.data.current;
       pageInfo.value.pageSize = res.data.size;
       pageInfo.value.total = res.data.total;
-    } else {
     }
   });
 }
@@ -495,7 +504,6 @@ const regionLicenseNumber = (value: string) => {
 }
 //多选事件
 const selectionChange = (val: any) => {
-  console.log(val)
   sysUpAndDownList.value = val;
 }
 //禁用
@@ -532,16 +540,13 @@ const del = (value: string) => {
   )
     .then(() => {
       api.agreementApi.AgreementFeedeleteByIds([value]).then((res: any) => {
-        if (res.code == '200') {
+        if (res.code === 200) {
           findpage()
           ElMessage({
             type: 'success',
             message: res.msg,
             plain: true,
           })
-          // router.push({
-          //   name: 'reload',
-          // })
         }
       });
     })
@@ -607,7 +612,7 @@ const sysUpAndDown = async (type: boolean, list?: string[]) => {
       findpage();
       ElMessage({
         type: 'success',
-        message: res.msg,
+        message: '操作成功',
         plain: true,
       })
     }
@@ -771,6 +776,7 @@ const submitUpdate1 = () => {
 const copyDialog = ref(false)
 const agreementId = ref('')
 const coverRuleId = ref('')
+const productId = ref('')
 const agreementList1 = ref([])
 const rulesList = ref([])
 /** 复制操作处理:记录当前行的ID并打开复制确认对话框 */
@@ -806,6 +812,10 @@ const costitemCopy = () => {
     ElMessage.warning('请选择规则')
     return
   }
+  if (!productId.value) {
+    ElMessage.warning('请选择险种')
+    return
+  }
   ElMessageBox.confirm(
     '确定要复制该费用,请确认是否复制?',
     '复制费用',
@@ -820,10 +830,12 @@ const costitemCopy = () => {
       costIds: sysUpAndDownList.value,
       agreementId: agreementId.value,
       coverRuleId: coverRuleId.value,
+      productId: productId.value,
+      productName: insurance_type.value.find(v => v.value === productId.value)?.label,
     }
     api.agreementApi.AgreementFeecopy(params).then((res: any) => {
       if (res.code == '200') {
-        findpage();
+        findpage(res.data);
         ElMessage({
           type: 'success',
           message: res.msg,