Przeglądaj źródła

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

@dongkboy 1 miesiąc temu
rodzic
commit
19a88a4d06

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

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

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

@@ -29,7 +29,7 @@
             <el-tag type="primary" style="margin-right: 20px;">{{
               getDict('is_enable').find(val => val.value == agreementInfo.isEnable)?.label}}</el-tag>
             <el-tag type="success">{{getDict('valid_status').find(val => val.value == agreementInfo.validStatus)?.label
-              }}</el-tag>
+            }}</el-tag>
           </div>
         </div>
         <el-descriptions :column="3" style="margin-top: 10px;">
@@ -51,9 +51,9 @@
         <el-tab-pane label="协议信息" name="agreementInfo">
           <el-descriptions title="基本信息" class="m-top-20" :column="3">
             <el-descriptions-item label="协议名称:">{{ agreementInfo.agreementTitle
-            }}</el-descriptions-item>
+              }}</el-descriptions-item>
             <el-descriptions-item label="协议简称:">{{ agreementInfo.agreementAbbreviation
-            }}</el-descriptions-item>
+              }}</el-descriptions-item>
             <el-descriptions-item label="协议生效时间:">{{ agreementInfo.startDate }}</el-descriptions-item>
             <el-descriptions-item label="协议失效时间:">{{ agreementInfo.endDate }}</el-descriptions-item>
             <el-descriptions-item label="是否含增值税结算:">
@@ -117,9 +117,11 @@
                   <div class="flex a-c">
                     <img src="../../../assets/images/fee.png" alt="">
                     <span style="margin-right: 30px;font-size: 16px;" class="strong m-left-10">承保规则一{{ index + 1
-                      }}</span>
+                    }}</span>
                   </div>
                   <div class="flex">
+                    <el-button link type="primary" :icon="View"
+                      @click="operatorTrajectoryRef.operAtorTrajectory(item.id)">查看轨迹</el-button>
                     <el-button link type="primary" :icon="CopyDocument" @click="ruleCopy(item.id)">复制</el-button>
                     <el-button link type="primary" :icon="Delete" @click="ruleDel(item.id)">删除</el-button>
                     <el-button link type="primary" :icon="Edit" @click="ruleEdit(item.id)">编辑</el-button>
@@ -149,7 +151,7 @@
                   <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
-                    }}条)</span>
+                      }}条)</span>
                     <el-button type="primary" link @click="handleUpdateValidDate()"> 批量设置有效期
                     </el-button>
                     <el-button type="primary" link @click="handleUpdateCostRatio()"> 批量设置比例
@@ -160,6 +162,9 @@
                       :showIndex="false" tableheight="auto" :columnwidth="200" @selectionChange="(arr) => costIds = arr"
                       @select-all="(arr) => costIds = arr">
                       <template v-slot:operation="scope">
+                        <el-button type="primary" link
+                          @click="operatorTrajectoryRef.operAtorTrajectory(scope.operationData.id)"> 查看轨迹
+                        </el-button>
                         <el-button type="primary" link
                           @click="costitemEdit(scope.operationData.id, item, index, costindex)"> 编辑
                         </el-button>
@@ -315,6 +320,7 @@
         <autoLoadingButton type="primary" :on-click="submitUpdate1">确定</autoLoadingButton>
       </template>
     </el-dialog>
+    <operatorTrajectory ref="operatorTrajectoryRef" />
   </div>
 </template>
 <!-- 行为区域 -->
@@ -331,7 +337,11 @@ import authDrawer from "./components/agreementAuth.vue";
 import ruleFeeDialog from "./components/ruleFeeDialog.vue";
 import ruleFeeDialogEdit from "./components/ruleFeeDialogEdit.vue";
 import autoLoadingButton from "./components/autoLoadingButton.vue";
-import { Delete, Edit, CopyDocument } from '@element-plus/icons-vue'
+
+import operatorTrajectory from "./components/operatorTrajectory.vue";
+const operatorTrajectoryRef = ref(null)
+
+import { Delete, Edit, CopyDocument, View } from '@element-plus/icons-vue'
 interface Agreement {
   [key: string]: string | number; // 协议名称
 }

+ 58 - 48
src/views/quoteConfig/agreement/agreementIndex.vue

@@ -16,7 +16,7 @@
             </el-button>
           </RouterLink>
           <el-dropdown placement="bottom-start">
-            <el-button > 批量管理<el-icon>
+            <el-button> 批量管理<el-icon>
                 <arrow-down />
               </el-icon>
             </el-button>
@@ -30,9 +30,9 @@
           </el-dropdown>
         </template>
         <template v-slot:operation="scope">
-            <el-button type="primary" link @click="agreementEdit(scope.operationData.id)">编辑</el-button>
-            <el-button type="primary" link @click="agreemenUpdate(scope.operationData)"> 详情
-            </el-button>
+          <el-button type="primary" link @click="agreementEdit(scope.operationData.id)">编辑</el-button>
+          <el-button type="primary" link @click="agreemenUpdate(scope.operationData)"> 详情
+          </el-button>
           <el-dropdown placement="bottom-start" trigger="click">
             <span class="el-dropdown-link">
               更 多
@@ -45,6 +45,7 @@
                 <el-dropdown-item @click="agreemenCopy(scope.operationData.id)">复制协议</el-dropdown-item>
                 <el-dropdown-item @click="batchAuthorization(scope.operationData.id)">协议授权</el-dropdown-item>
                 <el-dropdown-item @click="cost(scope.operationData.id)">费用管理</el-dropdown-item>
+                <el-dropdown-item @click="operatorTrajectoryRef.operAtorTrajectory(scope.operationData.id)">轨迹查看</el-dropdown-item>
               </el-dropdown-menu>
             </template>
           </el-dropdown>
@@ -55,9 +56,10 @@
       </ComplexTable>
     </PageMain>
     <auth-Drawer :Drawer="agreementAuthDrawer" @cancel=" agreementAuthDrawer = false" @save="DrawerSave"
-      @query="Drawerquery" :deptlist="deptauthList" :checkedKeys="checkedKeys" @echoValue="echoValue" :checkedIds="checkedIds"></auth-Drawer>
-
+      @query="Drawerquery" :deptlist="deptauthList" :checkedKeys="checkedKeys" @echoValue="echoValue"
+      :checkedIds="checkedIds"></auth-Drawer>
 
+    <operatorTrajectory ref="operatorTrajectoryRef" />
   </div>
 </template>
 
@@ -67,6 +69,8 @@ import { RouterLink, useRouter } from "vue-router";
 import { ElMessage, ElMessageBox } from 'element-plus'
 import { loadDicts, getDict } from '@/utils/composables/dictService';//字典组件
 import authDrawer from "./components/agreementAuth.vue";
+import operatorTrajectory from "./components/operatorTrajectory.vue";
+const operatorTrajectoryRef = ref(null)
 import api from '@/api';
 interface PageInfo {
   pageNum: number;
@@ -98,10 +102,10 @@ const provinceoptions = ref<string[]>([])//省市区回显数据
 const deptOptions = ref()//机构数据
 let company_list = ref()
 const companyIdprops = {
-    expandTrigger: 'hover' as const,
-    value: 'id',
-    label: 'name',
-    checkStrictly: true,
+  expandTrigger: 'hover' as const,
+  value: 'id',
+  label: 'name',
+  checkStrictly: true,
 }
 const agreement_type = ref();
 const valid_status = ref();
@@ -128,9 +132,9 @@ const formInline = reactive({
   takeEndDate: "",
   loseStartDate: "",
   loseEndDate: "",
-  isExternal:'0',
-  value1:[],
-  value2:[],
+  isExternal: '0',
+  value1: [],
+  value2: [],
 })
 
 //表格字段数据
@@ -142,7 +146,7 @@ const fields = ref([
     }
   },
   {
-      label: "保险公司", model: "companyId", type: "cascader", placeholder: "选择保险公司", options: company_list, props: companyIdprops, placement: 'left'
+    label: "保险公司", model: "companyId", type: "cascader", placeholder: "选择保险公司", options: company_list, props: companyIdprops, placement: 'left'
   },
   {
     label: "协议类型", model: "agreementType", type: "select", placeholder: "选择协议类型", options: agreement_type,
@@ -183,22 +187,22 @@ const fields = ref([
 
 // 保险公司
 const initCompany = () => {
-    api.agreementApi.findTree({ name: "", systemCode: localStorage.getItem('login_system') }).then((res: any) => {
-        if (res.code == '200') {
-            company_list.value = res.data;
-        } else {
-            ElMessage({
-                type: 'error',
-                message: res.msg,
-                plain: true,
-            })
-        }
-    });
+  api.agreementApi.findTree({ name: "", systemCode: localStorage.getItem('login_system') }).then((res: any) => {
+    if (res.code == '200') {
+      company_list.value = res.data;
+    } else {
+      ElMessage({
+        type: 'error',
+        message: res.msg,
+        plain: true,
+      })
+    }
+  });
 }
 
 //数据查询
 function findpage() {
-  let query = {...formInline}
+  let query = { ...formInline }
   query.companyId = query.companyId?.[query.companyId.length - 1]
   api.agreementApi.agreementList({ pages: pageInfo.value.pageNum, size: pageInfo.value.pageSize, ...query }).then((res: any) => {
     if (res.code == '200') {
@@ -211,8 +215,10 @@ function findpage() {
   });
 }
 const columns = [
-  { prop: "agreementCode", label: "协议编号", width: '200',component: "RouterLink",
-  formatter: (row: any) => ({ name: 'AgreementDetails', query: { id: row.id} }) },
+  {
+    prop: "agreementCode", label: "协议编号", width: '200', component: "RouterLink",
+    formatter: (row: any) => ({ name: 'AgreementDetails', query: { id: row.id } })
+  },
   {
     prop: "agreementTitle", label: "协议名称", width: '200',
   },
@@ -263,17 +269,21 @@ const columns = [
       return 'T' + row.moneyTime
     }
   },
-  { prop: "username", label: "出单账号", width: '220',
-  formatter: (row: any) => {
+  {
+    prop: "username", label: "出单账号", width: '220',
+    formatter: (row: any) => {
       return `用户名:${row.username}\n简称:${row.userAbbr}`
     }
   },
   { prop: "company", label: "保险公司", width: '200' },
-  { prop: "dockingPerson", label: "对接人", width: '200', formatter: (row: any) => {
+  {
+    prop: "dockingPerson", label: "对接人", width: '200', formatter: (row: any) => {
       return `${row.dockingPerson}-${row.dockingPhone}`
-    } },
-  { prop: "custodianId", label: "管理人", width: '200',
-  formatter: (row: any) => {
+    }
+  },
+  {
+    prop: "custodianId", label: "管理人", width: '200',
+    formatter: (row: any) => {
       return `${row.managerName}-${row.managerDeptName}`
     }
   },
@@ -348,13 +358,13 @@ function getUncheckedIds(data: any[]): string[] {
   return ids;
 }
 //编辑跳转
-const agreementEdit = (id:any) => {
-    router.push({
-        name: 'AgreementAdd',
-        query: {
-            id: id
-        }
-    })
+const agreementEdit = (id: any) => {
+  router.push({
+    name: 'AgreementAdd',
+    query: {
+      id: id
+    }
+  })
 }
 
 function agreemenUpdate(item: any) {
@@ -365,13 +375,13 @@ function agreemenUpdate(item: any) {
     }
   })
 }
-const cost=(id:string)=>{
+const cost = (id: string) => {
   router.push({
-      name: 'AgreementDetails',
-      query: {
-          id: id,
-          from: '费用管理'
-      }
+    name: 'AgreementDetails',
+    query: {
+      id: id,
+      from: '费用管理'
+    }
   })
 }
 //多选事件
@@ -394,7 +404,7 @@ const batchAuthorization = (value: string) => {
 
 }
 //复制协议
-const agreemenCopy = (id:string) => {
+const agreemenCopy = (id: string) => {
   router.push({
     name: 'AgreementCopy',
     query: {

+ 72 - 0
src/views/quoteConfig/agreement/components/operatorTrajectory.vue

@@ -0,0 +1,72 @@
+<template>
+  <el-dialog :close-on-click-modal="false" v-model="dialog" title="轨迹" width="1200">
+    <ComplexTable :tableData="tableData" tableheight="calc(100vh - 410px)" :columns="columns" :columnwidth="200"
+      :pageInfo="pageInfo" @getList="getList">
+      <template v-slot:operation="scope">
+        <el-button type="primary" link @click="detail(scope.operationData.id)">
+          查看详情
+        </el-button>
+      </template>
+    </ComplexTable>
+  </el-dialog>
+</template>
+<script lang="ts" setup>
+import api from '@/api';
+
+const dialog = ref(false)
+const tableData = ref([])
+const columns = [
+  { prop: "operationContent", label: "操作类型", minWidth: '500', },
+  {
+    prop: "operatorName", label: "承保规则", width: '120',
+  },
+  { prop: "createTime", label: "操作时间", width: '240', },
+  {
+    prop: "createByName", label: "操作人", width: '120',
+  },
+
+];
+const pageInfo = ref({
+  pageNum: 1,
+  pageSize: 20,
+  sizes: [10, 20, 30, 40, 50],
+  total: 100,
+});
+//分页事件
+const getList = (item) => {
+  pageInfo.value.pageNum = item.pageNum;
+  pageInfo.value.pageSize = item.pageSize;
+  findpage();
+};
+function findpage(primaryValue) {
+  api.agreementApi.operatorTrajectoryList({ pages: pageInfo.value.pageNum, size: pageInfo.value.pageSize, primaryValue }).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;
+    }
+  });
+}
+
+const operAtorTrajectory = (primaryValue) => {
+  findpage(primaryValue)
+  tableData.value = []
+  dialog.value = true
+}
+
+const myRouter = useRouter()
+const detail = (id) => {
+  myRouter.push({
+    path: '/systemManage/logManage/logDetail',
+    query: {
+      id
+    }
+  })
+  dialog.value = false
+}
+
+defineExpose({
+  operAtorTrajectory,
+});
+</script>