From 987027d23b3a1b5935d36de691a19749b4778432 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期一, 18 三月 2024 15:42:23 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/assets/images/screen/pageBg1.jpg | 0 src/views/screen/components/wrapper-title/index.vue | 40 ++ src/views/system/check-result/index.vue | 16 src/views/home/data-view/components/data-hola.vue | 1 src/views/screen/components/screen-wrapper/index.vue | 68 +++ src/views/system/score/index.vue | 31 - src/views/screen/components/screen-face/index.vue | 186 +++++++++ src/assets/images/screen/icon/icon1.png | 0 src/assets/images/screen/title_bg.png | 0 src/views/screen/components/screen-title/index.vue | 41 ++ src/views/system/face/index.vue | 98 +++- src/views/home/data-view/components/data-map.vue | 3 src/views/screen/components/screen-detection/index.vue | 91 ++++ src/views/system/video/index.vue | 99 +++- src/permission.js | 2 src/views/screen/components/screen-examine/components/examine-chart.vue | 61 +++ src/assets/images/screen/icon/icon2.png | 0 src/views/system/unit/people/index.vue | 4 src/views/screen/index.vue | 38 ++ src/views/screen/components/select-item/index.vue | 15 src/router/index.js | 8 src/views/screen/components/screen-car/index.vue | 19 + src/views/system/car/index.vue | 99 +++- src/views/screen/components/screen-examine/index.vue | 47 ++ src/views/system/recovery/index.vue | 100 +++- src/views/home/data-view/index.vue | 21 + src/views/system/contract/index.vue | 4 src/main.js | 10 src/views/home/data-wrapper/index.vue | 12 package.json | 2 src/assets/images/screen/header_bg.png | 0 src/views/home/work-order/index.vue | 2 32 files changed, 968 insertions(+), 150 deletions(-) diff --git a/package.json b/package.json index 6064f00..a1a5874 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "url": "https://gitee.com/y_project/RuoYi-Vue.git" }, "dependencies": { + "@jiaminghi/data-view": "^2.10.0", "@riophae/vue-treeselect": "0.4.0", "axios": "0.24.0", "clipboard": "2.0.8", @@ -54,6 +55,7 @@ "quill": "1.3.7", "screenfull": "5.0.2", "sortablejs": "1.10.2", + "v-scale-screen": "1.0.0", "vue": "2.6.12", "vue-count-to": "1.0.13", "vue-cropper": "0.5.5", diff --git a/src/assets/images/screen/header_bg.png b/src/assets/images/screen/header_bg.png new file mode 100644 index 0000000..a3a906a --- /dev/null +++ b/src/assets/images/screen/header_bg.png Binary files differ diff --git a/src/assets/images/screen/icon/icon1.png b/src/assets/images/screen/icon/icon1.png new file mode 100644 index 0000000..0663b6d --- /dev/null +++ b/src/assets/images/screen/icon/icon1.png Binary files differ diff --git a/src/assets/images/screen/icon/icon2.png b/src/assets/images/screen/icon/icon2.png new file mode 100644 index 0000000..f0146c6 --- /dev/null +++ b/src/assets/images/screen/icon/icon2.png Binary files differ diff --git a/src/assets/images/screen/pageBg1.jpg b/src/assets/images/screen/pageBg1.jpg new file mode 100644 index 0000000..fa8b0e0 --- /dev/null +++ b/src/assets/images/screen/pageBg1.jpg Binary files differ diff --git a/src/assets/images/screen/title_bg.png b/src/assets/images/screen/title_bg.png new file mode 100644 index 0000000..76ae280 --- /dev/null +++ b/src/assets/images/screen/title_bg.png Binary files differ diff --git a/src/main.js b/src/main.js index a8d407c..9ede569 100644 --- a/src/main.js +++ b/src/main.js @@ -1,7 +1,7 @@ import Vue from 'vue' import Cookies from 'js-cookie' -import {getToken} from "@/utils/auth"; +import { getToken } from "@/utils/auth"; import Element from 'element-ui' import './assets/styles/element-variables.scss' @@ -38,6 +38,12 @@ // 瀛楀吀鏁版嵁缁勪欢 import DictData from '@/components/DictData' +// 澶у睆 +import VScaleScreen from 'v-scale-screen' +import dataV from '@jiaminghi/data-view' + + + // 鍏ㄥ眬鏂规硶鎸傝浇 Vue.prototype.getDicts = getDicts Vue.prototype.getConfigKey = getConfigKey @@ -62,6 +68,8 @@ Vue.use(directive) Vue.use(plugins) Vue.use(VueMeta) +Vue.use(VScaleScreen) +Vue.use(dataV) DictData.install() /** diff --git a/src/permission.js b/src/permission.js index 45c6285..462668d 100644 --- a/src/permission.js +++ b/src/permission.js @@ -8,7 +8,7 @@ NProgress.configure({ showSpinner: false }) -const whiteList = ['/login', '/register'] +const whiteList = ['/login', '/register', '/screen'] router.beforeEach((to, from, next) => { NProgress.start() diff --git a/src/router/index.js b/src/router/index.js index 71907b6..f244038 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -75,6 +75,14 @@ ] }, { + path: '/screen', + component: Layout, + hidden: true, + component: () => import('@/views/screen/index'), + name: 'Profile', + meta: { title: '澶у睆淇℃伅', icon: 'user' } + }, + { path: '/user', component: Layout, hidden: true, diff --git a/src/views/home/data-view/components/data-hola.vue b/src/views/home/data-view/components/data-hola.vue index 98177aa..3ea7044 100644 --- a/src/views/home/data-view/components/data-hola.vue +++ b/src/views/home/data-view/components/data-hola.vue @@ -16,6 +16,7 @@ top: '5%', left: 'center' }, + color: ['#7868d9','#3eba45','#3da7f8','#ffbe40','#fe640d'], series: [ { type: 'pie', diff --git a/src/views/home/data-view/components/data-map.vue b/src/views/home/data-view/components/data-map.vue index e7a7536..185fa90 100644 --- a/src/views/home/data-view/components/data-map.vue +++ b/src/views/home/data-view/components/data-map.vue @@ -41,7 +41,8 @@ beta: -30, alpha: 90, distance: 100, - maxBeta: 180 + maxBeta: 180, + panSensitivity: 0 }, // 榧犳爣绉诲叆鏃舵牱寮� emphasis: { diff --git a/src/views/home/data-view/index.vue b/src/views/home/data-view/index.vue index 026df58..948df3f 100644 --- a/src/views/home/data-view/index.vue +++ b/src/views/home/data-view/index.vue @@ -8,6 +8,14 @@ <el-card class="map-wrapper"> + <el-row> + <el-col :offset="21" :span="3"> + <el-select v-model="selectOption" placeholder="璇烽�夋嫨"> + <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-col> + </el-row> <el-row :gutter="40" class="data-plane" style="height: 100%;"> <el-col :xs='24' :md="24" :sm="24" :lg="6" :xl="6" style="height: 100%;"> <data-icon :activeData="activeData"></data-icon> @@ -105,7 +113,18 @@ "data5": 95 } ], - activeData: {name: '鑷础甯�', data1: 0, data2: 0, data3: 0, data4: 0, data5:0} + activeData: { name: '鑷础甯�', data1: 0, data2: 0, data3: 0, data4: 0, data5: 0 }, + options: [ + { + value: 1, + label: '鐪佸巺鏁版嵁' + }, + { + value: 2, + label: '甯傚眬鏁版嵁' + }, + ], + selectOption: 1 } }, methods: { diff --git a/src/views/home/data-wrapper/index.vue b/src/views/home/data-wrapper/index.vue index fcb0ab3..a424f12 100644 --- a/src/views/home/data-wrapper/index.vue +++ b/src/views/home/data-wrapper/index.vue @@ -1,6 +1,12 @@ <template> <div class="data-container"> <el-row :gutter="40"> + <el-col :xs='24' :md="24" :sm="24" :lg="24" :xl="12"> + <data-chart></data-chart> + </el-col> + <el-col :xs='24' :md="24" :sm="24" :lg="24" :xl="12"> + <work-order></work-order> + </el-col> <el-col :xs='24' :md="24" :sm="24" :lg="17" :xl="17"> <data-table></data-table> <examine></examine> @@ -8,12 +14,6 @@ <el-col :xs='24' :md="24" :sm="24" :lg="7" :xl="7"> <data-rank></data-rank> <data-check></data-check> - </el-col> - <el-col :xs='24' :md="24" :sm="24" :lg="12" :xl="12"> - <data-chart></data-chart> - </el-col> - <el-col :xs='24' :md="24" :sm="24" :lg="12" :xl="12"> - <work-order></work-order> </el-col> </el-row> </div> diff --git a/src/views/home/work-order/index.vue b/src/views/home/work-order/index.vue index 62e8f07..a261037 100644 --- a/src/views/home/work-order/index.vue +++ b/src/views/home/work-order/index.vue @@ -3,7 +3,7 @@ <el-card class="data-card" :body-style="{ height: '100%' }"> <div class="card-content"> <div class="title-container"> - <h1>杩愮淮鐩戞帶鎶ヨ〃</h1> + <h1>杩愮淮宸ュ崟鎶ヨ〃</h1> <div class="select-container"> <el-select v-model="company" placeholder="璇烽�夋嫨杩愮淮鍏徃" @change="companyChange"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> diff --git a/src/views/screen/components/screen-car/index.vue b/src/views/screen/components/screen-car/index.vue new file mode 100644 index 0000000..76da509 --- /dev/null +++ b/src/views/screen/components/screen-car/index.vue @@ -0,0 +1,19 @@ +<template> + <div class="car-container"> + <wrapper-title :title="'浜鸿劯鏁版嵁瓒嬪娍'"></wrapper-title> + + </div> +</template> + +<script> +import WrapperTitle from '../wrapper-title/index'; + +export default { + name: 'ScreenCar', + components: { + WrapperTitle + }, +} +</script> + +<style lang="scss" scoped></style> \ No newline at end of file diff --git a/src/views/screen/components/screen-detection/index.vue b/src/views/screen/components/screen-detection/index.vue new file mode 100644 index 0000000..714f076 --- /dev/null +++ b/src/views/screen/components/screen-detection/index.vue @@ -0,0 +1,91 @@ +<template> + <div class="detection-container"> + <wrapper-title :title="'杩愯鐩戞帶鏁版嵁'"></wrapper-title> + + <div class="detection-content"> + <div class="water-item"> + <dv-water-level-pond :config="config1" style="width:100px;height:100px" /> + <div class="water-num water-text">6250/0</div> + <div class="water-label water-text">鎺ュ叆鐜�</div> + </div> + <div class="water-item"> + <dv-water-level-pond :config="config2" style="width:100px;height:100px" /> + <div class="water-num water-text">6236/6250</div> + <div class="water-label water-text">GIS鐜�</div> + </div> + <div class="water-item"> + <dv-water-level-pond :config="config3" style="width:100px;height:100px" /> + <div class="water-num water-text">5962/6250</div> + <div class="water-label water-text">鍦ㄧ嚎鐜�</div> + </div> + <div class="water-item"> + <dv-water-level-pond :config="config4" style="width:100px;height:100px" /> + <div class="water-num water-text">5255/5962</div> + <div class="water-label water-text">瀹屽ソ鐜�</div> + </div> + </div> + </div> +</template> + +<script> +import WrapperTitle from '../wrapper-title/index'; +export default { + components: { + WrapperTitle + }, + data() { + return { + config1: { + data: [0], + shape: 'round', + waveHeight: 5 + }, + config2: { + data: [99.77], + shape: 'round', + waveHeight: 5 + }, + config3: { + data: [95.39], + shape: 'round', + waveHeight: 5 + }, + config4: { + data: [88.14], + shape: 'round', + waveHeight: 5 + }, + } + } +} +</script> + +<style lang="scss" scoped> + +.detection-content { + width: 100%; + display: flex; + flex-wrap: wrap; + justify-content: space-between; + background: rgba(67, 102, 155, 0.3); + border: 1px solid rgba(47, 91, 157, 0.8); + padding: 20px 20px; +} + +.water-item { + font-size: 16px; + color: #fff; + + .water-text { + text-align: center; + } + + .water-num { + margin-top: 20px; + } + + .water-label { + font-size: 20px; + } +} +</style> \ No newline at end of file diff --git a/src/views/screen/components/screen-examine/components/examine-chart.vue b/src/views/screen/components/screen-examine/components/examine-chart.vue new file mode 100644 index 0000000..0a6b467 --- /dev/null +++ b/src/views/screen/components/screen-examine/components/examine-chart.vue @@ -0,0 +1,61 @@ +<template> + <div class="chart-container"> + <div class="rank-chart" ref="rankChart"></div> + </div> +</template> + +<script> +import * as echarts from 'echarts'; +let barChart = null; +export default { + name: 'ExamineChart', + data() { + return { + + } + }, + + methods: { + initChart() { + const options = { + xAxis: { + type: 'category', + data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] + }, + yAxis: { + type: 'value' + }, + series: [ + { + data: [120, 200, 150, 80, 70, 110, 130], + type: 'bar' + } + ] + } + barChart.setOption(options,true); + } + }, + mounted() { + barChart = echarts.init(this.$refs.rankChart); + + this.initChart(); + }, + beforeDestroy() { + if (lineChart) { + barChart.dispose(); + } + }, + +} +</script> + +<style lang="scss" scoped> +.chart-container { + width: 100%; + height: 400px; + .rank-chart { + width: 100%; + height: 100%; + } +} +</style> \ No newline at end of file diff --git a/src/views/screen/components/screen-examine/index.vue b/src/views/screen/components/screen-examine/index.vue new file mode 100644 index 0000000..eccbc90 --- /dev/null +++ b/src/views/screen/components/screen-examine/index.vue @@ -0,0 +1,47 @@ +<template> + <div class="examine-container"> + <wrapper-title :title="'鑰冩牳鎴愮哗鏁版嵁'"></wrapper-title> + <div class="examine-content"> + <div class="examine-wrapper"> + <examine-chart></examine-chart> + </div> + </div> + </div> +</template> + +<script> +import WrapperTitle from '../wrapper-title/index'; +import ExamineChart from './components/examine-chart'; +export default { + name: 'ScreenExamine', + components: { + WrapperTitle, + ExamineChart + } +} + +</script> + +<style lang="scss" scoped> +.examine-container { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; +} +.examine-content { + width: 100%; + flex: 1; + background: rgba(67, 102, 155, 0.3); + border: 1px solid rgba(47, 91, 157, 0.8); + padding: 20px 20px; + position: relative; + .examine-wrapper { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + } +} +</style> \ No newline at end of file diff --git a/src/views/screen/components/screen-face/index.vue b/src/views/screen/components/screen-face/index.vue new file mode 100644 index 0000000..978f2a5 --- /dev/null +++ b/src/views/screen/components/screen-face/index.vue @@ -0,0 +1,186 @@ +<template> + <div class="face-container"> + <wrapper-title :title="'浜鸿劯鏁版嵁瓒嬪娍'"></wrapper-title> + + <div class="face-content"> + <div class="data-plane"> + <dv-border-box-13 class="plane"> + <div class="data-item"> + <div class="data-icon"> + <img src="@/assets/images/screen/icon/icon1.png" alt="" class="width-img"> + </div> + <div class="data-info"> + <div class="data-lable">鏄ㄦ棩浜鸿劯閲囬泦璁惧鎬绘暟</div> + <div class="data-num">{{formatNumber(1123)}}</div> + </div> + </div> + </dv-border-box-13> + + <dv-border-box-13 class="plane"> + <div class="data-item"> + <div class="data-icon"> + <img src="@/assets/images/screen/icon/icon2.png" alt="" class="width-img"> + </div> + <div class="data-info"> + <div class="data-lable">鏄ㄦ棩鎶撴媿鏁版嵁閲�</div> + <div class="data-num">{{ formatNumber(200000) }}</div> + </div> + </div> + </dv-border-box-13> + + <dv-border-box-13 class="plane"> + <div class="data-item"> + <div class="data-icon"> + <img src="@/assets/images/screen/icon/icon2.png" alt="" class="width-img"> + </div> + <div class="data-info"> + <div class="data-lable">鍘嗗彶鎶撴媿鏁版嵁閲�</div> + <div class="data-num">{{ formatNumber(112313141111) }}</div> + </div> + </div> + </dv-border-box-13> + </div> + <div id="faceChart" ref="faceChart"></div> + </div> + </div> + +</template> + +<script> +import WrapperTitle from '../wrapper-title/index'; +import * as echarts from 'echarts'; +let lineChart = null; +export default { + name: 'ScreenFace', + components: { + WrapperTitle + }, + data() { + return { + dataList: { + state: { '01:00': 1000, '02:00': 2131, '03:00': 1233, '04:00': 2132, '05:00': 3211, '06:00': 213, '07:00': 123, '08:00': 566 }, + state2: { '01:00': 900, '02:00': 1131, '03:00': 1533, '04:00': 2132, '05:00': 3011, '06:00': 13, '07:00': 113, '08:00': 566 }, + }, + } + }, + + methods: { + initChart() { + const option = { + legend: { + right: 'right', + top: 'top', + orient: "vertical", + icon: 'rect', + data: [ + { + name: '姝e父鏁�', + itemStyle: { + color: 'rgba(62, 144, 247, 1)' + } + }, + { + name: '寮傚父鏁�', + itemStyle: { + color: 'rgba(85, 192, 191, 1)' + } + }, + ], + }, + grid: { + left: '2%', + right: '5%', + bottom: '5%', + top: '8%', + containLabel: true + }, + tooltip: {}, + xAxis: { + type: 'category', + data: Object.keys(this.dataList.state), + }, + yAxis: {}, + series: [ + { + name: '浠婃棩', + data: Object.entries(this.dataList.state).map(([key, value]) => value), + type: 'line', + itemStyle: { + color: 'rgba(62, 144, 247, 1)' + } + }, + { + name: '鏄ㄦ棩', + data: Object.entries(this.dataList.state2).map(([key, value]) => value), + type: 'line', + itemStyle: { + color: 'rgba(85, 192, 191, 1)' + } + } + ] + }; + lineChart.setOption(option, true); + }, + + formatNumber(value) { + return new Intl.NumberFormat('en-US').format(value); + } + }, + + mounted() { + lineChart = echarts.init(this.$refs.faceChart); + this.initChart(); + }, + beforeDestroy() { + if (lineChart) { + lineChart.dispose(); + } + }, +} +</script> + +<style lang="scss" scoped> +.face-content { + background: rgba(67, 102, 155, 0.3); + border: 1px solid rgba(47, 91, 157, 0.8); + + .plane { + margin-bottom: 10px; + } + + .data-plane { + .data-item { + width: 100%; + padding: 20px 20px; + display: flex; + align-items: center; + + .data-icon { + width: 40px; + margin: 0 20px; + } + + .data-info { + flex: 1; + color: #5b83bd; + font-size: 16px; + + .data-num { + margin-top: 5px; + font-size: 24px; + color: #fff; + } + } + } + } + + #faceChart { + width: 100%; + height: 300px; + } +} + +.width-img { + width: 100%; +} +</style> \ No newline at end of file diff --git a/src/views/screen/components/screen-title/index.vue b/src/views/screen/components/screen-title/index.vue new file mode 100644 index 0000000..1cf07c4 --- /dev/null +++ b/src/views/screen/components/screen-title/index.vue @@ -0,0 +1,41 @@ +<template> + <div class="header-container"> + <div class="header-content"> + <div class="header-bg"> + <img src="@/assets/images/screen/header_bg.png" class="width-img" alt=""> + </div> + <div class="header-text"> + 鑷础杩愮淮鑰冩牳鍙鍖栧ぇ灞� + </div> + </div> + </div> +</template> + +<script> +export default { + name: 'ScreenTitle' +} +</script> + +<style lang="scss" scoped> +.header-container { + width: 1000px; + position: absolute; + top: 0; + left: 50%; + transform: translateX(-50%); +} + +.width-img { + width: 100%; + display: block; +} +.header-text { + position: absolute; + left: 49%; + top: 15px; + transform: translateX(-50%); + color: #fff; + font-size: 30px; +} +</style> \ No newline at end of file diff --git a/src/views/screen/components/screen-wrapper/index.vue b/src/views/screen/components/screen-wrapper/index.vue new file mode 100644 index 0000000..0dbff49 --- /dev/null +++ b/src/views/screen/components/screen-wrapper/index.vue @@ -0,0 +1,68 @@ +<template> + <div class="wrapper-container"> + <div class="wrapper-content"> + <div class="left-container wrapper"> + <screen-face></screen-face> + </div> + <div class="center-container wrapper"> + <screen-detection></screen-detection> + </div> + <div class="right-container wrapper"> + <screen-examine></screen-examine> + </div> + </div> + </div> +</template> + +<script> +import ScreenFace from '../screen-face/index'; +import ScreenDetection from '../screen-detection/index'; +import ScreenExamine from '../screen-examine/index'; +export default { + name: 'ScreenWrapper', + components: { + ScreenFace, + ScreenDetection, + ScreenExamine, + }, +} +</script> + +<style lang="scss" scoped> +.wrapper-container { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + z-index: 1; + .wrapper-content { + width: 100%; + height: calc(100% - 100px); + margin-top: 100px; + border: 1px solid red; + position: relative; + box-sizing: border-box; + padding: 20px; + display: flex; + align-items: center; + } +} + +.wrapper { + width: 33.3%; + height: 100%; + box-sizing: border-box; + padding: 0 10px; + border: 1px solid red; + display: flex; + flex-direction: column; + justify-content: space-between; + &:first-of-type { + padding-left: 0; + } + &:last-of-type { + padding-right: 0; + } +} +</style> \ No newline at end of file diff --git a/src/views/screen/components/select-item/index.vue b/src/views/screen/components/select-item/index.vue new file mode 100644 index 0000000..f458ad6 --- /dev/null +++ b/src/views/screen/components/select-item/index.vue @@ -0,0 +1,15 @@ +<template> + <div class="select-container"> + + </div> +</template> + +<script> + export default { + + } +</script> + +<style lang="scss" scoped> + +</style> \ No newline at end of file diff --git a/src/views/screen/components/wrapper-title/index.vue b/src/views/screen/components/wrapper-title/index.vue new file mode 100644 index 0000000..9e7593f --- /dev/null +++ b/src/views/screen/components/wrapper-title/index.vue @@ -0,0 +1,40 @@ +<template> + <div class="title-container"> + <span class="title">{{ title }}</span> + </div> +</template> + +<script> +export default { + name: 'WrapperTitle', + props: { + title: { + type: String, + required: true + } + } +} +</script> + +<style lang="scss" scoped> +.title-container { + background-image: url("../../../../assets/images/screen/title_bg.png"); + background-size: 231px 100%; + background-repeat: no-repeat; + height: 38px; + width: 100%; + position: relative; + display: flex; + align-items: center; + margin-bottom: 10px; + + .title { + margin-left: 20px; + margin-top: -2px; + color: #fff; + letter-spacing: 2px; + font-size: 20px; + font-style: italic; + } +} +</style> \ No newline at end of file diff --git a/src/views/screen/index.vue b/src/views/screen/index.vue new file mode 100644 index 0000000..7f4fb93 --- /dev/null +++ b/src/views/screen/index.vue @@ -0,0 +1,38 @@ +<template> + <div class="screen-container"> + <screen-title></screen-title> + <v-scale-screen width="1920" height="1080" :autoScale="true" :delay="0" class="screen"> + <screen-wrapper></screen-wrapper> + </v-scale-screen> + </div> + +</template> + +<script> +import ScreenTitle from './components/screen-title/index.vue'; +import ScreenWrapper from './components/screen-wrapper/index.vue'; + +export default { + name: 'App', + components: { + ScreenTitle, + ScreenWrapper, + }, + data() { + return { + } + }, + mounted() { + + } +} +</script> + +<style lang="scss" scoped> +.screen { + background: url('../../assets/images/screen/pageBg1.jpg') !important; + background-size: cover !important; + background-repeat: no-repeat !important; + background-position: center center !important; +} +</style> \ No newline at end of file diff --git a/src/views/system/car/index.vue b/src/views/system/car/index.vue index 64c4527..91b35be 100644 --- a/src/views/system/car/index.vue +++ b/src/views/system/car/index.vue @@ -1,5 +1,39 @@ <template> <div class="app-container"> + <el-card class="box-card" > + <el-row type="flex" align="middle" justify="space-between"> + <el-col :xl="8" :lg="8" :md="10" :sm="8" :xs="6"> + <div class="icon-container" style="background-color: #5599F7"> + <i class="el-icon-truck"></i> + </div> + </el-col> + <el-col :xl="14" :lg="14" :md="12" :sm="14" :xs="16"> + <div class="dashboard"> + <div class="dashboard-item"> + <h3 style="color: #5C9BF8">{{ totalPosts }}</h3> + <p>璁惧鎬绘暟</p > + </div> + <div class="dashboard-item"> + <h3 style="color: #3eba45">{{ totalMembers }}</h3> + <p>姝e父鏁�</p > + </div> + <div class="dashboard-item"> + <h3 style="color: #fe640d">{{ postsPercentage }}</h3> + <p>寮傚父鏁�</p > + </div> + <div class="dashboard-item"> + <h3 style="color: #7868d9">{{ totalViews }}</h3> + <p>鐢熸垚寮傚父宸ュ崟鏁�</p > + </div> + <div class="dashboard-item"> + <h3>{{ viewsPercentage }}%</h3> + <p>璁惧杩愯鐜�</p > + </div> + </div> + </el-col> + </el-row> + </el-card> + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form-item label="璁惧鍚嶇О" prop="name"> <el-input @@ -24,30 +58,7 @@ /> </el-select> </el-form-item> - <el-form-item label="鍦板潃" prop="address"> - <el-input - v-model="queryParams.address" - placeholder="璇疯緭鍏ヨ鏀垮尯鍩�" - clearable - @keyup.enter.native="handleQuery" - /> - </el-form-item> - <el-form-item label="瀹夎鏃堕棿" prop="installedTime"> - <el-date-picker clearable - v-model="queryParams.installedTime" - type="date" - value-format="yyyy-MM-dd" - placeholder="璇烽�夋嫨瀹夎鏃堕棿"> - </el-date-picker> - </el-form-item> - <el-form-item label="绠$悊鍗曚綅" prop="managementUnit"> - <el-input - v-model="queryParams.managementUnit" - placeholder="璇疯緭鍏ョ鐞嗗崟浣�" - clearable - @keyup.enter.native="handleQuery" - /> - </el-form-item> + <el-form-item label="鏄惁鐢熸垚寮傚父宸ュ崟" prop="defaultOrder" label-width="130px"> <el-select v-model="queryParams.defaultOrder" @@ -169,6 +180,12 @@ dicts: ['sys_normal_disable','platform_yes_no','camera_state'], data() { return { + totalPosts: 1156, + totalMembers: 1000, + postsPercentage: 156, + totalViews: 75, + viewsPercentage: 91.36, + totalErrors: 0, // 閬僵灞� loading: true, // 閫変腑鏁扮粍 @@ -327,3 +344,37 @@ } }; </script> + +<style lang="scss" scoped> + +.box-card { + background-color: #F5F9FE; + width: 100%; + margin-bottom: 20px; + height: 120px +} +.icon-container { + display: flex; + justify-content: center; + align-items: center; + border-radius: 20px; + width: 20%; + height: 80px; + margin-left: 5%; +} +.el-icon-truck { + font-size: 50px; + color: #FFFFFF; +} + +.dashboard { + display: flex; + gap: 10%; + align-items: center; + margin-left: -50%; +} + +.dashboard-item { + text-align: center; +} +</style> diff --git a/src/views/system/check-result/index.vue b/src/views/system/check-result/index.vue index 3a572cd..593bafc 100644 --- a/src/views/system/check-result/index.vue +++ b/src/views/system/check-result/index.vue @@ -100,12 +100,12 @@ icon="el-icon-view" @click="handleDetail(scope.row)" >璇︽儏</el-button> - <el-button - type="text" - size="mini" - icon="el-icon-edit" - @click="handleSetManualScore(scope.row)" - >浜哄伐鎵撳垎</el-button> +<!-- <el-button--> +<!-- type="text"--> +<!-- size="mini"--> +<!-- icon="el-icon-edit"--> +<!-- @click="handleSetManualScore(scope.row)"--> +<!-- >浜哄伐鎵撳垎</el-button>--> <el-button size="mini" type="text" @@ -168,7 +168,7 @@ <el-descriptions-item> <template slot="label"> <i class="el-icon-medal"></i> - 缁煎悎鍒嗘暟 + 绯荤粺鍒嗘暟 </template> <el-tag type="danger" size="small">{{detail.checkScore}}</el-tag> </el-descriptions-item> @@ -182,7 +182,7 @@ <el-descriptions-item> <template slot="label"> <i class="el-icon-medal"></i> - 绯荤粺鍒嗘暟 + 缁煎悎鍒嗘暟 </template> <el-tag type="danger" size="small">{{detail.systemScore}}</el-tag> </el-descriptions-item> diff --git a/src/views/system/contract/index.vue b/src/views/system/contract/index.vue index 94fed44..90dbcfd 100644 --- a/src/views/system/contract/index.vue +++ b/src/views/system/contract/index.vue @@ -380,7 +380,7 @@ handleAdd() { this.reset(); this.open = true; - this.title = "娣诲姞銆愯濉啓鍔熻兘鍚嶇О銆�"; + this.title = "娣诲姞鍚堝悓"; }, /** 淇敼鎸夐挳鎿嶄綔 */ handleUpdate(row) { @@ -389,7 +389,7 @@ getContract(id).then(response => { this.form = response.data; this.open = true; - this.title = "淇敼銆愯濉啓鍔熻兘鍚嶇О銆�"; + this.title = "淇敼鍚堝悓"; }); }, /** 鎻愪氦鎸夐挳 */ diff --git a/src/views/system/face/index.vue b/src/views/system/face/index.vue index 9dfa69d..2d4ac6c 100644 --- a/src/views/system/face/index.vue +++ b/src/views/system/face/index.vue @@ -1,5 +1,39 @@ <template> <div class="app-container"> + <el-card class="box-card" > + <el-row type="flex" align="middle" justify="space-between"> + <el-col :xl="8" :lg="8" :md="10" :sm="8" :xs="6"> + <div class="icon-container" style="background-color: #5599F7"> + <i class="el-icon-user"></i> + </div> + </el-col> + <el-col :xl="14" :lg="14" :md="12" :sm="14" :xs="16"> + <div class="dashboard"> + <div class="dashboard-item"> + <h3 style="color: #5C9BF8">{{ totalPosts }}</h3> + <p>璁惧鎬绘暟</p > + </div> + <div class="dashboard-item"> + <h3 style="color: #3eba45">{{ totalMembers }}</h3> + <p>姝e父鏁�</p > + </div> + <div class="dashboard-item"> + <h3 style="color: #fe640d">{{ postsPercentage }}</h3> + <p>寮傚父鏁�</p > + </div> + <div class="dashboard-item"> + <h3 style="color: #7868d9">{{ totalViews }}</h3> + <p>鐢熸垚寮傚父宸ュ崟鏁�</p > + </div> + <div class="dashboard-item"> + <h3>{{ viewsPercentage }}%</h3> + <p>璁惧杩愯鐜�</p > + </div> + </div> + </el-col> + </el-row> + </el-card> + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form-item label="璁惧鍚嶇О" prop="name"> <el-input @@ -23,30 +57,6 @@ :value="dict.value" /> </el-select> - </el-form-item> - <el-form-item label="鍦板潃" prop="address"> - <el-input - v-model="queryParams.address" - placeholder="璇疯緭鍏ュ湴鍧�" - clearable - @keyup.enter.native="handleQuery" - /> - </el-form-item> - <el-form-item label="瀹夎鏃堕棿" prop="installedTime"> - <el-date-picker clearable - v-model="queryParams.installedTime" - type="date" - value-format="yyyy-MM-dd" - placeholder="璇烽�夋嫨瀹夎鏃堕棿"> - </el-date-picker> - </el-form-item> - <el-form-item label="绠$悊鍗曚綅" prop="managementUnit"> - <el-input - v-model="queryParams.managementUnit" - placeholder="璇疯緭鍏ョ鐞嗗崟浣�" - clearable - @keyup.enter.native="handleQuery" - /> </el-form-item> <el-form-item label="鏄惁鐢熸垚寮傚父宸ュ崟" prop="defaultOrder" label-width="130px"> <el-select @@ -210,6 +220,12 @@ dicts: ['sys_normal_disable','platform_yes_no','camera_state'], data() { return { + totalPosts: 1156, + totalMembers: 1000, + postsPercentage: 156, + totalViews: 75, + viewsPercentage: 91.36, + totalErrors: 0, // 閬僵灞� loading: true, // 閫変腑鏁扮粍 @@ -368,3 +384,37 @@ } }; </script> + +<style lang="scss" scoped> + +.box-card { + background-color: #F5F9FE; + width: 100%; + margin-bottom: 20px; + height: 120px +} +.icon-container { + display: flex; + justify-content: center; + align-items: center; + border-radius: 20px; + width: 20%; + height: 80px; + margin-left: 5%; +} +.el-icon-user { + font-size: 50px; + color: #FFFFFF; +} + +.dashboard { + display: flex; + gap: 10%; + align-items: center; + margin-left: -50%; +} + +.dashboard-item { + text-align: center; +} +</style> diff --git a/src/views/system/recovery/index.vue b/src/views/system/recovery/index.vue index 9887f97..ca754c0 100644 --- a/src/views/system/recovery/index.vue +++ b/src/views/system/recovery/index.vue @@ -1,5 +1,39 @@ <template> <div class="app-container"> + <el-card class="box-card" > + <el-row type="flex" align="middle" justify="space-between"> + <el-col :xl="8" :lg="8" :md="10" :sm="8" :xs="6"> + <div class="icon-container" style="background-color: #5599F7"> + <i class="el-icon-refresh-left"></i> + </div> + </el-col> + <el-col :xl="14" :lg="14" :md="12" :sm="14" :xs="16"> + <div class="dashboard"> + <div class="dashboard-item"> + <h3 style="color: #5C9BF8">{{ totalPosts }}</h3> + <p>璁惧鎬绘暟</p > + </div> + <div class="dashboard-item"> + <h3 style="color: #3eba45">{{ totalMembers }}</h3> + <p>姝e父鏁�</p > + </div> + <div class="dashboard-item"> + <h3 style="color: #fe640d">{{ postsPercentage }}</h3> + <p>寮傚父鏁�</p > + </div> + <div class="dashboard-item"> + <h3 style="color: #7868d9">{{ totalViews }}</h3> + <p>鐢熸垚寮傚父宸ュ崟鏁�</p > + </div> + <div class="dashboard-item"> + <h3>{{ viewsPercentage }}%</h3> + <p>璁惧杩愯鐜�</p > + </div> + </div> + </el-col> + </el-row> + </el-card> + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form-item label="璁惧鍚嶇О" prop="name"> <el-input @@ -23,32 +57,6 @@ :value="dict.value" /> </el-select> - </el-form-item> - <el-form-item label="鍦板潃" prop="address"> - <el-input - v-model="queryParams.address" - placeholder="璇疯緭鍏ュ湴鍧�" - clearable - @keyup.enter.native="handleQuery" - style="width: 170px" - /> - </el-form-item> - <el-form-item label="寮傚父鎭㈠鏃堕棿" prop="recoveryTime" label-width="130px"> - <el-date-picker clearable - v-model="queryParams.recoveryTime" - type="date" - value-format="yyyy-MM-dd" - placeholder="璇烽�夋嫨寮傚父鎭㈠鏃堕棿"> - </el-date-picker> - </el-form-item> - <el-form-item label="绠$悊鍗曚綅" prop="managementUnit"> - <el-input - v-model="queryParams.managementUnit" - placeholder="璇疯緭鍏ョ鐞嗗崟浣�" - clearable - @keyup.enter.native="handleQuery" - style="width: 170px" - /> </el-form-item> <el-form-item label="鏄惁鐢熸垚寮傚父宸ュ崟" prop="defaultOrder" label-width="130px"> <el-select @@ -170,6 +178,12 @@ dicts: ['sys_normal_disable','platform_yes_no','camera_state'], data() { return { + totalPosts: 1156, + totalMembers: 1000, + postsPercentage: 156, + totalViews: 75, + viewsPercentage: 91.36, + totalErrors: 0, // 閬僵灞� loading: true, // 閫変腑鏁扮粍 @@ -328,3 +342,37 @@ } }; </script> + +<style lang="scss" scoped> + +.box-card { + background-color: #F5F9FE; + width: 100%; + margin-bottom: 20px; + height: 120px +} +.icon-container { + display: flex; + justify-content: center; + align-items: center; + border-radius: 20px; + width: 20%; + height: 80px; + margin-left: 5%; +} +.el-icon-refresh-left { + font-size: 50px; + color: #FFFFFF; +} + +.dashboard { + display: flex; + gap: 10%; + align-items: center; + margin-left: -50%; +} + +.dashboard-item { + text-align: center; +} +</style> diff --git a/src/views/system/score/index.vue b/src/views/system/score/index.vue index 110ddf5..bc293b4 100644 --- a/src/views/system/score/index.vue +++ b/src/views/system/score/index.vue @@ -17,16 +17,6 @@ @keyup.enter.native="handleQuery" /> </el-form-item> - <el-form-item label="鎿嶄綔绫诲瀷" prop="operateCategory"> - <el-select v-model="queryParams.operateCategory" placeholder="璇烽�夋嫨鎿嶄綔绫诲瀷" clearable> - <el-option - v-for="dict in dict.type.platform_operate_category" - :key="dict.value" - :label="dict.label" - :value="dict.value" - /> - </el-select> - </el-form-item> <el-form-item label="绉垎绫诲瀷" prop="scoreCategory"> <el-input v-model="queryParams.scoreCategory" @@ -49,7 +39,6 @@ icon="el-icon-plus" size="mini" @click="handleAdd" - v-hasPermi="['platform:score:add']" >鏂板</el-button> </el-col> <el-col :span="1.5"> @@ -60,7 +49,6 @@ size="mini" :disabled="single" @click="handleUpdate" - v-hasPermi="['platform:score:edit']" >淇敼</el-button> </el-col> <el-col :span="1.5"> @@ -71,7 +59,6 @@ size="mini" :disabled="multiple" @click="handleDelete" - v-hasPermi="['platform:score:remove']" >鍒犻櫎</el-button> </el-col> <el-col :span="1.5"> @@ -81,7 +68,6 @@ icon="el-icon-download" size="mini" @click="handleExport" - v-hasPermi="['platform:score:export']" >瀵煎嚭</el-button> </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> @@ -92,11 +78,6 @@ <el-table-column label="鑰冩牳鍚�" align="center" prop="examineName" /> <el-table-column label="鍗曚綅鍚�" align="center" prop="unitName" /> <el-table-column label="鍒嗗��" align="center" prop="score" /> - <el-table-column label="鎿嶄綔绫诲瀷" align="center" prop="operateCategory"> - <template slot-scope="scope"> - <dict-tag :options="dict.type.platform_operate_category" :value="scope.row.operateCategory"/> - </template> - </el-table-column> <el-table-column label="绉垎绫诲瀷" align="center" prop="scoreCategory"> <template slot-scope="scope"> <div v-if="scope.row.scoreCategory === 1">瑙嗛鍦ㄧ嚎鐜�</div> @@ -113,14 +94,12 @@ type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" - v-hasPermi="['platform:score:edit']" >淇敼</el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" - v-hasPermi="['platform:score:remove']" >鍒犻櫎</el-button> </template> </el-table-column> @@ -154,16 +133,6 @@ <el-select v-model="form.examineId" placeholder="璇烽�夋嫨"> <el-option v-for="item in examineList" - :key="item.id" - :label="item.value" - :value="item.id"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="鎿嶄綔绫诲瀷" prop="operateCategory"> - <el-select v-model="form.operateCategory" placeholder="璇烽�夋嫨鎿嶄綔绫诲瀷"> - <el-option - v-for="item in operateCategoryList" :key="item.id" :label="item.value" :value="item.id"> diff --git a/src/views/system/unit/people/index.vue b/src/views/system/unit/people/index.vue index 31a2fa1..c78430f 100644 --- a/src/views/system/unit/people/index.vue +++ b/src/views/system/unit/people/index.vue @@ -84,6 +84,7 @@ <el-table-column label="杩愮淮浜哄憳璐﹀彿" align="center" prop="ywPersonAccount" /> <el-table-column label="鎵�灞炶繍缁村崟浣�" align="center" prop="belongUnitName" /> <el-table-column label="鑱旂郴鐢佃瘽" align="center" prop="phone" /> + <el-table-column label="澶囨敞" align="center" prop="remark" /> <el-table-column label="鎿嶄綔" fixed="right" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> <el-button @@ -135,6 +136,9 @@ <el-form-item label="鑱旂郴鐢佃瘽" prop="phone"> <el-input v-model="form.phone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" /> </el-form-item> + <el-form-item label="鑱旂郴鐢佃瘽" prop="remark"> + <el-input v-model="form.remark" type="textarea" show-word-limit maxlength="150" placeholder="璇疯緭鍏ュ娉�" /> + </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> diff --git a/src/views/system/video/index.vue b/src/views/system/video/index.vue index c69255f..a68de4e 100644 --- a/src/views/system/video/index.vue +++ b/src/views/system/video/index.vue @@ -1,5 +1,41 @@ <template> + <div class="app-container"> + + <el-card class="box-card" > + <el-row type="flex" align="middle" justify="space-between"> + <el-col :xl="8" :lg="8" :md="10" :sm="8" :xs="6"> + <div class="icon-container" style="background-color: #5599F7"> + <i class="el-icon-video-camera"></i> + </div> + </el-col> + <el-col :xl="14" :lg="14" :md="12" :sm="14" :xs="16"> + <div class="dashboard"> + <div class="dashboard-item"> + <h3 style="color: #5C9BF8">{{ totalPosts }}</h3> + <p>璁惧鎬绘暟</p > + </div> + <div class="dashboard-item"> + <h3 style="color: #3eba45">{{ totalMembers }}</h3> + <p>姝e父鏁�</p > + </div> + <div class="dashboard-item"> + <h3 style="color: #fe640d">{{ postsPercentage }}</h3> + <p>寮傚父鏁�</p > + </div> + <div class="dashboard-item"> + <h3 style="color: #7868d9">{{ totalViews }}</h3> + <p>鐢熸垚寮傚父宸ュ崟鏁�</p > + </div> + <div class="dashboard-item"> + <h3>{{ viewsPercentage }}%</h3> + <p>璁惧杩愯鐜�</p > + </div> + </div> + </el-col> + </el-row> + </el-card> + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form-item label="璁惧鍚嶇О" prop="name"> <el-input @@ -23,30 +59,6 @@ :value="dict.value" /> </el-select> - </el-form-item> - <el-form-item label="鍦板潃" prop="address"> - <el-input - v-model="queryParams.address" - placeholder="璇疯緭鍏ュ湴鍧�" - clearable - @keyup.enter.native="handleQuery" - /> - </el-form-item> - <el-form-item label="瀹夎鏃堕棿" prop="installedTime"> - <el-date-picker clearable - v-model="queryParams.installedTime" - type="date" - value-format="yyyy-MM-dd" - placeholder="璇烽�夋嫨瀹夎鏃堕棿"> - </el-date-picker> - </el-form-item> - <el-form-item label="绠$悊鍗曚綅" prop="managementUnit"> - <el-input - v-model="queryParams.managementUnit" - placeholder="璇疯緭鍏ョ鐞嗗崟浣�" - clearable - @keyup.enter.native="handleQuery" - /> </el-form-item> <el-form-item label="鏄惁鐢熸垚寮傚父宸ュ崟" prop="defaultOrder" label-width="130px"> <el-select @@ -167,6 +179,12 @@ dicts: ['sys_normal_disable', 'platform_yes_no','camera_state'], data() { return { + totalPosts: 1156, + totalMembers: 1000, + postsPercentage: 156, + totalViews: 75, + viewsPercentage: 91.36, + totalErrors: 0, // 閬僵灞� loading: true, // 閫変腑鏁扮粍 @@ -327,3 +345,36 @@ } }; </script> +<style lang="scss" scoped> + +.box-card { + background-color: #F5F9FE; + width: 100%; + margin-bottom: 20px; + height: 120px +} +.icon-container { + display: flex; + justify-content: center; + align-items: center; + border-radius: 20px; + width: 20%; + height: 80px; + margin-left: 5%; +} +.el-icon-video-camera { + font-size: 50px; + color: #FFFFFF; +} + +.dashboard { + display: flex; + gap: 10%; + align-items: center; + margin-left: -50%; +} + +.dashboard-item { + text-align: center; +} +</style> -- Gitblit v1.8.0