From 3b9b33c2b5ab555696e1012ed1e35446c8052786 Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期一, 14 八月 2023 14:13:09 +0800 Subject: [PATCH] 更新大屏 --- src/assets/loginPage/panel-bg.png | 0 shim.d.ts | 1 src/assets/warningScreen/body-bg.png | 0 src/assets/warningScreen/data-2.png | 0 src/views/bigScreen/components/screen.vue | 1049 +++++++++++++++++++++++++++++++++++++++++++++++++ src/assets/warningScreen/scroll-bg.png | 0 src/assets/warningScreen/chart-bg.png | 0 src/assets/warningScreen/chart-bg4.png | 0 vite.config.ts | 22 src/views/loginPage/loginPage.vue | 34 + src/router/route.ts | 16 src/assets/warningScreen/data-1.png | 0 src/assets/loginPage/rollingBall.gif | 0 src/views/loginPage/component/accountLogin.vue | 21 src/assets/warningScreen/data-6.png | 0 src/views/bigScreen/fullScreen/index.vue | 46 ++ src/layout/navBars/breadcrumb/user.vue | 27 - src/assets/warningScreen/data-4.png | 0 src/assets/warningScreen/chart-bg3.png | 0 src/assets/loginPage/panel-bg2.png | 0 src/assets/warningScreen/data-5.png | 0 /dev/null | 0 src/assets/warningScreen/data-3.png | 0 src/assets/menu/company.png | 0 src/assets/loginPage/starFalls.gif | 0 src/assets/warningScreen/chart-bg2.png | 0 src/views/bigScreen/index.vue | 35 + package.json | 5 src/assets/warningScreen/data.gif | 0 src/App.vue | 1 30 files changed, 1,200 insertions(+), 57 deletions(-) diff --git a/package.json b/package.json index 8b2ab23..90518f1 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,9 @@ "lint-fix": "eslint --fix --ext .js --ext .jsx --ext .vue src/" }, "dependencies": { + "@amap/amap-jsapi-loader": "^1.0.1", "@element-plus/icons-vue": "^2.0.6", - "@kjgl77/datav-vue3": "^1.2.1", + "@kjgl77/datav-vue3": "^1.6.1", "@wangeditor/editor": "^5.1.14", "axios": "^0.27.2", "countup.js": "^2.2.0", @@ -50,9 +51,11 @@ "@typescript-eslint/parser": "^5.27.0", "@vitejs/plugin-vue": "^2.3.3", "@vue/compiler-sfc": "^3.2.36", + "amfe-flexible": "^2.2.1", "dotenv": "^16.0.1", "eslint": "^8.17.0", "eslint-plugin-vue": "^9.1.0", + "postcss-pxtorem": "^6.0.0", "prettier": "^2.6.2", "sass": "^1.52.2", "sass-loader": "^13.0.0", diff --git a/shim.d.ts b/shim.d.ts index 3e9bfd0..4de2a4a 100644 --- a/shim.d.ts +++ b/shim.d.ts @@ -11,3 +11,4 @@ interface Window { nextLoading: boolean; } +declare module 'postcss-pxtorem' \ No newline at end of file diff --git a/src/App.vue b/src/App.vue index 8d21990..af8afc1 100644 --- a/src/App.vue +++ b/src/App.vue @@ -89,6 +89,7 @@ // if(!Session.get('token')) return // initBackEndControlRoutes() }); + // 页面销毁时,关闭监听布局配置/i18n监听 onUnmounted(() => { proxy.mittBus.off('openSetingsDrawer', () => {}); diff --git a/src/assets/companyLogo.png b/src/assets/companyLogo.png deleted file mode 100644 index 0f9f2d1..0000000 --- a/src/assets/companyLogo.png +++ /dev/null Binary files differ diff --git a/src/assets/loginPage/panel-bg.png b/src/assets/loginPage/panel-bg.png index bb1518f..423b2c4 100644 --- a/src/assets/loginPage/panel-bg.png +++ b/src/assets/loginPage/panel-bg.png Binary files differ diff --git a/src/assets/loginPage/panel-bg2.png b/src/assets/loginPage/panel-bg2.png new file mode 100644 index 0000000..354548a --- /dev/null +++ b/src/assets/loginPage/panel-bg2.png Binary files differ diff --git a/src/assets/loginPage/rollingBall.gif b/src/assets/loginPage/rollingBall.gif new file mode 100644 index 0000000..855711d --- /dev/null +++ b/src/assets/loginPage/rollingBall.gif Binary files differ diff --git a/src/assets/loginPage/starFalls.gif b/src/assets/loginPage/starFalls.gif new file mode 100644 index 0000000..4dbddff --- /dev/null +++ b/src/assets/loginPage/starFalls.gif Binary files differ diff --git a/src/assets/menu/bg_home.jpg b/src/assets/menu/bg_home.jpg deleted file mode 100644 index c8b3afd..0000000 --- a/src/assets/menu/bg_home.jpg +++ /dev/null Binary files differ diff --git a/src/assets/menu/bg_home1.jpg b/src/assets/menu/bg_home1.jpg deleted file mode 100644 index b4389fb..0000000 --- a/src/assets/menu/bg_home1.jpg +++ /dev/null Binary files differ diff --git a/src/assets/menu/card1.png b/src/assets/menu/card1.png deleted file mode 100644 index d70d653..0000000 --- a/src/assets/menu/card1.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/card10.png b/src/assets/menu/card10.png deleted file mode 100644 index cb8129f..0000000 --- a/src/assets/menu/card10.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/card11.png b/src/assets/menu/card11.png deleted file mode 100644 index 2155f53..0000000 --- a/src/assets/menu/card11.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/card2.png b/src/assets/menu/card2.png deleted file mode 100644 index 9415cb6..0000000 --- a/src/assets/menu/card2.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/card3.png b/src/assets/menu/card3.png deleted file mode 100644 index b22eae4..0000000 --- a/src/assets/menu/card3.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/card4.png b/src/assets/menu/card4.png deleted file mode 100644 index d29a9f4..0000000 --- a/src/assets/menu/card4.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/card5.png b/src/assets/menu/card5.png deleted file mode 100644 index ee12eb6..0000000 --- a/src/assets/menu/card5.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/card6.png b/src/assets/menu/card6.png deleted file mode 100644 index cc7d602..0000000 --- a/src/assets/menu/card6.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/card7.png b/src/assets/menu/card7.png deleted file mode 100644 index d5bf656..0000000 --- a/src/assets/menu/card7.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/card8.png b/src/assets/menu/card8.png deleted file mode 100644 index a839c27..0000000 --- a/src/assets/menu/card8.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/card9.png b/src/assets/menu/card9.png deleted file mode 100644 index 7481ef0..0000000 --- a/src/assets/menu/card9.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/company.png b/src/assets/menu/company.png index b8f34a2..21a92f4 100644 --- a/src/assets/menu/company.png +++ b/src/assets/menu/company.png Binary files differ diff --git a/src/assets/menu/companyLogo.png b/src/assets/menu/companyLogo.png deleted file mode 100644 index 46b0568..0000000 --- a/src/assets/menu/companyLogo.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/icon1.png b/src/assets/menu/icon1.png deleted file mode 100644 index bef5341..0000000 --- a/src/assets/menu/icon1.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/icon10.png b/src/assets/menu/icon10.png deleted file mode 100644 index 0f1d961..0000000 --- a/src/assets/menu/icon10.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/icon11.png b/src/assets/menu/icon11.png deleted file mode 100644 index 392b926..0000000 --- a/src/assets/menu/icon11.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/icon2.png b/src/assets/menu/icon2.png deleted file mode 100644 index 5ca9d63..0000000 --- a/src/assets/menu/icon2.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/icon3.png b/src/assets/menu/icon3.png deleted file mode 100644 index c512b58..0000000 --- a/src/assets/menu/icon3.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/icon4.png b/src/assets/menu/icon4.png deleted file mode 100644 index 1088209..0000000 --- a/src/assets/menu/icon4.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/icon5.png b/src/assets/menu/icon5.png deleted file mode 100644 index 28200e7..0000000 --- a/src/assets/menu/icon5.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/icon6.png b/src/assets/menu/icon6.png deleted file mode 100644 index c58c489..0000000 --- a/src/assets/menu/icon6.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/icon7.png b/src/assets/menu/icon7.png deleted file mode 100644 index 838cb9a..0000000 --- a/src/assets/menu/icon7.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/icon8.png b/src/assets/menu/icon8.png deleted file mode 100644 index 0e7d42f..0000000 --- a/src/assets/menu/icon8.png +++ /dev/null Binary files differ diff --git a/src/assets/menu/icon9.png b/src/assets/menu/icon9.png deleted file mode 100644 index ce58f60..0000000 --- a/src/assets/menu/icon9.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/card-1.png b/src/assets/newMenu/card-1.png deleted file mode 100644 index eb8fa9b..0000000 --- a/src/assets/newMenu/card-1.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/card-10.png b/src/assets/newMenu/card-10.png deleted file mode 100644 index e80c260..0000000 --- a/src/assets/newMenu/card-10.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/card-11.png b/src/assets/newMenu/card-11.png deleted file mode 100644 index 7ae2a5e..0000000 --- a/src/assets/newMenu/card-11.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/card-2.png b/src/assets/newMenu/card-2.png deleted file mode 100644 index 7261d75..0000000 --- a/src/assets/newMenu/card-2.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/card-3.png b/src/assets/newMenu/card-3.png deleted file mode 100644 index 6ea4da0..0000000 --- a/src/assets/newMenu/card-3.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/card-4.png b/src/assets/newMenu/card-4.png deleted file mode 100644 index bf5f61b..0000000 --- a/src/assets/newMenu/card-4.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/card-5.png b/src/assets/newMenu/card-5.png deleted file mode 100644 index adde896..0000000 --- a/src/assets/newMenu/card-5.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/card-6.png b/src/assets/newMenu/card-6.png deleted file mode 100644 index 83a90cc..0000000 --- a/src/assets/newMenu/card-6.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/card-7.png b/src/assets/newMenu/card-7.png deleted file mode 100644 index 676e989..0000000 --- a/src/assets/newMenu/card-7.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/card-8.png b/src/assets/newMenu/card-8.png deleted file mode 100644 index 95e0528..0000000 --- a/src/assets/newMenu/card-8.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/card-9.png b/src/assets/newMenu/card-9.png deleted file mode 100644 index c8024f0..0000000 --- a/src/assets/newMenu/card-9.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/icon1.png b/src/assets/newMenu/icon1.png deleted file mode 100644 index 99f305d..0000000 --- a/src/assets/newMenu/icon1.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/icon10.png b/src/assets/newMenu/icon10.png deleted file mode 100644 index f7ae382..0000000 --- a/src/assets/newMenu/icon10.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/icon11.png b/src/assets/newMenu/icon11.png deleted file mode 100644 index a19d8da..0000000 --- a/src/assets/newMenu/icon11.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/icon2.png b/src/assets/newMenu/icon2.png deleted file mode 100644 index 1b2dae3..0000000 --- a/src/assets/newMenu/icon2.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/icon3.png b/src/assets/newMenu/icon3.png deleted file mode 100644 index 9097055..0000000 --- a/src/assets/newMenu/icon3.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/icon4.png b/src/assets/newMenu/icon4.png deleted file mode 100644 index 23ad0da..0000000 --- a/src/assets/newMenu/icon4.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/icon5.png b/src/assets/newMenu/icon5.png deleted file mode 100644 index 71c54e5..0000000 --- a/src/assets/newMenu/icon5.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/icon6.png b/src/assets/newMenu/icon6.png deleted file mode 100644 index cbad202..0000000 --- a/src/assets/newMenu/icon6.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/icon7.png b/src/assets/newMenu/icon7.png deleted file mode 100644 index 34e62ed..0000000 --- a/src/assets/newMenu/icon7.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/icon8.png b/src/assets/newMenu/icon8.png deleted file mode 100644 index 9c8d052..0000000 --- a/src/assets/newMenu/icon8.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/icon9.png b/src/assets/newMenu/icon9.png deleted file mode 100644 index cb1199e..0000000 --- a/src/assets/newMenu/icon9.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/leftbg.jpg b/src/assets/newMenu/leftbg.jpg deleted file mode 100644 index cdfc4f8..0000000 --- a/src/assets/newMenu/leftbg.jpg +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/leftbg.png b/src/assets/newMenu/leftbg.png deleted file mode 100644 index 61eab20..0000000 --- a/src/assets/newMenu/leftbg.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/pic_line1.png b/src/assets/newMenu/pic_line1.png deleted file mode 100644 index 4212982..0000000 --- a/src/assets/newMenu/pic_line1.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/pic_line2.png b/src/assets/newMenu/pic_line2.png deleted file mode 100644 index b6a65a5..0000000 --- a/src/assets/newMenu/pic_line2.png +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/topbg.jpg b/src/assets/newMenu/topbg.jpg deleted file mode 100644 index 3d2dd9c..0000000 --- a/src/assets/newMenu/topbg.jpg +++ /dev/null Binary files differ diff --git a/src/assets/newMenu/toplogo.png b/src/assets/newMenu/toplogo.png deleted file mode 100644 index 8f50c3d..0000000 --- a/src/assets/newMenu/toplogo.png +++ /dev/null Binary files differ diff --git a/src/assets/warningScreen/body-bg.png b/src/assets/warningScreen/body-bg.png new file mode 100644 index 0000000..fa6662b --- /dev/null +++ b/src/assets/warningScreen/body-bg.png Binary files differ diff --git a/src/assets/warningScreen/chart-bg.png b/src/assets/warningScreen/chart-bg.png new file mode 100644 index 0000000..402e26d --- /dev/null +++ b/src/assets/warningScreen/chart-bg.png Binary files differ diff --git a/src/assets/warningScreen/chart-bg2.png b/src/assets/warningScreen/chart-bg2.png new file mode 100644 index 0000000..1e075c7 --- /dev/null +++ b/src/assets/warningScreen/chart-bg2.png Binary files differ diff --git a/src/assets/warningScreen/chart-bg3.png b/src/assets/warningScreen/chart-bg3.png new file mode 100644 index 0000000..1e688b8 --- /dev/null +++ b/src/assets/warningScreen/chart-bg3.png Binary files differ diff --git a/src/assets/warningScreen/chart-bg4.png b/src/assets/warningScreen/chart-bg4.png new file mode 100644 index 0000000..20e122d --- /dev/null +++ b/src/assets/warningScreen/chart-bg4.png Binary files differ diff --git a/src/assets/warningScreen/data-1.png b/src/assets/warningScreen/data-1.png new file mode 100644 index 0000000..9c278fb --- /dev/null +++ b/src/assets/warningScreen/data-1.png Binary files differ diff --git a/src/assets/warningScreen/data-2.png b/src/assets/warningScreen/data-2.png new file mode 100644 index 0000000..62228e4 --- /dev/null +++ b/src/assets/warningScreen/data-2.png Binary files differ diff --git a/src/assets/warningScreen/data-3.png b/src/assets/warningScreen/data-3.png new file mode 100644 index 0000000..4512d7f --- /dev/null +++ b/src/assets/warningScreen/data-3.png Binary files differ diff --git a/src/assets/warningScreen/data-4.png b/src/assets/warningScreen/data-4.png new file mode 100644 index 0000000..cd36d80 --- /dev/null +++ b/src/assets/warningScreen/data-4.png Binary files differ diff --git a/src/assets/warningScreen/data-5.png b/src/assets/warningScreen/data-5.png new file mode 100644 index 0000000..7615ce8 --- /dev/null +++ b/src/assets/warningScreen/data-5.png Binary files differ diff --git a/src/assets/warningScreen/data-6.png b/src/assets/warningScreen/data-6.png new file mode 100644 index 0000000..3cf6148 --- /dev/null +++ b/src/assets/warningScreen/data-6.png Binary files differ diff --git a/src/assets/warningScreen/data.gif b/src/assets/warningScreen/data.gif new file mode 100644 index 0000000..7c0cc58 --- /dev/null +++ b/src/assets/warningScreen/data.gif Binary files differ diff --git a/src/assets/warningScreen/logo_dark.png b/src/assets/warningScreen/logo_dark.png deleted file mode 100644 index 96a4d41..0000000 --- a/src/assets/warningScreen/logo_dark.png +++ /dev/null Binary files differ diff --git a/src/assets/warningScreen/scroll-bg.png b/src/assets/warningScreen/scroll-bg.png new file mode 100644 index 0000000..ee1507b --- /dev/null +++ b/src/assets/warningScreen/scroll-bg.png Binary files differ diff --git a/src/layout/navBars/breadcrumb/user.vue b/src/layout/navBars/breadcrumb/user.vue index 9f7f963..485e95f 100644 --- a/src/layout/navBars/breadcrumb/user.vue +++ b/src/layout/navBars/breadcrumb/user.vue @@ -1,9 +1,7 @@ <template> <div class="layout-navbars-breadcrumb-user pr15" :style="{ flex: layoutUserFlexNum }"> <div class="logo"> -<!-- <img @click="toHome" src="../../../assets/menu/company.png" />--> <img src="../../../assets/menu/company.png" /> -<!-- <span>{{ systemName }}</span>--> </div> <div style="display: flex; align-items: center; padding-right: 5px"> <!-- <div @click="backToMenu()" class="backBtn">返回首页</div>--> @@ -120,8 +118,7 @@ const state = reactive({ isScreenfull: false, disabledI18n: 'zh-cn', - disabledSize: 'large', - systemName: '' + disabledSize: 'large' }); // 设置分割样式 const layoutUserFlexNum = computed(() => { @@ -251,23 +248,6 @@ break; } }; - - const getSysName = async () => { - if (window.nextLoading === undefined) NextLoading.start(); - if (!Cookies.get('token')) return false; - const res = await menuApi.getMenuAdmin(Cookies.get('projectId') === null ? '' : Cookies.get('projectId')); - if (res.data.code === '200') { - state.systemName = res.data.data[1].project.projectName; - } else { - console.log('有问题'); - } - }; - // const backToMenu = () => { - // router.push({ path: 'newMenu' }).then(()=>{ - // routeList.routesList.value = [] - // console.log(routeList); - // }); - // }; const toHome = () => { router.push({ path: 'newMenu' }); }; @@ -277,7 +257,6 @@ initI18n(); initComponentSize(); } - getSysName(); }); return { userInfos, @@ -379,8 +358,8 @@ justify-content: space-between; .logo { - height: 75%; - padding: 5px 10px; + width: 531px; + height: 60px; display: flex; align-items: center; overflow: hidden; diff --git a/src/router/route.ts b/src/router/route.ts index af6515f..c9d3e74 100644 --- a/src/router/route.ts +++ b/src/router/route.ts @@ -70,5 +70,21 @@ meta: { title: '登录' } + }, + { + path: '/fullScreen', + name: 'fullScreen', + component: () => import('/@/views/bigScreen/fullScreen/index.vue'), + meta: { + title: '全屏' + } + }, + { + path: '/bigScreen', + name: 'bigScreen', + component: () => import('/@/views/bigScreen/index.vue'), + meta: { + title: '全屏' + } } ]; diff --git a/src/views/bigScreen/components/screen.vue b/src/views/bigScreen/components/screen.vue new file mode 100644 index 0000000..71c340e --- /dev/null +++ b/src/views/bigScreen/components/screen.vue @@ -0,0 +1,1049 @@ +<template> + <div class="charts-container"> + <div class="header-content"> + <div class="title-left"> +<!-- <img src="../../../assets/warningScreen/logo_dark.png" alt="" />--> + <div class="datetime"> + <div class="timel">{{time}}</div> + <div class="timer"> + <div>{{date}}</div> + <div>{{weekDay}}</div> + </div> + </div> + </div> + <div class="title"><span>广域特殊气体泄漏在线监测预警系统</span></div> + <div class="title-right"> + <div class="btns"> + <div class="fullBtn" v-if="!isFull" @click="toFull()"> + <el-icon><FullScreen /></el-icon> + <div>全屏</div> + </div> + <div class="backBtn" @click="back()" v-else> + <el-icon><SwitchButton /></el-icon> + <div>退出</div> + </div> + </div> + </div> + </div> + <div class="main-content"> + <div id="bigMap"></div> + <div class="main-left"> + <div class="left-top withFilter"> + <div class="chart-head"> + <div class="chart-tit">预警汇总</div> + <el-radio-group v-model="chart1Search"> + <el-radio :label="1" size="small" border>当日</el-radio> + <el-radio :label="2" size="small" border>近7天</el-radio> + <el-radio :label="3" size="small" border>近30天</el-radio> + <el-radio :label="4" size="small" border>当年</el-radio> + </el-radio-group> + </div> + <div class="chart-cont"> + <div class="orange"> + <div><span>30</span><span>橙色预警</span></div> + </div> + <div class="red"> + <div><span>10</span><span>红色预警</span></div> + </div> + </div> + </div> + <div class="left-mid withFilter"> + <div class="chart-head"> + <div class="chart-tit">预警信息</div> + <el-date-picker + v-model="chart2Search" + size="small" + :teleported="false" + type="daterange" + unlink-panels + range-separator="至" + start-placeholder="开始日期" + end-placeholder="结束日期" + format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss" + /> + </div> + <div class="chart-cont"> + <dv-scroll-board :config="config" class="scroll-table" @mouseover="mouseoverHandler" @click="clickHandler" /> + </div> + </div> + <div class="left-bottom withFilter"> + <div class="chart-head"> + <div class="chart-tit">设备状态</div> + <div class="sys-status"> + <Cpu style="width: 1.2em; height: 1.2em; color: #fff" /> + <div>系统状态:<span>正常</span></div> + </div> + </div> + <div class="chart-cont"> + <div class="online"> + <dv-decoration-9 :color="['#22aaff','rgba(34,170,255,.6)']"> + <div color-green font-600 class="isOnline" bg="~ dark/0"> + 0 + </div> + </dv-decoration-9> + <div>在线</div> + </div> + <div class="online"> + <dv-decoration-9 :color="['#ee594a','rgba(238,89,74,.6)']"> + <div color-red font-600 class="isOnline red-font" bg="~ dark/0"> + 1 + </div> + </dv-decoration-9> + <div style="color:#ee594a;">离线</div> + </div> + </div> + </div> + </div> + <div class="main-middle"> + <div class="mid-bottom"> + <div class="chart-head"> + <div class="chart-tit">气象信息</div> + </div> + <div class="chart-cont bigData"> + <div class="bigPic"> + <div></div> + <div></div> + <div></div> + <div></div> + <div></div> + <div></div> + </div> + <dv-scroll-board :config="bigConfig" class="scroll-table" @mouseover="mouseoverHandler" @click="clickHandler" /> + </div> + </div> + </div> + <div class="main-right"> + <div class="right-top withFilterLong"> + <div class="chart-head"> + <div class="chart-tit long-tit">气体浓度监测</div> + <el-select v-model="gasSearch" :teleported="false" class="m-2" placeholder="Select" size="small"> + <el-option + v-for="item in gasOptions" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </div> + <div class="chart-cont"> + <div class="echart" :id="gasN"></div> + </div> + </div> + <div class="right-mid withFilterLong"> + <div class="chart-head"> + <div class="chart-tit long-tit">气体通量监测</div> + <div class="searchGroup"> + <el-select v-model="searchParams.gasSearch" :teleported="false" class="m-2" placeholder="Select" size="small"> + <el-option + v-for="item in gasOptions" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + <el-select v-model="searchParams.areaSearch" :teleported="false" class="m-2" placeholder="Select" size="small"> + <el-option + v-for="item in areaOptions" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </div> + </div> + <div class="chart-cont"> + <div class="echart" :id="gasT"></div> + </div> + </div> + <div class="right-bottom withoutFilter"> + <div class="chart-head"> + <div class="chart-tit long-tit">实时数据量</div> + </div> + <div class="chart-cont"> + <div class="online"> + <div class="totalNum"><span>1048</span>条</div> + <div class="dataPic"></div> + <div class="totalNum">浓度条数</div> + </div> + <div class="online"> + <div class="totalNum"><span>566</span>条</div> + <div class="dataPic"></div> + <div class="totalNum">通量条数</div> + </div> + </div> + </div> + </div> + </div> + </div> +</template> + +<script lang="ts"> +import {toRefs, reactive, onMounted, ref, defineComponent, onUnmounted} from 'vue'; +import { ElMessage, ElMessageBox } from 'element-plus'; +import { useRouter} from "vue-router"; +import * as echarts from "echarts"; +import "amfe-flexible"; +import AMapLoader from '@amap/amap-jsapi-loader' +import { shallowRef } from '@vue/reactivity' +// 定义接口来定义对象的类型 +interface TableDataState { + time: string + date: string + weekDay: string + dayTime:string + isFull: boolean + chart1Search: number | null + chart2Search: Array<string> + gasSearch: number | null + gasOptions: Array<gasType> + searchParams: Object + areaOptions: Array<gasType> +} + +interface gasType { + label: string + value: number | null +} + +export default defineComponent({ + name: 'bigScreen', + components: { }, + props:{ + isFull: Boolean + }, + setup(props,context) { + const state = reactive<TableDataState>({ + time: '', + date: '', + weekDay: '', + dayTime: '', + isFull: props.isFull, + chart1Search: 1, + chart2Search: [], + gasSearch: 1, + gasOptions: [ + { + label: '气体一', + value: 1 + }, + { + label: '气体二', + value: 2 + }, + { + label: '气体三', + value: 3 + } + ], + searchParams:{ + gasSearch: 1, + areaSearch: 1 + }, + areaOptions: [ + { + label: '区域一', + value: 1 + }, + { + label: '区域二', + value: 2 + }, + { + label: '区域三', + value: 3 + } + ] + }); + const router = useRouter(); + const gasN = ref("eChartgasN" + Date.now() + Math.random()) + const gasT = ref("eChartgasT" + Date.now() + Math.random()) + const timeForm = { + hour12: false, + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit', + }; + + // 页面加载时 + onMounted(() => { + const baseSize = 38; + function setRem() { + const scale = document.documentElement.clientWidth / 1920;/* 当前页面宽度缩放比例,可根据自己需要修改 */ + document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + "px";/* 设置页面根节点字体大小 */ + } + + setRem(); + + window.onresize = () => { + setRem();/* 改变窗口大小时重新设置 rem */ + } + getDateTime(); + setInterval(() => { + getDateTime(); + }, 1000); + initgasN() + initgasT() + initMap() + }); + + const config = reactive({ + header: ['预警级别','气体名称', '气体浓度', '时间'], + data: [ + ['红色预警', '甲烷', '19', '2023-08-10'], + ['<span style="color:red;">红色预警</span>', '甲烷', '19', '2023-08-10'], + ['红色预警', '甲烷', '19', '2023-08-10'], + ['红色预警', '甲烷', '19', '2023-08-10'], + ['红色预警', '甲烷', '19', '2023-08-10'], + ['红色预警', '甲烷', '19', '2023-08-10'] + ], + index: true, + columnWidth: [38], + align: ['center','center','center','center','center'], + headerBGC: '', + oddRowBGC: '', + evenRowBGC: '' + }) + + const bigConfig = reactive({ + header: ['时间','温度', '湿度', '风速', '风向', '气压'], + data: [ + ['2023-08-10 13:29:25','56', '105', '40', '32', '20'],['2023-08-10 13:29:25','56', '105', '40', '32', '20'],['2023-08-10 13:29:25','56', '105', '40', '32', '20'],['2023-08-10 13:29:25','56', '105', '40', '32', '20'],['2023-08-10 13:29:25','56', '105', '40', '32', '20'],['2023-08-10 13:29:25','56', '105', '40', '32', '20'],['2023-08-10 13:29:25','56', '105', '40', '32', '20'],['2023-08-10 13:29:25','56', '105', '40', '32', '20'],['2023-08-10 13:29:25','56', '105', '40', '32', '20'] + ], + align: ['center','center','center','center','center','center'], + headerBGC: '', + oddRowBGC: '', + evenRowBGC: '', + rowNum: 3 + }) + + const mouseoverHandler = (e: any) => { + console.log(e) + } + + const clickHandler = (e: any) => { + console.log(e) + } + + type EChartsOption = echarts.EChartsOption + const initgasN =()=>{ + let dom = document.getElementById(gasN.value); + let myChart = echarts.init(dom); + let option: EChartsOption; + option = { + xAxis: { + type: 'category', + data: ['10:36:30', '10:36:30', '10:36:30', '10:36:30', '10:36:30', '10:36:30', '10:36:30', '10:36:30', '10:36:30', '10:36:30', '10:36:30', '10:36:30'], + axisLabel: { + color: '#fff' + } + }, + yAxis: { + axisLine:{ + show: true + }, + splitLine: { + show: false + }, + axisLabel:{ + color: '#ccc' + } + }, + grid: { + top: '5%', + bottom: '10%', + right: '0%' + }, + series: [ + { + data: [150, 230, 224, 218, 135, 147, 230, 224, 218, 135, 147, 260], + type: 'line', + // label:{ + // show: true, + // color: '#fff', + // textBorderColor: 'transparent' + // }, + lineStyle:{ + color: '#54d5ff' + }, + itemStyle:{ + color: '#54d5ff', + }, + areaStyle:{ + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, color: '#2af' // 0% 处的颜色 + }, { + offset: 1, color: 'rgba(255,255,255,.1)' // 100% 处的颜色 + }], + global: false // 缺省为 false + } + } + } + ] + } + + option && myChart.setOption(option); + window.addEventListener("resize",function (){ + myChart.resize(); + }); + } + const initgasT =()=>{ + let dom = document.getElementById(gasT.value); + let myChart = echarts.init(dom); + let option: EChartsOption; + option = { + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'shadow' + } + }, + legend: { + textStyle: { + color: '#fff' + } + }, + grid: { + left: '0%', + right: '0%', + bottom: '1%', + containLabel: true + }, + xAxis: { + type: 'category', + data: ['10:36:30', '10:36:30', '10:36:30', '10:36:30', '10:36:30', '10:36:30'], + axisLabel: { + color: '#fff' + } + }, + yAxis: { + type: 'value', + boundaryGap: [0, 0.01], + splitLine: { + show: false + }, + axisLabel:{ + color: '#ccc' + } + }, + series: [ + { + name: '2011', + type: 'bar', + data: [18, 23, 29, 10, 13, 6], + label:{ + show: true, + color: '#fff', + textBorderColor: 'transparent' + } + }, + { + name: '2012', + type: 'bar', + data: [19, 23, 31, 12, 13, 6], + label:{ + show: true, + color: '#fff', + textBorderColor: 'transparent' + } + } + ] + } + + option && myChart.setOption(option); + window.addEventListener("resize",function (){ + myChart.resize(); + }); + } + + const map = shallowRef(null) + const initMap=()=> { + let m = map.value + window._AMapSecurityConfig = { + securityJsCode: "456045075984862a9806587f0d7fee3c", + }; + AMapLoader.load({ + key: '5dbeedfa28e0d7fffb59684446569773', // 申请好的Web端开发者Key,首次调用 load 时必填 + version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15 + plugins: [] // 需要使用的的插件列表,如比例尺'AMap.Scale'等 + }) + .then(AMap => { + if (AMap && typeof AMap.Map === 'function') { + m = new AMap.Map('bigMap', { + viewMode: '2D', + mapStyle: 'amap://styles/normal', + zoom: 18, + center: [85.057805, 45.62550], + // layers:[ + // new AMap.TileLayer.RoadNet({}), + // new AMap.TileLayer.Satellite() + // ], + zooms:[2,20], + }) + + AMap.plugin(["AMap.DistrictSearch","AMap.ToolBar","AMap.ControlBar"],()=> { + var district = new AMap.DistrictSearch({ + extensions: "all", + subdistrict: 0, + level: "district", + }); + district.search("克拉玛依市", function (status, result) { + // // 外多边形坐标数组和内多边形坐标数组 + var outer = [ + new AMap.LngLat(-360, 90, true), + new AMap.LngLat(-360, -90, true), + new AMap.LngLat(360, -90, true), + new AMap.LngLat(360, 90, true), + ]; // 使得遮盖填充反向 + var holes = result.districtList[0].boundaries; // 得到该区域的边界坐标集合 + + var pathArray = [outer]; + pathArray.push.apply(pathArray, holes); + var polygon = new AMap.Polygon({ + pathL: pathArray, + //线条颜色,使用16进制颜色代码赋值。默认值为#006600 + strokeColor: "#11feee", + strokeWeight: 3, + fillColor: "#051342", + fillOpacity: 1, + strokeStyle: "solid", + strokeDasharray: [2, 2], + }); + polygon.setPath(pathArray) + m.add(polygon); + }) + m.addControl(new AMap.ToolBar({ + position: { + top: '20px', + left: 'calc(25% + 5px)' + } + })) + m.addControl(new AMap.ControlBar({ + position: { + top: '20px', + right: 'calc(25% + 5px)' + } + })) + }) + + } else { + console.error('AMap 或 AMap.Map 不可用'); + } + }) + .catch(e => { + console.log('加载高德地图时出错:', e) + }) + } + // 当前时间 + const getDateTime = () => { + const curTime = new Date().toLocaleString('zh', timeForm).replace(/\//g, '-'); + state.time = curTime.slice(10, 19); + state.date = curTime.slice(0, 10); + let week = ['日', '一', '二', '三', '四', '五', '六']; + let day = new Date().getDay(); + state.weekDay = '星期' + week[day]; + let curHour = Number(curTime.slice(10, 13)); + if (curHour >= 5 && curHour <= 10) { + state.dayTime = '上午'; + } + if (curHour > 10 && curHour <= 12) { + state.dayTime = '中午'; + } + if (curHour > 12 && curHour <= 18) { + state.dayTime = '下午'; + } + if (curHour > 18 && curHour <= 22) { + state.dayTime = '晚上'; + } + if (curHour > 22) { + state.dayTime = '午夜'; + } + } + const toFull= ()=>{ + router.push({ + path:"/fullScreen" + }) + context.emit('clickFull') + } + const back=()=>{ + window.history.go(-1); + context.emit('clickFull') + } + + onUnmounted(()=>{ + map.value && map.value.destroy(); + }) + + return { + timeForm, + config, + bigConfig, + gasN, + gasT, + map, + mouseoverHandler, + clickHandler, + toFull, + back, + ...toRefs(state) + }; + } +}); +</script> +<style lang="scss" scoped> +.charts-container{ + width: 100%; + height: 100%; + background: url("../../../assets/warningScreen/body-bg.png") no-repeat center; + background-size: 100% 100%; +} +.header-content { + width: 100%; + height: 10%; + padding: 0 20px; + display: flex; + align-items: flex-start; + justify-content: space-around; + z-index: 9; + + .title-left { + width: 27%; + height: 50%; + display: flex; + align-items: center; + .datetime{ + display: flex; + align-items: center; + color: #11feee; + + .timel{ + font-size: 30px; + margin-right: 10px; + } + .timer{ + font-size: 12px; + } + } + } + .title { + width: 46%; + height: 100%; + font-size: 28px; + font-weight: bolder; + display: flex; + align-items: center; + justify-content: center; + letter-spacing: 10px; + color: #11feee; + } + + .title-right { + width: 27%; + height: 50%; + display: flex; + align-items: center; + justify-content: right; + font-size: 14px; + + .btns{ + display: flex; + align-items: center; + top: 3%; + right: 10%; + + .backBtn,.fullBtn{ + display: flex; + color: #11feee; + align-items: center; + cursor: pointer; + + &>div{ + margin-left: 6px; + } + } + } + } +} +.main-content{ + width: 100%; + height: 90%; + padding: 10px; + display: flex; + align-items: flex-end; + justify-content: space-between; + position: relative; + + &>div{ + height: 100%; + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: flex-start; + &>div{ + padding: 0 4px; + box-sizing: border-box; + .chart-head{ + width: 100%; + height: 40px; + display: flex; + justify-content: space-between; + align-items: center; + + .chart-tit{ + width: 34%; + padding-left: 15px; + letter-spacing: 4px; + font-size: 16px; + font-weight: bolder; + line-height: 34px; + color: #11feee; + } + .long-tit{ + width: 40%; + } + .el-select{ + width: 60%; + height: 20px; + } + ::v-deep(.el-popper){ + background-color: rgba(10,31,92,1); + border: 1px solid rgba(17,254,238,.4); + color: #11FEEE; + + .el-icon{ + color: #11FEEE; + } + .el-select-dropdown__item{ + color: #11FEEE; + } + .el-select-dropdown__item.hover{ + background: #0049af; + } + } + ::v-deep(.el-popper__arrow){ + &::before{ + background-color: rgba(10,31,92,.6) !important; + border: 1px solid rgba(17,254,238,.4); + } + } + + .sys-status{ + width: 66%; + height: 70%; + display: flex; + align-items: center; + justify-content: center; + font-size: 12px; + div{ + color: #fff; + margin-left: 2px; + span{ + color: #11feee; + margin-left: 10px; + font-size: 14px; + } + } + } + + .el-radio-group{ + height: 90%; + width: 66%; + flex-flow: row nowrap; + display: flex; + align-items: center; + justify-content: right; + .el-radio{ + width: calc((100% - 6px)/4); + margin-right: 0; + margin-left: 2px; + margin-bottom: 0; + text-align: center; + border-color: #ccc; + &.el-radio--small{ + height: 20px; + } + :deep(.el-radio__inner){ + display: none; + } + :deep(.el-radio__label){ + width: 100%; + padding-left: 0; + font-size: 10px; + color: #ccc; + } + } + .el-radio.is-bordered.is-checked{ + border-color: #11FEEE; + background: #005dd6; + box-shadow: 0 3px 8px rgba(0,0,0,.2); + + :deep(.el-radio__label){ + color: #fff; + } + } + } + :deep(.el-date-editor){ + width: 66%; + height: 20px; + .el-range-separator{ + color: #fff; + } + } + + :deep(.el-input__wrapper){ + box-shadow: none; + border: 1px solid #11FEEE; + background: #005dd6; + color: #fff; + + input{ + font-size: 10px; + color: #fff; + } + .el-icon{ + display: none; + color: #fff; + } + } + + .searchGroup{ + width: 60%; + height: 20px; + display: flex; + align-items: center; + } + } + .chart-cont{ + height: calc(100% - 40px); + width: 100%; + display: flex; + align-items: center; + justify-content: space-around; + padding: 0 15px; + + .orange,.red{ + width: 140px; + height: 140px; + border-radius: 50%; + border: 2px solid #ffb74b; + padding: 8px; + div{ + width: 100%; + height: 100%; + border-radius: 50%; + background: #ffb74b; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + color: #fff; + font-size: 14px; + span:first-of-type{ + font-size: 28px; + font-weight: bolder; + margin-bottom: 4px; + } + } + } + .red{ + border: 2px solid #ee594a; + div{ + background: #ee594a; + } + } + :deep(.dv-scroll-board){ + width: 100%; + height: 90%; + .header{ + font-size: 12px; + color: #11feee; + } + .rows{ + .row-item{ + border-bottom: 1px dashed rgba(255,255,255,.2); + font-size: 12px; + } + } + } + .online{ + width: 50%; + padding: 0 10px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + .dv-decoration-9{ + width: 120px; + height: 120px; + .isOnline{ + font-size: 36px; + font-family: "PingFang SC"; + font-weight: 600; + color: #2af; + text-shadow: 0 1px 3px #2af; + } + .red-font{ + color: red; + text-shadow: 0 1px 3px red; + } + } + &>div{ + color: #2af; + margin-top: 10px; + } + .totalNum{ + color: #ccc; + span{ + font-size: 18px; + color: #11feee; + margin-right: 10px; + } + } + .dataPic{ + width: 100%; + height: 100px; + background: url("../../../assets/warningScreen/data.gif") no-repeat center; + background-size: 100% 100%; + } + } + .echart{ + width: 100%; + height: 80%; + } + } + + .bigData{ + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 5px 10px; + .bigPic{ + width: 100%; + height: 50px; + display: flex; + align-items: center; + justify-content: space-around; + div{ + width: 50px; + height: 50px; + background: url("../../../assets/warningScreen/data-1.png") no-repeat center; + background-size: 90% 90%; + } + div:nth-of-type(2){ + background: url("../../../assets/warningScreen/data-2.png") no-repeat center; + background-size: 90% 90%; + } + div:nth-of-type(3){ + background: url("../../../assets/warningScreen/data-3.png") no-repeat center; + background-size: 90% 90%; + } + div:nth-of-type(4){ + background: url("../../../assets/warningScreen/data-4.png") no-repeat center; + background-size: 90% 90%; + } + div:nth-of-type(5){ + background: url("../../../assets/warningScreen/data-5.png") no-repeat center; + background-size: 90% 90%; + } + div:nth-of-type(6){ + background: url("../../../assets/warningScreen/data-6.png") no-repeat center; + background-size: 90% 90%; + } + } + + :deep(.dv-scroll-board){ + width: 100%; + height: calc(100% - 60px); + .header{ + color: #11feee; + } + .rows{ + background: url("../../../assets/warningScreen/scroll-bg.png") no-repeat center; + background-size: 100% 100%; + padding: 6px 0 0; + .row-item{ + border-bottom: none; + } + } + } + } + } + } + + #bigMap{ + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + + :deep(.amap-logo){ + display: none!important; + visibility: hidden!important; + } + + :deep(.amap-copyright) { + display: none!important; + visibility: hidden!important; + } + } + + .main-left{ + z-index: 9; + width: calc(25% - 5px); + &>div{ + width: 100%; + height: calc((100%/3) - (20px/3)); + } + .withFilter{ + background: url("../../../assets/warningScreen/chart-bg2.png") no-repeat center; + background-size: 100% 100%; + } + .withoutFilter{ + background: url("../../../assets/warningScreen/chart-bg.png") no-repeat center; + background-size: 100% 100%; + } + } + .main-middle{ + width: calc(50% - 10px); + height: calc((100%/3) - (20px/3)); + z-index: 9; + + .mid-bottom{ + width: 100%; + height: 100%; + background: url("../../../assets/warningScreen/chart-bg4.png") no-repeat center; + background-size: 100% 100%; + } + } + .main-right{ + width: calc(25% - 5px); + z-index: 9; + &>div{ + width: 100%; + height: calc((100%/3) - (20px/3)); + } + .withFilter{ + background: url("../../../assets/warningScreen/chart-bg2.png") no-repeat center; + background-size: 100% 100%; + } + .withFilterLong{ + background: url("../../../assets/warningScreen/chart-bg3.png") no-repeat center; + background-size: 100% 100%; + } + .withoutFilter{ + background: url("../../../assets/warningScreen/chart-bg.png") no-repeat center; + background-size: 100% 100%; + } + } +} +</style> \ No newline at end of file diff --git a/src/views/bigScreen/fullScreen/index.vue b/src/views/bigScreen/fullScreen/index.vue new file mode 100644 index 0000000..44c799d --- /dev/null +++ b/src/views/bigScreen/fullScreen/index.vue @@ -0,0 +1,46 @@ +<template> + <div class="screen-container"> + <screen :isFull="isScreenfull" @clickFull="clickFullscreen"></screen> + </div> +</template> + +<script lang="ts"> +import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue'; +import screen from '../components/screen.vue' +import screenfull from 'screenfull' +import { ElMessage, ElMessageBox } from 'element-plus'; + +// 定义接口来定义对象的类型 +interface TableDataState { + isScreenfull: boolean +} + +export default defineComponent({ + name: 'fullScreen', + components: {screen}, + setup() { + const state = reactive<TableDataState>({ + isScreenfull: true, + }); + + // 页面加载时 + onMounted(() => { + + }); + + const clickFullscreen =() => { + + } + + return { + clickFullscreen, + ...toRefs(state) + }; + } +}); +</script> +<style lang="scss" scoped> +.screen-container{ + height: 100vh; +} +</style> \ No newline at end of file diff --git a/src/views/bigScreen/index.vue b/src/views/bigScreen/index.vue index f7775c5..375be53 100644 --- a/src/views/bigScreen/index.vue +++ b/src/views/bigScreen/index.vue @@ -1,39 +1,50 @@ <template> - <div class="system-role-container"> - 6666666 + <div class="screen-container"> + <screen :isFull="isScreenfull" @clickFull="clickFullscreen"></screen> </div> </template> <script lang="ts"> import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue'; +import screen from './components/screen.vue' +import screenfull from 'screenfull' +import { ElMessage, ElMessageBox } from 'element-plus'; // 定义接口来定义对象的类型 -interface TableData { - -} interface TableDataState { - + isScreenfull: boolean } export default defineComponent({ name: 'bigScreen', - components: { }, + components: { screen }, setup() { - const roleDialogRef = ref(); const state = reactive<TableDataState>({ - + isScreenfull: false, }); // 页面加载时 onMounted(() => { }); - return { - ...toRefs(state) + + const clickFullscreen =() => { + if(!screenfull.isEnabled){ + ElMessage.error('浏览器不支持') + return false + } + screenfull.toggle(); + } + + return { + clickFullscreen, + ...toRefs(state) }; } }); </script> <style lang="scss" scoped> - +.screen-container{ + height: calc(100vh - 144px); +} </style> \ No newline at end of file diff --git a/src/views/loginPage/component/accountLogin.vue b/src/views/loginPage/component/accountLogin.vue index d6c456d..1e074ad 100644 --- a/src/views/loginPage/component/accountLogin.vue +++ b/src/views/loginPage/component/accountLogin.vue @@ -1,14 +1,14 @@ <template> <el-form size="large" class="login-content-form"> <el-form-item class="login-animation1"> - <el-input type="text" :placeholder="$t('message.account.accountPlaceholder1')" v-model="ruleForm.name" clearable autocomplete="off" size="large"> + <el-input type="text" placeholder="请输入用户名" v-model="ruleForm.name" clearable autocomplete="off" size="large"> <template #prefix> <el-icon class="el-input__icon" style="margin-right: 20px"><img src="../../../assets/loginPage/login_icon_user.png" style="width: 24px; height: 24px" /></el-icon> </template> </el-input> </el-form-item> <el-form-item class="login-animation2"> - <el-input :type="isShowPassword ? 'text' : 'password'" :placeholder="$t('message.account.accountPlaceholder2')" v-model="ruleForm.pwd" autocomplete="off" size="large" @keyup.enter.native="onSignIn"> + <el-input :type="isShowPassword ? 'text' : 'password'" placeholder="请输入密码" v-model="ruleForm.pwd" autocomplete="off" size="large" @keyup.enter.native="onSignIn"> <template #prefix> <el-icon class="el-input__icon" style="margin-right: 20px"><img src="../../../assets/loginPage/login_icon_password.png" style="width: 24px; height: 24px" /></el-icon> </template> @@ -84,7 +84,7 @@ import { useLoginApi } from '/@/api/login'; import { useUserInfo } from '/@/stores/userInfo'; import type { FormInstance, FormRules } from 'element-plus' - +import "amfe-flexible"; import {verifyPhone,verifyIdCard} from "/@/utils/toolsValidate" import { Base64 } from 'js-base64' import {useMenuApi} from "/@/api/systemManage/menu"; @@ -122,6 +122,17 @@ // 页面载入时执行方法 onMounted(() => { hasUserCodeOrPassword() + const baseSize = 38; + /* 设置 rem 函数 */ + function setRem() { + const scale = document.documentElement.clientWidth / 1920; /* 当前页面宽度缩放比例,可根据自己需要修改 */ + document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + "px";/* 设置页面根节点字体大小 */ + } + setRem();/* 初始化 rem */ + + window.onresize = () => { + setRem();/* 改变窗口大小时重新设置 rem */ + } // getAllDepartment(); }); @@ -190,7 +201,6 @@ state.loading.signIn = true; // 存储 token 到浏览器缓存 let res = await useLoginApi().signIn(state.ruleForm); - console.log(res) if (res.data.code === 100) { await userInfo.setUserInfos(res.data.data); Cookies.set('token', res.data.data.tk); @@ -388,7 +398,6 @@ border: 1px solid #11FEEE; letter-spacing: 4px; font-weight: 300; - margin-top: 15px; background-image: linear-gradient(to bottom,#0081C2,#003892,#0081C2); transition: 0.3s; box-shadow: 0 8px 30px rgba(88,101,241,.4); @@ -397,6 +406,7 @@ border: 2px solid #11FEEE; color: #11FEEE; font-weight: bolder; + background-color: transparent; background-image: linear-gradient(to bottom,#003892,#003892,#003892); } &:active { @@ -404,6 +414,7 @@ border: 2px solid #11FEEE; color: #11FEEE; font-weight: bolder; + background-color: transparent; background-image: linear-gradient(to bottom,#003892,#003892,#003892); } } diff --git a/src/views/loginPage/loginPage.vue b/src/views/loginPage/loginPage.vue index 7ad9d7c..a41bf07 100644 --- a/src/views/loginPage/loginPage.vue +++ b/src/views/loginPage/loginPage.vue @@ -1,5 +1,8 @@ <template> <div class="login-container"> + <div class="starBg"> + + </div> <div class="loginContent"> <div class="welcc">广域特殊气体泄露在线监测预警系统</div> <div class="loginPanel"> @@ -23,7 +26,7 @@ import loginIconTwo from '/@/assets/login-icon-two.svg'; import { NextLoading } from '/@/utils/loading'; import AccountLogin from '/@/views/loginPage/component/accountLogin.vue'; - +import "amfe-flexible"; // 定义接口来定义对象的类型 interface LoginState { isScan: boolean; @@ -45,6 +48,17 @@ // 页面加载时 onMounted(() => { NextLoading.done(); + const baseSize = 38; + /* 设置 rem 函数 */ + function setRem() { + const scale = document.documentElement.clientWidth / 1920; /* 当前页面宽度缩放比例,可根据自己需要修改 */ + document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + "px";/* 设置页面根节点字体大小 */ + } + setRem();/* 初始化 rem */ + + window.onresize = () => { + setRem();/* 改变窗口大小时重新设置 rem */ + } }); return { logoMini, @@ -77,7 +91,19 @@ background: url('../../assets/loginPage/login-bg.jpg') no-repeat center; background-size: 100% 100%; /*background-image: radial-gradient(at center, #0075c3, #000b61);*/ - + .starBg{ + width: 1030px; + height: 1135px; + position: absolute; + left: 50%; + transform: translateX(-50%); + top: 50px; + z-index: -1; + background: url("../../assets/loginPage/starFalls.gif") no-repeat center; + background-size: 100% 100%; + opacity: 0.1; + -webkit-opacity: 0.1; + } .rights { font-size: 12px; color: #fff; @@ -91,7 +117,7 @@ } } .loginContent { - width: 32vw; + width: 40%; display: flex; flex-direction: column; align-items: center; @@ -109,7 +135,7 @@ } .loginPanel { width: 100%; - padding: 4vh; + padding: 60px 180px 80px; box-sizing: border-box; display: flex; flex-direction: column; diff --git a/vite.config.ts b/vite.config.ts index b761ba2..94ad22d 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,7 +1,7 @@ import vue from '@vitejs/plugin-vue'; import { resolve } from 'path'; import { defineConfig, loadEnv, ConfigEnv } from 'vite'; - +import postCssPxToRem from "postcss-pxtorem" const pathResolve = (dir: string): any => { return resolve(__dirname, '.', dir); }; @@ -57,18 +57,18 @@ css: { postcss: { plugins: [ - { - postcssPlugin: 'internal:charset-removal', - AtRule: { - charset: (atRule) => { - if (atRule.name === 'charset') { - atRule.remove(); - } + postCssPxToRem({ + rootValue: 37.5, // 1rem的大小(控制1rem的大小 点位:px) + propList: ["*"], // 需要转换的属性,这里选择全部都进行转换 + exclude: (e:any) => { // 不包含 + if (/src(\\|\/)views(\\|\/)bigScreen(\\|\/)components(\\|\/)screen/.test(e)||/src(\\|\/)views(\\|\/)loginPage(\\|\/)loginPage/.test(e)||/src(\\|\/)views(\\|\/)loginPage(\\|\/)component(\\|\/)accountLogin/.test(e)) { // 指定生效页面(正则) + return false; } + return true; } - } - ] - } + }), + ], + }, }, define: { __VUE_I18N_LEGACY_API__: JSON.stringify(false), -- Gitblit v1.9.2