ith5 vor 3 Monaten
Ursprung
Commit
16c622c0d3

+ 2 - 1
.env.development

@@ -4,4 +4,5 @@ VITE_APP_ENV = development
 VITE_APP_BASE_URL = http://127.0.0.1:8787
 VITE_APP_WS_URL = ws://127.0.0.1:3131
 VITE_APP_WS_APPKEY = 8c849eaf1e166c0a71d02fcec7c8df78
-VITE_APP_PROXY_PREFIX = /dev
+VITE_APP_PROXY_PREFIX = /dev
+VITE_APP_KAIFA = true

+ 24 - 16
src/layout/components/classic/ma-classic-slider.vue

@@ -1,11 +1,17 @@
 <template>
   <a-layout-sider
     class="layout-classic-sider h-full flex flex-col hidden lg:block"
-    :style="`width: ${appStore.menuCollapse ? '48px' : appStore.menuWidth + 'px'};`"
+    :style="`width: ${
+      appStore.menuCollapse ? '48px' : appStore.menuWidth + 'px'
+    };`"
   >
     <div class="flex justify-center logo">
-      <a-avatar class="mt-1" :size="40"><img :src="`${$url}logo.png`" class="bg-white" /></a-avatar>
-      <span class="ml-2 text-xl mt-2.5" v-if="! appStore.menuCollapse">{{ $title }}</span>
+      <a-avatar class="mt-1" :size="40"
+        ><img :src="`${$url}logo.png`" class="bg-white"
+      /></a-avatar>
+      <span class="ml-2 text-xl mt-2.5" v-if="!appStore.menuCollapse">{{
+        $title
+      }}</span>
     </div>
     <ma-menu
       ref="MaMenuRef"
@@ -16,22 +22,24 @@
 </template>
 
 <script setup>
-  import { ref, onMounted } from 'vue'
-  import { useAppStore, useUserStore } from '@/store'
-  import MaMenu from '../ma-menu.vue'
+import { ref, onMounted } from "vue";
+import { useAppStore, useUserStore } from "@/store";
+import MaMenu from "../ma-menu.vue";
 
+const MaMenuRef = ref(null);
+const userStore = useUserStore();
+const appStore = useAppStore();
 
-  const MaMenuRef = ref(null)
-  const userStore = useUserStore()
-  const appStore = useAppStore()
-
-  onMounted(() => {
-    setTimeout(_ => {
-      MaMenuRef.value.menus = userStore.routers
-    }, 50)
-  })
+onMounted(() => {
+  setTimeout((_) => {
+    MaMenuRef.value.menus = userStore.routers;
+  }, 50);
+});
 </script>
 
 <style>
-.logo { height: 51px; border-bottom: 1px solid var(--color-border-1); }
+.logo {
+  height: 51px;
+  border-bottom: 1px solid var(--color-border-1);
+}
 </style>

+ 70 - 52
src/layout/components/components/children-banner.vue

@@ -1,16 +1,27 @@
 <template>
-    <a-layout-content class="sys-menus">
-      <a-menu ref="MaMenuRef" mode="horizontal" class="layout-banner-menu hidden lg:flex" :popup-max-height="360"
-        :selected-keys="actives">
-        <template v-for="menu in modelValue" :key="menu.id">
-          <template v-if="!menu.meta.hidden">
-          <template v-if="! menu.children || menu.children.length === 0">
+  <a-layout-content class="sys-menus">
+    <a-menu
+      ref="MaMenuRef"
+      mode="horizontal"
+      class="layout-banner-menu hidden lg:flex"
+      :popup-max-height="360"
+      :selected-keys="actives"
+    >
+      <template v-for="menu in modelValue" :key="menu.id">
+        <template v-if="!menu.meta.hidden">
+          <template v-if="!menu.children || menu.children.length === 0">
             <!-- 没有子菜单的进入 -->
             <a-menu-item :key="menu.name" @click="routerPush(menu)">
               <template #icon v-if="menu.meta.icon">
-                  <sa-icon :icon="menu.meta.icon" :size="18" />
+                <sa-icon :icon="menu.meta.icon" :size="18" />
               </template>
-              {{ appStore.i18n ? ( $t(`menus.${menu.name}`).indexOf('.') > 0 ? menu.meta.title : $t(`menus.${menu.name}`) ) : menu.meta.title }}
+              {{
+                appStore.i18n
+                  ? $t(`menus.${menu.name}`).indexOf(".") > 0
+                    ? menu.meta.title
+                    : $t(`menus.${menu.name}`)
+                  : menu.meta.title
+              }}
             </a-menu-item>
           </template>
           <!-- 有子菜单的进入 -->
@@ -18,47 +29,54 @@
             <SubMenu :menu-info="menu" />
           </template>
         </template>
-        </template>
-      </a-menu>
-    </a-layout-content>
-  </template>
-  <script setup>
-    import { ref, watch, onMounted } from 'vue'
-    import { useTagStore, useAppStore } from '@/store'
-    import { useRouter, useRoute } from 'vue-router'
-    import SubMenu from './sub-menu.vue'
-    defineProps({ modelValue: Array })
-    const router = useRouter()
-    const emits = defineEmits(['go'])
-    const appStore = useAppStore()
-    const tagStore = useTagStore()
-    const route = useRoute()
-    const actives = ref([])
-    onMounted(() => {
-      actives.value = [route.name]
-    })
-  
-    watch(() => route, v => {
-      actives.value = [v.name]
-    }, { deep: true })
-    const routerPush = (menu) => {
-      if (menu.meta && menu.meta.type === 'L') {
-        window.open(menu.path)
-      } else {
-        router.push(menu.path)
-        tagStore.addTag({ name: menu.name, title: menu.meta.title, path: menu.path })
-      }
-    }
-  
-  </script>
-  
-  <style>
-    .sys-menus .icon {
-      width: 1em;
-      height: 1em;
-    }
-  
-    .arco-menu-selected .icon {
-      fill: rgb(var(--primary-6));
-    }
-  </style>
+      </template>
+    </a-menu>
+  </a-layout-content>
+</template>
+<script setup>
+import { ref, watch, onMounted } from "vue";
+import { useTagStore, useAppStore } from "@/store";
+import { useRouter, useRoute } from "vue-router";
+import SubMenu from "./sub-menu.vue";
+defineProps({ modelValue: Array });
+const router = useRouter();
+const emits = defineEmits(["go"]);
+const appStore = useAppStore();
+const tagStore = useTagStore();
+const route = useRoute();
+const actives = ref([]);
+onMounted(() => {
+  actives.value = [route.name];
+});
+
+watch(
+  () => route,
+  (v) => {
+    actives.value = [v.name];
+  },
+  { deep: true }
+);
+const routerPush = (menu) => {
+  if (menu.meta && menu.meta.type === "L") {
+    window.open(menu.path);
+  } else {
+    router.push(menu.path);
+    tagStore.addTag({
+      name: menu.name,
+      title: menu.meta.title,
+      path: menu.path,
+    });
+  }
+};
+</script>
+
+<style>
+.sys-menus .icon {
+  width: 1em;
+  height: 1em;
+}
+
+.arco-menu-selected .icon {
+  fill: rgb(var(--primary-6));
+}
+</style>

+ 41 - 21
src/layout/components/components/children-menu.vue

@@ -1,24 +1,39 @@
-
 <template>
   <a-layout-content class="sys-menus">
     <template v-for="menu in modelValue" :key="menu.id">
       <template v-if="!menu.meta.hidden">
         <a-menu-item
-          v-if="! menu.children || menu.children.length === 0"
+          v-if="!menu.children || menu.children.length === 0"
           :key="menu.name"
           @click="routerPush(menu)"
         >
           <template #icon v-if="menu.meta.icon">
             <sa-icon :icon="menu.meta.icon" :size="18" />
           </template>
-          {{ appStore.i18n ? ( $t(`menus.${menu.name}`).indexOf('.') > 0 ? menu.meta.title : $t(`menus.${menu.name}`) ) : menu.meta.title }}
+          {{
+            appStore.i18n
+              ? $t(`menus.${menu.name}`).indexOf(".") > 0
+                ? menu.meta.title
+                : $t(`menus.${menu.name}`)
+              : menu.meta.title
+          }}
         </a-menu-item>
-        <a-sub-menu v-else :key="menu.name">
+        <a-sub-menu
+          v-else
+          :key="menu.name"
+          v-if="menu.meta.title !== '系统工具' || $kaifa == 'true'"
+        >
           <template #icon v-if="menu.meta.icon">
             <sa-icon :icon="menu.meta.icon" :size="18" />
           </template>
           <template #title @click="routerPush(menu.path)">
-            {{ appStore.i18n ? ( $t(`menus.${menu.name}`).indexOf('.') > 0 ? menu.meta.title : $t(`menus.${menu.name}`) ) : menu.meta.title }}
+            {{
+              appStore.i18n
+                ? $t(`menus.${menu.name}`).indexOf(".") > 0
+                  ? menu.meta.title
+                  : $t(`menus.${menu.name}`)
+                : menu.meta.title
+            }}
           </template>
           <template v-if="menu.children">
             <children-menu v-model="menu.children" />
@@ -29,31 +44,36 @@
   </a-layout-content>
 </template>
 <script setup>
-  import { useTagStore, useAppStore } from '@/store'
-  import { useRouter } from 'vue-router'
+import { useTagStore, useAppStore } from "@/store";
+import { useRouter } from "vue-router";
 
-  defineProps({ modelValue: Array })
+defineProps({ modelValue: Array });
 
-  const router = useRouter()
-  const emits  = defineEmits(['go'])
-  const appStore = useAppStore()
-  const tagStore = useTagStore()
+const router = useRouter();
+const emits = defineEmits(["go"]);
+const appStore = useAppStore();
+const tagStore = useTagStore();
 
-  const routerPush = (menu) => {
-    if (menu.meta && menu.meta.type === 'L') {
-      window.open(menu.path)
-    } else {
-      router.push(menu.path)
-      tagStore.addTag({ name: menu.name, title: menu.meta.title, path: menu.path })
-    }
+const routerPush = (menu) => {
+  if (menu.meta && menu.meta.type === "L") {
+    window.open(menu.path);
+  } else {
+    router.push(menu.path);
+    tagStore.addTag({
+      name: menu.name,
+      title: menu.meta.title,
+      path: menu.path,
+    });
   }
+};
 </script>
 
 <style>
 .sys-menus .icon {
-  width: 1em; height: 1em; 
+  width: 1em;
+  height: 1em;
 }
 .arco-menu-selected .icon {
   fill: rgb(var(--primary-6));
 }
-</style>
+</style>

+ 43 - 23
src/layout/components/components/sub-menu.vue

@@ -1,18 +1,33 @@
 <template>
-  <a-sub-menu :key="menuInfo.name">
+  <a-sub-menu
+    :key="menuInfo.name"
+    v-if="menuInfo.meta.title !== '系统工具' || $kaifa == 'true'"
+  >
     <template #title>
-      {{ appStore.i18n ? ($t(`menus.${menuInfo.name}`).indexOf('.') > 0 ? menuInfo.meta.title : $t(`menus.${menuInfo.name}`)) : menuInfo.meta.title }}
+      {{
+        appStore.i18n
+          ? $t(`menus.${menuInfo.name}`).indexOf(".") > 0
+            ? menuInfo.meta.title
+            : $t(`menus.${menuInfo.name}`)
+          : menuInfo.meta.title
+      }}
     </template>
     <template #icon v-if="menuInfo.meta.icon">
-      <sa-icon :icon="menuInfo.meta.icon" :size="18" />  
+      <sa-icon :icon="menuInfo.meta.icon" :size="18" />
     </template>
     <template v-for="item in menuInfo.children" :key="item.id">
-      <template v-if="!item.children|| item.children.length === 0">
+      <template v-if="!item.children || item.children.length === 0">
         <a-menu-item :key="item.name" @click="routerPush(item)">
           <template #icon v-if="item.meta.icon">
-            <sa-icon :icon="item.meta.icon" :size="18" />    
+            <sa-icon :icon="item.meta.icon" :size="18" />
           </template>
-          {{ appStore.i18n ? ($t(`menus.${item.name}`).indexOf('.') > 0 ? item.meta.title : $t(`menus.${item.name}`)) : item.meta.title }}
+          {{
+            appStore.i18n
+              ? $t(`menus.${item.name}`).indexOf(".") > 0
+                ? item.meta.title
+                : $t(`menus.${item.name}`)
+              : item.meta.title
+          }}
         </a-menu-item>
       </template>
       <template v-else>
@@ -23,27 +38,32 @@
 </template>
 
 <script setup name="SubMenu">
-  import { useRouter, useRoute } from 'vue-router'
-  import { useTagStore, useAppStore } from '@/store'
-  defineProps({ menuInfo: Object })
-  const emits = defineEmits(['go'])
-  const router = useRouter()
-  const tagStore = useTagStore()
-  const appStore = useAppStore()
-  const routerPush = (menu) => {
-    if (menu.meta && menu.meta.type === 'L') {
-      window.open(menu.path)
-    } else {
-      router.push(menu.path)
-      tagStore.addTag({ name: menu.name, title: menu.meta.title, path: menu.path })
-    }
+import { useRouter, useRoute } from "vue-router";
+import { useTagStore, useAppStore } from "@/store";
+defineProps({ menuInfo: Object });
+const emits = defineEmits(["go"]);
+const router = useRouter();
+const tagStore = useTagStore();
+const appStore = useAppStore();
+const routerPush = (menu) => {
+  if (menu.meta && menu.meta.type === "L") {
+    window.open(menu.path);
+  } else {
+    router.push(menu.path);
+    tagStore.addTag({
+      name: menu.name,
+      title: menu.meta.title,
+      path: menu.path,
+    });
   }
+};
 </script>
 <style scoped>
 .arco-trigger-menu-icon .icon {
-width: 1em; height: 1em; 
+  width: 1em;
+  height: 1em;
 }
 [mine-skin="mine"] .arco-menu-selected .icon {
-fill: rgb(var(--primary-6));
+  fill: rgb(var(--primary-6));
 }
-</style>
+</style>

+ 1 - 0
src/main.js

@@ -39,5 +39,6 @@ app.config.globalProperties.$tool = tool;
 app.config.globalProperties.$common = common;
 app.config.globalProperties.$title = import.meta.env.VITE_APP_TITLE;
 app.config.globalProperties.$url = import.meta.env.VITE_APP_BASE;
+app.config.globalProperties.$kaifa = import.meta.env.VITE_APP_KAIFA;
 
 app.mount("#app");