Browse Source

Merge branch 'master' of http://git.mydig.net/Sagoo-Cloud/sagoo-admin-ui

vera_min 2 years ago
parent
commit
6d7ce89e99

+ 4 - 0
package.json

@@ -11,6 +11,10 @@
     "deploy:rm": "ssh iot 'rm -rf /www/wwwroot/zhgy.sagoo.cn-copy/* && rm -rf /www/wwwroot/zhgy.sagoo.cn-pre/*'",
     "deploy:rm": "ssh iot 'rm -rf /www/wwwroot/zhgy.sagoo.cn-copy/* && rm -rf /www/wwwroot/zhgy.sagoo.cn-pre/*'",
     "deploy:scp": "scp -r ./dist/* iot:/www/wwwroot/zhgy.sagoo.cn-pre/ && ssh iot 'cd /www/wwwroot/zhgy.sagoo.cn/ && mv `ls | grep -v plugin` ../zhgy.sagoo.cn-copy && mv ../zhgy.sagoo.cn-pre/* ./'",
     "deploy:scp": "scp -r ./dist/* iot:/www/wwwroot/zhgy.sagoo.cn-pre/ && ssh iot 'cd /www/wwwroot/zhgy.sagoo.cn/ && mv `ls | grep -v plugin` ../zhgy.sagoo.cn-copy && mv ../zhgy.sagoo.cn-pre/* ./'",
     "deploy:auth": "ssh iot 'chown -R www /www/wwwroot/zhgy.sagoo.cn/'",
     "deploy:auth": "ssh iot 'chown -R www /www/wwwroot/zhgy.sagoo.cn/'",
+    "deploy:heating": "npm run build && npm run deploy:heating:rm && npm run deploy:heating:scp && npm run deploy:heating:auth",
+    "deploy:heating:rm": "ssh heating 'rm -rf /www/wwwroot/huanbao.lngxny.com-copy/* && rm -rf /www/wwwroot/huanbao.lngxny.com-pre/*'",
+    "deploy:heating:scp": "scp -r ./dist/* heating:/www/wwwroot/huanbao.lngxny.com-pre/ && ssh heating 'cd /www/wwwroot/huanbao.lngxny.com/ && mv `ls | grep -v plugin` ../huanbao.lngxny.com-copy && mv ../huanbao.lngxny.com-pre/* ./'",
+    "deploy:heating:auth": "ssh heating 'chown -R www /www/wwwroot/huanbao.lngxny.com/'",
     "lint-fix": "eslint --fix --ext .js --ext .jsx --ext .vue src/"
     "lint-fix": "eslint --fix --ext .js --ext .jsx --ext .vue src/"
   },
   },
   "dependencies": {
   "dependencies": {

File diff suppressed because it is too large
+ 0 - 0
public/imgs/notice/dingding.svg


+ 1 - 1
public/imgs/notice/mail.svg

@@ -1 +1 @@
-<svg t="1668813162799" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9813" width="200" height="200"><path d="M512 512m-512 0a512 512 0 1 0 1024 0 512 512 0 1 0-1024 0Z" fill="#B3DFFF" p-id="9814"></path><path d="M460.334545 509.44a75.869091 75.869091 0 0 0 103.563637 0l266.705454-250.181818A46.545455 46.545455 0 0 0 814.545455 256H209.454545a46.545455 46.545455 0 0 0-16.756363 3.258182zM857.134545 739.374545A46.545455 46.545455 0 0 0 861.090909 721.454545V302.545455a46.545455 46.545455 0 0 0-4.654545-20.247273l-235.287273 221.090909z" fill="#439DFF" p-id="9815"></path><path d="M595.781818 527.36l-8.145454 7.68a110.778182 110.778182 0 0 1-151.272728 0l-8.145454-7.68L191.534545 764.043636A46.545455 46.545455 0 0 0 209.454545 768h605.09091a46.545455 46.545455 0 0 0 18.618181-3.956364zM167.563636 282.996364A46.545455 46.545455 0 0 0 162.909091 302.545455v418.90909a46.545455 46.545455 0 0 0 3.956364 18.618182l235.985454-236.683636z" fill="#439DFF" p-id="9816"></path></svg>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200"><defs><style>.cls-1{fill:#b3dfff;}.cls-2{fill:#439dff;}</style></defs><g id="图层_2" data-name="图层 2"><g id="图层_1-2" data-name="图层 1"><path class="cls-1" d="M0,100A100,100,0,1,0,100,0,100,100,0,0,0,0,100Z"/><path class="cls-2" d="M93,99.65a10.23,10.23,0,0,0,14,0l35.94-33.72a6.4,6.4,0,0,0-2.16-.44H59.22a6.49,6.49,0,0,0-2.26.44Zm53.48,31a6.13,6.13,0,0,0,.53-2.42V71.77a6.27,6.27,0,0,0-.62-2.73l-31.72,29.8Z"/><path class="cls-2" d="M111.29,102.07l-1.09,1a15,15,0,0,1-20.4,0l-1.09-1L56.8,134a6.36,6.36,0,0,0,2.42.54h81.56a6.4,6.4,0,0,0,2.51-.54ZM53.57,69.13A6.17,6.17,0,0,0,53,71.77v56.46a6.18,6.18,0,0,0,.53,2.51l31.81-31.9Z"/></g></g></svg>

+ 1 - 1
public/imgs/notice/sms.svg

@@ -1 +1 @@
-<svg t="1668813469164" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="16847" data-spm-anchor-id="a313x.7781069.0.i13" width="200" height="200"><path d="M458.4 509.1c0 21.2 17.2 38.4 38.4 38.4s38.4-17.2 38.4-38.4-17.2-38.4-38.4-38.4-38.4 17.1-38.4 38.4z m0 0M580 509.1c0 21.2 17.2 38.4 38.4 38.4s38.4-17.2 38.4-38.4-17.2-38.4-38.4-38.4-38.4 17.1-38.4 38.4z m0 0" fill="#39B54A" p-id="16848"></path><path d="M336.8 509.1c0 21.2 17.2 38.4 38.4 38.4s38.4-17.2 38.4-38.4-17.2-38.4-38.4-38.4-38.4 17.1-38.4 38.4z m0 0" fill="#39B54A" p-id="16849"></path><path d="M496.8 99.5c-226.2 0-409.6 183.4-409.6 409.6 0 226.2 183.4 409.6 409.6 409.6 226.2 0 409.6-183.4 409.6-409.6 0-226.3-183.4-409.6-409.6-409.6z m204.8 524.8c0 10.2-4 20-11.2 27.2-7.2 7.2-17 11.2-27.2 11.2h-99.3L524 702.6c-7.2 7.2-17 11.3-27.1 11.3-10.2 0-20-4-27.1-11.3l-39.9-39.9h-99.3c-10.2 0-20-4-27.2-11.2-7.2-7.2-11.2-17-11.2-27.2V393.9c0-10.2 4-20 11.2-27.2 7.2-7.2 17-11.2 27.2-11.2h332.8c10.2 0 20 4 27.2 11.2 7.2 7.2 11.2 17 11.2 27.2v230.4z m0 0" fill="#a4faa8" p-id="16850" data-spm-anchor-id="a313x.7781069.0.i6" class=""></path></svg>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200"><defs><style>.cls-1{fill:#a4faa8;}.cls-2{fill:#fff;}.cls-3{fill:#39b54a;}</style></defs><g id="图层_2" data-name="图层 2"><g id="图层_1-2" data-name="图层 1"><circle class="cls-1" cx="100" cy="100" r="100"/><path class="cls-2" d="M140.53,64.83a8,8,0,0,0-5.7-2.34H65.17a8,8,0,0,0-8,8v48.23a8,8,0,0,0,8,8H86l8.36,8.35a7.86,7.86,0,0,0,5.67,2.36,8,8,0,0,0,5.67-2.36L114,126.8h20.79a8,8,0,0,0,8-8h0V70.53A8,8,0,0,0,140.53,64.83Z"/><path class="cls-3" d="M100,101.29a6.44,6.44,0,1,0-6.43-6.43A6.43,6.43,0,0,0,100,101.29Z"/><path class="cls-3" d="M120.36,101.29a6.44,6.44,0,1,0-6.43-6.43A6.44,6.44,0,0,0,120.36,101.29Z"/><path class="cls-3" d="M79.64,101.29a6.44,6.44,0,1,0-6.44-6.43A6.43,6.43,0,0,0,79.64,101.29Z"/></g></g></svg>

+ 1 - 1
public/imgs/notice/voice.svg

@@ -1 +1 @@
-<svg t="1668813631575" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="26553" width="200" height="200"><path d="M512 0c282.7776 0 512 229.2224 512 512S794.7776 1024 512 1024 0 794.7776 0 512 229.2224 0 512 0" fill="#cba8f8" p-id="26554" data-spm-anchor-id="a313x.7781069.0.i16" class=""></path><path d="M729.6 460.8a25.6 25.6 0 0 1 25.6 25.6c0 125.696-95.3472 229.1072-217.6512 241.8688 0.0384 0.448 0.0512 0.896 0.0512 1.3312v64a25.6 25.6 0 1 1-51.2 0v-64l0.0512-1.3312C364.1472 715.52 268.8 612.096 268.8 486.4a25.6 25.6 0 1 1 51.2 0c0 106.0352 85.9648 192 192 192 106.0352 0 192-85.9648 192-192a25.6 25.6 0 0 1 25.6-25.6zM512 243.2c77.76 0 140.8 63.04 140.8 140.8v102.4c0 77.76-63.04 140.8-140.8 140.8s-140.8-63.04-140.8-140.8v-102.4c0-77.76 63.04-140.8 140.8-140.8z" fill="#FFFFFF" p-id="26555"></path></svg>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200"><defs><style>.cls-1{fill:#cba8f8;}.cls-2{fill:#fff;}</style></defs><g id="图层_2" data-name="图层 2"><g id="图层_1-2" data-name="图层 1"><path class="cls-1" d="M100,0A100,100,0,1,1,0,100,100,100,0,0,1,100,0"/><path class="cls-2" d="M133.55,89.14a4,4,0,0,1,3.95,4,37.51,37.51,0,0,1-33.56,37.3,1.34,1.34,0,0,1,0,.2v9.87a3.95,3.95,0,0,1-7.9,0V130.39A37.51,37.51,0,0,1,62.5,93.09a3.95,3.95,0,1,1,7.89,0,29.61,29.61,0,0,0,59.22,0A3.94,3.94,0,0,1,133.55,89.14ZM100,55.59A21.71,21.71,0,0,1,121.71,77.3V93.09a21.71,21.71,0,0,1-43.42,0V77.3A21.71,21.71,0,0,1,100,55.59Z"/></g></g></svg>

File diff suppressed because it is too large
+ 0 - 0
public/imgs/notice/webhook.svg


File diff suppressed because it is too large
+ 0 - 0
public/imgs/notice/wework.svg


+ 98 - 101
src/layout/navBars/breadcrumb/breadcrumb.vue

@@ -1,24 +1,19 @@
 <template>
 <template>
-	<div class="layout-navbars-breadcrumb" :style="{ display: isShowBreadcrumb }">
-		<SvgIcon
-			class="layout-navbars-breadcrumb-icon"
-			:name="getThemeConfig.isCollapse ? 'ele-Expand' : 'ele-Fold'"
-			:size="16"
-			@click="onThemeConfigChange"
-		/>
-		<el-breadcrumb class="layout-navbars-breadcrumb-hide">
-			<transition-group name="breadcrumb" mode="out-in">
-				<el-breadcrumb-item v-for="(v, k) in breadcrumbList" :key="v.meta?.title">
-					<span v-if="k === breadcrumbList.length - 1" class="layout-navbars-breadcrumb-span">
-						<SvgIcon :name="v.meta?.icon" class="layout-navbars-breadcrumb-iconfont" v-if="getThemeConfig.isBreadcrumbIcon" />{{ v.meta?.title.indexOf('.')>0?$t(v.meta?.title):v.meta?.title }}
-					</span>
-					<a v-else @click.prevent="onBreadcrumbClick(v)">
-						<SvgIcon :name="v.meta?.icon" class="layout-navbars-breadcrumb-iconfont" v-if="getThemeConfig.isBreadcrumbIcon" />{{ v.meta?.title.indexOf('.')>0?$t(v.meta?.title):v.meta?.title }}
-					</a>
-				</el-breadcrumb-item>
-			</transition-group>
-		</el-breadcrumb>
-	</div>
+  <div class="layout-navbars-breadcrumb" :style="{ display: isShowBreadcrumb }">
+    <SvgIcon class="layout-navbars-breadcrumb-icon" :name="getThemeConfig.isCollapse ? 'ele-Expand' : 'ele-Fold'" :size="16" @click="onThemeConfigChange" />
+    <el-breadcrumb class="layout-navbars-breadcrumb-hide">
+      <transition-group name="breadcrumb" mode="out-in">
+        <el-breadcrumb-item v-for="(v) in breadcrumbList" :key="v.meta?.title">
+          <span v-if="(v.menuType=== 0)" class="layout-navbars-breadcrumb-span">
+            <SvgIcon :name="v.meta?.icon" class="layout-navbars-breadcrumb-iconfont" v-if="getThemeConfig.isBreadcrumbIcon" />{{ v.meta?.title.indexOf('.')>0?$t(v.meta?.title):v.meta?.title }}
+          </span>
+          <a v-else @click.prevent="onBreadcrumbClick(v)">
+            <SvgIcon :name="v.meta?.icon" class="layout-navbars-breadcrumb-iconfont" v-if="getThemeConfig.isBreadcrumbIcon" />{{ v.meta?.title.indexOf('.')>0?$t(v.meta?.title):v.meta?.title }}
+          </a>
+        </el-breadcrumb-item>
+      </transition-group>
+    </el-breadcrumb>
+  </div>
 </template>
 </template>
 
 
 <script lang="ts">
 <script lang="ts">
@@ -29,90 +24,92 @@ import { Local } from '/@/utils/storage';
 
 
 // 定义接口来定义对象的类型
 // 定义接口来定义对象的类型
 interface BreadcrumbState {
 interface BreadcrumbState {
-	breadcrumbList: Array<any>;
-	routeSplit: Array<string>;
-	routeSplitFirst: string;
-	routeSplitIndex: number;
+  breadcrumbList: Array<any>;
+  routeSplit: Array<string>;
+  routeSplitFirst: string;
+  routeSplitIndex: number;
 }
 }
 
 
 export default defineComponent({
 export default defineComponent({
-	name: 'layoutBreadcrumb',
-	setup() {
-		const store = useStore();
-		const route = useRoute();
-		const router = useRouter();
-		const state = reactive<BreadcrumbState>({
-			breadcrumbList: [],
-			routeSplit: [],
-			routeSplitFirst: '',
-			routeSplitIndex: 1,
-		});
-		// 获取布局配置信息
-		const getThemeConfig = computed(() => {
-			return store.state.themeConfig.themeConfig;
-		});
-		// 动态设置经典、横向布局不显示
-		const isShowBreadcrumb = computed(() => {
-			initRouteSplit(route.path);
-			const { layout, isBreadcrumb } = store.state.themeConfig.themeConfig;
-			if (layout === 'classic' || layout === 'transverse') return 'none';
-			else return isBreadcrumb ? '' : 'none';
-		});
-		// 面包屑点击时
-		const onBreadcrumbClick = (v: any) => {
-			const { redirect, path } = v;
-			if (redirect) router.push(redirect);
-			else router.push(path);
-		};
-		// 展开/收起左侧菜单点击
-		const onThemeConfigChange = () => {
-			store.state.themeConfig.themeConfig.isCollapse = !store.state.themeConfig.themeConfig.isCollapse;
-			setLocalThemeConfig();
-		};
-		// 存储布局配置
-		const setLocalThemeConfig = () => {
-			Local.remove('themeConfig');
-			Local.set('themeConfig', getThemeConfig.value);
-		};
-		// 处理面包屑数据
-		const getBreadcrumbList = (arr: Array<object>) => {
-			arr.map((item: any) => {
-				state.routeSplit.map((v: any, k: number, arrs: any) => {
-					if (state.routeSplitFirst === item.path) {
-						state.routeSplitFirst += `/${arrs[state.routeSplitIndex]}`;
-						state.breadcrumbList.push(item);
-						state.routeSplitIndex++;
-						if (item.children) getBreadcrumbList(item.children);
-					}
-				});
-			});
-		};
-		// 当前路由字符串切割成数组,并删除第一项空内容
-		const initRouteSplit = (path: string) => {
-			if (!store.state.themeConfig.themeConfig.isBreadcrumb) return false;
-			state.breadcrumbList = [store.state.routesList.routesList[0]];
-			state.routeSplit = path.split('/');
-			state.routeSplit.shift();
-			state.routeSplitFirst = `/${state.routeSplit[0]}`;
-			state.routeSplitIndex = 1;
-			getBreadcrumbList(store.state.routesList.routesList);
-		};
-		// 页面加载时
-		onMounted(() => {
-			initRouteSplit(route.path);
-		});
-		// 路由更新时
-		onBeforeRouteUpdate((to) => {
-			initRouteSplit(to.path);
-		});
-		return {
-			onThemeConfigChange,
-			isShowBreadcrumb,
-			getThemeConfig,
-			onBreadcrumbClick,
-			...toRefs(state),
-		};
-	},
+  name: 'layoutBreadcrumb',
+  setup() {
+    const store = useStore();
+    const route = useRoute();
+    const router = useRouter();
+    const state = reactive<BreadcrumbState>({
+      breadcrumbList: [],
+      routeSplit: [],
+      routeSplitFirst: '',
+      routeSplitIndex: 1,
+    });
+    // 获取布局配置信息
+    const getThemeConfig = computed(() => {
+      return store.state.themeConfig.themeConfig;
+    });
+    // 动态设置经典、横向布局不显示
+    const isShowBreadcrumb = computed(() => {
+      initRouteSplit(route.path);
+      const { layout, isBreadcrumb } = store.state.themeConfig.themeConfig;
+      if (layout === 'classic' || layout === 'transverse') return 'none';
+      else return isBreadcrumb ? '' : 'none';
+    });
+    // 面包屑点击时
+    const onBreadcrumbClick = (v: any) => {
+      const { redirect, path } = v;
+      if (redirect) router.push(redirect);
+      else router.push(path);
+    };
+    // 展开/收起左侧菜单点击
+    const onThemeConfigChange = () => {
+      store.state.themeConfig.themeConfig.isCollapse = !store.state.themeConfig.themeConfig.isCollapse;
+      setLocalThemeConfig();
+    };
+    // 存储布局配置
+    const setLocalThemeConfig = () => {
+      Local.remove('themeConfig');
+      Local.set('themeConfig', getThemeConfig.value);
+    };
+    // 处理面包屑数据
+    const getBreadcrumbList = (arr: Array<object>) => {
+      arr.map((item: any) => {
+        state.routeSplit.map((v: any, k: number, arrs: any) => {
+          if (state.routeSplitFirst === item.path) {
+            state.routeSplitFirst += `/${arrs[state.routeSplitIndex]}`;
+            state.breadcrumbList.push(item);
+            state.routeSplitIndex++;
+            if (item.children) getBreadcrumbList(item.children);
+          }
+        });
+      });
+    };
+    // 当前路由字符串切割成数组,并删除第一项空内容
+    const initRouteSplit = (path: string) => {
+      if (!store.state.themeConfig.themeConfig.isBreadcrumb) return false;
+      state.breadcrumbList = [];
+      // state.breadcrumbList = [store.state.routesList.routesList[0]];
+      state.routeSplit = path.split('/');
+      state.routeSplit.shift();
+      state.routeSplitFirst = `/${state.routeSplit[0]}`;
+      state.routeSplitIndex = 1;
+      getBreadcrumbList(store.state.routesList.routesList);
+      // console.log(state.breadcrumbList)
+    };
+    // 页面加载时
+    onMounted(() => {
+      initRouteSplit(route.path);
+    });
+    // 路由更新时
+    onBeforeRouteUpdate((to) => {
+      initRouteSplit(to.path);
+    });
+    return {
+      onThemeConfigChange,
+      isShowBreadcrumb,
+      getThemeConfig,
+      onBreadcrumbClick,
+      ...toRefs(state),
+    };
+  },
 });
 });
 </script>
 </script>
 
 

+ 60 - 60
src/layout/routerView/parent.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-  <div class="height:100%" style="overflow-y:auto">
+  <div class="height:100%" style="overflow-y:auto;overflow-x: hidden;">
     <router-view v-slot="{ Component }">
     <router-view v-slot="{ Component }">
       <transition :name="setTransitionName" mode="out-in">
       <transition :name="setTransitionName" mode="out-in">
         <keep-alive :include="keepAliveNameList">
         <keep-alive :include="keepAliveNameList">
@@ -17,67 +17,67 @@ import { useStore } from '/@/store/index';
 
 
 // 定义接口来定义对象的类型
 // 定义接口来定义对象的类型
 interface ParentViewState {
 interface ParentViewState {
-	refreshRouterViewKey: null | string;
-	keepAliveNameList: string[];
+  refreshRouterViewKey: null | string;
+  keepAliveNameList: string[];
 }
 }
 
 
 export default defineComponent({
 export default defineComponent({
-	name: 'layoutParentView',
-	props: {
-		minHeight: {
-			type: String,
-			default: '',
-		},
-	},
-	setup() {
-		const { proxy } = <any>getCurrentInstance();
-		const route = useRoute();
-		const store = useStore();
-		const state = reactive<ParentViewState>({
-			refreshRouterViewKey: null,
-			keepAliveNameList: [],
-		});
-		// 设置主界面切换动画
-		const setTransitionName = computed(() => {
-			return store.state.themeConfig.themeConfig.animation;
-		});
-		// 获取布局配置信息
-		const getThemeConfig = computed(() => {
-			return store.state.themeConfig.themeConfig;
-		});
-		// 获取组件缓存列表(name值)
-		const getKeepAliveNames = computed(() => {
-			return store.state.keepAliveNames.keepAliveNames;
-		});
-		// 页面加载前,处理缓存,页面刷新时路由缓存处理
-		onBeforeMount(() => {
-			state.keepAliveNameList = getKeepAliveNames.value;
-			proxy.mittBus.on('onTagsViewRefreshRouterView', (fullPath: string) => {
-				state.keepAliveNameList = getKeepAliveNames.value.filter((name: string) => route.name !== name);
-				state.refreshRouterViewKey = null;
-				nextTick(() => {
-					state.refreshRouterViewKey = fullPath;
-					state.keepAliveNameList = getKeepAliveNames.value;
-				});
-			});
-		});
-		// 页面卸载时
-		onUnmounted(() => {
-			proxy.mittBus.off('onTagsViewRefreshRouterView');
-		});
-		// 监听路由变化,防止 tagsView 多标签时,切换动画消失
-		watch(
-			() => route.fullPath,
-			() => {
-				state.refreshRouterViewKey = route.fullPath;
-			}
-		);
-		return {
-			getThemeConfig,
-			getKeepAliveNames,
-			setTransitionName,
-			...toRefs(state),
-		};
-	},
+  name: 'layoutParentView',
+  props: {
+    minHeight: {
+      type: String,
+      default: '',
+    },
+  },
+  setup() {
+    const { proxy } = <any>getCurrentInstance();
+    const route = useRoute();
+    const store = useStore();
+    const state = reactive<ParentViewState>({
+      refreshRouterViewKey: null,
+      keepAliveNameList: [],
+    });
+    // 设置主界面切换动画
+    const setTransitionName = computed(() => {
+      return store.state.themeConfig.themeConfig.animation;
+    });
+    // 获取布局配置信息
+    const getThemeConfig = computed(() => {
+      return store.state.themeConfig.themeConfig;
+    });
+    // 获取组件缓存列表(name值)
+    const getKeepAliveNames = computed(() => {
+      return store.state.keepAliveNames.keepAliveNames;
+    });
+    // 页面加载前,处理缓存,页面刷新时路由缓存处理
+    onBeforeMount(() => {
+      state.keepAliveNameList = getKeepAliveNames.value;
+      proxy.mittBus.on('onTagsViewRefreshRouterView', (fullPath: string) => {
+        state.keepAliveNameList = getKeepAliveNames.value.filter((name: string) => route.name !== name);
+        state.refreshRouterViewKey = null;
+        nextTick(() => {
+          state.refreshRouterViewKey = fullPath;
+          state.keepAliveNameList = getKeepAliveNames.value;
+        });
+      });
+    });
+    // 页面卸载时
+    onUnmounted(() => {
+      proxy.mittBus.off('onTagsViewRefreshRouterView');
+    });
+    // 监听路由变化,防止 tagsView 多标签时,切换动画消失
+    watch(
+      () => route.fullPath,
+      () => {
+        state.refreshRouterViewKey = route.fullPath;
+      }
+    );
+    return {
+      getThemeConfig,
+      getKeepAliveNames,
+      setTransitionName,
+      ...toRefs(state),
+    };
+  },
 });
 });
 </script>
 </script>

+ 153 - 80
src/theme/dark.scss

@@ -2,57 +2,57 @@
 ------------------------------- */
 ------------------------------- */
 [data-theme='dark'] {
 [data-theme='dark'] {
 	// 变量(自定义时,只需修改这里的值)
 	// 变量(自定义时,只需修改这里的值)
-	--next-bg-main: #1f1f1f;
-	--next-color-white: #ffffff;
-	--next-color-disabled: #191919;
-	--next-color-bar: #dadada;
-	--next-color-primary: #303030;
-	--next-border-color: #424242;
-	--next-border-black: #333333;
-	--next-border-columns: #2a2a2a;
-	--next-color-seting: #505050;
-	--next-text-color-regular: #9b9da1;
+	--next-bg-main               : #1f1f1f;
+	--next-color-white           : #ffffff;
+	--next-color-disabled        : #191919;
+	--next-color-bar             : #dadada;
+	--next-color-primary         : #303030;
+	--next-border-color          : #424242;
+	--next-border-black          : #333333;
+	--next-border-columns        : #2a2a2a;
+	--next-color-seting          : #505050;
+	--next-text-color-regular    : #9b9da1;
 	--next-text-color-placeholder: #7a7a7a;
 	--next-text-color-placeholder: #7a7a7a;
-	--next-color-hover: #3c3c3c;
-	--next-color-hover-rgba: #000000;
+	--next-color-hover           : #3c3c3c;
+	--next-color-hover-rgba      : #000000;
 
 
 
 
 	// root
 	// root
-	--next-bg-main-color: var(--next-bg-main) !important;
-	--next-bg-topBar: var(--next-color-disabled) !important;
-	--next-bg-topBarColor: var(--next-color-bar) !important;
-	--next-bg-menuBar: var(--next-color-disabled) !important;
-	--next-bg-menuBarColor: var(--next-color-bar) !important;
-	--next-bg-columnsMenuBar: var(--next-color-disabled) !important;
+	--next-bg-main-color         : var(--next-bg-main) !important;
+	--next-bg-topBar             : var(--next-color-disabled) !important;
+	--next-bg-topBarColor        : var(--next-color-bar) !important;
+	--next-bg-menuBar            : var(--next-color-disabled) !important;
+	--next-bg-menuBarColor       : var(--next-color-bar) !important;
+	--next-bg-columnsMenuBar     : var(--next-color-disabled) !important;
 	--next-bg-columnsMenuBarColor: var(--next-color-bar) !important;
 	--next-bg-columnsMenuBarColor: var(--next-color-bar) !important;
-	--next-border-color-light: var(--next-border-black) !important;
-	--next-color-primary-lighter: var(--next-color-primary) !important;
-	--next-bg-color: var(--next-color-primary) !important;
-	--next-color-dark-hover: var(--next-color-hover) !important;
-	--next-color-menu-hover: var(--next-color-hover-rgba) !important;
-	--next-color-user-hover: var(--next-color-hover-rgba) !important;
-	--next-color-seting-main: var(--next-color-seting) !important;
-	--next-color-seting-aside: var(--next-color-hover) !important;
-	--next-color-seting-header: var(--next-color-primary) !important;
+	--next-border-color-light    : var(--next-border-black) !important;
+	--next-color-primary-lighter : var(--next-color-primary) !important;
+	--next-bg-color              : var(--next-color-primary) !important;
+	--next-color-dark-hover      : var(--next-color-hover) !important;
+	--next-color-menu-hover      : var(--next-color-hover-rgba) !important;
+	--next-color-user-hover      : var(--next-color-hover-rgba) !important;
+	--next-color-seting-main     : var(--next-color-seting) !important;
+	--next-color-seting-aside    : var(--next-color-hover) !important;
+	--next-color-seting-header   : var(--next-color-primary) !important;
 
 
 	// element plus
 	// element plus
-	--el-color-white: var(--next-color-disabled) !important;
-	--el-text-color-primary: var(--next-color-bar) !important;
-	--el-border-color-base: var(--next-border-black) !important;
-	--el-border-color-light: var(--next-border-black) !important;
-	--el-text-color-regular: var(--next-text-color-regular) !important;
-	--el-bg-color: var(--next-color-hover-rgba) !important;
-	--el-color-success-lighter: var(--next-color-primary) !important;
-	--el-color-warning-lighter: var(--next-color-primary) !important;
-	--el-color-danger-lighter: var(--next-color-primary) !important;
-	--el-color-primary-lighter: var(--next-color-primary) !important;
-	--el-color-primary-light-9: var(--next-color-hover) !important;
+	--el-color-white             : var(--next-color-disabled) !important;
+	--el-text-color-primary      : var(--next-color-bar) !important;
+	--el-border-color-base       : var(--next-border-black) !important;
+	--el-border-color-light      : var(--next-border-black) !important;
+	--el-text-color-regular      : var(--next-text-color-regular) !important;
+	--el-bg-color                : var(--next-color-hover-rgba) !important;
+	--el-color-success-lighter   : var(--next-color-primary) !important;
+	--el-color-warning-lighter   : var(--next-color-primary) !important;
+	--el-color-danger-lighter    : var(--next-color-primary) !important;
+	--el-color-primary-lighter   : var(--next-color-primary) !important;
+	--el-color-primary-light-9   : var(--next-color-hover) !important;
 	--el-text-color-disabled-base: var(--el-color-primary) !important;
 	--el-text-color-disabled-base: var(--el-color-primary) !important;
-	--el-text-color-disabled: var(--next-text-color-placeholder) !important;
-	--el-border-color-lighter: var(--next-border-black) !important;
-	--el-text-color-placeholder: var(--next-text-color-placeholder) !important;
-	--el-disabled-bg-color: var(--next-color-disabled) !important;
-	--el-fill-base: var(--next-color-white) !important;
+	--el-text-color-disabled     : var(--next-text-color-placeholder) !important;
+	--el-border-color-lighter    : var(--next-border-black) !important;
+	--el-text-color-placeholder  : var(--next-text-color-placeholder) !important;
+	--el-disabled-bg-color       : var(--next-color-disabled) !important;
+	--el-fill-base               : var(--next-color-white) !important;
 
 
 	// button
 	// button
 	.el-button {
 	.el-button {
@@ -60,22 +60,26 @@
 			border-color: var(--next-border-color) !important;
 			border-color: var(--next-border-color) !important;
 		}
 		}
 	}
 	}
+
 	.el-button--primary,
 	.el-button--primary,
 	.el-button--info,
 	.el-button--info,
 	.el-button--danger,
 	.el-button--danger,
 	.el-button--success,
 	.el-button--success,
 	.el-button--warning {
 	.el-button--warning {
-		--el-button-text-color: var(--next-color-white) !important;
-		--el-button-hover-text-color: var(--next-color-white) !important;
+		--el-button-text-color         : var(--next-color-white) !important;
+		--el-button-hover-text-color   : var(--next-color-white) !important;
 		--el-button-disabled-text-color: var(--next-color-white) !important;
 		--el-button-disabled-text-color: var(--next-color-white) !important;
+
 		&:hover {
 		&:hover {
 			border-color: var(--el-button-hover-border-color, var(--el-button-hover-bg-color)) !important;
 			border-color: var(--el-button-hover-border-color, var(--el-button-hover-bg-color)) !important;
 		}
 		}
 	}
 	}
+
 	.el-button--text,
 	.el-button--text,
 	.link-type,
 	.link-type,
 	.link-type:focus {
 	.link-type:focus {
 		color: var(--next-color-white) !important;
 		color: var(--next-color-white) !important;
+
 		&:hover {
 		&:hover {
 			border-color: var(--el-color-white) !important;
 			border-color: var(--el-color-white) !important;
 		}
 		}
@@ -85,6 +89,7 @@
 	.el-divider__text {
 	.el-divider__text {
 		background-color: var(--el-color-white) !important;
 		background-color: var(--el-color-white) !important;
 	}
 	}
+
 	.el-drawer {
 	.el-drawer {
 		border-left: 1px solid var(--next-border-color-light) !important;
 		border-left: 1px solid var(--next-border-color-light) !important;
 	}
 	}
@@ -92,15 +97,17 @@
 	// tabs
 	// tabs
 	.el-tabs--border-card {
 	.el-tabs--border-card {
 		background-color: var(--el-color-white) !important;
 		background-color: var(--el-color-white) !important;
-		border-color: var(--next-border-color-light) !important;
+		border-color    : var(--next-border-color-light) !important;
 	}
 	}
-	.el-tabs--border-card > .el-tabs__header .el-tabs__item.is-active {
-		background: var(--next-color-primary-lighter);
+
+	.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active {
+		background  : var(--next-color-primary-lighter);
 		border-color: var(--next-border-color-light) !important;
 		border-color: var(--next-border-color-light) !important;
 	}
 	}
+
 	.el-table__header,
 	.el-table__header,
 	.el-table__body {
 	.el-table__body {
-		border-collapse :  collapse !important;
+		border-collapse: collapse !important;
 	}
 	}
 
 
 	.el-divider--horizontal {
 	.el-divider--horizontal {
@@ -110,6 +117,7 @@
 	.el-loading-mask {
 	.el-loading-mask {
 		background: var(--next-color-primary-lighter) !important;
 		background: var(--next-color-primary-lighter) !important;
 	}
 	}
+
 	// 
 	// 
 	.el-drawer.rtl.open {
 	.el-drawer.rtl.open {
 		background: var(--el-color-white) !important;
 		background: var(--el-color-white) !important;
@@ -124,12 +132,12 @@
 		background: var(--next-border-color-light) !important;
 		background: var(--next-border-color-light) !important;
 	}
 	}
 
 
-	input:-webkit-autofill{
-		-webkit-box-shadow:0 0 0 1000px var(--next-border-color-light) inset !important;
+	input:-webkit-autofill {
+		-webkit-box-shadow: 0 0 0 1000px var(--next-border-color-light) inset !important;
 	}
 	}
-	 
+
 	// 组态管理-组态设计
 	// 组态管理-组态设计
-	.page-wrapper > iframe {
+	.page-wrapper>iframe {
 		background: var(--next-color-primary-lighter) !important;
 		background: var(--next-color-primary-lighter) !important;
 	}
 	}
 
 
@@ -137,98 +145,128 @@
 	.home-card-item {
 	.home-card-item {
 		border: 1px solid var(--next-border-color-light) !important;
 		border: 1px solid var(--next-border-color-light) !important;
 	}
 	}
+
 	.el-card {
 	.el-card {
 		background-color: var(--el-color-white) !important;
 		background-color: var(--el-color-white) !important;
-		color: var(--el-text-color-primary) !important;
-		border: 1px solid var(--next-border-color-light) !important;
+		color           : var(--el-text-color-primary) !important;
+		border          : 1px solid var(--next-border-color-light) !important;
 	}
 	}
-	.el-button.is-text:not(.is-disabled):focus, .el-button.is-text:not(.is-disabled):hover {
+
+	.el-button.is-text:not(.is-disabled):focus,
+	.el-button.is-text:not(.is-disabled):hover {
 		background-color: transparent;
 		background-color: transparent;
 	}
 	}
+
 	.el-scrollbar__view {
 	.el-scrollbar__view {
 		background-color: var(--el-color-white) !important;
 		background-color: var(--el-color-white) !important;
 	}
 	}
+
 	.pagination-container {
 	.pagination-container {
 		background-color: var(--el-color-white) !important;
 		background-color: var(--el-color-white) !important;
 	}
 	}
+
 	// .el-tag {
 	// .el-tag {
 	// 	background-color: var(--el-color-white) !important;
 	// 	background-color: var(--el-color-white) !important;
 	// }
 	// }
 	.el-collapse {
 	.el-collapse {
 		--el-collapse-header-bg-color: var(--el-color-white) !important;
 		--el-collapse-header-bg-color: var(--el-color-white) !important;
 	}
 	}
+
 	// .el-switch__core {
 	// .el-switch__core {
 	// 	background-color: var(--el-text-color-primary) !important;
 	// 	background-color: var(--el-text-color-primary) !important;
 	// }
 	// }
 	.el-select-dropdown__item.selected {
 	.el-select-dropdown__item.selected {
 		background-color: var(--el-color-white) !important;
 		background-color: var(--el-color-white) !important;
 	}
 	}
-	.el-select-dropdown__item.hover, .el-select-dropdown__item:hover {
+
+	.el-select-dropdown__item.hover,
+	.el-select-dropdown__item:hover {
 		background-color: var(--el-bg-color) !important;
 		background-color: var(--el-bg-color) !important;
 	}
 	}
+
 	.el-dialog {
 	.el-dialog {
 		background-color: var(--el-color-white) !important;
 		background-color: var(--el-color-white) !important;
 	}
 	}
+
 	.el-dialog__body {
 	.el-dialog__body {
 		border-top-color: var(--next-border-color-light) !important;
 		border-top-color: var(--next-border-color-light) !important;
 	}
 	}
+
 	.el-textarea__inner {
 	.el-textarea__inner {
 		background-color: var(--el-color-white) !important;
 		background-color: var(--el-color-white) !important;
 	}
 	}
+
 	.el-textarea {
 	.el-textarea {
 		--el-input-border-color: var(--next-border-color-light) !important;
 		--el-input-border-color: var(--next-border-color-light) !important;
 	}
 	}
+
 	.el-button--large {
 	.el-button--large {
 		background-color: var(--el-color-white) !important;
 		background-color: var(--el-color-white) !important;
-		border: 1px solid var(--next-border-color-light) !important;
+		border          : 1px solid var(--next-border-color-light) !important;
 	}
 	}
+
 	.el-input-number__decrease,
 	.el-input-number__decrease,
 	.el-input-number__increase {
 	.el-input-number__increase {
 		border-color: var(--next-border-color-light) !important;
 		border-color: var(--next-border-color-light) !important;
 	}
 	}
+
 	.el-collapse-item__wrap {
 	.el-collapse-item__wrap {
 		background-color: var(--el-color-white) !important;
 		background-color: var(--el-color-white) !important;
 	}
 	}
+
 	.el-input__wrapper {
 	.el-input__wrapper {
 		background-color: var(--el-color-white) !important;
 		background-color: var(--el-color-white) !important;
-		color: var(--el-text-color-primary) !important;
+		color           : var(--el-text-color-primary) !important;
 	}
 	}
+
 	.el-input {
 	.el-input {
 		--el-input-border-color: var(--next-border-color-light) !important;
 		--el-input-border-color: var(--next-border-color-light) !important;
 		--el-input-hover-border: var(--el-text-color-disabled) !important;
 		--el-input-hover-border: var(--el-text-color-disabled) !important;
 
 
 	}
 	}
+
 	.el-date-editor {
 	.el-date-editor {
-		--el-input-border-color: var(--next-border-color-light) !important;
+		--el-input-border-color      : var(--next-border-color-light) !important;
 		--el-input-hover-border-color: var(--el-text-color-disabled) !important;
 		--el-input-hover-border-color: var(--el-text-color-disabled) !important;
 	}
 	}
+
 	.el-date-range-picker {
 	.el-date-range-picker {
 		--el-datepicker-inrange-bg-color: var(--el-bg-color) !important;
 		--el-datepicker-inrange-bg-color: var(--el-bg-color) !important;
 	}
 	}
+
 	.el-date-table td.in-range .el-date-table-cell:hover {
 	.el-date-table td.in-range .el-date-table-cell:hover {
 		background-color: var(--next-border-color-light) !important;
 		background-color: var(--next-border-color-light) !important;
 	}
 	}
 
 
 	.el-tree {
 	.el-tree {
-		background-color: var(--el-color-white) !important;
+		background-color             : var(--el-color-white) !important;
 		--el-tree-node-hover-bg-color: var(--el-color-white) !important;
 		--el-tree-node-hover-bg-color: var(--el-color-white) !important;
-		
+
 	}
 	}
+
 	.el-tree-node__content .el-select-dropdown__item.hover {
 	.el-tree-node__content .el-select-dropdown__item.hover {
 		background-color: var(--el-color-white) !important;
 		background-color: var(--el-color-white) !important;
 	}
 	}
+
 	.el-tree-node__content:hover {
 	.el-tree-node__content:hover {
 		background-color: var(--el-color-white) !important;
 		background-color: var(--el-color-white) !important;
 	}
 	}
+
 	.el-table th.el-table__cell,
 	.el-table th.el-table__cell,
 	.el-table tr {
 	.el-table tr {
 		background-color: var(--el-color-white) !important;
 		background-color: var(--el-color-white) !important;
-		color: var(--el-text-color-primary) !important;
+		color           : var(--el-text-color-primary) !important;
+
+		.cell {
+			color: var(--el-text-color-primary) !important;
+		}
 	}
 	}
+
 	.el-scrollbar__view .el-table__body tr:hover>td.el-table__cell,
 	.el-scrollbar__view .el-table__body tr:hover>td.el-table__cell,
 	.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {
 	.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {
 		background-color: var(--el-bg-color) !important;
 		background-color: var(--el-bg-color) !important;
 	}
 	}
+
 	.el-table__body-wrapper tr td.el-table-fixed-column--left,
 	.el-table__body-wrapper tr td.el-table-fixed-column--left,
 	.el-table__body-wrapper tr td.el-table-fixed-column--right,
 	.el-table__body-wrapper tr td.el-table-fixed-column--right,
 	.el-table__body-wrapper tr th.el-table-fixed-column--left,
 	.el-table__body-wrapper tr th.el-table-fixed-column--left,
@@ -243,54 +281,70 @@
 	.el-table__header-wrapper tr th.el-table-fixed-column--right {
 	.el-table__header-wrapper tr th.el-table-fixed-column--right {
 		background-color: var(--el-color-white) !important;
 		background-color: var(--el-color-white) !important;
 	}
 	}
+
 	.add-flag-container {
 	.add-flag-container {
 		border-bottom-color: var(--next-border-color-light) !important;
 		border-bottom-color: var(--next-border-color-light) !important;
 	}
 	}
+
 	.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell {
 	.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell {
 		background-color: var(--el-color-white) !important;
 		background-color: var(--el-color-white) !important;
 	}
 	}
+
 	.help-wrap .help-item .help-item-label {
 	.help-wrap .help-item .help-item-label {
 		background-color: var(--next-border-color-light) !important;
 		background-color: var(--next-border-color-light) !important;
 	}
 	}
+
 	.table-wrap .table-item-wrap .label {
 	.table-wrap .table-item-wrap .label {
 		background-color: var(--el-color-white) !important;
 		background-color: var(--el-color-white) !important;
 	}
 	}
+
 	.el-alert,
 	.el-alert,
 	.notice-bar {
 	.notice-bar {
-		border: 1px solid var(--next-border-color) !important;
+		border          : 1px solid var(--next-border-color) !important;
 		background-color: var(--next-color-disabled) !important;
 		background-color: var(--next-color-disabled) !important;
 	}
 	}
+
 	.system-dic-container {
 	.system-dic-container {
+
 		.content,
 		.content,
 		.content-box {
 		.content-box {
 			background-color: var(--next-color-disabled) !important;
 			background-color: var(--next-color-disabled) !important;
-			color: var(--el-text-color-primary) !important;
+			color           : var(--el-text-color-primary) !important;
 		}
 		}
+
 		.ant-descriptions-row {
 		.ant-descriptions-row {
 			border-bottom-color: var(--next-border-color-light) !important;
 			border-bottom-color: var(--next-border-color-light) !important;
 		}
 		}
+
 		.ant-descriptions-view {
 		.ant-descriptions-view {
 			border-color: var(--next-border-color-light) !important;
 			border-color: var(--next-border-color-light) !important;
 		}
 		}
+
 		.ant-descriptions-item-label,
 		.ant-descriptions-item-label,
 		.ant-descriptions-item-content {
 		.ant-descriptions-item-content {
 			background-color: var(--next-color-disabled) !important;
 			background-color: var(--next-color-disabled) !important;
-			color: var(--el-text-color-primary) !important;
-			border-color: var(--next-border-color-light) !important;
+			color           : var(--el-text-color-primary) !important;
+			border-color    : var(--next-border-color-light) !important;
 		}
 		}
 	}
 	}
-	.el-cascader-node:not(.is-disabled):focus, .el-cascader-node:not(.is-disabled):hover {
+
+	.el-cascader-node:not(.is-disabled):focus,
+	.el-cascader-node:not(.is-disabled):hover {
 		background-color: var(--el-bg-color) !important;
 		background-color: var(--el-bg-color) !important;
 	}
 	}
+
 	.el-tabs--border-card>.el-tabs__header {
 	.el-tabs--border-card>.el-tabs__header {
 		background-color: var(--next-color-disabled) !important;
 		background-color: var(--next-color-disabled) !important;
 	}
 	}
+
 	.el-upload--picture-card {
 	.el-upload--picture-card {
 		background-color: var(--next-color-disabled) !important;
 		background-color: var(--next-color-disabled) !important;
-		
+
 	}
 	}
+
 	.wu-box {
 	.wu-box {
 		border-color: var(--next-border-color-light) !important;
 		border-color: var(--next-border-color-light) !important;
+
 		.wu-title {
 		.wu-title {
 			border-color: var(--next-border-color-light) !important;
 			border-color: var(--next-border-color-light) !important;
 		}
 		}
@@ -305,6 +359,7 @@
 	.el-color-picker__mask {
 	.el-color-picker__mask {
 		background: unset !important;
 		background: unset !important;
 	}
 	}
+
 	.el-color-picker__trigger {
 	.el-color-picker__trigger {
 		border: 1px solid var(--next-border-color-light) !important;
 		border: 1px solid var(--next-border-color-light) !important;
 	}
 	}
@@ -312,22 +367,27 @@
 	// popper / dropdown
 	// popper / dropdown
 	.el-popper {
 	.el-popper {
 		border: 1px solid var(--next-border-color) !important;
 		border: 1px solid var(--next-border-color) !important;
-		color: var(--el-text-color-primary) !important;
+		color : var(--el-text-color-primary) !important;
+
 		.el-popper__arrow:before {
 		.el-popper__arrow:before {
 			background: var(--el-color-white) !important;
 			background: var(--el-color-white) !important;
-			border: 1px solid var(--next-border-color);
+			border    : 1px solid var(--next-border-color);
 		}
 		}
+
 		a {
 		a {
 			color: var(--el-text-color-primary) !important;
 			color: var(--el-text-color-primary) !important;
 		}
 		}
 	}
 	}
+
 	.el-popper,
 	.el-popper,
 	.el-dropdown-menu {
 	.el-dropdown-menu {
 		background: var(--el-color-white) !important;
 		background: var(--el-color-white) !important;
 	}
 	}
+
 	.el-dropdown-menu__item:hover:not(.is-disabled) {
 	.el-dropdown-menu__item:hover:not(.is-disabled) {
 		background: var(--el-bg-color) !important;
 		background: var(--el-bg-color) !important;
 	}
 	}
+
 	.el-dropdown-menu__item.is-disabled {
 	.el-dropdown-menu__item.is-disabled {
 		font-weight: 700 !important;
 		font-weight: 700 !important;
 	}
 	}
@@ -335,11 +395,12 @@
 	// input
 	// input
 	.el-input-group__append,
 	.el-input-group__append,
 	.el-input-group__prepend {
 	.el-input-group__prepend {
-		border: var(--el-input-border) !important;
+		border      : var(--el-input-border) !important;
 		border-right: none !important;
 		border-right: none !important;
-		background: var(--next-color-disabled) !important;
-		border-left: 0 !important;
+		background  : var(--next-color-disabled) !important;
+		border-left : 0 !important;
 	}
 	}
+
 	.el-input-number__decrease,
 	.el-input-number__decrease,
 	.el-input-number__increase {
 	.el-input-number__increase {
 		background: var(--next-color-disabled) !important;
 		background: var(--next-color-disabled) !important;
@@ -354,6 +415,7 @@
 	.el-pagination.is-background .el-pager li:not(.disabled).active {
 	.el-pagination.is-background .el-pager li:not(.disabled).active {
 		color: var(--next-color-white) !important;
 		color: var(--next-color-white) !important;
 	}
 	}
+
 	.el-pagination.is-background .btn-next,
 	.el-pagination.is-background .btn-next,
 	.el-pagination.is-background .btn-prev,
 	.el-pagination.is-background .btn-prev,
 	.el-pagination.is-background .el-pager li {
 	.el-pagination.is-background .el-pager li {
@@ -362,9 +424,10 @@
 
 
 	// radio
 	// radio
 	.el-radio-button:not(.is-active) .el-radio-button__inner {
 	.el-radio-button:not(.is-active) .el-radio-button__inner {
-		border: 1px solid var(--next-border-color-light) !important;
+		border     : 1px solid var(--next-border-color-light) !important;
 		border-left: 0 !important;
 		border-left: 0 !important;
 	}
 	}
+
 	.el-radio-button.is-active .el-radio-button__inner {
 	.el-radio-button.is-active .el-radio-button__inner {
 		color: var(--next-color-white) !important;
 		color: var(--next-color-white) !important;
 	}
 	}
@@ -378,17 +441,21 @@
 	.editor-container {
 	.editor-container {
 		.w-e-toolbar {
 		.w-e-toolbar {
 			background: var(--el-color-white) !important;
 			background: var(--el-color-white) !important;
-			border: 1px solid var(--next-border-color-light) !important;
+			border    : 1px solid var(--next-border-color-light) !important;
+
 			.w-e-menu:hover {
 			.w-e-menu:hover {
 				background: var(--next-color-user-hover) !important;
 				background: var(--next-color-user-hover) !important;
+
 				i {
 				i {
 					color: var(--el-text-color-primary) !important;
 					color: var(--el-text-color-primary) !important;
 				}
 				}
 			}
 			}
 		}
 		}
+
 		.w-e-text-container {
 		.w-e-text-container {
-			border: 1px solid var(--next-border-color-light) !important;
+			border    : 1px solid var(--next-border-color-light) !important;
 			border-top: none !important;
 			border-top: none !important;
+
 			.w-e-text {
 			.w-e-text {
 				background: var(--el-color-white) !important;
 				background: var(--el-color-white) !important;
 			}
 			}
@@ -403,6 +470,7 @@
 	// dialog
 	// dialog
 	.el-dialog {
 	.el-dialog {
 		border: 1px solid var(--el-border-color-lighter);
 		border: 1px solid var(--el-border-color-lighter);
+
 		.el-dialog__header {
 		.el-dialog__header {
 			color: var(--el-text-color-primary) !important;
 			color: var(--el-text-color-primary) !important;
 		}
 		}
@@ -412,19 +480,21 @@
 	.layout-columns-aside ul .layout-columns-active {
 	.layout-columns-aside ul .layout-columns-active {
 		color: var(--next-color-white) !important;
 		color: var(--next-color-white) !important;
 	}
 	}
+
 	.layout-columns-aside {
 	.layout-columns-aside {
 		border-right: 1px solid var(--next-border-columns);
 		border-right: 1px solid var(--next-border-columns);
 	}
 	}
 
 
-	.data-overview  .home-card-one .home-card-item *span{
+	.data-overview .home-card-one .home-card-item *span {
 		color: var(--next-color-white) !important;
 		color: var(--next-color-white) !important;
 	}
 	}
 
 
 	.monitor-weather {
 	.monitor-weather {
 		background-color: var(--el-color-white) !important;
 		background-color: var(--el-color-white) !important;
 	}
 	}
+
 	.monitor-weather .left .city-weather-data-overview-wrap section {
 	.monitor-weather .left .city-weather-data-overview-wrap section {
-		color: #fff!important;
+		color: #fff !important;
 
 
 	}
 	}
 
 
@@ -432,13 +502,16 @@
 	.monitor-weather .left .city-weather-data-overview-wrap section span:nth-child(2) {
 	.monitor-weather .left .city-weather-data-overview-wrap section span:nth-child(2) {
 		border-color: var(--next-border-color-light) !important;
 		border-color: var(--next-border-color-light) !important;
 	}
 	}
+
 	.monitor-weather .left .city-weather-data-overview-wrap section:nth-child(2n+1) {
 	.monitor-weather .left .city-weather-data-overview-wrap section:nth-child(2n+1) {
 		background-color: var(--el-color-white) !important;
 		background-color: var(--el-color-white) !important;
 	}
 	}
+
 	.monitor-weather .left .city-weather-data-overview-wrap section:nth-child(2n) {
 	.monitor-weather .left .city-weather-data-overview-wrap section:nth-child(2n) {
 		background-color: var(--next-border-color-light) !important;
 		background-color: var(--next-border-color-light) !important;
 	}
 	}
+
 	.monitor-weather .left .city-weather-data-overview-wrap section.active {
 	.monitor-weather .left .city-weather-data-overview-wrap section.active {
 		background-color: #1d3f4b !important;
 		background-color: #1d3f4b !important;
 	}
 	}
-}
+}

+ 9 - 9
src/views/heating/home/index.vue

@@ -130,7 +130,7 @@ export default defineComponent({
           title: '热量',
           title: '热量',
           contentTitle1: '总耗热',
           contentTitle1: '总耗热',
           val1: '',
           val1: '',
-          unit1: 'GJ',
+          unit1: 'GJ',
           contentTitle2: '总单耗',
           contentTitle2: '总单耗',
           val2: '',
           val2: '',
           unit2: 'GJ/㎡',
           unit2: 'GJ/㎡',
@@ -194,17 +194,17 @@ export default defineComponent({
           unitConsumption,
           unitConsumption,
           unitConsumptionTotal
           unitConsumptionTotal
         } = res.data;
         } = res.data;
-        state.dataOne[0].val1 = heatingArea;
-        state.dataOne[0].val2 = forRealArea;
+        state.dataOne[0].val1 = forRealArea;
+        state.dataOne[0].val2 = heatingArea;
 
 
-        state.dataOne[1].val1 = unitConsumption;
-        state.dataOne[1].val2 = unitConsumptionTotal;
+        state.dataOne[1].val1 = unitConsumptionTotal;
+        state.dataOne[1].val2 = unitConsumption;
 
 
-        state.dataOne[2].val1 = elctricConsumption;
-        state.dataOne[2].val2 = elctricConsumptionTotal;
+        state.dataOne[2].val1 = elctricConsumptionTotal;
+        state.dataOne[2].val2 = elctricConsumption;
 
 
-        state.dataOne[3].val1 = flowLoss;
-        state.dataOne[3].val2 = flowLossTotal;
+        state.dataOne[3].val1 = flowLossTotal;
+        state.dataOne[3].val2 = flowLoss;
 
 
       });
       });
     };
     };

+ 259 - 261
src/views/heating/monitor/loopSupervision/heatStationDetail.vue

@@ -1,33 +1,33 @@
 <template>
 <template>
-	<div class="system-dic-container data-overview">
-		<el-row :gutter="15" class="home-card-one">
-			<el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-for="(v, k) in dataOne" :key="k" :class="{ 'home-media home-media-lg': k > 1, 'home-media-sm': k === 1 }">
-				<div class="home-card-item">
-					<div class="item-header">
-						<img :src="isIsDark ? v.iconDark : v.icon" alt="">
-						<span>{{ v.title }}</span>
-					</div>
-					<div class="item-content w100" :class="` home-one-animation${k}`">
-						<p>
-							<span>{{ v.contentTitle1 }}</span>
-							<span>{{ v.val1 + v.unit1 }}</span>
-						</p>
-						<p>
-							<span>{{ v.contentTitle2 }}</span>
-							<span>{{ v.val2 + v.unit2 }}</span>
-						</p>
-					</div>
-				</div>
-			</el-col>
-		</el-row>
-		<el-row :gutter="15" class="home-card-one mt15">
-			<el-col :span="24">
-				<div class="home-card-item p20">
-					<div class="home-card-item-title" style="display: flex;justify-content:space-between;">
-						<span>热网总能耗</span>
-
-						<el-button type="text" @click="goDetail()">更多 &gt;</el-button>
-						<!-- <el-select @change="getStatisticsLineChartData()" v-model="rangeValue" placeholder="请选择查询范围" size="mini">
+  <div class="system-dic-container data-overview">
+    <el-row :gutter="15" class="home-card-one">
+      <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-for="(v, k) in dataOne" :key="k" :class="{ 'home-media home-media-lg': k > 1, 'home-media-sm': k === 1 }">
+        <div class="home-card-item">
+          <div class="item-header">
+            <img :src="isIsDark ? v.iconDark : v.icon" alt="">
+            <span>{{ v.title }}</span>
+          </div>
+          <div class="item-content w100" :class="` home-one-animation${k}`">
+            <p>
+              <span>{{ v.contentTitle1 }}</span>
+              <span>{{ v.val1 + v.unit1 }}</span>
+            </p>
+            <p>
+              <span>{{ v.contentTitle2 }}</span>
+              <span>{{ v.val2 + v.unit2 }}</span>
+            </p>
+          </div>
+        </div>
+      </el-col>
+    </el-row>
+    <el-row :gutter="15" class="home-card-one mt15">
+      <el-col :span="24">
+        <div class="home-card-item p20">
+          <div class="home-card-item-title" style="display: flex;justify-content:space-between;">
+            <span>热网总能耗</span>
+
+            <el-button type="text" @click="goDetail()">更多 &gt;</el-button>
+            <!-- <el-select @change="getStatisticsLineChartData()" v-model="rangeValue" placeholder="请选择查询范围" size="mini">
 							<el-option
 							<el-option
 							v-for="item in [10, 30, 60]"
 							v-for="item in [10, 30, 60]"
 							:key="item"
 							:key="item"
@@ -35,12 +35,12 @@
 							:value="item"
 							:value="item"
 							/>
 							/>
 						</el-select> -->
 						</el-select> -->
-					</div>
-					<div style="height: 300px" ref="homeLineRef"></div>
-				</div>
-			</el-col>
-		</el-row>
-	</div>
+          </div>
+          <div style="height: 300px" ref="homeLineRef"></div>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
 </template>
 </template>
 
 
 <script lang="ts">
 <script lang="ts">
@@ -61,236 +61,236 @@ import { useRoute, useRouter } from 'vue-router';
 import { useStore } from '/@/store/index';
 import { useStore } from '/@/store/index';
 
 
 let global: any = {
 let global: any = {
-	homeCharThree: null,
-	dispose: [null, '', undefined],
+  homeCharThree: null,
+  dispose: [null, '', undefined],
 };
 };
 
 
 export default defineComponent({
 export default defineComponent({
-	name: 'deviceproduct',
-	setup() {
-		const addDicRef = ref();
-		const editDicRef = ref();
-		const queryRef = ref();
-		const homeLineRef = ref();
-		const router = useRouter()
-		const route = useRoute()
-		const store = useStore()
-		const state = reactive({
-			dataOne: [
-				{
-					icon: map,
-					iconDark: map1,
-					title: '供热面积',
-					contentTitle1: '供热面积',
-					val1: '0',
-					unit1: '㎡',
-					contentTitle2: '总面积',
-					val2: '0',
-					unit2: '㎡',
-				},
-				{
-					icon: fire,
-					iconDark: fire1,
-					title: '热量',
-					contentTitle1: '总耗热',
-					val1: '0',
-					unit1: 'GJ',
-					contentTitle2: '总单耗',
-					val2: '0',
-					unit2: 'GJ/㎡',
-				},
-				{
-					icon: ele,
-					iconDark: ele1,
-					title: '电量',
-					contentTitle1: '总耗电',
-					val1: '0',
-					unit1: 'KW.h',
-					contentTitle2: '总单耗',
-					val2: '0',
-					unit2: 'KW.h/㎡',
-				},
-				{
-					icon: water,
-					iconDark: water1,
-					title: '水量',
-					contentTitle1: '总耗水',
-					val1: '0',
-					unit1: 'T',
-					contentTitle2: '总单耗',
-					val2: '0',
-					unit2: 'T/㎡',
-				},
-			],
-			lineName: '换热站监测',
-			myCharts: [],
-			charts: {
-				theme: '',
-				bgColor: '',
-				color: '#303133',
-			},
-			searchParams: {
-				name: ''
-			},
-			xAxisData: [],
-			inTemperatureEchart: [], // 供水温度
-			outTemperatureEchart: [], // 回水温度
-			isIsDark: false
-		});
-
-		const getNumDetail = () => {
-			api.getLoopRegulationDetail({
-				QueryType: 'num',
-				types: 'station',
-				code: route.query.code
-			}).then((res: any) => {
-				let data = res
-				state.dataOne[0].val1 = data.heatingArea //供暖面积
-				state.dataOne[0].val2 = data.forRealArea //实供面积
-				state.dataOne[1].val1 = data.unitConsumption //总热耗
-				state.dataOne[1].val2 = data.unitConsumptionSingle //热单耗
-				state.dataOne[2].val1 = data.elctricConsumption //总电量
-				state.dataOne[2].val2 = data.elctricConsumptionSingle //电单耗
-				state.dataOne[3].val1 = data.flowLoss //总水量
-				state.dataOne[3].val2 = data.flowLossSingle //水量单耗
-			})
-		}
+  name: 'deviceproduct',
+  setup() {
+    const addDicRef = ref();
+    const editDicRef = ref();
+    const queryRef = ref();
+    const homeLineRef = ref();
+    const router = useRouter()
+    const route = useRoute()
+    const store = useStore()
+    const state = reactive({
+      dataOne: [
+        {
+          icon: map,
+          iconDark: map1,
+          title: '供热面积',
+          contentTitle1: '供热面积',
+          val1: '0',
+          unit1: '㎡',
+          contentTitle2: '总面积',
+          val2: '0',
+          unit2: '㎡',
+        },
+        {
+          icon: fire,
+          iconDark: fire1,
+          title: '热量',
+          contentTitle1: '总耗热',
+          val1: '0',
+          unit1: 'GJ',
+          contentTitle2: '总单耗',
+          val2: '0',
+          unit2: 'GJ/㎡',
+        },
+        {
+          icon: ele,
+          iconDark: ele1,
+          title: '电量',
+          contentTitle1: '总耗电',
+          val1: '0',
+          unit1: 'KW.h',
+          contentTitle2: '总单耗',
+          val2: '0',
+          unit2: 'KW.h/㎡',
+        },
+        {
+          icon: water,
+          iconDark: water1,
+          title: '水量',
+          contentTitle1: '总耗水',
+          val1: '0',
+          unit1: 'T',
+          contentTitle2: '总单耗',
+          val2: '0',
+          unit2: 'T/㎡',
+        },
+      ],
+      lineName: '换热站监测',
+      myCharts: [],
+      charts: {
+        theme: '',
+        bgColor: '',
+        color: '#303133',
+      },
+      searchParams: {
+        name: ''
+      },
+      xAxisData: [],
+      inTemperatureEchart: [], // 供水温度
+      outTemperatureEchart: [], // 回水温度
+      isIsDark: false
+    });
 
 
-		const getChartDetail = () => {
-			api.getLoopRegulationDetail({
-				QueryType: 'echart',
-				types: 'station',
-				code: route.query.code
-			}).then((res: any) => {
-				state.inTemperatureEchart = res.inTemperatureEchart.map((item: any) => item.value)
-				state.outTemperatureEchart = res.outTemperatureEchart.map((item: any) => item.value)
-				state.xAxisData = res.inTemperatureEchart.map((item: any) => item.time)
-				
-				nextTick(() => {
-					initLineChart();
-				});
-			})
-		}
+    const getNumDetail = () => {
+      api.getLoopRegulationDetail({
+        QueryType: 'num',
+        types: 'station',
+        code: route.query.code
+      }).then((res: any) => {
+        let data = res
+        state.dataOne[0].val1 = data.heatingArea //供暖面积
+        state.dataOne[0].val2 = data.forRealArea //实供面积
+        state.dataOne[1].val1 = data.unitConsumption //总热耗
+        state.dataOne[1].val2 = data.unitConsumptionSingle //热单耗
+        state.dataOne[2].val1 = data.elctricConsumption //总电量
+        state.dataOne[2].val2 = data.elctricConsumptionSingle //电单耗
+        state.dataOne[3].val1 = data.flowLoss //总水量
+        state.dataOne[3].val2 = data.flowLossSingle //水量单耗
+      })
+    }
 
 
-		const goDetail = () => {
-			router.push({
-				path: '/heating/monitor/loopSupervision/list/heatStationHistory',
-				query: {
-					code: route.query.code
-				}
-			})
-		}
+    const getChartDetail = () => {
+      api.getLoopRegulationDetail({
+        QueryType: 'echart',
+        types: 'station',
+        code: route.query.code
+      }).then((res: any) => {
+        state.inTemperatureEchart = res.inTemperatureEchart.map((item: any) => item.value)
+        state.outTemperatureEchart = res.outTemperatureEchart.map((item: any) => item.value)
+        state.xAxisData = res.inTemperatureEchart.map((item: any) => item.time)
 
 
-		// 折线图
-		const initLineChart = () => {
-			if (!global.dispose.some((b: any) => b === global.homeCharThree)) global.homeCharThree.dispose();
-			global.homeCharThree = <any>echarts.init(homeLineRef.value, state.charts.theme);
-			const option = {
-				backgroundColor: state.charts.bgColor,
-				tooltip: { trigger: 'axis' },
-				legend: {},
-				grid: { top: 40, right: 40, bottom: 40, left: 40 },
-				xAxis: [
-					{
-						type: 'category',
-						data: state.xAxisData,
-						boundaryGap: true,
-						axisTick: { show: false },
-					},
-				],
-				yAxis: [
-					{
-						type: 'value',
-						axisLabel: {
-							formatter: '{value} °C'
-						}
-					}
-				],
-				series: [
-					{
-						name: '供水温度',
-						type: 'line',
-						data: state.inTemperatureEchart
-					},
-					{
-						name: '回水温度',
-						type: 'line',
-						data: state.outTemperatureEchart
-					},
-					// {
-					// 	name: '室外温度',
-					// 	type: 'line',
-					// 	data: [3, 0, 4, 7, 5, 7, 5]
-					// }
-				]
-			};
-			(<any>global.homeCharThree).setOption(option);
-			(<any>state.myCharts).push(global.homeCharThree);
-		};
-
-		// 批量设置 echarts resize
-		const initEchartsResizeFun = () => {
-			nextTick(() => {
-				for (let i = 0; i < state.myCharts.length; i++) {
-					setTimeout(() => {
-						(<any>state.myCharts[i]).resize();
-					}, i * 1000);
-				}
-			});
-		};
-		// 批量设置 echarts resize
-		const initEchartsResize = () => {
-			window.addEventListener('resize', initEchartsResizeFun);
-		};
-		
-		// 监听 vuex 中是否开启深色主题
-		watch(
-			() => store.state.themeConfig.themeConfig.isIsDark,
-			(isIsDark) => {
-				nextTick(() => {
-					state.isIsDark = store.state.themeConfig.themeConfig.isIsDark
-					state.charts.theme = isIsDark ? 'transparent' : '';
-					state.charts.bgColor = isIsDark ? 'transparent' : '';
-					state.charts.color = isIsDark ? '#dadada' : '#303133';
-					setTimeout(() => {
-						initLineChart();
-					}, 1000);
-				});
-			},
-			{
-				deep: true,
-				immediate: true,
-			}
-		);
-
-		// 页面加载时
-		onMounted(() => {
-			getNumDetail()
-			getChartDetail()
-
-			initEchartsResize();
-			// 获取布局配置信息
-			state.isIsDark = store.state.themeConfig.themeConfig.isIsDark;
-		});
-
-
-		/** 重置按钮操作 */
-		const resetQuery = (formEl: FormInstance | undefined) => {
-			if (!formEl) return;
-			formEl.resetFields();
-			// typeList();
-		};
-
-		return {
-			addDicRef,
-			editDicRef,
-			queryRef,
-			homeLineRef,
-			...toRefs(state),
-			resetQuery,
-			goDetail
-		};
-	},
+        nextTick(() => {
+          initLineChart();
+        });
+      })
+    }
+
+    const goDetail = () => {
+      router.push({
+        path: '/heating-monitor/loopSupervision/heatStationHistory',
+        query: {
+          code: route.query.code
+        }
+      })
+    }
+
+    // 折线图
+    const initLineChart = () => {
+      if (!global.dispose.some((b: any) => b === global.homeCharThree)) global.homeCharThree.dispose();
+      global.homeCharThree = <any>echarts.init(homeLineRef.value, state.charts.theme);
+      const option = {
+        backgroundColor: state.charts.bgColor,
+        tooltip: { trigger: 'axis' },
+        legend: {},
+        grid: { top: 40, right: 40, bottom: 40, left: 40 },
+        xAxis: [
+          {
+            type: 'category',
+            data: state.xAxisData,
+            boundaryGap: true,
+            axisTick: { show: false },
+          },
+        ],
+        yAxis: [
+          {
+            type: 'value',
+            axisLabel: {
+              formatter: '{value} °C'
+            }
+          }
+        ],
+        series: [
+          {
+            name: '供水温度',
+            type: 'line',
+            data: state.inTemperatureEchart
+          },
+          {
+            name: '回水温度',
+            type: 'line',
+            data: state.outTemperatureEchart
+          },
+          // {
+          // 	name: '室外温度',
+          // 	type: 'line',
+          // 	data: [3, 0, 4, 7, 5, 7, 5]
+          // }
+        ]
+      };
+      (<any>global.homeCharThree).setOption(option);
+      (<any>state.myCharts).push(global.homeCharThree);
+    };
+
+    // 批量设置 echarts resize
+    const initEchartsResizeFun = () => {
+      nextTick(() => {
+        for (let i = 0; i < state.myCharts.length; i++) {
+          setTimeout(() => {
+            (<any>state.myCharts[i]).resize();
+          }, i * 1000);
+        }
+      });
+    };
+    // 批量设置 echarts resize
+    const initEchartsResize = () => {
+      window.addEventListener('resize', initEchartsResizeFun);
+    };
+
+    // 监听 vuex 中是否开启深色主题
+    watch(
+      () => store.state.themeConfig.themeConfig.isIsDark,
+      (isIsDark) => {
+        nextTick(() => {
+          state.isIsDark = store.state.themeConfig.themeConfig.isIsDark
+          state.charts.theme = isIsDark ? 'transparent' : '';
+          state.charts.bgColor = isIsDark ? 'transparent' : '';
+          state.charts.color = isIsDark ? '#dadada' : '#303133';
+          setTimeout(() => {
+            initLineChart();
+          }, 1000);
+        });
+      },
+      {
+        deep: true,
+        immediate: true,
+      }
+    );
+
+    // 页面加载时
+    onMounted(() => {
+      getNumDetail()
+      getChartDetail()
+
+      initEchartsResize();
+      // 获取布局配置信息
+      state.isIsDark = store.state.themeConfig.themeConfig.isIsDark;
+    });
+
+
+    /** 重置按钮操作 */
+    const resetQuery = (formEl: FormInstance | undefined) => {
+      if (!formEl) return;
+      formEl.resetFields();
+      // typeList();
+    };
+
+    return {
+      addDicRef,
+      editDicRef,
+      queryRef,
+      homeLineRef,
+      ...toRefs(state),
+      resetQuery,
+      goDetail
+    };
+  },
 });
 });
 </script>
 </script>
 
 
@@ -342,7 +342,6 @@ $homeNavLengh: 8;
 			margin-right: 32px;
 			margin-right: 32px;
 			width: 24px;
 			width: 24px;
 			height: 24px;
 			height: 24px;
-			;
 			margin-top: 3px;
 			margin-top: 3px;
 		}
 		}
 	}
 	}
@@ -358,7 +357,6 @@ $homeNavLengh: 8;
 			span:nth-child(1) {
 			span:nth-child(1) {
 				// padding-top: 4px;
 				// padding-top: 4px;
 				line-height: 33px;
 				line-height: 33px;
-				;
 				font-size: 14px;
 				font-size: 14px;
 			}
 			}
 
 

+ 2 - 2
src/views/heating/monitor/loopSupervision/index.vue

@@ -144,14 +144,14 @@ export default defineComponent({
     const goPage = (row: any) => {
     const goPage = (row: any) => {
       if (state.tableData.param.types === 'station') {
       if (state.tableData.param.types === 'station') {
         router.push({
         router.push({
-          path: '/heating/monitor/loopSupervision/list/heatStationDetail',
+          path: '/heating-monitor/loopSupervision/heatStationDetail',
           query: {
           query: {
             code: row.code
             code: row.code
           }
           }
         })
         })
       } else {
       } else {
         router.push({
         router.push({
-          path: '/heating/monitor/loopSupervision/list/loopDetail',
+          path: '/heating-monitor/loopSupervision/loopDetail',
           query: {
           query: {
             code: row.code
             code: row.code
           }
           }

+ 43 - 22
src/views/heating/monitor/loopSupervision/loopDetail.vue

@@ -26,27 +26,28 @@
     <el-row :gutter="15" class="home-card-one mt15" v-if="$route.query.code">
     <el-row :gutter="15" class="home-card-one mt15" v-if="$route.query.code">
       <el-col :span="24">
       <el-col :span="24">
         <div class="home-card-item p20">
         <div class="home-card-item p20">
-          <div class="home-card-item-title">
-            <span>流程图</span>
-          </div>
-          <iframe :src="'https://zhgy.sagoo.cn/plugin/topo/?bgColor=000#/name/'+ $route.query.code" height="400" width="100%" frameborder="0" class="mt15"></iframe>
-        </div>
-      </el-col>
-    </el-row>
 
 
-    <el-row :gutter="15" class="home-card-one mt15">
-      <el-col :span="24">
-        <div class="home-card-item p20">
-          <div class="home-card-item-title" style="display: flex;justify-content:space-between;">
-            <span>环路监测</span>
-            <el-button type="text" @click="goDetail()">更多 &gt;</el-button>
-          </div>
-          <el-tabs v-model="tabName" @tab-change="initLineChart">
-            <el-tab-pane label="温度" :name="0"></el-tab-pane>
-            <el-tab-pane label="压力" :name="1"></el-tab-pane>
-            <el-tab-pane label="流量" :name="2"></el-tab-pane>
+          <el-tabs>
+            <el-tab-pane label="环路监测">
+              <div class="flex-row">
+                <el-tabs v-model="tabName" @tab-change="initLineChart">
+                  <el-tab-pane label="温度" :name="0"></el-tab-pane>
+                  <el-tab-pane label="压力" :name="1"></el-tab-pane>
+                  <el-tab-pane label="流量" :name="2"></el-tab-pane>
+                </el-tabs>
+                <el-button type="text" @click="goDetail()">更多 &gt;</el-button>
+              </div>
+              <div style="height: 300px" ref="homeLineRef"></div>
+            </el-tab-pane>
+            <el-tab-pane label="流程图">
+              <div class="iframe-wrapper">
+                <iframe :src="'/plugin/topo/?bgColor=000#/name/'+ $route.query.code" height="400" width="100%" frameborder="0" class="mt15"></iframe>
+                <div class="jump" @click="jump('/plugin/topo/?bgColor=000#/name/'+ $route.query.code)">
+                  <img src="/@/assets/open.svg">
+                </div>
+              </div>
+            </el-tab-pane>
           </el-tabs>
           </el-tabs>
-          <div style="height: 300px" ref="homeLineRef"></div>
         </div>
         </div>
       </el-col>
       </el-col>
     </el-row>
     </el-row>
@@ -193,7 +194,7 @@ export default defineComponent({
         state.supplyWaterFlowEchart = res.supplyWaterFlowEchart.map((item: any) => item.value)
         state.supplyWaterFlowEchart = res.supplyWaterFlowEchart.map((item: any) => item.value)
         state.secondWaterSupplyEchart = res.secondWaterSupplyEchart.map((item: any) => item.value)
         state.secondWaterSupplyEchart = res.secondWaterSupplyEchart.map((item: any) => item.value)
         state.returnWaterFlowEchart = res.returnWaterFlowEchart.map((item: any) => item.value)
         state.returnWaterFlowEchart = res.returnWaterFlowEchart.map((item: any) => item.value)
-        state.xAxisData = res.inTemperatureEchart.map((item: any) => item.time)
+        state.xAxisData = res.inTemperature1Echart.map((item: any) => item.time)
 
 
         nextTick(() => {
         nextTick(() => {
           initLineChart();
           initLineChart();
@@ -203,12 +204,15 @@ export default defineComponent({
 
 
     const goDetail = () => {
     const goDetail = () => {
       router.push({
       router.push({
-        path: '/heating/monitor/loopSupervision/list/loopHistory',
+        path: '/heating-monitor/loopSupervision/loopHistory',
         query: {
         query: {
           code: route.query.code
           code: route.query.code
         }
         }
       })
       })
     }
     }
+    const jump = (iframeUrl: string) => {
+      window.open(iframeUrl);
+    }
 
 
     // 折线图
     // 折线图
     const initLineChart = () => {
     const initLineChart = () => {
@@ -233,7 +237,7 @@ export default defineComponent({
 
 
       const option = {
       const option = {
         backgroundColor: state.charts.bgColor,
         backgroundColor: state.charts.bgColor,
-        tooltip: { trigger: 'axis' },
+        tooltip: {},
         legend: {},
         legend: {},
         grid: {
         grid: {
           top: 40, right: 20, bottom: 20, left: 20,
           top: 40, right: 20, bottom: 20, left: 20,
@@ -314,6 +318,7 @@ export default defineComponent({
     };
     };
 
 
     return {
     return {
+      jump,
       initLineChart,
       initLineChart,
       tabName,
       tabName,
       addDicRef,
       addDicRef,
@@ -332,6 +337,22 @@ export default defineComponent({
 <style lang="scss" scoped>
 <style lang="scss" scoped>
 $homeNavLengh: 8;
 $homeNavLengh: 8;
 
 
+.iframe-wrapper {
+	position: relative;
+	.jump {
+		position: absolute;
+		top: 24px;
+		right: 12px;
+		z-index: 10;
+		cursor: pointer;
+		img {
+			width: 40px;
+			height: 40px;
+			display: block;
+		}
+	}
+}
+
 .home-card-one {
 .home-card-one {
 	@for $i from 0 through 3 {
 	@for $i from 0 through 3 {
 		.home-one-animation#{$i} {
 		.home-one-animation#{$i} {

+ 14 - 2
src/views/heating/monitor/map.vue

@@ -14,7 +14,7 @@
         </el-select>
         </el-select>
       </div>
       </div>
       <!-- 显示弹层区域 -->
       <!-- 显示弹层区域 -->
-      <div class="view">
+      <div class="view map-hover-station">
         <div class="view-div" v-for="(item, index) in viewList" :key="index">
         <div class="view-div" v-for="(item, index) in viewList" :key="index">
           <div class="view-div-head">
           <div class="view-div-head">
             <div class="title">{{ item.name }}环路</div>
             <div class="title">{{ item.name }}环路</div>
@@ -91,7 +91,7 @@ let loops: any = []
 
 
 // 地图弹窗点击去环路详情,进行跳转
 // 地图弹窗点击去环路详情,进行跳转
 window.mapToDetail = (code: string) => {
 window.mapToDetail = (code: string) => {
-  router.push('/heating/monitor/loopSupervision/list/loopDetail?code=' + code)
+  router.push('/heating-monitor/loopSupervision/loopDetail?code=' + code)
 }
 }
 
 
 function searchPoint(val: number | string) {
 function searchPoint(val: number | string) {
@@ -213,6 +213,14 @@ const renderStation = (list: any[]) => {
 </script>
 </script>
 
 
 <style lang="scss">
 <style lang="scss">
+[data-theme='dark'] .map-hover-station {
+	.view-div-head,
+	.view-div {
+		color: #fff;
+		background: #222;
+	}
+}
+
 .BMap_bubble_pop {
 .BMap_bubble_pop {
 	width: 220px;
 	width: 220px;
 	padding: 0 !important;
 	padding: 0 !important;
@@ -285,6 +293,10 @@ const renderStation = (list: any[]) => {
 }
 }
 </style>
 </style>
 <style scoped lang="scss">
 <style scoped lang="scss">
+.map-hover-station {
+	max-height: 98%;
+	overflow-y: auto;
+}
 .view {
 .view {
 	position: absolute;
 	position: absolute;
 	top: 10px;
 	top: 10px;

+ 7 - 8
src/views/iot/device/instance/index.vue

@@ -51,10 +51,10 @@
       </div>
       </div>
       <el-table :data="tableData.data" style="width: 100%" @selection-change="handleSelectionChange" v-loading="tableData.loading">
       <el-table :data="tableData.data" style="width: 100%" @selection-change="handleSelectionChange" v-loading="tableData.loading">
         <el-table-column type="selection" width="55" align="center" />
         <el-table-column type="selection" width="55" align="center" />
-<!--        <el-table-column label="ID" align="center" prop="id" width="60" v-col="'id'" />-->
-	    <el-table-column label="标识" prop="key"  width="130" :show-overflow-tooltip="true" v-col="'key'"/>
-        <el-table-column label="设备名称"   prop="name" :show-overflow-tooltip="true" v-col="'name'"/>
-        <el-table-column label="产品名称"  prop="productName" :show-overflow-tooltip="true" v-col="'productName'"/>
+        <!--        <el-table-column label="ID" align="center" prop="id" width="60" v-col="'id'" />-->
+        <el-table-column label="标识" prop="key" width="130" :show-overflow-tooltip="true" v-col="'key'" />
+        <el-table-column label="设备名称" prop="name" :show-overflow-tooltip="true" v-col="'name'" />
+        <el-table-column label="产品名称" prop="productName" :show-overflow-tooltip="true" v-col="'productName'" />
         <!-- <el-table-column label="部门" prop="deptName" :show-overflow-tooltip="true" v-col="'deptName'"/> -->
         <!-- <el-table-column label="部门" prop="deptName" :show-overflow-tooltip="true" v-col="'deptName'"/> -->
 
 
         <el-table-column prop="status" label="状态" width="100" align="center" v-col="'status'">
         <el-table-column prop="status" label="状态" width="100" align="center" v-col="'status'">
@@ -65,15 +65,14 @@
           </template>
           </template>
         </el-table-column>
         </el-table-column>
         <el-table-column prop="registryTime" label="激活时间" align="center" width="150" v-col="'registryTime'"></el-table-column>
         <el-table-column prop="registryTime" label="激活时间" align="center" width="150" v-col="'registryTime'"></el-table-column>
-<!--        <el-table-column prop="lastOnlineTime" label="最后上线时间" align="center" width="150" v-col="'lastOnlineTime'"></el-table-column>-->
-        <el-table-column prop="registryTime" label="说明"  v-col="'desc'"></el-table-column>
+        <!--        <el-table-column prop="lastOnlineTime" label="最后上线时间" align="center" width="150" v-col="'lastOnlineTime'"></el-table-column>-->
+        <el-table-column prop="registryTime" label="说明" v-col="'desc'"></el-table-column>
 
 
         <el-table-column label="操作" width="200" align="center" fixed="right">
         <el-table-column label="操作" width="200" align="center" fixed="right">
           <template #default="scope">
           <template #default="scope">
 
 
             <!-- <el-button size="small" text type="primary" @click="onOpenDetail(scope.row)">详情</el-button> -->
             <!-- <el-button size="small" text type="primary" @click="onOpenDetail(scope.row)">详情</el-button> -->
-            <router-link :to="'/device/instance/detail/' + scope.row.id" class="link-type" style="padding-right: 12px;
-    font-size: 12px;color: #409eff;" v-auth="'detail'">
+            <router-link :to="'/iotmanager/device/instance/' + scope.row.id" class="link-type" style="padding-right: 12px;font-size: 12px;color: #409eff;" v-auth="'detail'">
               <span>详情</span>
               <span>详情</span>
             </router-link>
             </router-link>
             <el-button size="small" text type="warning" @click="onOpenEditDic(scope.row)" v-auth="'edit'">修改</el-button>
             <el-button size="small" text type="warning" @click="onOpenEditDic(scope.row)" v-auth="'edit'">修改</el-button>

+ 4 - 4
src/views/iot/device/product/component/editAttr.vue

@@ -156,11 +156,11 @@
 
 
 				<el-form-item label="是否只读" prop="accessMode">
 				<el-form-item label="是否只读" prop="accessMode">
 					<el-radio-group v-model="ruleForm.accessMode" >
 					<el-radio-group v-model="ruleForm.accessMode" >
-						<el-radio label="0">读写</el-radio>
-						<el-radio label="1">只读</el-radio>
+						<el-radio :label="0">读写</el-radio>
+						<el-radio :label="1">只读</el-radio>
 					</el-radio-group>
 					</el-radio-group>
 				</el-form-item>
 				</el-form-item>
-				<el-form-item label="属性定义描述	" prop="desc">
+				<el-form-item label="属性定义描述" prop="desc">
 					<el-input v-model="ruleForm.desc" type="textarea" placeholder="请输入属性定义描述"></el-input>
 					<el-input v-model="ruleForm.desc" type="textarea" placeholder="请输入属性定义描述"></el-input>
 				</el-form-item>
 				</el-form-item>
 			</el-form>
 			</el-form>
@@ -315,7 +315,7 @@ export default defineComponent({
 				name: '',
 				name: '',
 				key: '',
 				key: '',
 				transportProtocol: '',
 				transportProtocol: '',
-				accessMode: '0',
+				accessMode: 0,
 				status: 1,
 				status: 1,
 				valueType: {
 				valueType: {
 					type: '',
 					type: '',

+ 126 - 127
src/views/iot/device/product/index.vue

@@ -48,14 +48,14 @@
       </div>
       </div>
       <el-table :data="tableData.data" style="width: 100%" @selection-change="handleSelectionChange" v-loading="tableData.loading">
       <el-table :data="tableData.data" style="width: 100%" @selection-change="handleSelectionChange" v-loading="tableData.loading">
         <el-table-column type="selection" width="55" align="center" />
         <el-table-column type="selection" width="55" align="center" />
-<!--        <el-table-column label="ID" align="center" prop="id" width="60"  v-col="'id'"/>-->
-        <el-table-column label="标识" prop="key" :show-overflow-tooltip="true"  v-col="'key'"/>
-        <el-table-column label="名称" prop="name" :show-overflow-tooltip="true" v-col="'name'"/>
-        <el-table-column label="分类" prop="categoryName" :show-overflow-tooltip="true" v-col="'categoryName'"/>
+        <!--        <el-table-column label="ID" align="center" prop="id" width="60"  v-col="'id'"/>-->
+        <el-table-column label="标识" prop="key" :show-overflow-tooltip="true" v-col="'key'" />
+        <el-table-column label="名称" prop="name" :show-overflow-tooltip="true" v-col="'name'" />
+        <el-table-column label="分类" prop="categoryName" :show-overflow-tooltip="true" v-col="'categoryName'" />
         <!-- <el-table-column label="部门" prop="deptName" :show-overflow-tooltip="true" v-col="'deptName'"/> -->
         <!-- <el-table-column label="部门" prop="deptName" :show-overflow-tooltip="true" v-col="'deptName'"/> -->
-        <el-table-column label="消息协议" prop="messageProtocol" :show-overflow-tooltip="true" v-col="'messageProtocol'"/>
-        <el-table-column label="接入方式" prop="transportProtocol" :show-overflow-tooltip="true" v-col="'transportProtocol'"/>
-        <el-table-column label="类型" prop="deviceType" :show-overflow-tooltip="true" v-col="'deviceType'"/>
+        <el-table-column label="消息协议" prop="messageProtocol" :show-overflow-tooltip="true" v-col="'messageProtocol'" />
+        <el-table-column label="接入方式" prop="transportProtocol" :show-overflow-tooltip="true" v-col="'transportProtocol'" />
+        <el-table-column label="类型" prop="deviceType" :show-overflow-tooltip="true" v-col="'deviceType'" />
 
 
         <el-table-column prop="status" label="状态" width="100" align="center" v-col="'status'">
         <el-table-column prop="status" label="状态" width="100" align="center" v-col="'status'">
           <template #default="scope">
           <template #default="scope">
@@ -66,12 +66,11 @@
         <!-- <el-table-column prop="createdAt" label="创建时间" align="center" width="180"></el-table-column> -->
         <!-- <el-table-column prop="createdAt" label="创建时间" align="center" width="180"></el-table-column> -->
         <el-table-column label="操作" width="150" align="center" fixed="right">
         <el-table-column label="操作" width="150" align="center" fixed="right">
           <template #default="scope">
           <template #default="scope">
-		     <router-link :to="'/device/product/detail/' + scope.row.id" class="link-type" style="padding-right: 12px;
-    font-size: 12px;color: #409eff;">
+            <router-link :to="'/iotmanager/device/product/detail/' + scope.row.id" class="link-type" style="padding-right: 12px;font-size: 12px;color: #409eff;">
               <span>详情</span>
               <span>详情</span>
             </router-link>
             </router-link>
-            <el-button size="small" text type="warning" @click="onOpenEditDic(scope.row)"  v-auth="'edit'">修改</el-button>
-            <el-button size="small" text type="danger" @click="onRowDel(scope.row)"  v-auth="'del'">删除</el-button>
+            <el-button size="small" text type="warning" @click="onOpenEditDic(scope.row)" v-auth="'edit'">修改</el-button>
+            <el-button size="small" text type="danger" @click="onRowDel(scope.row)" v-auth="'del'">删除</el-button>
           </template>
           </template>
         </el-table-column>
         </el-table-column>
       </el-table>
       </el-table>
@@ -89,126 +88,126 @@ import api from '/@/api/device';
 
 
 // 定义接口来定义对象的类型
 // 定义接口来定义对象的类型
 interface TableDataRow {
 interface TableDataRow {
-	id: number;
-	name: string;
-	deviceType: string;
-	status: number;
-	desc: string;
-	createBy: string;
+  id: number;
+  name: string;
+  deviceType: string;
+  status: number;
+  desc: string;
+  createBy: string;
 }
 }
 interface TableDataState {
 interface TableDataState {
-	ids: number[];
-	tableData: {
-		data: Array<TableDataRow>;
-		total: number;
-		loading: boolean;
-		param: {
-			pageNum: number;
-			pageSize: number;
-			name: string;
-			deviceType: string;
-			status: string;
-			dateRange: string[];
-		};
-	};
+  ids: number[];
+  tableData: {
+    data: Array<TableDataRow>;
+    total: number;
+    loading: boolean;
+    param: {
+      pageNum: number;
+      pageSize: number;
+      name: string;
+      deviceType: string;
+      status: string;
+      dateRange: string[];
+    };
+  };
 }
 }
 
 
 export default defineComponent({
 export default defineComponent({
-	name: 'deviceproduct',
-	components: { EditDic },
-	setup() {
-		const addDicRef = ref();
-		const editDicRef = ref();
-		const queryRef = ref();
-		const state = reactive<TableDataState>({
-			ids: [],
-			tableData: {
-				data: [],
-				total: 0,
-				loading: false,
-				param: {
-					pageNum: 1,
-					pageSize: 10,
-					dictName: '',
-					dictType: '',
-					status: '',
-					dateRange: [],
-				},
-			},
-		});
-		// 初始化表格数据
-		const initTableData = () => {
-			typeList();
-		};
-		const typeList = () => {
-			state.tableData.loading = true;
-			api.product.getList(state.tableData.param).then((res: any) => {
-				console.log(res);
-				state.tableData.data = res.product;
-				state.tableData.total = res.total;
-			}).finally(() => (state.tableData.loading = false));
-		};
-		// 打开新增产品弹窗
-		const onOpenAddDic = () => {
-			editDicRef.value.openDialog();
-		};
-		// 打开修改产品弹窗
-		const onOpenEditDic = (row: TableDataRow) => {
-			editDicRef.value.openDialog(row);
-		};
-		// 删除产品
-		const onRowDel = (row: TableDataRow) => {
-			let msg = '你确定要删除所选数据?';
-			let ids: number[] = [];
-			if (row) {
-				msg = `此操作将永久删除产品:“${row.name}”,是否继续?`;
-				ids = [row.id];
-			} else {
-				ids = state.ids;
-			}
-			if (ids.length === 0) {
-				ElMessage.error('请选择要删除的数据。');
-				return;
-			}
-			ElMessageBox.confirm(msg, '提示', {
-				confirmButtonText: '确认',
-				cancelButtonText: '取消',
-				type: 'warning',
-			})
-				.then(() => {
-					api.product.delete(ids).then(() => {
-						ElMessage.success('删除成功');
-						typeList();
-					});
-				})
-				.catch(() => {});
-		};
-		// 页面加载时
-		onMounted(() => {
-			initTableData();
-		});
-		/** 重置按钮操作 */
-		const resetQuery = (formEl: FormInstance | undefined) => {
-			if (!formEl) return;
-			formEl.resetFields();
-			typeList();
-		};
-		// 多选框选中数据
-		const handleSelectionChange = (selection: TableDataRow[]) => {
-			state.ids = selection.map((item) => item.id);
-		};
-		return {
-			addDicRef,
-			editDicRef,
-			queryRef,
-			onOpenAddDic,
-			onOpenEditDic,
-			onRowDel,
-			typeList,
-			resetQuery,
-			handleSelectionChange,
-			...toRefs(state),
-		};
-	},
+  name: 'deviceproduct',
+  components: { EditDic },
+  setup() {
+    const addDicRef = ref();
+    const editDicRef = ref();
+    const queryRef = ref();
+    const state = reactive<TableDataState>({
+      ids: [],
+      tableData: {
+        data: [],
+        total: 0,
+        loading: false,
+        param: {
+          pageNum: 1,
+          pageSize: 10,
+          dictName: '',
+          dictType: '',
+          status: '',
+          dateRange: [],
+        },
+      },
+    });
+    // 初始化表格数据
+    const initTableData = () => {
+      typeList();
+    };
+    const typeList = () => {
+      state.tableData.loading = true;
+      api.product.getList(state.tableData.param).then((res: any) => {
+        console.log(res);
+        state.tableData.data = res.product;
+        state.tableData.total = res.total;
+      }).finally(() => (state.tableData.loading = false));
+    };
+    // 打开新增产品弹窗
+    const onOpenAddDic = () => {
+      editDicRef.value.openDialog();
+    };
+    // 打开修改产品弹窗
+    const onOpenEditDic = (row: TableDataRow) => {
+      editDicRef.value.openDialog(row);
+    };
+    // 删除产品
+    const onRowDel = (row: TableDataRow) => {
+      let msg = '你确定要删除所选数据?';
+      let ids: number[] = [];
+      if (row) {
+        msg = `此操作将永久删除产品:“${row.name}”,是否继续?`;
+        ids = [row.id];
+      } else {
+        ids = state.ids;
+      }
+      if (ids.length === 0) {
+        ElMessage.error('请选择要删除的数据。');
+        return;
+      }
+      ElMessageBox.confirm(msg, '提示', {
+        confirmButtonText: '确认',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+        .then(() => {
+          api.product.delete(ids).then(() => {
+            ElMessage.success('删除成功');
+            typeList();
+          });
+        })
+        .catch(() => { });
+    };
+    // 页面加载时
+    onMounted(() => {
+      initTableData();
+    });
+    /** 重置按钮操作 */
+    const resetQuery = (formEl: FormInstance | undefined) => {
+      if (!formEl) return;
+      formEl.resetFields();
+      typeList();
+    };
+    // 多选框选中数据
+    const handleSelectionChange = (selection: TableDataRow[]) => {
+      state.ids = selection.map((item) => item.id);
+    };
+    return {
+      addDicRef,
+      editDicRef,
+      queryRef,
+      onOpenAddDic,
+      onOpenEditDic,
+      onRowDel,
+      typeList,
+      resetQuery,
+      handleSelectionChange,
+      ...toRefs(state),
+    };
+  },
 });
 });
 </script>
 </script>

+ 2 - 2
src/views/iot/network/server/component/list.vue

@@ -256,10 +256,10 @@ export default defineComponent({
         .catch(() => { });
         .catch(() => { });
     };
     };
     const toDetail = (id: number) => {
     const toDetail = (id: number) => {
-      router.push(`/network/server/detail/${id}`)
+      router.push(`/iotmanager/network/server/detail/${id}`)
     };
     };
     const toEdit = (id: number) => {
     const toEdit = (id: number) => {
-      router.push(`/network/server/edit/${id}`)
+      router.push(`/iotmanager/network/server/edit/${id}`)
     };
     };
     // 监听双向绑定 keyWord 的变化
     // 监听双向绑定 keyWord 的变化
     watch(
     watch(

+ 1 - 1
src/views/iot/network/server/detail.vue

@@ -66,7 +66,7 @@ export default defineComponent({
 			ElMessage.success('刷新成功');
 			ElMessage.success('刷新成功');
 		};
 		};
 		const toEdit = () => {
 		const toEdit = () => {
-            router.push(`/network/server/edit/${route.params && route.params.id}`)
+            router.push(`/iotmanager/network/server/edit/${route.params && route.params.id}`)
         };
         };
 		onMounted(() => {
 		onMounted(() => {
 			getDetail()
 			getDetail()

+ 1 - 1
src/views/iot/network/server/index.vue

@@ -45,6 +45,6 @@ const searchData = () => {
     keyWord.value= key.value
     keyWord.value= key.value
 };
 };
 const toPage = () => {
 const toPage = () => {
-    router.push('/network/server/create')
+    router.push('/iotmanager/network/server/create')
 };
 };
 </script>
 </script>

+ 2 - 2
src/views/iot/network/tunnel/component/list.vue

@@ -153,10 +153,10 @@ export default defineComponent({
 				.catch(() => {});
 				.catch(() => {});
 		};
 		};
         const toDetail = (id: number) => {
         const toDetail = (id: number) => {
-            router.push(`/network/tunnel/detail/${id}`)
+            router.push(`/iotmanager/network/tunnel/detail/${id}`)
         };
         };
         const toEdit = (id: number) => {
         const toEdit = (id: number) => {
-            router.push(`/network/tunnel/edit/${id}`)
+            router.push(`/iotmanager/network/tunnel/edit/${id}`)
         };
         };
         // 监听双向绑定 keyWord 的变化
         // 监听双向绑定 keyWord 的变化
 		watch(
 		watch(

+ 1 - 1
src/views/iot/network/tunnel/detail.vue

@@ -64,7 +64,7 @@ export default defineComponent({
 			ElMessage.success('刷新成功');
 			ElMessage.success('刷新成功');
 		};
 		};
 		const toEdit = () => {
 		const toEdit = () => {
-            router.push(`/network/tunnel/edit/${route.params && route.params.id}`)
+            router.push(`/iotmanager/network/tunnel/edit/${route.params && route.params.id}`)
         };
         };
 		onMounted(() => {
 		onMounted(() => {
 			getDetail()
 			getDetail()

+ 1 - 1
src/views/iot/network/tunnel/index.vue

@@ -46,6 +46,6 @@ const searchData = () => {
 };
 };
 // 去往新增页面
 // 去往新增页面
 const toPage = () => {
 const toPage = () => {
-    router.push('/network/tunnel/create')
+    router.push('/iotmanager/network/tunnel/create')
 };
 };
 </script>
 </script>

File diff suppressed because it is too large
+ 2 - 3
src/views/iot/noticeservices/config/index.vue


+ 30 - 5
src/views/system/datahub/modeling/component/relation.vue

@@ -12,6 +12,15 @@
 						</el-select>
 						</el-select>
 					</el-form-item>
 					</el-form-item>
 
 
+					<el-form-item label="数据源节点" prop="sourceNodeKey">
+						<el-select v-model="ruleForm.sourceNodeKey" filterable placeholder="请选择数据源" >
+							<el-option v-for="item in nodeData" :key="item.nodeId" :label="item.key" :value="item.key">
+								<span style="float: left">{{ item.key }}</span>
+								<span style="float: right; font-size: 13px">{{ item.name }}</span>
+							</el-option>
+						</el-select>
+					</el-form-item>
+
 			</el-form>
 			</el-form>
 			<template #footer>
 			<template #footer>
 				<span class="dialog-footer">
 				<span class="dialog-footer">
@@ -40,6 +49,7 @@ interface DicState {
 	ruleForm: RuleFormState;
 	ruleForm: RuleFormState;
 	rules: {};
 	rules: {};
 	data: {};
 	data: {};
+	nodeData:{};
 }
 }
 
 
 export default defineComponent({
 export default defineComponent({
@@ -49,6 +59,7 @@ export default defineComponent({
 		const state = reactive<DicState>({
 		const state = reactive<DicState>({
 			isShowDialog: false,
 			isShowDialog: false,
 			data:[],
 			data:[],
+			nodeData:[],
 			ruleForm: {
 			ruleForm: {
 				id: 0,
 				id: 0,
 				mainSourceId: '',
 				mainSourceId: '',
@@ -56,6 +67,7 @@ export default defineComponent({
 			},
 			},
 			rules: {
 			rules: {
 				mainSourceId: [{ required: true, message: '请选择数据源', trigger: 'blur' }],
 				mainSourceId: [{ required: true, message: '请选择数据源', trigger: 'blur' }],
+				sourceNodeKey: [{ required: true, message: '请选择数据源节点', trigger: 'blur' }],
 				
 				
 			},
 			},
 		});
 		});
@@ -94,11 +106,12 @@ export default defineComponent({
 		};
 		};
 
 
 		const setNode = (event) => {
 		const setNode = (event) => {
-			state.data.forEach((item, index) => {
-				if (item.sourceId == event) {
-					state.ruleForm.sourceNodeKey = item.key;
-				}
-			});
+			// state.data.forEach((item, index) => {
+			// 	if (item.sourceId == event) {
+			// 		state.ruleForm.sourceNodeKey = item.key;
+			// 	}
+			// });
+			getNodeList(event);
 		};
 		};
 		// 新增
 		// 新增
 		const onSubmit = () => {
 		const onSubmit = () => {
@@ -114,9 +127,21 @@ export default defineComponent({
 				}
 				}
 			});
 			});
 		};
 		};
+		const getNodeList = (event) => {
+			api.node
+				.getList({
+					pageNum: 1,
+					pageSize: 50,
+					sourceId: event,
+				})
+				.then((res: any) => {
+					state.nodeData = res.list;
+				});
+		};
 	
 	
 
 
 		return {
 		return {
+			getNodeList,
 			setNode,
 			setNode,
 			openDialog,
 			openDialog,
 			closeDialog,
 			closeDialog,

+ 1 - 1
src/views/system/datahub/modeling/detail.vue

@@ -202,7 +202,7 @@ export default defineComponent({
     const CkOption = () => {
     const CkOption = () => {
       //检测是否需要设置关联
       //检测是否需要设置关联
       api.template.relation_check(route.params.id).then((res: any) => {
       api.template.relation_check(route.params.id).then((res: any) => {
-          if(res.yes){
+          if(res.yes && state.developer_status==0){
             let ids={
             let ids={
               id:route.params.id,
               id:route.params.id,
             }
             }

+ 1 - 1
src/views/system/datahub/modeling/index.vue

@@ -53,7 +53,7 @@
 
 
         <el-table-column label="操作" width="280" align="center" fixed="right">
         <el-table-column label="操作" width="280" align="center" fixed="right">
           <template #default="scope">
           <template #default="scope">
-            <router-link :to="'/datahub/modeling/detail/' + scope.row.id" class="link-type" style="padding-right: 12px; font-size: 12px; color: #409eff" v-auth="'detail'">
+            <router-link :to="'/config/datahub/modeling/' + scope.row.id" class="link-type" style="padding-right: 12px; font-size: 12px; color: #409eff" v-auth="'detail'">
               <span>字段管理</span>
               <span>字段管理</span>
             </router-link>
             </router-link>
             <el-button size="small" text type="success" @click="onOpenRecord(scope.row)" v-if="scope.row.status==1" v-auth="'record'">数据记录</el-button>
             <el-button size="small" text type="success" @click="onOpenRecord(scope.row)" v-if="scope.row.status==1" v-auth="'record'">数据记录</el-button>

+ 1 - 1
src/views/system/datahub/source/index.vue

@@ -66,7 +66,7 @@
 
 
         <el-table-column label="操作" width="200" align="center" fixed="right">
         <el-table-column label="操作" width="200" align="center" fixed="right">
           <template #default="scope">
           <template #default="scope">
-            <router-link :to="'/datahub/source/detail/' + scope.row.sourceId" class="link-type" style="padding-right: 12px; font-size: 12px; color: #409eff" v-auth="'detail'">
+            <router-link :to="'/config/datahub/source/' + scope.row.sourceId" class="link-type" style="padding-right: 12px; font-size: 12px; color: #409eff" v-auth="'detail'">
               <span>详情</span>
               <span>详情</span>
             </router-link>
             </router-link>
             <el-button size="small" text type="success" @click="onOpenList(scope.row)" v-if="scope.row.status==1" v-auth="'detail'">数据记录</el-button>
             <el-button size="small" text type="success" @click="onOpenList(scope.row)" v-if="scope.row.status==1" v-auth="'detail'">数据记录</el-button>

+ 1 - 1
src/views/system/dict/index.vue

@@ -52,7 +52,7 @@
         <el-table-column label="字典名称" v-col="'dictName'" prop="dictName" :show-overflow-tooltip="true" />
         <el-table-column label="字典名称" v-col="'dictName'" prop="dictName" :show-overflow-tooltip="true" />
         <el-table-column label="字典类型" v-col="'dictType'" align="center" :show-overflow-tooltip="true">
         <el-table-column label="字典类型" v-col="'dictType'" align="center" :show-overflow-tooltip="true">
           <template #default="scope">
           <template #default="scope">
-            <router-link :to="'/system/dict/data/list/' + scope.row.dictType" class="link-type">
+            <router-link :to="'/config/dict/' + scope.row.dictType" class="link-type">
               <span>{{ scope.row.dictType }}</span>
               <span>{{ scope.row.dictType }}</span>
             </router-link>
             </router-link>
           </template>
           </template>

Some files were not shown because too many files changed in this diff