wuguojie před 1 rokem
rodič
revize
5033bb92d4

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

@@ -32,7 +32,7 @@ export interface UpdateAgreementAttribution extends AddAgreementAttribution {
 
 const insuranceApi = (axiosInstance: ApiInstance) => ({
   getAgreementAttributionList: (data: SearchInsurance) => axiosInstance.post('/manager/attribution/getAgreementAttributionList', data), // 列表查询
-  leftList: (data: any) => axiosInstance.get(`/esmInsCompany/gainTopList?type=${data}`), //获取顶级保险公司
+  leftList: (data: any) => axiosInstance.get(`/esmInsCompany/gainTopList?type=${data}&&systemCode=${localStorage.getItem('login_system')}`), //获取顶级保险公司
   getDeptTree: (data: { sysCode: string }) => axiosInstance.post('/dept/getDeptTree', data), // 归属
   addAgreementAttribution: (data: AddAgreementAttribution) => axiosInstance.post('/manager/attribution/addAgreementAttribution', data), // 新增
   getPtlInsAttributionTemplate: (data: { insCompanyId: string, apiType: string }) => axiosInstance.post('/manager/attributionTemplate/getPtlInsAttributionTemplate', data), // 配置

+ 0 - 1
src/router/guards.ts

@@ -48,7 +48,6 @@ function setupRoutes(router: Router) {
       }
       else {
         // 获取用户权限
-        // console.log(123456789)
         settingsStore.settings.app.enablePermission && await userStore.getPermissions()
         // 生成动态路由
         switch (settingsStore.settings.app.routeBaseOn) {

+ 0 - 1
src/router/modules/personnel.ts

@@ -17,7 +17,6 @@ const routes: RouteRecordRaw = {
       component: () => import('@/views/personnel/memberManagement.vue'),
       meta: {
         title: '成员管理',
-
       },
       children:[
         {

+ 52 - 7
src/store/modules/route.ts

@@ -6,7 +6,12 @@ import { resolveRoutePath } from '@/utils'
 import { cloneDeep } from 'lodash-es'
 import useSettingsStore from './settings'
 import api from '@/api'
-
+import useUserStore from'@/store/modules/user.ts'
+import { asyncRoutes } from "@/router/routes"; // 请根据实际路径调整
+import {
+  preprocessRoutes,
+  convertToTreeData
+} from "@/utils/composables/routeUtils"; // 导入工具方法
 
 const useRouteStore = defineStore(
   // 唯一ID
@@ -161,10 +166,10 @@ const useRouteStore = defineStore(
           default:
             if (route.component) {
               route.component = views[`../../views${route.component}.vue`]
-             
+
             }
-           
-            
+
+
             else {
               delete route.component
             }
@@ -176,6 +181,34 @@ const useRouteStore = defineStore(
         return route
       })
     }
+
+    function filterTreeByPerms(nestedArray: any, referenceArray: any) {
+      // 创建参考值的Set以便快速查找
+      const referenceSet = new Set(referenceArray.map((item: any) => item.permsId));
+      function filterRecursive(data: any) {
+        return data.reduce((result: any, item: any) => {
+          // 检查当前项是否在参考数组中
+          const isMatch = referenceSet.has(`${item.id}`);
+
+          // 深度复制当前项(保留原始数据)
+          const newItem = {...item};
+
+          // 递归处理子项
+          if (newItem.children && newItem.children.length) {
+            newItem.children = filterRecursive(newItem.children);
+          }
+
+          // 如果当前项匹配或有匹配的子项,则保留
+          if (isMatch || (newItem.children && newItem.children.length)) {
+            result.push(newItem);
+          }
+
+          return result;
+        }, []);
+      }
+
+      return filterRecursive(nestedArray);
+    }
     // 生成路由(后端获取)
     async function generateRoutesAtBack() {
       await api.menuApi.getTenantConfig({
@@ -183,10 +216,22 @@ const useRouteStore = defineStore(
       }).then((res) => {
         // console.log(JSON.parse(res.data.sysConfig))
         // 设置 routes 数据
-        routesRaw.value = converDeprecatedAttribute(formatBackRoutes(JSON.parse(res.data.sysConfig)) as any)
-        // console.log(routesRaw.value,66666)
+        // const routes = (JSON.parse(res.data.sysConfig))
+        // const sysPerms = (JSON.parse(res.data.sysPerms))
+        const userInfo = JSON.parse(localStorage.getItem('userInfo'))
+        let routes = preprocessRoutes(asyncRoutes);
+        console.log(123123123, routes)
+        if(userInfo) {
+          let arr = []
+          arr = filterTreeByPerms(routes, userInfo.auths)
+          routesRaw.value = converDeprecatedAttribute(formatBackRoutes(arr) as any)
+        } else {
+          routesRaw.value = converDeprecatedAttribute(formatBackRoutes(JSON.parse(res.data.sysConfig)) as any)
+        }
         isGenerate.value = true
-      }).catch(() => {})
+      }).catch((e) => {
+        console.log(123, e)
+      })
     }
     // 生成路由(文件系统生成)
     function generateRoutesAtFilesystem(asyncRoutes: RouteRecordRaw[]) {

+ 8 - 0
src/store/modules/user.ts

@@ -4,6 +4,11 @@ import useRouteStore from './route'
 import useSettingsStore from './settings'
 import useTabbarStore from './tabbar'
 import api from '@/api'
+
+import {
+    clearId
+} from "@/utils/composables/routeUtils"; // 导入工具方法
+
 const useUserStore = defineStore(
   // 唯一ID
   'user',
@@ -42,6 +47,7 @@ const useUserStore = defineStore(
       avatar.value = 'https://fantastic-admin.hurui.me/logo.png'
       const result = await api.userApi.getCurUserInfo()
       localStorage.setItem('userDeptId', result.data.deptId)
+      localStorage.setItem('userInfo', JSON.stringify(result.data))
       userInfo.value = result.data
     }
     //获取运营交付菜单
@@ -58,6 +64,7 @@ const useUserStore = defineStore(
       localStorage.removeItem('userName')
       localStorage.removeItem('token')
       localStorage.removeItem('avatar')
+      localStorage.removeItem('userInfo')
       userName.value = ''
       token.value = ''
       // avatar.value = ''
@@ -71,6 +78,7 @@ const useUserStore = defineStore(
           ...(redirect !== settingsStore.settings.home.fullPath && router.currentRoute.value.name !== 'login' && { redirect }),
         },
       })
+        clearId()
     }
     // 获取权限
     async function getPermissions() {

+ 1 - 0
src/types/auto-imports.d.ts

@@ -9,6 +9,7 @@ declare global {
   const EffectScope: typeof import('vue')['EffectScope']
   const Fileonload: typeof import('../utils/composables/fileProcessing')['Fileonload']
   const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
+  const clearId: typeof import('../utils/composables/routeUtils')['clearId']
   const computed: typeof import('vue')['computed']
   const convertToTreeData: typeof import('../utils/composables/routeUtils')['convertToTreeData']
   const createApp: typeof import('vue')['createApp']

+ 8 - 4
src/utils/composables/routeUtils.ts

@@ -18,7 +18,7 @@ export interface RouteItem {
   };
   component: any,
   children?: RouteItem[];
-  
+
 }
 
 export interface TreeNode {
@@ -85,11 +85,12 @@ function extractImportPath(func: any) {
 // 预处理函数:确保 children 和 auth 类型正确
 export const preprocessRoutes = (routes: any[]): RouteItem[] => {
   return routes.map(route => {
-    
+
     const processedRoute: RouteItem = {
       id: generateId(),
       path: route.path || '',
       name: route.name,
+      title: route.meta?.title,
       component: route.component ? extractImportPath(route.component) : '',
       meta: {
         ...route.meta,
@@ -103,11 +104,14 @@ export const preprocessRoutes = (routes: any[]): RouteItem[] => {
       // 确保 children 存在且是数组
       children: route.children ? preprocessRoutes(route.children) : [],
     };
-
     return processedRoute;
   });
 };
 
+export const clearId = () => {
+  idCounter.value = 0
+}
+
 // 将 auth 转换为树节点
 const parseAuthToChildren = (authList: string[]): TreeNode[] => {
   return authList.map(auth => {
@@ -129,7 +133,7 @@ export const convertToTreeData = (id: number, routes: RouteItem[]): TreeNode[] =
   idCounter.value = id;
   return routes.filter(route => route.meta?.menu !== false).map(route => {
     const node: TreeNode = {
-      id: generateId(),
+      id: route.id,
       title: route.meta?.title || route.name || '',
       icon: route.meta?.icon,
       type: route.path ? "1" : '0',

+ 17 - 2
src/views/additionalOrder/additional/index.vue

@@ -1301,8 +1301,8 @@
               </el-col>
               <el-col :span="6">
                 <el-form-item class="white-m-p24" label="保险公司" prop="companyId">
-                  <el-select v-model="quoteForm.companyId" placeholder="请选择">
-                    <el-option label="公司1" value="1" key="1"></el-option>
+                  <el-select v-model="quoteForm.companyId" placeholder="请选择" filterable>
+                      <el-option v-for="item in bankOption" :key="item.id" :value="item.id" :label="item.name"></el-option>
                   </el-select>
                 </el-form-item>
               </el-col>
@@ -1689,6 +1689,20 @@ const initOption = () => {
   })
 }
 
+// 保险公司列表
+let bankOption = ref([])
+const initCompany = () => {
+    api.insuranceApi.leftList('').then(res => {
+        if(res.code == 200) {
+            bankOption.value = res.data
+        } else {
+            ElMessage({
+                message: res.msg,
+                type: 'warning'
+            })
+        }
+    })
+}
 
 // 查询条件
 let form = ref({})
@@ -6383,6 +6397,7 @@ const initEditData = () => {
 onMounted(() => {
   initOption()
   initEditData()
+  initCompany()
 })
 
 </script>

+ 1 - 1
src/views/externalAgreement/agreement/agreementAdd.vue

@@ -325,7 +325,7 @@ const getDeptTree = () => {
   });
 }
 const company = () => {
-  api.agreementApi.findTree({ name: "" }).then((res: any) => {
+  api.agreementApi.findTree({ name: "", systemCode: localStorage.getItem('login_system') }).then((res: any) => {
     if (res.code == '200') {
       companyOptions.value = res.data;
     } else {

+ 1 - 3
src/views/insurancePolicy/order.vue

@@ -113,9 +113,7 @@ let orderForm = ref({
   licenseNo: '',
   range: []
 })
-let tableData = ref([
-    {}
-])
+let tableData = ref([])
 // 分页
 let pages = ref(1)
 let size = ref(10)

+ 23 - 23
src/views/login.vue

@@ -8,31 +8,31 @@ meta:
 import { ref, onBeforeMount } from "vue";
 import { useRoute, useRouter } from "vue-router";
 import useUserStore from "@/store/modules/settings";
-import { asyncRoutes } from "@/router/routes"; // 请根据实际路径调整
-import {
-  preprocessRoutes,
-  convertToTreeData,
-  TreeNode,
-} from "@/utils/composables/routeUtils"; // 导入工具方法
+// import { asyncRoutes } from "@/router/routes"; // 请根据实际路径调整
+// import {
+//   preprocessRoutes,
+//   convertToTreeData,
+//   TreeNode,
+// } from "@/utils/composables/routeUtils"; // 导入工具方法
 defineOptions({
   name: "Login",
 });
 import api from "@/api";
 
-const treeData = ref<TreeNode[]>([]);
-onBeforeMount(() => {
-  // 对 asyncRoutes 进行预处理并转换为树形结构
-  const processedRoutes = preprocessRoutes(asyncRoutes);
-
-  treeData.value = convertToTreeData(0, processedRoutes);
-
-  // api.roleApi
-  //   .updateConfig({
-  //     sysConfig: JSON.stringify(processedRoutes),
-  //     sysPerms: JSON.stringify(treeData.value),
-  //   })
-  //   .then((res) => {});
-});
+// const treeData = ref<TreeNode[]>([]);
+// onBeforeMount(() => {
+//   // 对 asyncRoutes 进行预处理并转换为树形结构
+//   const processedRoutes = preprocessRoutes(asyncRoutes);
+//
+//   treeData.value = convertToTreeData(0, processedRoutes);
+//
+//   // api.roleApi
+//   //   .updateConfig({
+//   //     sysConfig: JSON.stringify(processedRoutes),
+//   //     sysPerms: JSON.stringify(treeData.value),
+//   //   })
+//   //   .then((res) => {});
+// });
 
 const route = useRoute();
 const router = useRouter();
@@ -180,17 +180,17 @@ const formType = ref<"login" | "register" | "resetPassword">("login");
     transition: height 0.15s ease;
   }
 
-  
+
   .fade-enter-active,
   .fade-leave-active {
     transition: opacity 0.15s ease;
   }
-  
+
   .fade-enter-from,
   .fade-leave-to {
     opacity: 0;
   }
- 
+
 
 }
 .copyright {

+ 1 - 1
src/views/marketingManagement/configurate.vue

@@ -375,6 +375,7 @@ const cancelSecond = () => {
   active.value = 0
 }
 const confirmSecond = (BasicFormRef: FormInstance) => {
+    console.log(123123213, basicForm.value)
   let awardList = gifts.value.map((item) => {
     if(item.form.awardCashType == '1') {
       return {
@@ -402,7 +403,6 @@ const confirmSecond = (BasicFormRef: FormInstance) => {
     formData.actDept = basicForm.value.actDept[basicForm.value.actDept.length-1]
   }
   formData.awardList = awardList
-  console.log(789, formData)
   if(route.query.id) {
     api.lotteryApi.updateActivity(formData).then(res => {
       if(res.code == 200) {

+ 5 - 4
src/views/personnel/roleManagement.vue

@@ -151,6 +151,7 @@ import {
   preprocessRoutes,
   convertToTreeData,
   TreeNode,
+  clearId
 } from "@/utils/composables/routeUtils"; // 导入工具方法
 import api from "@/api";
 const roleName = ref<string>("");
@@ -400,7 +401,6 @@ function deleteRole() {
       id: roleId.value,
     })
     .then((res:any) => {
-      console.log(res);
       if (res.code == 200) {
         ElMessageBox({
           title: '提示',
@@ -525,10 +525,11 @@ function getRoleList() {
 }
 onBeforeMount(() => {
   // 对 asyncRoutes 进行预处理并转换为树形结构
+  clearId()
   const processedRoutes = preprocessRoutes(asyncRoutes);
-
-  treeData.value = convertToTreeData(0, processedRoutes);
-
+  // treeData.value = convertToTreeData(0, processedRoutes);
+  treeData.value = processedRoutes;
+  console.log(222222, treeData.value)
   api.roleApi.updateConfig({
     sysConfig:JSON.stringify(processedRoutes),
     sysPerms:JSON.stringify(treeData.value)

+ 1 - 1
src/views/quoteConfig/agreement/agreementAdd.vue

@@ -416,7 +416,7 @@ const getDeptTree = () => {
   });
 }
 const company = () => {
-  api.agreementApi.findTree({ name: "" }).then((res: any) => {
+  api.agreementApi.findTree({ name: "", systemCode: localStorage.getItem('login_system') }).then((res: any) => {
     if (res.code == '200') {
       companyOptions.value = res.data;
     } else {

+ 2 - 1
src/views/quoteConfig/insuranceCompanyAccount/modules/insuranceAccountAdd.vue

@@ -270,7 +270,8 @@ const submit = async (formRef) => {
         password: insuranceAccountForm.value.password,
         userAbbr: insuranceAccountForm.value.userAbbr,
         apiType: insuranceAccountForm.value.apiType,
-        fields: []
+        fields: [],
+        login_system: localStorage.getItem('login_system')
       }
       formData.userDept = typeof formData.userDept==='string'?formData.userDept:formData.userDept[formData.userDept.length-1]
       fielsOption.value.forEach(item => {

+ 2 - 1
src/views/quoteConfig/project/modules/projectAdd.vue

@@ -337,7 +337,8 @@ const schemeTypeChange = (e) => {
 // 保险公司
 let companyOption = ref([])
 const initCompany = () => {
-  api.projectApi.getCompanyList().then(res => {
+  // api.projectApi.getCompanyList().then(res => {
+  api.insuranceApi.leftList('').then(res => {
     if(res.code == 200) {
       companyOption.value = res.data
     } else {