Compare commits
5 Commits
Author | SHA1 | Date |
---|---|---|
|
a386380fda | |
|
1426253122 | |
|
40671042c0 | |
|
2ab0ffeb51 | |
|
3475218827 |
|
@ -6,7 +6,7 @@
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<link rel="icon" href="/favicon.ico" />
|
<link rel="icon" href="/favicon.ico" />
|
||||||
<title>网关采集配置器</title>
|
<title>网关采集配置器</title>
|
||||||
<script src="./js/config.js"></script>
|
<script type="module" src="/js/config.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
"qs": "^6.11.1",
|
"qs": "^6.11.1",
|
||||||
"screenfull": "^6.0.2",
|
"screenfull": "^6.0.2",
|
||||||
"sortablejs": "^1.15.0",
|
"sortablejs": "^1.15.0",
|
||||||
|
"vite-plugin-qiankun": "^1.0.15",
|
||||||
"vue": "^3.2.47",
|
"vue": "^3.2.47",
|
||||||
"vue-clipboard3": "^2.0.0",
|
"vue-clipboard3": "^2.0.0",
|
||||||
"vue-demi": "^0.13.11",
|
"vue-demi": "^0.13.11",
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 9.1 KiB |
|
@ -14,3 +14,5 @@ window.baseConfig = {
|
||||||
protocol: 'http://',
|
protocol: 'http://',
|
||||||
wsProtocol: 'ws://'
|
wsProtocol: 'ws://'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
localStorage.setItem('baseConfig', JSON.stringify(window.baseConfig));
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 6.1 KiB |
|
@ -16,10 +16,12 @@ import { useRoutesList } from '/@/stores/routesList';
|
||||||
import { useThemeConfig } from '/@/stores/themeConfig';
|
import { useThemeConfig } from '/@/stores/themeConfig';
|
||||||
import { useTagsViewRoutes } from '/@/stores/tagsViewRoutes';
|
import { useTagsViewRoutes } from '/@/stores/tagsViewRoutes';
|
||||||
import mittBus from '/@/utils/mitt';
|
import mittBus from '/@/utils/mitt';
|
||||||
|
import { useRoute } from 'vue-router';
|
||||||
|
|
||||||
// 引入组件
|
// 引入组件
|
||||||
const Logo = defineAsyncComponent(() => import('/@/layout/logo/index.vue'));
|
const Logo = defineAsyncComponent(() => import('/@/layout/logo/index.vue'));
|
||||||
const Vertical = defineAsyncComponent(() => import('/@/layout/navMenu/vertical.vue'));
|
const Vertical = defineAsyncComponent(() => import('/@/layout/navMenu/vertical.vue'));
|
||||||
|
const route = useRoute();
|
||||||
|
|
||||||
// 定义变量内容
|
// 定义变量内容
|
||||||
const layoutAsideScrollbarRef = ref();
|
const layoutAsideScrollbarRef = ref();
|
||||||
|
@ -69,6 +71,13 @@ const setCollapseStyle = computed(() => {
|
||||||
// 设置显示/隐藏 logo
|
// 设置显示/隐藏 logo
|
||||||
const setShowLogo = computed(() => {
|
const setShowLogo = computed(() => {
|
||||||
let { layout, isShowLogo } = themeConfig.value;
|
let { layout, isShowLogo } = themeConfig.value;
|
||||||
|
let hideHeader = JSON.parse(localStorage.getItem('hideHeader'));
|
||||||
|
if(hideHeader!==null){
|
||||||
|
isShowLogo = hideHeader?true:false;
|
||||||
|
}
|
||||||
|
if(route.query.hideHeader!=undefined){
|
||||||
|
isShowLogo = route.query.hideHeader!='true'?true:false;
|
||||||
|
}
|
||||||
return (isShowLogo && layout === 'defaults') || (isShowLogo && layout === 'columns');
|
return (isShowLogo && layout === 'defaults') || (isShowLogo && layout === 'columns');
|
||||||
});
|
});
|
||||||
// 关闭移动端蒙版
|
// 关闭移动端蒙版
|
||||||
|
|
|
@ -26,16 +26,16 @@ const onLayoutResize = () => {
|
||||||
if (!Local.get('oldLayout')) Local.set('oldLayout', themeConfig.value.layout);
|
if (!Local.get('oldLayout')) Local.set('oldLayout', themeConfig.value.layout);
|
||||||
const clientWidth = document.body.clientWidth;
|
const clientWidth = document.body.clientWidth;
|
||||||
if (clientWidth < 1000) {
|
if (clientWidth < 1000) {
|
||||||
themeConfig.value.isCollapse = false;
|
// themeConfig.value.isCollapse = false;
|
||||||
mittBus.emit('layoutMobileResize', {
|
// mittBus.emit('layoutMobileResize', {
|
||||||
layout: 'defaults',
|
// layout: 'defaults',
|
||||||
clientWidth,
|
// clientWidth,
|
||||||
});
|
// });
|
||||||
} else {
|
} else {
|
||||||
mittBus.emit('layoutMobileResize', {
|
// mittBus.emit('layoutMobileResize', {
|
||||||
layout: Local.get('oldLayout') ? Local.get('oldLayout') : themeConfig.value.layout,
|
// layout: Local.get('oldLayout') ? Local.get('oldLayout') : themeConfig.value.layout,
|
||||||
clientWidth,
|
// clientWidth,
|
||||||
});
|
// });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
// 页面加载前
|
// 页面加载前
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
import { computed } from 'vue';
|
import { computed } from 'vue';
|
||||||
import { storeToRefs } from 'pinia';
|
import { storeToRefs } from 'pinia';
|
||||||
import { useThemeConfig } from '/@/stores/themeConfig';
|
import { useThemeConfig } from '/@/stores/themeConfig';
|
||||||
import logoMini from '/@/assets/logo-mini.svg';
|
import logoMini from '/@/assets/logo-mini.png';
|
||||||
|
|
||||||
// 定义变量内容
|
// 定义变量内容
|
||||||
const storesThemeConfig = useThemeConfig();
|
const storesThemeConfig = useThemeConfig();
|
||||||
|
@ -52,8 +52,9 @@ const onThemeConfigChange = () => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&-medium-img {
|
&-medium-img {
|
||||||
width: 20px;
|
width: 35px;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
|
height: 35px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.layout-logo-size {
|
.layout-logo-size {
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="layoutDefaults">
|
<script setup name="layoutDefaults">
|
||||||
import { defineAsyncComponent, watch, onMounted, nextTick, ref } from 'vue';
|
import { defineAsyncComponent, watch, onMounted, nextTick, ref, getCurrentInstance } from 'vue';
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
import { storeToRefs } from 'pinia';
|
import { storeToRefs } from 'pinia';
|
||||||
import { useThemeConfig } from '/@/stores/themeConfig';
|
import { useThemeConfig } from '/@/stores/themeConfig';
|
||||||
|
@ -49,9 +49,12 @@ const initScrollBarHeight = () => {
|
||||||
};
|
};
|
||||||
// 页面加载时
|
// 页面加载时
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
console.log("route",route)
|
|
||||||
initScrollBarHeight();
|
initScrollBarHeight();
|
||||||
NextLoading.done(600);
|
NextLoading.done(600);
|
||||||
|
let hideHeader = JSON.parse(localStorage.getItem('hideHeader'));
|
||||||
|
if(hideHeader!==null){
|
||||||
|
isShowHeader.value = hideHeader?false:true;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
// 监听路由的变化,切换界面时,滚动条置顶
|
// 监听路由的变化,切换界面时,滚动条置顶
|
||||||
watch(
|
watch(
|
||||||
|
@ -65,8 +68,10 @@ watch(
|
||||||
watch(
|
watch(
|
||||||
() => route.query,
|
() => route.query,
|
||||||
(newQuery) => {
|
(newQuery) => {
|
||||||
// 假设你希望在查询参数中有 hideHeader=true 时隐藏头部
|
// 假设你希望在查询参数中有 hideHeader=true 时显示头部
|
||||||
isShowHeader.value = newQuery.hideHeader !== 'true';
|
if(newQuery.hideHeader!=undefined){
|
||||||
|
isShowHeader.value = newQuery.hideHeader!='true'?true:false;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{ immediate: true }
|
{ immediate: true }
|
||||||
);
|
);
|
||||||
|
|
|
@ -6,20 +6,20 @@
|
||||||
:size="16"
|
:size="16"
|
||||||
@click="onThemeConfigChange"
|
@click="onThemeConfigChange"
|
||||||
/>
|
/>
|
||||||
<el-breadcrumb class="layout-navbars-breadcrumb-hide">
|
<!-- <el-breadcrumb class="layout-navbars-breadcrumb-hide">-->
|
||||||
<transition-group name="breadcrumb">
|
<!-- <transition-group name="breadcrumb">-->
|
||||||
<el-breadcrumb-item v-for="(v, k) in state.breadcrumbList" :key="!v.meta.tagsViewName ? v.meta.title : v.meta.tagsViewName">
|
<!-- <el-breadcrumb-item v-for="(v, k) in state.breadcrumbList" :key="!v.meta.tagsViewName ? v.meta.title : v.meta.tagsViewName">-->
|
||||||
<span v-if="k === state.breadcrumbList.length - 1" class="layout-navbars-breadcrumb-span">
|
<!-- <span v-if="k === state.breadcrumbList.length - 1" class="layout-navbars-breadcrumb-span">-->
|
||||||
<SvgIcon :name="v.meta.icon" class="layout-navbars-breadcrumb-iconfont" v-if="themeConfig.isBreadcrumbIcon" />
|
<!-- <SvgIcon :name="v.meta.icon" class="layout-navbars-breadcrumb-iconfont" v-if="themeConfig.isBreadcrumbIcon" />-->
|
||||||
<div v-if="!v.meta.tagsViewName">{{ v.meta.title }}</div>
|
<!-- <div v-if="!v.meta.tagsViewName">{{ v.meta.title }}</div>-->
|
||||||
<div v-else>{{ v.meta.tagsViewName }}</div>
|
<!-- <div v-else>{{ v.meta.tagsViewName }}</div>-->
|
||||||
</span>
|
<!-- </span>-->
|
||||||
<a v-else @click.prevent="onBreadcrumbClick(v)">
|
<!-- <a v-else @click.prevent="onBreadcrumbClick(v)">-->
|
||||||
<SvgIcon :name="v.meta.icon" class="layout-navbars-breadcrumb-iconfont" v-if="themeConfig.isBreadcrumbIcon" />{{ v.meta.title }}
|
<!-- <SvgIcon :name="v.meta.icon" class="layout-navbars-breadcrumb-iconfont" v-if="themeConfig.isBreadcrumbIcon" />{{ v.meta.title }}-->
|
||||||
</a>
|
<!-- </a>-->
|
||||||
</el-breadcrumb-item>
|
<!-- </el-breadcrumb-item>-->
|
||||||
</transition-group>
|
<!-- </transition-group>-->
|
||||||
</el-breadcrumb>
|
<!-- </el-breadcrumb>-->
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,9 @@
|
||||||
<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="getKeepAliveNames">
|
<keep-alive :include="getKeepAliveNames">
|
||||||
<component style="padding: 10px" :is="Component" :key="state.refreshRouterViewKey" class="w100" v-show="!isIframePage" />
|
<div class="w100" :key="state.refreshRouterViewKey">
|
||||||
|
<component :is="Component" style="padding: 10px" v-show="!isIframePage"></component>
|
||||||
|
</div>
|
||||||
</keep-alive>
|
</keep-alive>
|
||||||
</transition>
|
</transition>
|
||||||
</router-view>
|
</router-view>
|
||||||
|
|
70
src/main.js
70
src/main.js
|
@ -7,10 +7,76 @@ import other from '/@/utils/other';
|
||||||
|
|
||||||
import ElementPlus from 'element-plus';
|
import ElementPlus from 'element-plus';
|
||||||
import '/@/theme/index.scss';
|
import '/@/theme/index.scss';
|
||||||
|
import { renderWithQiankun, qiankunWindow } from 'vite-plugin-qiankun/dist/helper';
|
||||||
|
|
||||||
const app = createApp(App);
|
// const app = createApp(App);
|
||||||
|
|
||||||
|
let app;
|
||||||
|
if (!qiankunWindow.__POWERED_BY_QIANKUN__) {
|
||||||
|
app = createApp(App);
|
||||||
directive(app);
|
directive(app);
|
||||||
other.elSvg(app);
|
other.elSvg(app);
|
||||||
|
|
||||||
app.use(pinia).use(router).use(ElementPlus).mount('#app');
|
app.use(pinia).use(router).use(ElementPlus).mount('#app');
|
||||||
|
} else {
|
||||||
|
renderWithQiankun({
|
||||||
|
// 子应用挂载
|
||||||
|
mount(props) {
|
||||||
|
console.log("props",props.hideHeader)
|
||||||
|
app = createApp(App);
|
||||||
|
directive(app);
|
||||||
|
other.elSvg(app);
|
||||||
|
app.use(pinia).use(router).use(ElementPlus).mount(props.container.querySelector('#app'));
|
||||||
|
|
||||||
|
if(props.hideHeader!==undefined){
|
||||||
|
console.log("1111")
|
||||||
|
localStorage.setItem('hideHeader', props.hideHeader);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 只有子应用第一次加载会触发
|
||||||
|
bootstrap() {
|
||||||
|
console.log('vue app bootstrap');
|
||||||
|
},
|
||||||
|
// 更新
|
||||||
|
update() {
|
||||||
|
console.log('vue app update');
|
||||||
|
},
|
||||||
|
// 卸载
|
||||||
|
unmount() {
|
||||||
|
console.log('vue app unmount');
|
||||||
|
app?.unmount();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// let app;
|
||||||
|
// if (!qiankunWindow.__POWERED_BY_QIANKUN__) {
|
||||||
|
// createApp(App).use(pinia).use(router).use(ElementPlus).mount('#app');
|
||||||
|
// } else {
|
||||||
|
// renderWithQiankun({
|
||||||
|
// // 子应用挂载
|
||||||
|
// mount(props) {
|
||||||
|
// app = createApp(App);
|
||||||
|
// directive(app);
|
||||||
|
// other.elSvg(app);
|
||||||
|
// app.use(pinia).use(router).use(ElementPlus).mount(props.container.querySelector('#app'));
|
||||||
|
// },
|
||||||
|
// // 只有子应用第一次加载会触发
|
||||||
|
// bootstrap() {
|
||||||
|
// console.log('vue app bootstrap');
|
||||||
|
// },
|
||||||
|
// // 更新
|
||||||
|
// update() {
|
||||||
|
// console.log('vue app update');
|
||||||
|
// },
|
||||||
|
// // 卸载
|
||||||
|
// unmount() {
|
||||||
|
// console.log('vue app unmount');
|
||||||
|
// app?.unmount();
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
|
||||||
|
// directive(app);
|
||||||
|
// other.elSvg(app);
|
||||||
|
|
||||||
|
// app.use(pinia).use(router).use(ElementPlus).mount('#app');
|
||||||
|
|
|
@ -31,7 +31,7 @@ const { isRequestRoutes } = themeConfig.value;
|
||||||
* @link 参考:https://next.router.vuejs.org/zh/api/#createrouter
|
* @link 参考:https://next.router.vuejs.org/zh/api/#createrouter
|
||||||
*/
|
*/
|
||||||
export const router = createRouter({
|
export const router = createRouter({
|
||||||
history: createWebHistory(),
|
history: createWebHistory(import.meta.env.BASE_URL),
|
||||||
/**
|
/**
|
||||||
* 说明:
|
* 说明:
|
||||||
* 1、notFoundAndNoPower 默认添加 404、401 界面,防止一直提示 No match found for location with path 'xxx'
|
* 1、notFoundAndNoPower 默认添加 404、401 界面,防止一直提示 No match found for location with path 'xxx'
|
||||||
|
|
|
@ -25,7 +25,7 @@ export const dynamicRoutes = [
|
||||||
component: () => import('/@/layout/index.vue'),
|
component: () => import('/@/layout/index.vue'),
|
||||||
redirect: '/southdirection',
|
redirect: '/southdirection',
|
||||||
meta: {
|
meta: {
|
||||||
isKeepAlive: true,
|
// isKeepAlive: true,
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
// {
|
// {
|
||||||
|
|
|
@ -78,7 +78,7 @@ export const useThemeConfig = defineStore('themeConfig', {
|
||||||
* 界面显示
|
* 界面显示
|
||||||
*/
|
*/
|
||||||
// 是否开启侧边栏 Logo
|
// 是否开启侧边栏 Logo
|
||||||
isShowLogo: false,
|
isShowLogo: true,
|
||||||
// 初始化变量,用于 el-scrollbar 的高度更新,请勿删除
|
// 初始化变量,用于 el-scrollbar 的高度更新,请勿删除
|
||||||
isShowLogoChange: false,
|
isShowLogoChange: false,
|
||||||
// 是否开启 Breadcrumb,强制经典、横向布局不显示
|
// 是否开启 Breadcrumb,强制经典、横向布局不显示
|
||||||
|
|
|
@ -3,9 +3,15 @@ import { ElMessage, ElMessageBox } from 'element-plus';
|
||||||
import qs from 'qs';
|
import qs from 'qs';
|
||||||
import { Session } from '/@/utils/storage';
|
import { Session } from '/@/utils/storage';
|
||||||
|
|
||||||
|
let config = null;
|
||||||
|
if(window.baseConfig){
|
||||||
|
config = window.baseConfig;
|
||||||
|
}else{
|
||||||
|
config = JSON.parse(localStorage.getItem('baseConfig'));
|
||||||
|
}
|
||||||
// 配置新建一个 axios 实例
|
// 配置新建一个 axios 实例
|
||||||
const service = axios.create({
|
const service = axios.create({
|
||||||
baseURL: `${window.baseConfig.protocol}${window.baseConfig.ip}${window.baseConfig.port ? ':'+window.baseConfig.port : ''}${window.baseConfig.prodApi ? window.baseConfig.prodApi : ''}`,
|
baseURL: `${config.protocol}${config.ip}${config.port ? ':'+config.port : ''}${config.prodApi ? config.prodApi : ''}`,
|
||||||
timeout: 50000,
|
timeout: 50000,
|
||||||
headers: { 'Content-Type': 'application/json' },
|
headers: { 'Content-Type': 'application/json' },
|
||||||
paramsSerializer: {
|
paramsSerializer: {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// 字体图标 url
|
// 字体图标 url
|
||||||
const cssCdnUrlList = ['//at.alicdn.com/t/c/font_2298093_rnp72ifj3ba.css', '//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css'];
|
const cssCdnUrlList = ['//at.alicdn.com/t/c/font_2298093_rnp72ifj3ba.css', '//cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css'];
|
||||||
// 第三方 js url
|
// 第三方 js url
|
||||||
const jsCdnUrlList = [];
|
const jsCdnUrlList = [];
|
||||||
|
|
||||||
|
|
|
@ -71,9 +71,14 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted, onUnmounted } from 'vue';
|
import { ref, onMounted, onUnmounted, watch } from 'vue';
|
||||||
import { ElMessage } from 'element-plus';
|
import { ElMessage } from 'element-plus';
|
||||||
import { endDeviceCollect, getDeviceCollectli, getDeviceEquipli, startDeviceCollect } from '/@/api/gateway/collectdatamonitor';
|
import { endDeviceCollect, getDeviceCollectli, getDeviceEquipli, startDeviceCollect } from '/@/api/gateway/collectdatamonitor';
|
||||||
|
import { storeToRefs } from 'pinia';
|
||||||
|
import { useThemeConfig } from '/@/stores/themeConfig';
|
||||||
|
|
||||||
|
const storesThemeConfig = useThemeConfig();
|
||||||
|
const { themeConfig } = storeToRefs(storesThemeConfig);
|
||||||
|
|
||||||
const deviceConfigTableRef = ref();
|
const deviceConfigTableRef = ref();
|
||||||
const deviceDataTableRef = ref();
|
const deviceDataTableRef = ref();
|
||||||
|
@ -217,9 +222,19 @@ const deviceConfigClick = (e) => {
|
||||||
//更新表格宽度
|
//更新表格宽度
|
||||||
const handleResize = () => {
|
const handleResize = () => {
|
||||||
deviceDataTableRef.value.doLayout();
|
deviceDataTableRef.value.doLayout();
|
||||||
tabelBox.value = window.innerWidth - 180 - 10;
|
tabelBox.value = themeConfig.value.isCollapse?window.innerWidth - 64 - 10:window.innerWidth - 180 - 10;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => themeConfig.value.isCollapse,
|
||||||
|
() => {
|
||||||
|
handleResize();
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deep: true,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
window.addEventListener('resize', handleResize);
|
window.addEventListener('resize', handleResize);
|
||||||
getDeviceList();
|
getDeviceList();
|
||||||
|
|
|
@ -113,10 +113,10 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="data-config">
|
<div class="data-config">
|
||||||
<h2>上报测点 {{ activeDeviceConfig.taskId }}</h2>
|
<h2>上报测点 {{ activeTask.taskId}}</h2>
|
||||||
<div class="table-box">
|
<div class="table-box">
|
||||||
<el-table
|
<el-table
|
||||||
:data="activeDeviceConfig.dataIdEntire"
|
:data="activeTask.dataIdEntire"
|
||||||
border
|
border
|
||||||
size="small"
|
size="small"
|
||||||
height="100%"
|
height="100%"
|
||||||
|
@ -132,7 +132,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-dialog v-model="collectionModelShow" title="加解密配置" width="500" :before-close="handleClose">
|
<el-dialog v-model="collectionModelShow" title="加解密配置" width="500">
|
||||||
<el-form ref="collectionRef" :model="collectionForm" label-width="auto" status-icon>
|
<el-form ref="collectionRef" :model="collectionForm" label-width="auto" status-icon>
|
||||||
<h3>加密算法配置</h3>
|
<h3>加密算法配置</h3>
|
||||||
<el-form-item label="启动">
|
<el-form-item label="启动">
|
||||||
|
@ -249,7 +249,11 @@
|
||||||
import { reactive, ref, onMounted, onUnmounted, computed, watch } from 'vue';
|
import { reactive, ref, onMounted, onUnmounted, computed, watch } from 'vue';
|
||||||
import { ElMessage, ElMessageBox } from 'element-plus';
|
import { ElMessage, ElMessageBox } from 'element-plus';
|
||||||
import { getPlatformConf, setPlatformConf } from '/@/api/gateway/northboundtask';
|
import { getPlatformConf, setPlatformConf } from '/@/api/gateway/northboundtask';
|
||||||
|
import { storeToRefs } from 'pinia';
|
||||||
|
import { useThemeConfig } from '/@/stores/themeConfig';
|
||||||
|
|
||||||
|
const storesThemeConfig = useThemeConfig();
|
||||||
|
const { themeConfig } = storeToRefs(storesThemeConfig);
|
||||||
//上报策略
|
//上报策略
|
||||||
const uploadModeList = ref([
|
const uploadModeList = ref([
|
||||||
{ value: 'timer 10', link: 'timer 10' },
|
{ value: 'timer 10', link: 'timer 10' },
|
||||||
|
@ -361,7 +365,6 @@ const delDeviceConfig = (index) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const getDeviceConfig = () => {
|
const getDeviceConfig = () => {
|
||||||
console.log('获取配置');
|
|
||||||
getPlatformConf({})
|
getPlatformConf({})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
// 成功响应后的处理
|
// 成功响应后的处理
|
||||||
|
@ -388,15 +391,17 @@ const getDeviceConfig = () => {
|
||||||
}) || [];
|
}) || [];
|
||||||
// taskList.value = taskDataList;
|
// taskList.value = taskDataList;
|
||||||
console.log('格式化后数据', taskList.value);
|
console.log('格式化后数据', taskList.value);
|
||||||
|
// debugger
|
||||||
if (!platConfigList.value.length) {
|
if (!platConfigList.value.length) {
|
||||||
addDeviceConfig();
|
addDeviceConfig();
|
||||||
}
|
}
|
||||||
if (platConfigList.value.length) {
|
if (taskList.value.length) {
|
||||||
if (platConfigList.value.length > ActiveRowIndex.value) {
|
if (taskList.value.length > ActiveRowIndex.value) {
|
||||||
activeDeviceConfig.value = platConfigList.value[ActiveRowIndex.value];
|
activeTask.value = taskList.value[ActiveRowIndex.value];
|
||||||
} else {
|
} else {
|
||||||
activeDeviceConfig.value = platConfigList.value[0];
|
activeTask.value = taskList.value[0];
|
||||||
}
|
}
|
||||||
|
platConfigTableRef.value.toggleRowSelection(activeTask.value, true);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ElMessage.error(response.message);
|
ElMessage.error(response.message);
|
||||||
|
@ -478,6 +483,13 @@ const editCollection = () => {
|
||||||
collectionModelShow.value = false;
|
collectionModelShow.value = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const activeTask = ref({
|
||||||
|
taskId: '',
|
||||||
|
dataIdEntire: [],
|
||||||
|
taskType: '',
|
||||||
|
uploadMode: 'timer 1 || change 0.1'
|
||||||
|
});
|
||||||
|
|
||||||
const activeDeviceConfig = ref({
|
const activeDeviceConfig = ref({
|
||||||
PlatformIp: '',
|
PlatformIp: '',
|
||||||
tasks: ['T1', 'T2', 'T3', 'T4', 'T5'],
|
tasks: ['T1', 'T2', 'T3', 'T4', 'T5'],
|
||||||
|
@ -527,15 +539,23 @@ const activeDeviceConfig = ref({
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => ({ ...activeDeviceConfig.value }),
|
() => ({ ...activeDeviceConfig.value }),
|
||||||
(newVal) => {
|
(newVal) => {
|
||||||
console.log('数据变化', newVal);
|
|
||||||
platConfigList.value[ActiveRowIndex.value] = newVal;
|
platConfigList.value[ActiveRowIndex.value] = newVal;
|
||||||
},
|
},
|
||||||
{ deep: true }
|
{ deep: true }
|
||||||
);
|
);
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => ({ ...activeTask.value }),
|
||||||
|
(newVal) => {
|
||||||
|
taskList.value[ActiveRowIndex.value] = newVal;
|
||||||
|
},
|
||||||
|
{ deep: true }
|
||||||
|
);
|
||||||
|
|
||||||
// const saveDeviceDataConfig = () => {
|
// const saveDeviceDataConfig = () => {
|
||||||
// platConfigList.value[ActiveRowIndex.value] = activeDeviceConfig.value;
|
// platConfigList.value[ActiveRowIndex.value] = activeDeviceConfig.value;
|
||||||
// }
|
// }
|
||||||
|
@ -549,19 +569,30 @@ const tableRowClassName = ({ row, rowIndex }) => {
|
||||||
//选择设备配置
|
//选择设备配置
|
||||||
const taskConfigClick = (e) => {
|
const taskConfigClick = (e) => {
|
||||||
console.log(`current page:`, e);
|
console.log(`current page:`, e);
|
||||||
activeDeviceConfig.value = e;
|
// activeDeviceConfig.value = e;
|
||||||
|
activeTask.value = e;
|
||||||
platConfigTableRef.value.toggleRowSelection(e);
|
platConfigTableRef.value.toggleRowSelection(e);
|
||||||
|
|
||||||
ActiveRowIndex.value = platConfigList.value.indexOf(e);
|
ActiveRowIndex.value = taskList.value.indexOf(e);
|
||||||
// e.isDoubleClicked = !e.isDoubleClicked;
|
// e.isDoubleClicked = !e.isDoubleClicked;
|
||||||
};
|
};
|
||||||
|
|
||||||
//更新表格宽度
|
//更新表格宽度
|
||||||
const handleResize = () => {
|
const handleResize = () => {
|
||||||
deviceDataTableRef.value.doLayout();
|
deviceDataTableRef.value.doLayout();
|
||||||
tabelBox.value = window.innerWidth - 180 - 10;
|
tabelBox.value = themeConfig.value.isCollapse?window.innerWidth - 64 - 10:window.innerWidth - 180 - 10;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => themeConfig.value.isCollapse,
|
||||||
|
() => {
|
||||||
|
handleResize();
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deep: true,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
window.addEventListener('resize', handleResize);
|
window.addEventListener('resize', handleResize);
|
||||||
getDeviceConfig();
|
getDeviceConfig();
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
height="187"
|
height="187"
|
||||||
:style="{ width: tabelBox + 'px', background: '#f2f2f2' }"
|
:style="{ width: tabelBox + 'px', background: '#f2f2f2' }"
|
||||||
empty-text="配置为空"
|
empty-text="配置为空"
|
||||||
row-key="index"
|
row-key="id"
|
||||||
@row-click="deviceConfigClick"
|
@row-click="deviceConfigClick"
|
||||||
>
|
>
|
||||||
<el-table-column type="index" label="序号" align="center" width="60" />
|
<el-table-column type="index" label="序号" align="center" width="60" />
|
||||||
|
@ -85,33 +85,34 @@
|
||||||
size="small"
|
size="small"
|
||||||
height="100%"
|
height="100%"
|
||||||
:style="{ width: tabelBox + 'px' }"
|
:style="{ width: tabelBox + 'px' }"
|
||||||
|
row-key="index"
|
||||||
empty-text="配置为空"
|
empty-text="配置为空"
|
||||||
>
|
>
|
||||||
<el-table-column type="index" label="序号" align="center" width="60" fixed />
|
<el-table-column type="index" label="序号" align="center" width="60" fixed />
|
||||||
<el-table-column prop="id" label="数据ID" fixed align="center">
|
<el-table-column prop="id" label="数据ID" fixed align="center" min-width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input v-model="scope.row.id" placeholder="请输入数据ID" />
|
<el-input v-model="scope.row.id" placeholder="请输入数据ID" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="dataName" label="数据名" fixed align="center">
|
<el-table-column prop="dataName" label="数据名" fixed align="center" min-width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input v-model="scope.row.dataName" placeholder="请输入数据名" />
|
<el-input v-model="scope.row.dataName" placeholder="请输入数据名" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="dataAddress" label="数据地址" align="center">
|
<el-table-column prop="dataAddress" label="数据地址" align="center" min-width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input v-model="scope.row.dataAddress" placeholder="请输入数据地址" />
|
<el-input v-model="scope.row.dataAddress" placeholder="请输入数据地址" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="dataDesc" label="描述" align="center">
|
<el-table-column prop="dataDesc" label="描述" align="center" min-width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input v-model="scope.row.dataDesc" placeholder="请输入描述" />
|
<el-input v-model="scope.row.dataDesc" placeholder="请输入描述" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="dataDisplay" label="数据类型" width="120" align="center">
|
<el-table-column prop="dataDisplay" label="数据类型" min-width="120" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-select v-model="scope.row.dataDisplay" placeholder="请选择数据类型" @change="changedataDisplay($event, scope.$index)">
|
<el-select v-model="scope.row.dataDisplay" placeholder="请选择数据类型" @change="changedataDisplay($event, scope.$index)">
|
||||||
<el-option v-for="item in dataTypeArray" :key="item.type" :value="item.type">{{ item.type }}</el-option>
|
<el-option v-for="(item,index) in dataTypeArray" :key="index" :value="item.type">{{ item.type }}</el-option>
|
||||||
<!-- <el-option value="bool">bool</el-option>-->
|
<!-- <el-option value="bool">bool</el-option>-->
|
||||||
<!-- <el-option value="int8">int8</el-option>-->
|
<!-- <el-option value="int8">int8</el-option>-->
|
||||||
<!-- <el-option value="uint8">uint8</el-option>-->
|
<!-- <el-option value="uint8">uint8</el-option>-->
|
||||||
|
@ -144,12 +145,12 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="datalen" label="长度(字节)" width="120" align="center">
|
<el-table-column prop="datalen" label="长度(字节)" min-width="80" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input v-model="scope.row.datalen" type="number" :disabled="!scope.row.datalenShow" placeholder="请输入长度(字节)" />
|
<el-input v-model="scope.row.datalen" type="number" :disabled="!scope.row.datalenShow" placeholder="请输入长度(字节)" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="dataUnit" label="单位" width="70" align="center">
|
<el-table-column prop="dataUnit" label="单位" min-width="70" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input v-model="scope.row.dataUnit" placeholder="请输入单位" />
|
<el-input v-model="scope.row.dataUnit" placeholder="请输入单位" />
|
||||||
</template>
|
</template>
|
||||||
|
@ -163,22 +164,22 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="proportion" label="比例" width="70" align="center">
|
<el-table-column prop="proportion" label="比例" min-width="80" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input v-model="scope.row.proportion" placeholder="请输入比例" />
|
<el-input v-model="scope.row.proportion" placeholder="请输入比例" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="offset" label="偏置" width="60" align="center">
|
<el-table-column prop="offset" label="偏置" min-width="60" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input v-model="scope.row.offset" placeholder="请输入偏置" />
|
<el-input v-model="scope.row.offset" placeholder="请输入偏置" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="northCalcParam.decimal.numBits" label="小数位" width="60" align="center">
|
<el-table-column prop="northCalcParam.decimal.numBits" label="小数位" min-width="60" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input v-model="scope.row.northCalcParam.decimal.numBits" placeholder="请输入小数位" />
|
<el-input v-model="scope.row.northCalcParam.decimal.numBits" placeholder="请输入小数位" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="northCalcParam.decimal.way" label="取整" align="center">
|
<el-table-column prop="northCalcParam.decimal.way" label="取整" width="120" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-select v-model="scope.row.northCalcParam.decimal.way" placeholder="请选择取整">
|
<el-select v-model="scope.row.northCalcParam.decimal.way" placeholder="请选择取整">
|
||||||
<el-option value="rounding" label="四舍五入"></el-option>
|
<el-option value="rounding" label="四舍五入"></el-option>
|
||||||
|
@ -205,14 +206,14 @@
|
||||||
<el-switch v-model="scope.row.driveFlag.isConclude_W" />
|
<el-switch v-model="scope.row.driveFlag.isConclude_W" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="taskId" label="任务ID" align="center">
|
<el-table-column prop="taskId" label="任务ID" align="center" min-width="80">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-select v-model="scope.row.taskId" placeholder="请选择任务ID" @change="changeTaskId($event, scope.$index)">
|
<el-select v-model="scope.row.taskId" placeholder="请选择任务ID" @change="changeTaskId($event, scope.$index)">
|
||||||
<el-option v-for="(item, index) in taskList" :key="index" :value="item.taskId" :label="item.taskId"></el-option>
|
<el-option v-for="(item, index) in taskList" :key="index" :value="item.taskId" :label="item.taskId"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="uploadMode" label="上报策略" align="center">
|
<el-table-column prop="uploadMode" label="上报策略" align="center" min-width="160">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<!-- <el-select v-model="scope.row.uploadMode" placeholder="请选择上报策略">-->
|
<!-- <el-select v-model="scope.row.uploadMode" placeholder="请选择上报策略">-->
|
||||||
<!-- <el-option :value="item.uploadMode" v-for="(item,index) in taskList" :key="index" :label="item.uploadMode"></el-option>-->
|
<!-- <el-option :value="item.uploadMode" v-for="(item,index) in taskList" :key="index" :label="item.uploadMode"></el-option>-->
|
||||||
|
@ -235,7 +236,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-dialog v-model="collectionModelShow" title="采集配置" width="500" :before-close="handleClose">
|
<el-dialog v-model="collectionModelShow" title="采集配置" width="500">
|
||||||
<el-form ref="collectionRef" :model="collectionForm" label-width="auto" status-icon>
|
<el-form ref="collectionRef" :model="collectionForm" label-width="auto" status-icon>
|
||||||
<el-form-item label="启动">
|
<el-form-item label="启动">
|
||||||
<el-switch v-model="collectionForm.collectConf.isRunCmd" />
|
<el-switch v-model="collectionForm.collectConf.isRunCmd" />
|
||||||
|
@ -364,37 +365,47 @@ import FileSaver from 'file-saver';
|
||||||
import * as XLSX from 'xlsx';
|
import * as XLSX from 'xlsx';
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import { getDeviceConf, getSerialPortDataList, setDeviceConf } from '/@/api/gateway/southdirection';
|
import { getDeviceConf, getSerialPortDataList, setDeviceConf } from '/@/api/gateway/southdirection';
|
||||||
|
import { storeToRefs } from 'pinia';
|
||||||
|
import { useThemeConfig } from '/@/stores/themeConfig';
|
||||||
|
|
||||||
|
const storesThemeConfig = useThemeConfig();
|
||||||
|
const { themeConfig } = storeToRefs(storesThemeConfig);
|
||||||
|
|
||||||
const dataTypeArray = ref([
|
const dataTypeArray = ref([
|
||||||
{ type: 'bool', datalen: 1, show: false },
|
{ type: 'bool', datalen: 1, show: false },
|
||||||
|
{ type: 'char', datalen: 1, show: false },
|
||||||
|
{ type: 'string', datalen: null, show: true },
|
||||||
{ type: 'int8', datalen: 1, show: false },
|
{ type: 'int8', datalen: 1, show: false },
|
||||||
{ type: 'uint8', datalen: 1, show: false },
|
{ type: 'uint8', datalen: 1, show: false },
|
||||||
{ type: 'int16', datalen: 2, show: false },
|
{ type: 'int16', datalen: 2, show: false },
|
||||||
{ type: 'uint16', datalen: 2, show: false },
|
|
||||||
{ type: 'float', datalen: 4, show: false },
|
|
||||||
{ type: 'int32', datalen: 4, show: false },
|
|
||||||
{ type: 'uint32', datalen: 4, show: false },
|
|
||||||
{ type: 'int64', datalen: 8, show: false },
|
|
||||||
{ type: 'uint64', datalen: 8, show: false },
|
|
||||||
{ type: 'double', datalen: 8, show: false },
|
|
||||||
{ type: 'char', datalen: 1, show: false },
|
|
||||||
{ type: 'string', datalen: null, show: true },
|
|
||||||
{ type: 'int16_AB', datalen: 2, show: false },
|
{ type: 'int16_AB', datalen: 2, show: false },
|
||||||
{ type: 'int16_BA', datalen: 2, show: false },
|
{ type: 'int16_BA', datalen: 2, show: false },
|
||||||
|
{ type: 'uint16', datalen: 2, show: false },
|
||||||
{ type: 'uint16_AB', datalen: 2, show: false },
|
{ type: 'uint16_AB', datalen: 2, show: false },
|
||||||
{ type: 'uint16_BA', datalen: 2, show: false },
|
{ type: 'uint16_BA', datalen: 2, show: false },
|
||||||
{ type: 'float_ABCD', datalen: 4, show: false },
|
{ type: 'float', datalen: 4, show: false },
|
||||||
{ type: 'float_BADC', datalen: 4, show: false },
|
{ type: 'float32_ABCD', datalen: 4, show: false },
|
||||||
{ type: 'float_CDAB', datalen: 4, show: false },
|
{ type: 'float32_BADC', datalen: 4, show: false },
|
||||||
{ type: 'float_DCBA', datalen: 4, show: false },
|
{ type: 'float32_CDAB', datalen: 4, show: false },
|
||||||
|
{ type: 'float32_DCBA', datalen: 4, show: false },
|
||||||
|
{ type: 'float64_ABCD', datalen: 8, show: false },
|
||||||
|
{ type: 'float64_BADC', datalen: 8, show: false },
|
||||||
|
{ type: 'float64_CDAB', datalen: 8, show: false },
|
||||||
|
{ type: 'float64_DCBA', datalen: 8, show: false },
|
||||||
|
{ type: 'int32', datalen: 4, show: false },
|
||||||
{ type: 'int32_ABCD', datalen: 4, show: false },
|
{ type: 'int32_ABCD', datalen: 4, show: false },
|
||||||
{ type: 'int32_BADC', datalen: 4, show: false },
|
{ type: 'int32_BADC', datalen: 4, show: false },
|
||||||
{ type: 'int32_CDAB', datalen: 4, show: false },
|
{ type: 'int32_CDAB', datalen: 4, show: false },
|
||||||
{ type: 'int32_DCBA', datalen: 4, show: false },
|
{ type: 'int32_DCBA', datalen: 4, show: false },
|
||||||
|
{ type: 'uint32', datalen: 4, show: false },
|
||||||
{ type: 'uint32_ABCD', datalen: 4, show: false },
|
{ type: 'uint32_ABCD', datalen: 4, show: false },
|
||||||
{ type: 'uint32_BADC', datalen: 4, show: false },
|
{ type: 'uint32_BADC', datalen: 4, show: false },
|
||||||
{ type: 'uint32_CDAB', datalen: 4, show: false },
|
{ type: 'uint32_CDAB', datalen: 4, show: false },
|
||||||
{ type: 'uint32_DCBA', datalen: 4, show: false },
|
{ type: 'uint32_DCBA', datalen: 4, show: false },
|
||||||
|
{ type: 'int64', datalen: 8, show: false },
|
||||||
|
{ type: 'uint64', datalen: 8, show: false },
|
||||||
|
// { type: 'double', datalen: 8, show: false },
|
||||||
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
//上报策略
|
//上报策略
|
||||||
|
@ -423,6 +434,7 @@ const deviceConfigList = ref([]);
|
||||||
|
|
||||||
const protocolList = ref([
|
const protocolList = ref([
|
||||||
{ label: 'ModbusTCP', value: 'ModbusTCP' },
|
{ label: 'ModbusTCP', value: 'ModbusTCP' },
|
||||||
|
{ label: 'PluginTCP', value: 'PluginTCP' },
|
||||||
{ label: 'DLT645_2007', value: 'DLT645_2007' },
|
{ label: 'DLT645_2007', value: 'DLT645_2007' },
|
||||||
{ label: 'gycan', value: 'gycan' },
|
{ label: 'gycan', value: 'gycan' },
|
||||||
]);
|
]);
|
||||||
|
@ -481,7 +493,6 @@ const delDeviceConfig = (index) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const getDeviceConfig = () => {
|
const getDeviceConfig = () => {
|
||||||
console.log('获取配置');
|
|
||||||
getDeviceConf({})
|
getDeviceConf({})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
// 成功响应后的处理
|
// 成功响应后的处理
|
||||||
|
@ -490,6 +501,16 @@ const getDeviceConfig = () => {
|
||||||
//缓存上下行主题
|
//缓存上下行主题
|
||||||
deviceConfigList.value = response.data.equips || [];
|
deviceConfigList.value = response.data.equips || [];
|
||||||
taskList.value = response.data.tasks || [];
|
taskList.value = response.data.tasks || [];
|
||||||
|
if(response.data.tasks && response.data.tasks.length > 0 ){
|
||||||
|
uploadModeList.value = response.data.tasks.map(item=>{
|
||||||
|
return {
|
||||||
|
value: item.uploadMode,
|
||||||
|
link: item.uploadMode,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
uploadModeList.value = [];
|
||||||
|
}
|
||||||
if (deviceConfigList.value.length) {
|
if (deviceConfigList.value.length) {
|
||||||
if (deviceConfigList.value.length > ActiveRowIndex.value) {
|
if (deviceConfigList.value.length > ActiveRowIndex.value) {
|
||||||
activeDeviceConfig.value = deviceConfigList.value[ActiveRowIndex.value];
|
activeDeviceConfig.value = deviceConfigList.value[ActiveRowIndex.value];
|
||||||
|
@ -688,7 +709,7 @@ const openConnectModel = (row) => {
|
||||||
}
|
}
|
||||||
// getSerialPortList()
|
// getSerialPortList()
|
||||||
dlt645ModelShow.value = true;
|
dlt645ModelShow.value = true;
|
||||||
} else if (row.protocol.libName === 'ModbusTCP') {
|
} else if (row.protocol.libName === 'ModbusTCP' || row.protocol.libName === 'PluginTCP') {
|
||||||
tcpForm.value.link = row.interfaceParams.link;
|
tcpForm.value.link = row.interfaceParams.link;
|
||||||
tcpModelShow.value = true;
|
tcpModelShow.value = true;
|
||||||
} else {
|
} else {
|
||||||
|
@ -732,7 +753,7 @@ const activeDeviceConfig = ref({
|
||||||
authority: 'RW', // 读写权限
|
authority: 'RW', // 读写权限
|
||||||
dataAddress: '', // 数据地址
|
dataAddress: '', // 数据地址
|
||||||
dataDesc: '', // 数据描述
|
dataDesc: '', // 数据描述
|
||||||
dataDisplay: 'int16', // 数据展示格式
|
dataDisplay: 'uint8', // 数据展示格式
|
||||||
dataName: '', // 数据名称
|
dataName: '', // 数据名称
|
||||||
dataUnit: '', // 数据单位
|
dataUnit: '', // 数据单位
|
||||||
driveFlag: { isConclude_R: true, isConclude_W: true }, // 驱动标志
|
driveFlag: { isConclude_R: true, isConclude_W: true }, // 驱动标志
|
||||||
|
@ -758,7 +779,7 @@ const addDeviceDataConfig = () => {
|
||||||
authority: 'RW', // 读写权限
|
authority: 'RW', // 读写权限
|
||||||
dataAddress: '', // 数据地址
|
dataAddress: '', // 数据地址
|
||||||
dataDesc: '', // 数据描述
|
dataDesc: '', // 数据描述
|
||||||
dataDisplay: 'int16', // 数据展示格式
|
dataDisplay: 'uint8', // 数据展示格式
|
||||||
datalen: 2, // 数据长度
|
datalen: 2, // 数据长度
|
||||||
datalenShow: false, // 数据长度是否可编辑
|
datalenShow: false, // 数据长度是否可编辑
|
||||||
dataName: '', // 数据名称
|
dataName: '', // 数据名称
|
||||||
|
@ -821,8 +842,17 @@ const deviceConfigClick = (e, event, column) => {
|
||||||
//更新表格宽度
|
//更新表格宽度
|
||||||
const handleResize = () => {
|
const handleResize = () => {
|
||||||
deviceDataTableRef.value.doLayout();
|
deviceDataTableRef.value.doLayout();
|
||||||
tabelBox.value = window.innerWidth - 180 - 10;
|
tabelBox.value = themeConfig.value.isCollapse?window.innerWidth - 64 - 10:window.innerWidth - 180 - 10;
|
||||||
};
|
};
|
||||||
|
watch(
|
||||||
|
() => themeConfig.value.isCollapse,
|
||||||
|
() => {
|
||||||
|
handleResize();
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deep: true,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
const exportDeviceConfigXlsx = () => {
|
const exportDeviceConfigXlsx = () => {
|
||||||
const workbook = XLSX.utils.book_new();
|
const workbook = XLSX.utils.book_new();
|
||||||
|
|
|
@ -47,7 +47,7 @@ import { defineAsyncComponent, onMounted, reactive, computed } from 'vue';
|
||||||
import { storeToRefs } from 'pinia';
|
import { storeToRefs } from 'pinia';
|
||||||
import { useThemeConfig } from '/@/stores/themeConfig';
|
import { useThemeConfig } from '/@/stores/themeConfig';
|
||||||
import { NextLoading } from '/@/utils/loading';
|
import { NextLoading } from '/@/utils/loading';
|
||||||
import logoMini from '/@/assets/logo-mini.svg';
|
import logoMini from '/@/assets/logo-mini.png';
|
||||||
import loginMain from '/@/assets/login-main.svg';
|
import loginMain from '/@/assets/login-main.svg';
|
||||||
import loginBg from '/@/assets/login-bg.svg';
|
import loginBg from '/@/assets/login-bg.svg';
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import { defineConfig, loadEnv } from 'vite';
|
||||||
import vueSetupExtend from 'vite-plugin-vue-setup-extend-plus';
|
import vueSetupExtend from 'vite-plugin-vue-setup-extend-plus';
|
||||||
import viteCompression from 'vite-plugin-compression';
|
import viteCompression from 'vite-plugin-compression';
|
||||||
import { buildConfig } from './src/utils/build';
|
import { buildConfig } from './src/utils/build';
|
||||||
|
import qiankun from 'vite-plugin-qiankun';
|
||||||
|
|
||||||
const pathResolve = (dir) => {
|
const pathResolve = (dir) => {
|
||||||
return resolve(__dirname, '.', dir);
|
return resolve(__dirname, '.', dir);
|
||||||
|
@ -16,16 +17,21 @@ const alias = {
|
||||||
const viteConfig = defineConfig((mode) => {
|
const viteConfig = defineConfig((mode) => {
|
||||||
const env = loadEnv(mode.mode, process.cwd());
|
const env = loadEnv(mode.mode, process.cwd());
|
||||||
return {
|
return {
|
||||||
plugins: [vue(), vueSetupExtend(), viteCompression(), JSON.parse(env.VITE_OPEN_CDN) ? buildConfig.cdn() : null],
|
plugins: [vue(), vueSetupExtend(), viteCompression(), JSON.parse(env.VITE_OPEN_CDN) ? buildConfig.cdn() : null,qiankun('gy-gateway', { // 配置qiankun插件
|
||||||
|
useDevMode: true
|
||||||
|
})],
|
||||||
root: process.cwd(),
|
root: process.cwd(),
|
||||||
resolve: { alias },
|
resolve: { alias },
|
||||||
base: mode.command === 'serve' ? './' : env.VITE_PUBLIC_PATH,
|
// base: mode.command === 'serve' ? '/gy-gateway' : '/gy-gateway',
|
||||||
|
base: mode.command === 'serve' ? '/' : '/',
|
||||||
optimizeDeps: {
|
optimizeDeps: {
|
||||||
exclude: ['vue-demi'],
|
exclude: ['vue-demi'],
|
||||||
},
|
},
|
||||||
server: {
|
server: {
|
||||||
host: '0.0.0.0',
|
host: '0.0.0.0',
|
||||||
port: env.VITE_PORT,
|
port: env.VITE_PORT,
|
||||||
|
cors: true,
|
||||||
|
origin: 'http://localhost:4466',
|
||||||
open: JSON.parse(env.VITE_OPEN),
|
open: JSON.parse(env.VITE_OPEN),
|
||||||
hmr: true,
|
hmr: true,
|
||||||
proxy: {
|
proxy: {
|
||||||
|
|
158
yarn.lock
158
yarn.lock
|
@ -597,6 +597,35 @@ chalk@^4.0.0, chalk@^4.1.2:
|
||||||
ansi-styles "^4.1.0"
|
ansi-styles "^4.1.0"
|
||||||
supports-color "^7.1.0"
|
supports-color "^7.1.0"
|
||||||
|
|
||||||
|
cheerio-select@^2.1.0:
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.npmmirror.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4"
|
||||||
|
integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==
|
||||||
|
dependencies:
|
||||||
|
boolbase "^1.0.0"
|
||||||
|
css-select "^5.1.0"
|
||||||
|
css-what "^6.1.0"
|
||||||
|
domelementtype "^2.3.0"
|
||||||
|
domhandler "^5.0.3"
|
||||||
|
domutils "^3.0.1"
|
||||||
|
|
||||||
|
cheerio@^1.0.0-rc.10:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.npmmirror.com/cheerio/-/cheerio-1.0.0.tgz#1ede4895a82f26e8af71009f961a9b8cb60d6a81"
|
||||||
|
integrity sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==
|
||||||
|
dependencies:
|
||||||
|
cheerio-select "^2.1.0"
|
||||||
|
dom-serializer "^2.0.0"
|
||||||
|
domhandler "^5.0.3"
|
||||||
|
domutils "^3.1.0"
|
||||||
|
encoding-sniffer "^0.2.0"
|
||||||
|
htmlparser2 "^9.1.0"
|
||||||
|
parse5 "^7.1.2"
|
||||||
|
parse5-htmlparser2-tree-adapter "^7.0.0"
|
||||||
|
parse5-parser-stream "^7.1.2"
|
||||||
|
undici "^6.19.5"
|
||||||
|
whatwg-mimetype "^4.0.0"
|
||||||
|
|
||||||
"chokidar@>=3.0.0 <4.0.0":
|
"chokidar@>=3.0.0 <4.0.0":
|
||||||
version "3.5.3"
|
version "3.5.3"
|
||||||
resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz"
|
resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz"
|
||||||
|
@ -664,6 +693,22 @@ cross-spawn@^7.0.2:
|
||||||
shebang-command "^2.0.0"
|
shebang-command "^2.0.0"
|
||||||
which "^2.0.1"
|
which "^2.0.1"
|
||||||
|
|
||||||
|
css-select@^5.1.0:
|
||||||
|
version "5.1.0"
|
||||||
|
resolved "https://registry.npmmirror.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6"
|
||||||
|
integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==
|
||||||
|
dependencies:
|
||||||
|
boolbase "^1.0.0"
|
||||||
|
css-what "^6.1.0"
|
||||||
|
domhandler "^5.0.2"
|
||||||
|
domutils "^3.0.1"
|
||||||
|
nth-check "^2.0.1"
|
||||||
|
|
||||||
|
css-what@^6.1.0:
|
||||||
|
version "6.1.0"
|
||||||
|
resolved "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4"
|
||||||
|
integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==
|
||||||
|
|
||||||
cssesc@^3.0.0:
|
cssesc@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz"
|
resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz"
|
||||||
|
@ -708,6 +753,36 @@ doctrine@^3.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
esutils "^2.0.2"
|
esutils "^2.0.2"
|
||||||
|
|
||||||
|
dom-serializer@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53"
|
||||||
|
integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==
|
||||||
|
dependencies:
|
||||||
|
domelementtype "^2.3.0"
|
||||||
|
domhandler "^5.0.2"
|
||||||
|
entities "^4.2.0"
|
||||||
|
|
||||||
|
domelementtype@^2.3.0:
|
||||||
|
version "2.3.0"
|
||||||
|
resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
|
||||||
|
integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
|
||||||
|
|
||||||
|
domhandler@^5.0.2, domhandler@^5.0.3:
|
||||||
|
version "5.0.3"
|
||||||
|
resolved "https://registry.npmmirror.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31"
|
||||||
|
integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==
|
||||||
|
dependencies:
|
||||||
|
domelementtype "^2.3.0"
|
||||||
|
|
||||||
|
domutils@^3.0.1, domutils@^3.1.0:
|
||||||
|
version "3.1.0"
|
||||||
|
resolved "https://registry.npmmirror.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e"
|
||||||
|
integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==
|
||||||
|
dependencies:
|
||||||
|
dom-serializer "^2.0.0"
|
||||||
|
domelementtype "^2.3.0"
|
||||||
|
domhandler "^5.0.3"
|
||||||
|
|
||||||
echarts@^5.4.2:
|
echarts@^5.4.2:
|
||||||
version "5.4.2"
|
version "5.4.2"
|
||||||
resolved "https://registry.npmjs.org/echarts/-/echarts-5.4.2.tgz"
|
resolved "https://registry.npmjs.org/echarts/-/echarts-5.4.2.tgz"
|
||||||
|
@ -737,6 +812,19 @@ element-plus@^2.9.0:
|
||||||
memoize-one "^6.0.0"
|
memoize-one "^6.0.0"
|
||||||
normalize-wheel-es "^1.2.0"
|
normalize-wheel-es "^1.2.0"
|
||||||
|
|
||||||
|
encoding-sniffer@^0.2.0:
|
||||||
|
version "0.2.0"
|
||||||
|
resolved "https://registry.npmmirror.com/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz#799569d66d443babe82af18c9f403498365ef1d5"
|
||||||
|
integrity sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==
|
||||||
|
dependencies:
|
||||||
|
iconv-lite "^0.6.3"
|
||||||
|
whatwg-encoding "^3.1.1"
|
||||||
|
|
||||||
|
entities@^4.2.0, entities@^4.5.0:
|
||||||
|
version "4.5.0"
|
||||||
|
resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
|
||||||
|
integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
|
||||||
|
|
||||||
esbuild@^0.17.5:
|
esbuild@^0.17.5:
|
||||||
version "0.17.16"
|
version "0.17.16"
|
||||||
resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.17.16.tgz"
|
resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.17.16.tgz"
|
||||||
|
@ -1099,6 +1187,23 @@ has@^1.0.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
function-bind "^1.1.1"
|
function-bind "^1.1.1"
|
||||||
|
|
||||||
|
htmlparser2@^9.1.0:
|
||||||
|
version "9.1.0"
|
||||||
|
resolved "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-9.1.0.tgz#cdb498d8a75a51f739b61d3f718136c369bc8c23"
|
||||||
|
integrity sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==
|
||||||
|
dependencies:
|
||||||
|
domelementtype "^2.3.0"
|
||||||
|
domhandler "^5.0.3"
|
||||||
|
domutils "^3.1.0"
|
||||||
|
entities "^4.5.0"
|
||||||
|
|
||||||
|
iconv-lite@0.6.3, iconv-lite@^0.6.3:
|
||||||
|
version "0.6.3"
|
||||||
|
resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
|
||||||
|
integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
|
||||||
|
dependencies:
|
||||||
|
safer-buffer ">= 2.1.2 < 3.0.0"
|
||||||
|
|
||||||
ignore@^5.2.0:
|
ignore@^5.2.0:
|
||||||
version "5.2.4"
|
version "5.2.4"
|
||||||
resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz"
|
resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz"
|
||||||
|
@ -1404,6 +1509,28 @@ parent-module@^1.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
callsites "^3.0.0"
|
callsites "^3.0.0"
|
||||||
|
|
||||||
|
parse5-htmlparser2-tree-adapter@^7.0.0:
|
||||||
|
version "7.1.0"
|
||||||
|
resolved "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz#b5a806548ed893a43e24ccb42fbb78069311e81b"
|
||||||
|
integrity sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==
|
||||||
|
dependencies:
|
||||||
|
domhandler "^5.0.3"
|
||||||
|
parse5 "^7.0.0"
|
||||||
|
|
||||||
|
parse5-parser-stream@^7.1.2:
|
||||||
|
version "7.1.2"
|
||||||
|
resolved "https://registry.npmmirror.com/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz#d7c20eadc37968d272e2c02660fff92dd27e60e1"
|
||||||
|
integrity sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==
|
||||||
|
dependencies:
|
||||||
|
parse5 "^7.0.0"
|
||||||
|
|
||||||
|
parse5@^7.0.0, parse5@^7.1.2:
|
||||||
|
version "7.2.1"
|
||||||
|
resolved "https://registry.npmmirror.com/parse5/-/parse5-7.2.1.tgz#8928f55915e6125f430cc44309765bf17556a33a"
|
||||||
|
integrity sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==
|
||||||
|
dependencies:
|
||||||
|
entities "^4.5.0"
|
||||||
|
|
||||||
path-exists@^4.0.0:
|
path-exists@^4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
|
resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
|
||||||
|
@ -1553,6 +1680,11 @@ run-parallel@^1.1.9:
|
||||||
dependencies:
|
dependencies:
|
||||||
queue-microtask "^1.2.2"
|
queue-microtask "^1.2.2"
|
||||||
|
|
||||||
|
"safer-buffer@>= 2.1.2 < 3.0.0":
|
||||||
|
version "2.1.2"
|
||||||
|
resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||||
|
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||||
|
|
||||||
sass@^1.62.0:
|
sass@^1.62.0:
|
||||||
version "1.62.0"
|
version "1.62.0"
|
||||||
resolved "https://registry.npmjs.org/sass/-/sass-1.62.0.tgz"
|
resolved "https://registry.npmjs.org/sass/-/sass-1.62.0.tgz"
|
||||||
|
@ -1695,6 +1827,11 @@ type-fest@^0.20.2:
|
||||||
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
|
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
|
||||||
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
|
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
|
||||||
|
|
||||||
|
undici@^6.19.5:
|
||||||
|
version "6.21.0"
|
||||||
|
resolved "https://registry.npmmirror.com/undici/-/undici-6.21.0.tgz#4b3d3afaef984e07b48e7620c34ed8a285ed4cd4"
|
||||||
|
integrity sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==
|
||||||
|
|
||||||
universalify@^2.0.0:
|
universalify@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz"
|
resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz"
|
||||||
|
@ -1728,6 +1865,13 @@ vite-plugin-compression@^0.5.1:
|
||||||
debug "^4.3.3"
|
debug "^4.3.3"
|
||||||
fs-extra "^10.0.0"
|
fs-extra "^10.0.0"
|
||||||
|
|
||||||
|
vite-plugin-qiankun@^1.0.15:
|
||||||
|
version "1.0.15"
|
||||||
|
resolved "https://registry.npmmirror.com/vite-plugin-qiankun/-/vite-plugin-qiankun-1.0.15.tgz#862bb6935c50db31536cf322e13f3bf59e1adace"
|
||||||
|
integrity sha512-0QB0Wr8Eu/LGcuJAfuNXDb7BAFDszo3GCxq4bzgXdSFAlK425u1/UGMxaDEBVA1uPFrLsZPzig83Ufdfl6J45A==
|
||||||
|
dependencies:
|
||||||
|
cheerio "^1.0.0-rc.10"
|
||||||
|
|
||||||
vite-plugin-vue-setup-extend-plus@^0.1.0:
|
vite-plugin-vue-setup-extend-plus@^0.1.0:
|
||||||
version "0.1.0"
|
version "0.1.0"
|
||||||
resolved "https://registry.npmjs.org/vite-plugin-vue-setup-extend-plus/-/vite-plugin-vue-setup-extend-plus-0.1.0.tgz"
|
resolved "https://registry.npmjs.org/vite-plugin-vue-setup-extend-plus/-/vite-plugin-vue-setup-extend-plus-0.1.0.tgz"
|
||||||
|
@ -1790,7 +1934,7 @@ vue-eslint-parser@^9.0.1, vue-eslint-parser@^9.1.1:
|
||||||
vue "^3.2.47"
|
vue "^3.2.47"
|
||||||
vue-clipboard3 "^2.0.0"
|
vue-clipboard3 "^2.0.0"
|
||||||
vue-demi "^0.13.11"
|
vue-demi "^0.13.11"
|
||||||
vue-next-admin-template-js "file:C:/Users/Administrator/AppData/Local/Yarn/Cache/v6/npm-vue-next-admin-template-js-2.4.33-011778b8-7ab9-4593-988c-c7383c933ad9-1734079258926/node_modules/vue-next-admin-template-js"
|
vue-next-admin-template-js "file:C:/Users/Administrator/AppData/Local/Yarn/Cache/v6/npm-vue-next-admin-template-js-2.4.33-8ec8791a-74be-4d31-8079-f4b86c63ede4-1734080848678/node_modules/vue-next-admin-template-js"
|
||||||
vue-router "^4.1.6"
|
vue-router "^4.1.6"
|
||||||
xlsx "^0.18.5"
|
xlsx "^0.18.5"
|
||||||
|
|
||||||
|
@ -1812,6 +1956,18 @@ vue@^3.2.47:
|
||||||
"@vue/server-renderer" "3.2.47"
|
"@vue/server-renderer" "3.2.47"
|
||||||
"@vue/shared" "3.2.47"
|
"@vue/shared" "3.2.47"
|
||||||
|
|
||||||
|
whatwg-encoding@^3.1.1:
|
||||||
|
version "3.1.1"
|
||||||
|
resolved "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5"
|
||||||
|
integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==
|
||||||
|
dependencies:
|
||||||
|
iconv-lite "0.6.3"
|
||||||
|
|
||||||
|
whatwg-mimetype@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a"
|
||||||
|
integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==
|
||||||
|
|
||||||
which@^2.0.1:
|
which@^2.0.1:
|
||||||
version "2.0.2"
|
version "2.0.2"
|
||||||
resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
|
resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
|
||||||
|
|
Loading…
Reference in New Issue