4 Commits 9b76ab9925 ... f1de90b5b0

Autore SHA1 Messaggio Data
  lusa f1de90b5b0 前端用户中心 3 settimane fa
  lusa cfd9b3b5a4 Merge remote-tracking branch 'origin/master' 3 settimane fa
  lusa c258d9a4c9 Merge remote-tracking branch 'origin/master' 1 mese fa
  lusa eea411c016 前端用户中心 1 mese fa
27 ha cambiato i file con 171 aggiunte e 42 eliminazioni
  1. 1 1
      Jenkinsfile
  2. 7 7
      ui/sp-storlead-center/src/api/public.ts
  3. 10 2
      ui/sp-storlead-center/src/api/system/bulletin/types.ts
  4. 2 2
      ui/sp-storlead-center/src/api/system/dept/index.ts
  5. 2 0
      ui/sp-storlead-center/src/layout/components/Navbar.vue
  6. 14 1
      ui/sp-storlead-center/src/layout/components/notice/index.vue
  7. 3 2
      ui/sp-storlead-center/src/permission.ts
  8. 1 1
      ui/sp-storlead-center/src/settings.ts
  9. 1 1
      ui/sp-storlead-center/src/store/modules/app.ts
  10. 4 4
      ui/sp-storlead-center/src/store/modules/notice.ts
  11. 5 0
      ui/sp-storlead-center/src/store/modules/permission.ts
  12. 6 2
      ui/sp-storlead-center/src/utils/common.ts
  13. 1 1
      ui/sp-storlead-center/src/utils/request.ts
  14. 17 5
      ui/sp-storlead-center/src/views/system/bulletin/index.vue
  15. 11 0
      ui/sp-storlead-center/src/views/system/cueWordTemplate/index.vue
  16. 11 1
      ui/sp-storlead-center/src/views/system/currencySetting/index.vue
  17. 1 1
      ui/sp-storlead-center/src/views/system/dept/index.vue
  18. 9 2
      ui/sp-storlead-center/src/views/system/dict/index.vue
  19. 8 1
      ui/sp-storlead-center/src/views/system/menu/index.vue
  20. 9 1
      ui/sp-storlead-center/src/views/system/messageTemplate/index.vue
  21. 6 0
      ui/sp-storlead-center/src/views/system/post/index.vue
  22. 10 1
      ui/sp-storlead-center/src/views/system/role/index.vue
  23. 11 1
      ui/sp-storlead-center/src/views/system/ruleConfig/index.vue
  24. 9 1
      ui/sp-storlead-center/src/views/system/task/index.vue
  25. 9 1
      ui/sp-storlead-center/src/views/system/user/index.vue
  26. 2 2
      ui/sp-user-center/src/api/public.ts
  27. 1 1
      ui/sp-user-center/src/utils/request.ts

+ 1 - 1
Jenkinsfile

@@ -178,7 +178,7 @@ pipeline {
                             remote.password = passwordHW
                         }
 //                         if (params.module == 'sp-user-mobile-center') {
-                           sh """cd ${params.modulePrefix}/${params.module} && npm install  && npm run build:${params.profile}"""
+                           sh """cd ${params.modulePrefix}/${params.module} && npm install  && npm run ${params.profile}"""
 //                         } else {
 //                            sh """cd ${params.modulePrefix}/${params.module} && npm install  && npm run ${params.profile}"""
 //                         }

+ 7 - 7
ui/sp-storlead-center/src/api/public.ts

@@ -174,27 +174,27 @@ export const listMessage = (data: any) => {
 
 /**
  * 获取类型以及未读数量
- * @param data
+ * @param appId 应用ID
  * @returns {*}
  */
-export const getMessageType = () => {
+export const getMessageType = (appId?: string | number) => {
     return request({
-        url: '/sys/inside/message/getNoReadCount',
+        url: '/sys/message/getNoReadCount',
         method: 'post',
-        data: {}
+        data: { appId }
     });
 };
 
 /**
  * 获取公告未读数量
- * @param data
+ * @param appId 应用ID
  * @returns {*}
  */
-export const getBulletinUnreadCount = () => {
+export const getBulletinUnreadCount = (appId?: string | number) => {
     return request({
         url: '/bulletin/unread-count',
         method: 'get',
-        params: {}
+        params: { appId }
     });
 };
 

+ 10 - 2
ui/sp-storlead-center/src/api/system/bulletin/types.ts

@@ -128,12 +128,16 @@ export interface BulletinForm extends BaseEntity {
    * 显示顺序
    */
   sort?: number;
-  columnValue?: string|number;
+    columnValue?: string|number;
   noticeUserIdList?: string[]|number[];
   isTalk?: number;
   remindMode?: string;
   fileIds?: string[];
   files?: string;
+  /**
+   * 所属应用id
+   */
+  appId?: string | number;
 
 }
 
@@ -198,11 +202,15 @@ export interface BulletinQuery extends PageQuery {
    * 日期范围参数
    */
   params?: any;
-  blurry?: string;
+    blurry?: string;
   startDate?: string;
   endDate?: string;
   columnValue?: string|number;
   createByIds?: string[]|number[];
+  /**
+   * 所属应用id
+   */
+  appId?: string | number;
 }
 
 

+ 2 - 2
ui/sp-storlead-center/src/api/system/dept/index.ts

@@ -4,11 +4,11 @@ import { DeptForm, DeptQuery, DeptVO } from './types';
 
 
 // 查询部门列表
-export const listDeptList = (types: number[], menuId: string | undefined, enable?: number) => {
+export const listDeptList = (types: number[], menuId: string | undefined, enable?: number, appId?: string | number) => {
   return request({
     url: '/sys/dept/orgTree',
     method: 'post',
-    data: { orgTypes: types, reviewTag: 1, scopeMenuId: menuId, enable }
+    data: { orgTypes: types, reviewTag: 1, scopeMenuId: menuId, enable, appId }
   });
 };
 // 查询部门列表

+ 2 - 0
ui/sp-storlead-center/src/layout/components/Navbar.vue

@@ -148,6 +148,8 @@ const getFirstLeafPath = (routes: any[], parentPath = ''): string => {
 // 切换应用系统:更新激活应用并跳转第一个可用路由
 const switchApp = (app: any) => {
     permissionStore.setActiveApp(app.appId);
+    // 切换应用后立即刷新消息未读数
+    useNoticeStore().getMessageCount(app.appId);
     const targetPath = getFirstLeafPath(app.children);
     if (targetPath) {
         router.push(targetPath).catch(() => {});

+ 14 - 1
ui/sp-storlead-center/src/layout/components/notice/index.vue

@@ -70,6 +70,9 @@
     import { listMessage, getMessageType, updateRead, updateReadAll, clearRead } from '@/api/public'
     import setMsgTools from './SetMsgTools.vue'
     import moment from "moment";
+    import { usePermissionStore } from '@/store/modules/permission';
+
+    const permissionStore = usePermissionStore();
 
     const typeData = ref([])
     const setMsgToolsRef = ref()
@@ -81,6 +84,7 @@
         pageIndex: 1,
         pageSize: 10,
         messageType: 0,
+        appId: undefined as string | number | undefined,
     })
 
     const noticeData = ref([])
@@ -88,7 +92,7 @@
 
     const router = useRouter();
     const getType = () => {
-        getMessageType().then(res => {
+        getMessageType(permissionStore.activeAppId).then(res => {
             if(res.success) {
                 typeData.value = res.result
                 search.value.messageType = Number(router.currentRoute.value.query.messageType) as number
@@ -189,7 +193,16 @@
         }
     });
 
+    // 监听应用切换,刷新消息类型和列表
+    watch(() => permissionStore.activeAppId, (newAppId) => {
+        if (newAppId) {
+            search.value.appId = newAppId;
+            getType();
+        }
+    });
+
     onMounted(() => {
+        search.value.appId = permissionStore.activeAppId;
         getType()
     })
 </script>

+ 3 - 2
ui/sp-storlead-center/src/permission.ts

@@ -92,11 +92,12 @@ router.beforeEach(async (to, from, next) => {
                     });
                     // 邮箱页面不需要循环调未读数接口
                     if(to.path.indexOf('/email') == -1) {
+                        const currentAppId = usePermissionStore().activeAppId;
                         useNoticeStore().getCount() // 邮箱未读
-                        useNoticeStore().getMessageCount() // 消息未读
+                        useNoticeStore().getMessageCount(currentAppId) // 消息未读
                         setInterval(() => {
                             useNoticeStore().getCount()
-                            useNoticeStore().getMessageCount()
+                            useNoticeStore().getMessageCount(usePermissionStore().activeAppId)
                         }, 1000 * 60)
                     }
                     next({...to, replace: true}); // hack方法 确保addRoutes已完成

+ 1 - 1
ui/sp-storlead-center/src/settings.ts

@@ -9,7 +9,7 @@ const setting: DefaultSettings = {
   /**
    * 侧边栏主题 深色主题theme-dark,浅色主题theme-light
    */
-  sideTheme: 'theme-dark',
+  sideTheme: 'theme-light',
   /**
    * 是否系统布局配置
    */

+ 1 - 1
ui/sp-storlead-center/src/store/modules/app.ts

@@ -4,7 +4,7 @@ import enUS from 'element-plus/es/locale/lang/en';
 export const useAppStore = defineStore('app', () => {
   const sidebarStatus = useStorage('sidebarStatus', '1');
   const sidebar = reactive({
-    opened: sidebarStatus.value ? !!+sidebarStatus.value : true,
+    opened: true,
     withoutAnimation: false,
     hide: false,
 

+ 4 - 4
ui/sp-storlead-center/src/store/modules/notice.ts

@@ -44,14 +44,14 @@ export const useNoticeStore = defineStore('notice', () => {
     })
   }
 
-  // 获取消息未读数
-  const getMessageCount = async() => {
-    await getMessageType().then(res => {
+    // 获取消息未读数
+  const getMessageCount = async(appId?: string | number) => {
+    await getMessageType(appId).then(res => {
       let countList = (res.result || []).map(item => item.stateNumber)
       state.messageNoReadCount = eval(countList.join("+"))
       state.messageData = res.result || []
     })
-    await getBulletinUnreadCount().then(res => {
+    await getBulletinUnreadCount(appId).then(res => {
       state.bulletinNoReadCount = res.result.count
     })
   }

+ 5 - 0
ui/sp-storlead-center/src/store/modules/permission.ts

@@ -123,6 +123,11 @@ export const usePermissionStore = defineStore('permission', () => {
      */
     const filterAsyncRouter = (asyncRouterMap: RouteOption[], lastRouter?: RouteOption, type = false): RouteOption[] => {
         return asyncRouterMap.filter((route) => {
+            // 统一 hidden 字段类型:后端可能返回 Integer 0/1 或 String "0"/"1"
+            // JS 中 "0" 是 truthy,会导致可见路由被错误当成隐藏路由
+            const rawHidden = (route as any).hidden;
+            (route as any).hidden = rawHidden === true || rawHidden === 1 || rawHidden === '1';
+
             if (type && route.children) {
                 route.children = filterChildren(route.children, undefined);
             }

+ 6 - 2
ui/sp-storlead-center/src/utils/common.ts

@@ -185,9 +185,13 @@ export const handleTree = <T>(data: any[], id?: string, parentId?: string, child
       tree.push(d);
     }
   }
+  const visited = new Set<any>();
   const adaptToChildrenList = (o: any) => {
-    if (childrenListMap[o[config.id]] !== null) {
-      o[config.childrenList] = childrenListMap[o[config.id]];
+    const id = o[config.id];
+    if (visited.has(id)) return;
+    visited.add(id);
+    if (childrenListMap[id] != null) {
+      o[config.childrenList] = childrenListMap[id];
     }
     if (o[config.childrenList]) {
       for (const c of o[config.childrenList]) {

+ 1 - 1
ui/sp-storlead-center/src/utils/request.ts

@@ -182,7 +182,7 @@ service.interceptors.response.use(
     } else if (message.includes('Request failed with status code')) {
       message = '系统接口' + message.substr(message.length - 3) + '异常';
     }
-    let msgUrls  = ['/sys/inside/message/getNoReadCount', '/mail/get_new_mail', '/mail/receive_mail']
+    let msgUrls  = ['/sys/message/getNoReadCount', '/mail/get_new_mail', '/mail/receive_mail']
     if(msgUrls.includes(error?.config?.url)) {
       return false
     }else {

+ 17 - 5
ui/sp-storlead-center/src/views/system/bulletin/index.vue

@@ -1,6 +1,7 @@
 <template>
     <el-card shadow="never" class="list-card">
         <template #header>
+            <AppTabs v-model="currentAppId" @change="handleAppChange" />
             <div class="search" v-show="showSearch">
                 <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
                     <el-form-item  prop="noticeUserIds">
@@ -39,7 +40,7 @@
             </div>
         </template>
 
-        <Table ref="bulletinTable"
+        <Table v-if="currentAppId" ref="bulletinTable"
                :tableParams="tableParams"
                :btnRole="leftBtn"
                @handleAdd="handleAdd"
@@ -119,6 +120,14 @@
     import Table from '@/components/Table/index.vue'
     import { tableTypes } from '@/components/Table/types'
     import {useDictCache} from '@/hooks/web/useDict'
+    import AppTabs from '@/components/AppTabs/index.vue'
+
+    const currentAppId = ref('')
+    const handleAppChange = () => {
+        ;(tableParams.queryParams as any).appId = currentAppId.value
+        bulletinTable.value?.getData()
+    }
+
     const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 
 
@@ -179,7 +188,7 @@
             },
         ],
         keyId: 'id',
-        queryParams: {
+                queryParams: {
             deadlineDate: undefined,
             title: undefined,
             content: undefined,
@@ -191,13 +200,14 @@
             ownerBy: undefined,
             formerOwnerBy: undefined,
             sort: undefined,
+            appId: undefined,
         },
         listFn: listBulletin,
         delFn: delBulletin,
     })
 
 
-    const initFormData: BulletinForm = {
+        const initFormData: BulletinForm = {
         id: undefined,
         deadlineDate: undefined,
         title: undefined,
@@ -210,7 +220,8 @@
         ownerBy: undefined,
         formerOwnerBy: undefined,
         sort: undefined,
-        noticeUserIdList:[]
+        noticeUserIdList: [],
+        appId: undefined,
     }
     const data = reactive<PageData<BulletinForm, BulletinQuery>>({
         form: {...initFormData},
@@ -278,9 +289,10 @@
         multiple.value = !selection.length;
     }
 
-    /** 新增按钮操作 */
+        /** 新增按钮操作 */
     const handleAdd = () => {
         reset();
+        form.value.appId = currentAppId.value;
         dialog.visible = true;
         dialog.title = "添加公告主";
     }

+ 11 - 0
ui/sp-storlead-center/src/views/system/cueWordTemplate/index.vue

@@ -1,6 +1,10 @@
 <template>
 	<el-card shadow="never" class="list-card">
+		<template #header>
+			<AppTabs v-model="currentAppId" @change="handleAppChange" />
+		</template>
 		<Table
+            v-if="currentAppId"
             ref="cueWordTemplateTable"
             :tableParams="tableParams"
             :btnRole="roleBtn"
@@ -21,6 +25,13 @@ import auth from '@/plugins/auth'
 import Table from '@/components/Table/index.vue'
 import { tableTypes } from '@/components/Table/types'
 import addCueWordTemplate from './add.vue'
+import AppTabs from '@/components/AppTabs/index.vue'
+
+const currentAppId = ref('')
+const handleAppChange = () => {
+	;(tableParams.queryParams as any).appId = currentAppId.value
+	cueWordTemplateTable.value?.getData()
+}
 
 const roleBtn = ref([
     { type: 'add', hasPermi: 'system:cueWordTemplate:add', },

+ 11 - 1
ui/sp-storlead-center/src/views/system/currencySetting/index.vue

@@ -1,6 +1,9 @@
 <template>
     <el-card shadow="never" class="list-card">
-        <Table ref="currencySettingTable"
+        <template #header>
+            <AppTabs v-model="currentAppId" @change="handleAppChange" />
+        </template>
+        <Table v-if="currentAppId" ref="currencySettingTable"
                :tableParams="tableParams"
                :btnRole="leftBtn"
                @handleAdd="handleAdd"
@@ -49,6 +52,13 @@ import {CurrencySettingVO, CurrencySettingQuery, CurrencySettingForm} from '@/ap
 import auth from '@/plugins/auth'
 import Table from '@/components/Table/index.vue'
 import {tableTypes} from '@/components/Table/types'
+import AppTabs from '@/components/AppTabs/index.vue'
+
+const currentAppId = ref('')
+const handleAppChange = () => {
+    ;(tableParams.queryParams as any).appId = currentAppId.value
+    currencySettingTable.value?.getData()
+}
 
 const {proxy} = getCurrentInstance() as ComponentInternalInstance;
 

+ 1 - 1
ui/sp-storlead-center/src/views/system/dept/index.vue

@@ -169,7 +169,7 @@ const { form, rules } = toRefs<PageData<DeptForm, DeptQuery>>(data)
 const getList = async () => {
     loading.value = true;
     // queryParams.value = [10, 20, 30]
-    const res = await listDeptList([10, 20, 30], undefined);
+    const res = await listDeptList([10, 20, 30], undefined, undefined, undefined);
     // const data = proxy?.handleTree<DeptVO>(res.data, "deptId")
     // if (data) {
     //   deptList.value = res

+ 9 - 2
ui/sp-storlead-center/src/views/system/dict/index.vue

@@ -1,8 +1,8 @@
 <template>
-
     <el-card shadow="never" class="list-card">
 
         <template #header>
+            <AppTabs v-model="currentAppId" @change="handleAppChange" />
             <el-tabs v-model="queryParams.dictType"  @tab-change="changeTab">
                 <el-tab-pane name="" label="全部" ></el-tab-pane>
                 <el-tab-pane name="1" label="业务字典" ></el-tab-pane>
@@ -25,7 +25,7 @@
             </div>
         </template>
 
-        <Table ref="dictTable"
+        <Table v-if="currentAppId" ref="dictTable"
                :tableParams="tableParams"
                :btnRole="leftBtn"
                @handleAdd="handleAdd"
@@ -79,6 +79,13 @@ import auth from '@/plugins/auth'
 import Table from '@/components/Table/index.vue'
 import indexDetail from './indexDetail.vue'
 import { tableTypes } from '@/components/Table/types'
+import AppTabs from '@/components/AppTabs/index.vue'
+
+const currentAppId = ref('')
+const handleAppChange = () => {
+    ;(tableParams.queryParams as any).appId = currentAppId.value
+    dictTable.value?.getData()
+}
 
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const dictDetailref = ref()

+ 8 - 1
ui/sp-storlead-center/src/views/system/menu/index.vue

@@ -1,5 +1,6 @@
 <template>
     <div class="p-2" style="width: 100%;overflow-y: scroll">
+        <AppTabs v-model="currentAppId" @change="handleAppChange" />
         <!--        <transition :enter-active-class="proxy?.animate.searchAnimate.enter"-->
         <!--                    :leave-active-class="proxy?.animate.searchAnimate.leave">-->
         <div class="mb-[10px]">
@@ -249,6 +250,13 @@
 import {addMenu, delMenu, getMenu, listMenu, allMenuList, updateMenu, listAllMenu} from '@/api/system/menu';
 import {MenuForm, MenuQuery, MenuVO, MenuFormEntity, MenuVOEntity} from '@/api/system/menu/types';
 import {MenuTypeEnum} from '@/enums/MenuTypeEnum';
+import AppTabs from '@/components/AppTabs/index.vue'
+
+const currentAppId = ref('')
+const handleAppChange = () => {
+    ;(queryParams as any).appId = currentAppId.value
+    getList()
+}
 
 interface MenuOptionsType {
     id?: number;
@@ -448,6 +456,5 @@ const handleDelete = async (row: MenuVO) => {
 }
 
 onMounted(() => {
-    getList();
 });
 </script>

+ 9 - 1
ui/sp-storlead-center/src/views/system/messageTemplate/index.vue

@@ -1,6 +1,7 @@
 <template>
 	<el-card shadow="never" class="list-card">
 		<template #header>
+			<AppTabs v-model="currentAppId" @change="handleAppChange" />
 			<div class="search">
 				<el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="90px">
 					<el-form-item label="输入搜索:" prop="blurry">
@@ -17,7 +18,7 @@
 			</div>
 		</template>
 
-		<Table ref="messageTemplateTable" :tableParams="tableParams" :btnRole="[]" :right-btn="[]">
+		<Table v-if="currentAppId" ref="messageTemplateTable" :tableParams="tableParams" :btnRole="[]" :right-btn="[]">
 		</Table>
 	</el-card>
 
@@ -32,6 +33,13 @@ import Table from '@/components/Table/index.vue'
 import { tableTypes } from '@/components/Table/types'
 import { useDictCache } from '@/hooks/web/useDict'
 import MessageDetail from './detail.vue'
+import AppTabs from '@/components/AppTabs/index.vue'
+
+const currentAppId = ref('')
+const handleAppChange = () => {
+	;(tableParams.queryParams as any).appId = currentAppId.value
+	messageTemplateTable.value?.getData()
+}
 
 const { queryDictDetailByCodes } = useDictCache(['query_work_data_group'])
 queryDictDetailByCodes()

+ 6 - 0
ui/sp-storlead-center/src/views/system/post/index.vue

@@ -1,5 +1,6 @@
 <template>
   <div class="p-2">
+    <AppTabs v-model="currentAppId" @change="handleAppChange" />
 <!--    <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">-->
 <!--      <div class="mb-[10px]" v-show="showSearch">-->
 <!--        <el-card shadow="hover">-->
@@ -107,6 +108,11 @@
 </template>
 
 <script setup name="Post" lang="ts">
+import AppTabs from '@/components/AppTabs/index.vue'
+
+const currentAppId = ref('')
+const handleAppChange = () => {}
+
 // import { listPost, addPost, delPost, getPost, updatePost } from "@/api/system/post";
 // import { PostForm, PostQuery, PostVO } from "@/api/system/post/types";
 //

+ 10 - 1
ui/sp-storlead-center/src/views/system/role/index.vue

@@ -1,6 +1,7 @@
 <template>
     <el-card shadow="never" class="list-card">
         <template #header>
+            <AppTabs v-model="currentAppId" @change="handleAppChange" />
             <div class="search" v-show="showSearch">
                 <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
                     <el-form-item prop="name">
@@ -21,7 +22,7 @@
             </div>
         </template>
 
-        <Table ref="roleTable"
+        <Table v-if="currentAppId" ref="roleTable"
                :tableParams="tableParams"
                :btnRole="leftBtn"
                @handleAdd="handleAdd"
@@ -151,6 +152,14 @@ import {Check, Close} from '@element-plus/icons-vue'
 import {MenuFormEntity, MenuQuery, MenuTreeOption, RoleMenuTree, DeptTreeOption} from '@/api/system/menu/types';
 import {DeptQuery} from "@/api/system/dept/types";
 import MobileAuth from './MobileAuth.vue'
+import AppTabs from '@/components/AppTabs/index.vue'
+
+const currentAppId = ref('')
+const handleAppChange = () => {
+    ;(tableParams.queryParams as any).appId = currentAppId.value
+    roleTable.value?.getData()
+}
+
 const roleList = ref<RoleVO[]>([]);
 const buttonLoading = ref(false);
 const buttonDataLoading = ref(false);

+ 11 - 1
ui/sp-storlead-center/src/views/system/ruleConfig/index.vue

@@ -1,5 +1,8 @@
 <template>
     <el-card shadow="never" class="list-card">
+        <template #header>
+            <AppTabs v-model="currentAppId" @change="handleAppChange" />
+        </template>
         <!-- <template #header>
             <div class="search" v-show="showSearch">
                 <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
@@ -14,7 +17,7 @@
             </div>
         </template> -->
 
-        <Table ref="ruleConfigTable"
+        <Table v-if="currentAppId" ref="ruleConfigTable"
                :tableParams="tableParams"
                :rightBtn="[]"
                @handleEdit="handleUpdate"
@@ -262,6 +265,13 @@ import auth from '@/plugins/auth'
 import Table from '@/components/Table/index.vue'
 import { tableTypes } from '@/components/Table/types'
 import { useDictCache } from '@/hooks/web/useDict'
+import AppTabs from '@/components/AppTabs/index.vue'
+
+const currentAppId = ref('')
+const handleAppChange = () => {
+    ;(tableParams.queryParams as any).appId = currentAppId.value
+    ruleConfigTable.value?.getData()
+}
 
 const { queryDictDetailByCodes } = useDictCache(['customer_type'])
 queryDictDetailByCodes()

+ 9 - 1
ui/sp-storlead-center/src/views/system/task/index.vue

@@ -2,6 +2,7 @@
     <el-card shadow="never" class="list-card">
 
         <template #header>
+            <AppTabs v-model="currentAppId" @change="handleAppChange" />
 
             <div class="search" v-show="showSearch">
                 <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
@@ -19,7 +20,7 @@
             </div>
         </template>
 
-        <Table ref="taskTableRef" :tableParams="tableParams" :btnRole="leftBtn" @handleAdd="handleAddTask"
+        <Table v-if="currentAppId" ref="taskTableRef" :tableParams="tableParams" :btnRole="leftBtn" @handleAdd="handleAddTask"
             @handleEdit="handleUpdate" @selectionChange="handleSelectionChange">
 
 
@@ -61,6 +62,13 @@ import { addTask, editTask, deleteTask, pauseTask, resumeTask, triggerTask, task
 import { getToday, getYesterday, getCurrentWeek, getMonthLastDay, addDateTime, subDateTime, getDayInfo, getWeekDay, dateFormate } from '@/utils/datetime';
 import { tableTypes } from '@/components/Table/types'
 import { TaskInfo, TaskInfoQuery } from '@/api/system/task/types';
+import AppTabs from '@/components/AppTabs/index.vue'
+
+const currentAppId = ref('')
+const handleAppChange = () => {
+    ;(tableParams.queryParams as any).appId = currentAppId.value
+    taskTableRef.value?.getData()
+}
 
 const querys = reactive({
     showLoading: false,

+ 9 - 1
ui/sp-storlead-center/src/views/system/user/index.vue

@@ -1,6 +1,7 @@
 <template>
     <el-card shadow="never" class="list-card">
         <template #header>
+            <AppTabs v-model="currentAppId" @change="handleAppChange" />
             <div class="search" v-show="showSearch">
                 <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
                     <el-form-item prop="mobile">
@@ -16,7 +17,7 @@
             </div>
         </template>
 
-        <MyTable ref="userTable" :tableParams="tableParams" :btnRole="leftBtn" :rightBtn="[]"
+        <MyTable v-if="currentAppId" ref="userTable" :tableParams="tableParams" :btnRole="leftBtn" :rightBtn="[]"
             @selectionChange="handleSelectionChange">
             <template #left>
                 <el-button v-hasPermi="[`system:user:syncOa`]" :loading="syncOaLoading" @click="syncOa">同步用户</el-button>
@@ -81,6 +82,13 @@ import { resignTransfer, ResignTransferTypes } from '@/api/customer';
 
 import auth from '@/plugins/auth'
 import {completelyDelEmails} from "@/api/emails";
+import AppTabs from '@/components/AppTabs/index.vue'
+
+const currentAppId = ref('')
+const handleAppChange = () => {
+    ;(tableParams.queryParams as any).appId = currentAppId.value
+    userTable.value?.getData()
+}
 
 const {proxy} = getCurrentInstance() as ComponentInternalInstance;
 

+ 2 - 2
ui/sp-user-center/src/api/public.ts

@@ -166,7 +166,7 @@ export const listExport = (query: any) => {
  */
 export const listMessage = (data: any) => {
     return request({
-        url: '/sys/inside/message/pageList',
+        url: '/sys/message/pageList',
         method: 'post',
         data
     });
@@ -179,7 +179,7 @@ export const listMessage = (data: any) => {
  */
 export const getMessageType = () => {
     return request({
-        url: '/sys/inside/message/getNoReadCount',
+        url: '/sys/message/getNoReadCount',
         method: 'post',
         data: {}
     });

+ 1 - 1
ui/sp-user-center/src/utils/request.ts

@@ -248,7 +248,7 @@ service.interceptors.response.use(
     } else if (message.includes('Request failed with status code')) {
       message = '系统接口' + message.substr(message.length - 3) + '异常';
     }
-    let msgUrls  = ['/sys/inside/message/getNoReadCount', '/mail/get_new_mail', '/mail/receive_mail']
+    let msgUrls  = ['/sys/message/getNoReadCount', '/mail/get_new_mail', '/mail/receive_mail']
     if(msgUrls.includes(error?.config?.url)) {
       return false
     }else {