Sfoglia il codice sorgente

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

@dongkboy 3 mesi fa
parent
commit
7eaeb649b4

+ 2 - 0
src/api/modules/agreement.ts

@@ -54,6 +54,8 @@ const agreementApi = (axiosInstance: ApiInstance) => ({
   ptlAgreementCostsave: (data: any) => axiosInstance.post('ptlAgreementCost/save', data),
   //协议规则费用修改
   AgreementFeeupdate: (data: any) => axiosInstance.post('ptlAgreementCost/update', data),
+  //协议规则费用复制
+  AgreementFeecopy: (data: any) => axiosInstance.post('ptlAgreementCost/copyCost', data),
   //协议规则费用列表查询
   queryByAgreementId: (data: any) => axiosInstance.post('ptlAgreementCost/queryByAgreementId', data),
   //费用管理分页列表

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

@@ -16,6 +16,7 @@ const projectApi = (axiosInstance: ApiInstance) => ({
   getSchemeList: (data: GetSchemeList) => axiosInstance.post('/scheme/getSchemeList', data), // 险种
   jyxList: (data: { company: string }) => axiosInstance.post('/jyxConfig/jyxList', data), // 驾意险
   saveScheme: (data: any) => axiosInstance.post('/scheme/saveScheme', data), // 保存方案
+  copyScheme: (data: any) => axiosInstance.post('/scheme/copyScheme', data), // 复制方案
   deleteScheme: (data: { id: string }) => axiosInstance.post('/scheme/deleteScheme', data), // 删除
   getSchemeByCompany: (data: {
     companyId: string,

+ 48 - 6
src/views/quoteConfig/agreement/agreementDetails.vue

@@ -142,7 +142,8 @@
                     </el-icon>
                   </template>
                 </el-button>
-                <el-tabs :tab-position="ruleFeePosition" class="ruleFee" v-if="item.costVoList">
+                <el-tabs v-model="item.ruleFeeActive" :tab-position="ruleFeePosition" class="ruleFee"
+                  v-if="item.costVoList">
                   <el-tab-pane v-for="(costitem, costindex) in item.costVoList" :key="costindex"
                     :label="costitem.productName" :name="costitem.productName">
                     <span class="strong">{{ costitem.productName }}费用({{ costitem.ptlAgreementCostVoList.length
@@ -150,7 +151,10 @@
                     <ComplexTable :tableData="costitem.ptlAgreementCostVoList" :columns="columns" :maxHeight="250"
                       :showIndex="false" :columnwidth="200" :showSelect="false">
                       <template v-slot:operation="scope">
-                        <el-button type="primary" link @click="costitemEdit(scope.operationData.id, item)"> 编辑
+                        <el-button type="primary" link
+                          @click="costitemEdit(scope.operationData.id, item, index, costindex)"> 编辑
+                        </el-button>
+                        <el-button type="primary" link @click="costitemCopy(scope.operationData.id)"> 复制
                         </el-button>
                         <el-button type="primary" link @click="costitemDel(scope.operationData.id)"> 删除
                         </el-button>
@@ -464,7 +468,7 @@ const regionLicenseNumber = (value: string) => {
   });
 }
 //  添加承保规则
-const RulesList = ref();//承保规则数据
+const RulesList = ref([]);//承保规则数据
 const addUnderwritingRuleShow = ref(false);//添加规则抽屉
 
 const ruleFeePosition = ref<TabsInstance['tabPosition']>('left')
@@ -517,7 +521,16 @@ const agreementRulesList = () => {
         val.ruleFeeShow = false;
         return val;
       })
-      RulesList.value = res.data;
+      RulesList.value = res.data.map(v=>{
+        const index=RulesList.value.findIndex(k=>k.id===v.id)
+        const ruleFeeShow=RulesList.value[index]?.ruleFeeShow
+        const ruleFeeActive=RulesList.value[index]?.ruleFeeActive
+        return {
+          ...v,
+          ruleFeeShow,
+          ruleFeeActive,
+        }
+      });
 
     } else {
     }
@@ -699,12 +712,17 @@ const ruleFeeEditSave = (data: object) => {
         plain: true,
       })
       agreementRulesList()
-    } else {
+      ruleFeeEditVisible.value = false;
+
     }
   });
 }
+const index1 = ref(0)
+const costindex1 = ref(0)
 //编辑删除费用
-const costitemEdit = (id: string, item: any) => {
+const costitemEdit = (id: string, item: any, index: number, costindex: number) => {
+  index1.value = index;
+  costindex1.value = costindex;
   RulesInfo.value = item;
   api.agreementApi.AgreementFeeById(id).then((res: any) => {
     if (res.code == '200') {
@@ -743,6 +761,30 @@ const costitemDel = (id: string) => {
       });
     })
 }
+//删除费用
+const costitemCopy = (costId: string) => {
+  ElMessageBox.confirm(
+    '确定要复制该费用,请确认是否复制?',
+    '复制费用',
+    {
+      confirmButtonText: '确定复制',
+      type: 'warning',
+      center: true,
+      confirmButtonClass: 'el-button--primary',
+    }
+  ).then(() => {
+    api.agreementApi.AgreementFeecopy({ costId }).then((res: any) => {
+      if (res.code == '200') {
+        agreementRulesList();
+        ElMessage({
+          type: 'success',
+          message: res.msg,
+          plain: true,
+        })
+      }
+    });
+  })
+}
 interface rulesAttrListInfo {
   id: string,
   agreementId: string,

+ 54 - 5
src/views/quoteConfig/project/index.vue

@@ -27,7 +27,7 @@
             <ElButton type="primary" @click="addProject">添加新方案</ElButton>
           </div>
         </div>
-        <el-form  class="p-[20px_8px_0_24px]" :model="projectForm" ref="projectRefs">
+        <el-form class="p-[20px_8px_0_24px]" :model="projectForm" ref="projectRefs">
           <el-row :gutter="20">
             <el-col :span="4">
               <el-form-item label="方案类型">
@@ -67,6 +67,7 @@
           <el-table-column label="操作">
             <template #default="scope">
               <el-button link type="primary" @click="handleEdit(scope.row)">编辑</el-button>
+              <el-button link type="primary" @click="handleCopy(scope.row)">复制</el-button>
               <el-button link type="primary" @click="handleDel(scope.row)">删除</el-button>
             </template>
           </el-table-column>
@@ -150,6 +151,19 @@
       </el-col>
     </el-row> -->
   </PageMain>
+  <el-dialog v-model="copyDialog" title="复制" width="600">
+    <el-form>
+      <el-form-item label="险种类型">
+        <el-select v-model="insuranceTypeValue" placeholder="请选择险种类型">
+          <el-option v-for="item in insuranceType" :key="item.value" :value="item.value"
+            :label="item.label"></el-option>
+        </el-select>
+      </el-form-item>
+    </el-form>
+    <template #footer>
+      <el-button size="small" type="primary" @click="submitCopy">确定</el-button>
+    </template>
+  </el-dialog>
 </template>
 
 <script setup lang="ts">
@@ -159,7 +173,6 @@ import { useRouter, useRoute } from 'vue-router'
 
 const myRouter = useRouter()
 const muRoute = useRoute()
-console.log(muRoute.query.id)
 const searchCompany = () => {
   currentPage.value = 1
   pageSize.value = 10
@@ -307,6 +320,39 @@ const handleDel = (row) => {
   })
 }
 
+const copyDialog = ref(false)
+const copyId = ref('')
+const insuranceTypeValue = ref('')
+/** 复制操作处理:记录当前行的ID并打开复制确认对话框 */
+const handleCopy = (row) => {
+  copyId.value = row.id
+  copyDialog.value = true
+}
+/** 提交复制操作,校验险种选择后触发保险公司查询 */
+const submitCopy = () => {
+  if (insuranceTypeValue.value.length == 0) {
+    ElMessage({
+      message: '请选择险种',
+      type: 'warning'
+    })
+    return
+  }
+  const params = {
+    schemeId: copyId.value,
+    productCode: insuranceTypeValue.value
+  }
+  api.projectApi.copyScheme(params).then(res => {
+    if (res.code == 200) {
+      ElMessage({
+        message: res.msg,
+        type: 'success'
+      })
+      copyDialog.value = false
+      searchCompany()
+    }
+  })
+}
+
 onMounted(() => {
   // initData()
   initCompany()
@@ -316,18 +362,20 @@ onMounted(() => {
 </script>
 
 <style scoped lang="scss">
-:deep(.main-container){
+:deep(.main-container) {
   padding: 16px;
 }
+
 :deep(.el-input-group__append) {
   color: #fff;
-  background: linear-gradient( 91deg, #4FCAFF 0%, #2B62FF 100%);
+  background: linear-gradient(91deg, #4FCAFF 0%, #2B62FF 100%);
 }
+
 .member-tree {
   &::after {
     content: '';
     position: absolute;
-    height: calc(100% + 40px);
+    height: calc(100% + 32px);
     width: 1px;
     background-color: #EEEEEE;
     top: -16px;
@@ -335,6 +383,7 @@ onMounted(() => {
     bottom: -16px;
   }
 }
+
 .role-item {
   cursor: pointer;
 }