From 41d7be9f68c423012e2688fd45301300e9bb3dab Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期二, 11 三月 2025 11:27:18 +0800
Subject: [PATCH] Merge branch 'master' of http://47.115.28.255:8110/r/TigerClouds-Tech/BS/TigerAdmin_2024

---
 src/layouts/default/header/index.vue |   78 ++++++++++++++++++++++++++++++++++-----
 1 files changed, 68 insertions(+), 10 deletions(-)

diff --git a/src/layouts/default/header/index.vue b/src/layouts/default/header/index.vue
index 9885ee6..532f425 100644
--- a/src/layouts/default/header/index.vue
+++ b/src/layouts/default/header/index.vue
@@ -49,6 +49,18 @@
       />
       <div style="width: 120px">
         <ApiSelect
+          v-if="byOrg"
+          :api="getOrgTree"
+          style="width: 100%"
+          :params="{ userId: useUserStore().getUserInfo.userId }"
+          v-model:value="factory"
+          labelField="deptName"
+          valueField="deptCode"
+          placeholder="璇烽�夋嫨宸ュ巶"
+          @change="changeProd"
+        />
+        <ApiSelect
+          v-if="byProd"
           :api="getProdTree"
           style="width: 100%"
           :params="{ userId: useUserStore().getUserInfo.userId }"
@@ -57,7 +69,8 @@
           valueField="deptCode"
           placeholder="璇烽�夋嫨宸ュ巶"
           @change="changeProd"
-      /></div>
+        />
+      </div>
       <UserDropDown :theme="getHeaderTheme" />
 
       <SettingDrawer v-if="getShowSetting" :class="`${prefixCls}-action__item`" />
@@ -66,7 +79,7 @@
 </template>
 <script lang="ts" setup>
   import { Layout } from 'ant-design-vue';
-  import { computed, onMounted, ref, unref } from 'vue';
+  import { computed, nextTick, onMounted, ref, unref, watch } from 'vue';
   import { ApiSelect } from '/@/components/Form/index';
   import { useUserStore } from '/@/store/modules/user';
   import { AppLocalePicker, AppLogo, AppSearch } from '@/components/Application';
@@ -81,12 +94,15 @@
   import { createAsyncComponent } from '@/utils/factory/createAsyncComponent';
   import { propTypes } from '@/utils/propTypes';
   import { ApiTreeSelect } from '@/components/Form';
-  import { getProdTree } from '/@/api/tigerapi/dept';
+  import { getProdTree, getOrgTree } from '/@/api/tigerapi/dept';
 
   import LayoutMenu from '../menu/index.vue';
   import LayoutTrigger from '../trigger/index.vue';
   import { ErrorAction, FullScreen, LayoutBreadcrumb, Notify, UserDropDown } from './components';
   import { SwitchOrgCode } from '/@/api/sys/user';
+  import { getSysParam } from '/@/api/tigerapi/system';
+  import { treeParamsListItem } from '/@/api/tigerapi/model/systemModel';
+  import { isNullOrEmpty } from '/@/utils/is';
 
   const SettingDrawer = createAsyncComponent(() => import('@/layouts/default/setting/index.vue'), {
     loading: true,
@@ -106,7 +122,10 @@
     getIsMixSidebar,
   } = useMenuSetting();
   const { getUseErrorHandle, getShowSettingButton, getSettingButtonPosition } = useRootSetting();
-  const factory = ref(useUserStore().getUserInfo.prodCode);
+  const factory = ref(''); // ref(useUserStore().getUserInfo.prodCode);
+  const byOrg = ref(false);
+  const byProd = ref(false);
+  const params = ref<treeParamsListItem[]>([]);
   const {
     getHeaderTheme,
     getShowFullScreen,
@@ -133,6 +152,25 @@
       },
     ];
   });
+
+  watch(
+    [() => byOrg.value, () => byProd.value],
+    (newVal, oldVal) => {
+      nextTick(() => {
+        if (!isNullOrEmpty(newVal[0])) {
+          if (newVal[0]) {
+            factory.value = useUserStore().getUserInfo.orgCode;
+          }
+        }
+        if (!isNullOrEmpty(newVal[1])) {
+          if (byProd.value) {
+            factory.value = useUserStore().getUserInfo.prodCode;
+          }
+        }
+      });
+    },
+    { deep: true, immediate: true },
+  );
 
   const getShowSetting = computed(() => {
     if (!unref(getShowSettingButton)) {
@@ -162,14 +200,34 @@
     return unref(getSplit) ? MenuModeEnum.HORIZONTAL : null;
   });
 
+  onMounted(async () => {
+    var action = await getSysParam({ group: 'ByAuthActive' });
+    if (action.IsSuccessed) {
+      params.value = action.Data;
+      if (action.Data.filter((x) => x.PARAM_CODE == 'ByOrgActive')[0].PARAM_VALUE == 'Y') {
+        byOrg.value = true;
+      }
+      if (action.Data.filter((x) => x.PARAM_CODE == 'ByProdActive')[0].PARAM_VALUE == 'Y') {
+        byProd.value = true;
+      }
+    }
+  });
+
   function changeProd(e) {
     const userInfo = useUserStore().getToken;
-    const org = useUserStore().getUserInfo.prodCode;
-    // globSetting.useOrg == 'Y'
-    //   ? useUserStore().getUserInfo.orgCode
-    //   : useUserStore().getUserInfo.prodCode;
-    SwitchOrgCode(userInfo, '', e).then(() => {
-      if (org != e) {
+    let code = '';
+    let orgCode = '';
+    let prodCode = '';
+    if (params.value.filter((x) => x.PARAM_CODE == 'ByOrgActive')[0].PARAM_VALUE == 'Y') {
+      code = useUserStore().getUserInfo.orgCode;
+      orgCode = e;
+    }
+    if (params.value.filter((x) => x.PARAM_CODE == 'ByProdActive')[0].PARAM_VALUE == 'Y') {
+      code = useUserStore().getUserInfo.prodCode;
+      prodCode = e;
+    }
+    SwitchOrgCode(userInfo, orgCode, prodCode).then(() => {
+      if (code != e) {
         location.reload();
       }
     });

--
Gitblit v1.9.3