소스 검색

合并香港代码

吴sir 3 달 전
부모
커밋
7206762fd9
7개의 변경된 파일29개의 추가작업 그리고 483개의 파일을 삭제
  1. 0 18
      package-lock.json
  2. 8 0
      src/App.vue
  3. 0 4
      src/assets/css/theme.less
  4. 0 297
      src/components/Layout/components/layout/menu.vue
  5. 19 42
      src/utils/axios.js
  6. 0 120
      src/views/login/index.vue
  7. 2 2
      vite.config.js

+ 0 - 18
package-lock.json

@@ -1433,8 +1433,6 @@
         "node": ">=0.8"
       }
     },
-<<<<<<< HEAD
-=======
     "node_modules/cross-env": {
       "version": "7.0.3",
       "resolved": "https://registry.npmmirror.com/cross-env/-/cross-env-7.0.3.tgz",
@@ -1467,7 +1465,6 @@
         "node": ">= 8"
       }
     },
->>>>>>> main
     "node_modules/crypto-js": {
       "version": "4.2.0",
       "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz",
@@ -2939,15 +2936,12 @@
       "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
       "dev": true
     },
-<<<<<<< HEAD
-=======
     "node_modules/isexe": {
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
       "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
       "dev": true
     },
->>>>>>> main
     "node_modules/isobject": {
       "version": "2.1.0",
       "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz",
@@ -3215,7 +3209,6 @@
         "node": ">=0.10.0"
       }
     },
-<<<<<<< HEAD
     "node_modules/moment": {
       "version": "2.30.1",
       "resolved": "https://registry.npmmirror.com/moment/-/moment-2.30.1.tgz",
@@ -3235,8 +3228,6 @@
         "node": "*"
       }
     },
-=======
->>>>>>> main
     "node_modules/monaco-editor": {
       "version": "0.52.0",
       "resolved": "https://registry.npmmirror.com/monaco-editor/-/monaco-editor-0.52.0.tgz",
@@ -3534,8 +3525,6 @@
         "node": ">=0.10.0"
       }
     },
-<<<<<<< HEAD
-=======
     "node_modules/path-key": {
       "version": "3.1.1",
       "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
@@ -3545,7 +3534,6 @@
         "node": ">=8"
       }
     },
->>>>>>> main
     "node_modules/pathe": {
       "version": "0.2.0",
       "resolved": "https://registry.npmmirror.com/pathe/-/pathe-0.2.0.tgz",
@@ -4112,8 +4100,6 @@
         "node": ">=0.10.0"
       }
     },
-<<<<<<< HEAD
-=======
     "node_modules/shebang-command": {
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -4135,7 +4121,6 @@
         "node": ">=8"
       }
     },
->>>>>>> main
     "node_modules/side-channel": {
       "version": "1.0.6",
       "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.6.tgz",
@@ -5191,8 +5176,6 @@
         "vue": "^3.2.0"
       }
     },
-<<<<<<< HEAD
-=======
     "node_modules/which": {
       "version": "2.0.2",
       "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
@@ -5208,7 +5191,6 @@
         "node": ">= 8"
       }
     },
->>>>>>> main
     "node_modules/which-boxed-primitive": {
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",

+ 8 - 0
src/App.vue

@@ -42,6 +42,14 @@ async function getIpClient() {
 
 
 onMounted(async () => {
+  let favicon = document.querySelector('link[rel="icon"]')
+  if(EnvTypeNum===0){
+    window.document.title = 'Easy life'
+    favicon.href = '/src/assets/images/logo.png'
+  }else{
+    window.document.title = 'FlexiStream'
+     favicon.href = '/src/assets/images/logo.jpg'
+  }
   const getLoadingNode = document.getElementById('Loading')
   const { body } = document
   if (getLoadingNode) {

+ 0 - 4
src/assets/css/theme.less

@@ -24,7 +24,3 @@
 @text_color_3: var(--color-text-3); // 次要信息
 @text_color_4: var(--color-text-4); // 置灰信息
 
-<<<<<<< HEAD
-=======
-
->>>>>>> main

+ 0 - 297
src/components/Layout/components/layout/menu.vue

@@ -1,300 +1,4 @@
 <template>
-<<<<<<< HEAD
-  <a-layout style="min-height: 100vh">
-    <a-layout-sider theme="dark" :width="160" :collapsed-width="50" collapsible :trigger="null"
-      @collapse="evMenuSecondLongShow" v-model:collapsed="menuSecondLongShow">
-      <div class="logo-layout">
-        <div class="logo">
-          <img src="@/assets/images/logo.png" style="height: 26px; width: 26px;" />
-          <h3 v-if="!menuSecondLongShow" style="margin-left: 10px;"> Easy life</h3>
-        </div>
-      </div>
-
-      <a-menu v-model:selectedKeys="menuTabSate" theme="dark" mode="inline" @mouseleave="evMouseleaveMenu">
-        <a-menu-item v-for="routeItem in routesData" :key="routeItem.name"
-          @mouseenter="evMenuGetFn(routeItem, 'mouseenter')" @click="changeRoutesItems(routeItem)">
-          <template #icon>
-            <svg-icon :icon="routeItem.meta.icon"></svg-icon>
-          </template>
-          <span>{{ routeItem.meta.title }}</span>
-        </a-menu-item>
-      </a-menu>
-    </a-layout-sider>
-
-    <a-layout>
-      <a-layout-header class="layout-header">
-        <LayoutHeader />
-      </a-layout-header>
-      <a-layout>
-        <a-layout-sider id="layout-sider" :collapsed="false" :width="menuSecondData &&
-          menuSecondData.children &&
-          menuSecondData.children.length > 0
-          ? 160
-          : 0
-          " @mouseleave="evMouseLeavesSubMenu">
-          <a-menu :selectedKeys="routeItemSelectedKeys" id="layout-sider" theme="light" mode="vertical"
-            :collapsed="false" :auto-open="true">
-            <template v-for="routeItem in menuSecondData?.children || []">
-              <a-menu-item v-if="!routeItem.children || routeItem.children.length === 0"
-                :key="routeItem.name?.toString()" @click="evGoPage(routeItem)">
-                <span class="menu-level-font">{{ routeItem.meta.title }}</span>
-              </a-menu-item>
-
-              <template v-else-if="routeItem.children && routeItem.children.length > 0">
-                <sub-menu :key="routeItem.name" :menu-info="routeItem" @go="evGoPage" />
-              </template>
-            </template>
-          </a-menu>
-        </a-layout-sider>
-
-        <main class="layout-content-main">
-          <router-view v-slot="{ Component }" class="layout-content-router">
-            <component :is="Component" key="Layout" />
-          </router-view>
-        </main>
-      </a-layout>
-    </a-layout>
-  </a-layout>
-</template>
-<script setup>
-import { ref, computed, h, reactive, onMounted, watch, nextTick } from "vue";
-import { useRoute, useRouter } from "vue-router";
-import { useSystemStore } from "@/store/modules/systemStore";
-import LayoutHeader from "@/components/Layout/components/layoutHeader/index.vue";
-import subMenu from "@/components/Layout/components/subMenu/index.vue";
-import { RouterTagData } from '@/store/modules/routerTag.js'
-
-// 标签页仓库
-const settingStore = RouterTagData()
-
-const systemStore = useSystemStore();
-
-const route = useRoute();
-const router = useRouter();
-
-const menuSecondLongShow = ref(systemStore.menuSecondLongShow);
-// 主菜单
-const routesData = router.options.routes[0]?.children || [];
-
-const menuTabSate = ref([systemStore.getMenuTabSate || routesData[0].name]);
-//子菜单
-const menuSecondData = ref(systemStore.getRouteItem);
-// 选中的状态路由列表
-const menuSecondSelectedStatusData = ref(systemStore.getRouteItem);
-const routeItemSelectedKeys = ref();
-
-const evMenuSecondLongShow = () => {
-  systemStore.setStateValue({
-    key: "menuSecondLongShow",
-    value: menuSecondLongShow.value ? 1 : 0,
-    localStorage: true,
-  });
-};
-const evMouseleaveMenu = (e) => {
-  if (
-    e.relatedTarget?.offsetParent?.id &&
-    e.relatedTarget?.offsetParent?.id == "layout-sider"
-  )
-    return;
-  menuSecondData.value = menuSecondSelectedStatusData.value;
-};
-// 子菜单
-const evMouseLeavesSubMenu = () => {
-  menuSecondData.value = menuSecondSelectedStatusData.value;
-};
-// 鼠标滑动上去更新菜单栏 目前先屏蔽
-const evMenuGetFn = (routeItem, type) => {
-  if (menuSecondLongShow.value) {
-    menuSecondData.value = routeItem;
-  }
-};
-
-// 查找最下级
-const findPath = (data) => {
-  if (data.children && data.children.length > 0) {
-    return findPath(data.children[0]);
-  } else {
-    return data;
-  }
-};
-
-// 主路由 状态
-const changeRoutesItems = (e) => {
-  const item = findPath(e);
-  evGoPage(item);
-};
-
-// 跳转路由
-const evGoPage = async (routeItem) => {
-  // settingStore.tagsPushData(routeItem);
-  await router.push({
-    name: routeItem.name,
-  });
-  menuTabSate.value = [route.matched[1].name];
-  systemStore.setStateValue({
-    key: "menuTabSate",
-    value: menuTabSate.value[0] || "",
-    localStorage: true,
-  });
-
-  menuSecondSelectedStatusData.value = routesData.find(
-    (item) => item.name == menuTabSate.value
-  );
-  menuSecondData.value = menuSecondSelectedStatusData.value;
-  systemStore.setStateValue({
-    key: "routeItem",
-    value: JSON.stringify(menuSecondData.value),
-    localStorage: true,
-  });
-};
-
-watch(
-  route,
-  (val) => {
-    if (val.name) {
-      routeItemSelectedKeys.value = [val.name];
-    }
-  },
-  { immediate: true }
-);
-</script>
-<style scoped lang="less">
-.layout-header {
-  height: 48px;
-  background: @bg_color_2;
-  // padding-inline: 10px;
-  box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
-  z-index: 9;
-}
-
-.ant-layout-content {
-  height: auto;
-  min-height: auto;
-  overflow-y: auto;
-  padding: 0 20px;
-}
-
-.layout-content-main {
-  flex: 1;
-  padding: 0 1.2rem 1.6rem 1.2rem;
-  margin: 1.1rem 0 0rem 0;
-  overflow-y: auto;
-  overflow: overlay;
-  height: 95%;
-  display: flex;
-  flex-wrap: wrap;
-}
-
-.logo-layout {
-  height: 64px;
-  color: #fff;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-
-  .logo {
-    width: 100%;
-    height: 32px;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-
-    h3 {
-      white-space: nowrap;
-    }
-  }
-}
-
-.arco-layout {
-  color: @text_color_1;
-  background: @layout-split-color !important;
-  overflow: hidden;
-}
-
-:deep(.arco-menu-light) {
-  background-color: @bg_color_3;
-
-  .arco-menu-item {
-    background-color: @bg_color_3;
-  }
-}
-
-:deep(.arco-layout-sider-light) {
-  background-color: @bg_color_3;
-}
-
-:deep(.arco-menu-inline-header) {
-  font-weight: 600;
-  color: @text_color_1;
-  background-color: @bg_color_3;
-}
-
-:deep(.layout-content-router) {
-  padding: 0 1rem 1rem 1rem;
-  background-color: @bg_color_4;
-  box-sizing: border-box;
-  width: 100%;
-}
-
-:deep(.arco-menu-inline-content) {
-  .arco-menu-selected {
-    color: @text_color_1;
-    background-color: @black_3;
-
-    &:after {
-      content: none;
-    }
-  }
-}
-
-#layout-sider {
-  :deep(.arco-menu-selected) {
-    color: @text_color_1 !important;
-    font-weight: bold;
-    background-color: @black_3;
-
-    .arco-icon {
-      color: @text_color_1 !important;
-    }
-
-    &:hover {
-      background-color: rgba(235, 19, 19, 0.1) !important;
-    }
-  }
-
-  :deep(.arco-menu-inline) {
-    .arco-menu-inline-header {
-      background-color: @bg_color_3;
-      padding-left: 20px;
-      left: 5px;
-
-      svg {
-        color: @text_color_1 !important;
-        font-size: 14px;
-      }
-
-      .arco-menu-icon-suffix {
-        color: @text_color_1 !important;
-        left: 0px !important;
-        right: auto;
-      }
-
-      &:hover {
-        background-color: rgba(255, 255, 255, 0) !important;
-      }
-    }
-
-    .arco-menu-item {
-      padding: 0 5px;
-    }
-  }
-
-  :deep(.arco-menu-item) {
-    padding-left: 24px;
-  }
-}
-</style>
-=======
   <HongKong v-if="EnvTypeNum==1"/>
   <Thailand v-if="EnvTypeNum==0"/>
 </template>
@@ -303,4 +7,3 @@ import { EnvTypeNum } from '@/settings/designSetting'
 import HongKong from './components/HongKong.vue'
 import Thailand from './components/Thailand.vue'
 </script>
->>>>>>> main

+ 19 - 42
src/utils/axios.js

@@ -2,19 +2,11 @@ import axios from "axios";
 import Router from "@/router";
 import { Message, Notification } from "@arco-design/web-vue";
 import { useSystemStore } from "@/store/modules/systemStore";
-<<<<<<< HEAD
 import moment from 'moment-timezone';
 import { fn_logout } from "@/utils";
 
 const axiosInstance = axios.create({
   // baseURL: `${import.meta.env.PROD? import.meta.env.VITE_PRO_PATH : ''}/api`,
-=======
-
-import { fn_logout } from "@/utils";
-
-const axiosInstance = axios.create({
-  // baseURL: `${import.meta.env.PROD ? import.meta.env.VITE_PRO_PATH : ''}/api`,
->>>>>>> main
   baseURL: import.meta.env.BASE_URL + "api",
   timeout: 300000,
 });
@@ -26,11 +18,7 @@ const requestState = {
   beOverdue: [886],
   // 没有访问权限
   NotAccessRight: [500],
-<<<<<<< HEAD
   // 异常 code
-=======
-  // 异常code
->>>>>>> main
   exception: [400],
 };
 
@@ -61,22 +49,31 @@ axiosInstance.interceptors.response.use(
   (res) => {
     const systemStore = useSystemStore();
     systemStore.localLoading();
-<<<<<<< HEAD
     const { code, data, message: msg } = res.data;
     // 成功
     if (code === 200) {
       const dataList = {
         code: code,
         message: res.data.msg,
-        data: data && data.records ?  {records:data.records.map(item => ({ ...item, createdAt: timeLoadTemeYear(item.createdAt || false), updatedAt: timeLoadTemeYear(item.updatedAt || false) }))} : data.map(item => ({ ...item, createdAt: timeLoadTemeYear(item.createdAt || false), updatedAt: timeLoadTemeYear(item.updatedAt || false) }))
-      }
+        data: (() => {
+          if (Array.isArray(data)) {
+            return data.map(item => ({ 
+             ...item, 
+              createdAt: timeLoadTemeYear(item.createdAt || false), 
+              updatedAt: timeLoadTemeYear(item.updatedAt || false) 
+            }));
+          } else if (data) {
+            return { 
+             ...data, 
+              createdAt: timeLoadTemeYear(data.createdAt || false), 
+              updatedAt: timeLoadTemeYear(data.updatedAt || false) 
+            };
+          } else {
+            return null;
+          }
+        })()
+      };
       return Promise.resolve(dataList);
-=======
-    const { code, data, message:msg } = res.data;
-    // 成功
-    if (code === 200) {
-      return Promise.resolve(res.data);
->>>>>>> main
     }
 
     // 服务端错误信息
@@ -88,11 +85,7 @@ axiosInstance.interceptors.response.use(
       return Promise.reject(msg);
     }
 
-<<<<<<< HEAD
     // 异常 code
-=======
-    // 异常code
->>>>>>> main
     if (requestState.exception.includes(code)) {
       Notification.warning({
         title: "系统提示",
@@ -100,11 +93,7 @@ axiosInstance.interceptors.response.use(
       });
       return Promise.reject(msg);
     }
-<<<<<<< HEAD
 
-=======
-    
->>>>>>> main
     return Promise.resolve(data);
   },
   (err) => {
@@ -115,20 +104,12 @@ axiosInstance.interceptors.response.use(
       console.log("请求中断");
       return;
     }
-<<<<<<< HEAD
     const msg = err.response.data ? err.response.data.message : "";
-=======
-    const msg = err.response.data ? err.response.data.message : ""
->>>>>>> main
     Notification.warning({
       title: "系统信息",
       content: msg
     });
-<<<<<<< HEAD
     // token 失效
-=======
-    //token失效
->>>>>>> main
     if (requestState.beOverdue.includes(err.status)) {
       fn_logout(Router);
       // 直接终止请求
@@ -138,7 +119,6 @@ axiosInstance.interceptors.response.use(
   }
 );
 
-<<<<<<< HEAD
 
 function timeLoadTemeYear(value) {
   if (!value) return;
@@ -156,7 +136,4 @@ function timeLoadTemeYear(value) {
   }
 }
 
-export default axiosInstance;
-=======
-export default axiosInstance;
->>>>>>> main
+export default axiosInstance;

+ 0 - 120
src/views/login/index.vue

@@ -1,123 +1,4 @@
 <template>
-<<<<<<< HEAD
-  <div class="container">
-    <div class="logo">
-      <!-- <img alt="logo" :src="carouselItem.image" style="height: 50px; border-radius: 50%" /> -->
-      <div class="logo-text">Easy life Platform</div>
-    </div>
-
-
-    <div class="banner">
-      <div  class="carousel-item">
-        <div class="carousel-title">{{ carouselItem.slogan }}</div>
-        <div class="carousel-sub-title">{{ carouselItem.subSlogan }}</div>
-        <img class="carousel-image" :src="carouselItem.image" />
-      </div>
-    </div>
-
-    <div class="content">
-      <div class="content-inner">
-        <LoginForm />
-      </div>
-    </div>
-  </div>
-</template>
-
-
-<script setup>
-import { onMounted } from "vue"
-import LoginForm from './login-form.vue'
-
-import bannerImage from '@/assets/images/login-banner.png'
-const  carouselItem = {
-  slogan: 'Easy life Platform',
-  subSlogan: 'Technology serves life',
-  image: bannerImage,
-}
-</script>
-
-<style scoped lang="less">
-.container {
-  display: flex;
-  height: 100vh;
-  min-width: 1000px;
-  flex-direction: row;
-  .banner {
-    width: 550px;
-    background: linear-gradient(163.85deg, #1d2129 0%, #00308f 100%);
-  }
-
-  .content {
-    position: relative;
-    display: flex;
-    flex: 1;
-    align-items: center;
-    justify-content: center;
-    padding-bottom: 40px;
-    background: @bg_color_2;
-  }
-
-  .footer {
-    position: absolute;
-    right: 0;
-    bottom: 0;
-    width: 100%;
-  }
-}
-.logo {
-  position: fixed;
-  top: 24px;
-  left: 22px;
-  z-index: 1;
-  display: inline-flex;
-  align-items: center;
-
-  &-text {
-    margin-right: 4px;
-    margin-left: 4px;
-    color: @bg_color_6;
-    font-size: 20px;
-  }
-}
-
-.banner {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-.carousel {
-  height: 100%;
-
-  &-item {
-    display: flex;
-    flex-direction: column;
-    align-items: center;
-    justify-content: center;
-    height: 100%;
-  }
-
-  &-title {
-    color: @bg_color_6;
-    font-weight: 500;
-    font-size: 20px;
-    line-height: 28px;
-  }
-
-  &-sub-title {
-    margin-top: 8px;
-    color: @text_color_2;
-    font-size: 14px;
-    line-height: 22px;
-  }
-
-  &-image {
-    width: 320px;
-    margin-top: 30px;
-  }
-}
-</style>
-
-=======
   <LoginHongKeng v-if="EnvTypeNum===1"/>
   <Thailand v-if="EnvTypeNum===0"/>
 </template>
@@ -131,4 +12,3 @@ console.log(EnvTypeNum);
 
 <style scoped lang='less'>
 </style>
->>>>>>> main

+ 2 - 2
vite.config.js

@@ -1,4 +1,4 @@
-import { defineConfig ,loadEnv} from "vite";
+import { defineConfig, loadEnv } from "vite";
 import vue from "@vitejs/plugin-vue";
 import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
 
@@ -33,7 +33,7 @@ export default defineConfig(({ command, mode }) => {
                 less: {
                     charset: false, //  解决中文乱码
                     modifyVars: {
-                        "arcoblue-6": "#0f2d5c",
+                        "arcoblue-6": process.env.VITE_DEV_TYPE == 0 ? "#d1402f" : "#0f2d5c",
                     },
                     javascriptEnabled: true,
                     additionalData: '@import "@/assets/css/theme.less";@import "@/assets/css/global.less";',