From 7e33a9c7945c8643095c4eaf008e57683e5dc90d Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期三, 20 三月 2024 10:36:51 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/permission.js | 2 vue.config.js | 2 src/views/system/data-manage/index.vue | 119 +++++++------- src/views/screen/components/screen-wrapper/index.vue | 9 src/views/screen/components/select-item/index.vue | 34 +++- src/router/index.js | 3 src/views/screen/components/screen-car/index.vue | 21 + src/views/screen/components/screen-examine/index.vue | 2 src/views/screen/components/screen-face/index.vue | 22 +- src/views/system/work-order/index.vue | 79 +++++++++ src/views/screen/components/screen-video/index.vue | 26 +- src/main.js | 38 ++++ src/utils/format.js | 3 src/views/screen/components/screen-title/index.vue | 2 src/views/screen/components/screen-detection/index.vue | 2 src/views/system/vehicle-data-monitor/index.vue | 87 +++++++--- src/views/system/report/index.vue | 22 ++ 17 files changed, 329 insertions(+), 144 deletions(-) diff --git a/src/main.js b/src/main.js index 9ede569..7944e09 100644 --- a/src/main.js +++ b/src/main.js @@ -42,6 +42,9 @@ import VScaleScreen from 'v-scale-screen' import dataV from '@jiaminghi/data-view' +import gsap from 'gsap'; +import { formatNumber } from './utils/format'; + // 鍏ㄥ眬鏂规硶鎸傝浇 @@ -87,6 +90,41 @@ Vue.config.productionTip = true + +// 鍏ㄥ眬鎸囦护 +Vue.directive('roll', { + inserted: (el, binding) => { + let target = { + count: 0 + }; + let finalNumber = el.innerText; + gsap.to(target, { + count: finalNumber, + duration: 1, + ease: "power2.out", + onUpdate: () => { + el.innerText = formatNumber(target.count.toFixed(0)); + } + }) + + }, + update: (el, binding) => { + let target = { + count: el.innerText + }; + let finalNumber = el.getAttribute('value'); + gsap.to(target, { + count: finalNumber, + duration: 1, + ease: "power2.out", + onUpdate: () => { + el.innerText = formatNumber(target.count.toFixed(0)); + } + }) + } +}) + + new Vue({ el: '#app', router, diff --git a/src/permission.js b/src/permission.js index 462668d..45c6285 100644 --- a/src/permission.js +++ b/src/permission.js @@ -8,7 +8,7 @@ NProgress.configure({ showSpinner: false }) -const whiteList = ['/login', '/register', '/screen'] +const whiteList = ['/login', '/register'] router.beforeEach((to, from, next) => { NProgress.start() diff --git a/src/router/index.js b/src/router/index.js index 292ae17..8850356 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -89,11 +89,8 @@ }, { path: '/screen', - component: Layout, hidden: true, component: () => import('@/views/screen/index'), - name: 'Profile', - meta: { title: '澶у睆淇℃伅', icon: 'user' } }, { path: '/user', diff --git a/src/utils/format.js b/src/utils/format.js new file mode 100644 index 0000000..1d6c37a --- /dev/null +++ b/src/utils/format.js @@ -0,0 +1,3 @@ +export const formatNumber = (value) => { + return new Intl.NumberFormat('en-US').format(value); +} \ No newline at end of file diff --git a/src/views/screen/components/screen-car/index.vue b/src/views/screen/components/screen-car/index.vue index a8a6446..2ae312c 100644 --- a/src/views/screen/components/screen-car/index.vue +++ b/src/views/screen/components/screen-car/index.vue @@ -1,6 +1,6 @@ <template> <div class="car-container"> - <wrapper-title :title="'杞﹁締璁惧鏁版嵁'"></wrapper-title> + <wrapper-title :title="'杞﹁締璁惧鏁版嵁'" :path="'/monitorServe/car'"></wrapper-title> <div class="car-content"> <div class="data-plane"> @@ -11,7 +11,7 @@ </div> <div class="data-info"> <div class="data-lable">璁惧鎬绘暟</div> - <div class="data-num">{{ formatNumber(1123) }}</div> + <div class="data-num type1" v-roll>{{ 1123 }}</div> </div> </div> </dv-border-box-13> @@ -23,7 +23,7 @@ </div> <div class="data-info"> <div class="data-lable">璁惧姝e父鏁�</div> - <div class="data-num">{{ formatNumber(200000) }}</div> + <div class="data-num type2" v-roll>{{ 2000 }}</div> </div> </div> </dv-border-box-13> @@ -35,7 +35,7 @@ </div> <div class="data-info"> <div class="data-lable">璁惧寮傚父鏁�</div> - <div class="data-num">{{ formatNumber(112313141111) }}</div> + <div class="data-num type3" v-roll>{{ 1000 }}</div> </div> </div> </dv-border-box-13> @@ -63,9 +63,6 @@ }, methods: { - formatNumber(value) { - return new Intl.NumberFormat('en-US').format(value); - } }, mounted() { @@ -114,6 +111,16 @@ font-size: 24px; color: #fff; } + + .type1 { + color: #287cfa; + } + .type2 { + color: #0cd81d; + } + .type3 { + color: #e20c0c + } } } } diff --git a/src/views/screen/components/screen-detection/index.vue b/src/views/screen/components/screen-detection/index.vue index 714f076..1eccea9 100644 --- a/src/views/screen/components/screen-detection/index.vue +++ b/src/views/screen/components/screen-detection/index.vue @@ -1,6 +1,6 @@ <template> <div class="detection-container"> - <wrapper-title :title="'杩愯鐩戞帶鏁版嵁'"></wrapper-title> + <wrapper-title :title="'杩愯鐩戞帶鏁版嵁'" :path="'/dataManage'"></wrapper-title> <div class="detection-content"> <div class="water-item"> diff --git a/src/views/screen/components/screen-examine/index.vue b/src/views/screen/components/screen-examine/index.vue index 5447573..f48d208 100644 --- a/src/views/screen/components/screen-examine/index.vue +++ b/src/views/screen/components/screen-examine/index.vue @@ -1,6 +1,6 @@ <template> <div class="examine-container"> - <wrapper-title :title="'鑰冩牳鏁版嵁'"></wrapper-title> + <wrapper-title :title="'鑰冩牳鏁版嵁'" :path="'/examine/check-rule'"></wrapper-title> <div class="examine-content"> <div class="examine-wrapper"> <examine-chart class="wrapper-item"></examine-chart> diff --git a/src/views/screen/components/screen-face/index.vue b/src/views/screen/components/screen-face/index.vue index cf1a29a..488816b 100644 --- a/src/views/screen/components/screen-face/index.vue +++ b/src/views/screen/components/screen-face/index.vue @@ -1,6 +1,6 @@ <template> <div class="face-container"> - <wrapper-title :title="'浜鸿劯璁惧鏁版嵁'"></wrapper-title> + <wrapper-title :title="'浜鸿劯璁惧鏁版嵁'" :path="'/monitorServe/face'"></wrapper-title> <div class="face-content"> <div class="data-plane"> @@ -11,7 +11,7 @@ </div> <div class="data-info"> <div class="data-lable">璁惧鎬绘暟</div> - <div class="data-num">{{ formatNumber(1123) }}</div> + <div class="data-num type1" v-roll>{{ 1123 }}</div> </div> </div> </dv-border-box-13> @@ -23,7 +23,7 @@ </div> <div class="data-info"> <div class="data-lable">璁惧姝e父鏁�</div> - <div class="data-num">{{ formatNumber(200000) }}</div> + <div class="data-num type2" v-roll>{{ 2000 }}</div> </div> </div> </dv-border-box-13> @@ -35,7 +35,7 @@ </div> <div class="data-info"> <div class="data-lable">璁惧寮傚父鏁�</div> - <div class="data-num">{{ formatNumber(112313141111) }}</div> + <div class="data-num type3" v-roll>{{ 1000 }}</div> </div> </div> </dv-border-box-13> @@ -62,10 +62,6 @@ }, methods: { - - formatNumber(value) { - return new Intl.NumberFormat('en-US').format(value); - } }, mounted() { @@ -113,6 +109,16 @@ font-size: 24px; color: #fff; } + + .type1 { + color: #287cfa; + } + .type2 { + color: #0cd81d; + } + .type3 { + color: #e20c0c + } } } } diff --git a/src/views/screen/components/screen-title/index.vue b/src/views/screen/components/screen-title/index.vue index 181f81d..7dd1f76 100644 --- a/src/views/screen/components/screen-title/index.vue +++ b/src/views/screen/components/screen-title/index.vue @@ -5,7 +5,7 @@ <img src="@/assets/images/screen/header_bg.png" class="width-img" alt=""> </div> <div class="header-text"> - 鑷础甯傝繍缁磋�冩牳鍙鍖栧ぇ灞� + 鑷础甯傝繍缁磋�冩牳鍙鍖� </div> </div> </div> diff --git a/src/views/screen/components/screen-video/index.vue b/src/views/screen/components/screen-video/index.vue index 3fa66d1..d97042f 100644 --- a/src/views/screen/components/screen-video/index.vue +++ b/src/views/screen/components/screen-video/index.vue @@ -1,6 +1,6 @@ <template> <div class="video-container"> - <wrapper-title :title="'瑙嗛璁惧鏁版嵁'"></wrapper-title> + <wrapper-title :title="'瑙嗛璁惧鏁版嵁'" :path="'/monitorServe/video'"></wrapper-title> <div class="video-content"> <div class="data-plane"> @@ -11,7 +11,7 @@ </div> <div class="data-info"> <div class="data-lable">璁惧鎬绘暟</div> - <div class="data-num">{{ formatNumber(1123) }}</div> + <div class="data-num type1" v-roll>{{ 1123 }}</div> </div> </div> </dv-border-box-13> @@ -23,7 +23,7 @@ </div> <div class="data-info"> <div class="data-lable">璁惧姝e父鏁�</div> - <div class="data-num">{{ formatNumber(200000) }}</div> + <div class="data-num type2" v-roll>{{ 2000 }}</div> </div> </div> </dv-border-box-13> @@ -35,7 +35,7 @@ </div> <div class="data-info"> <div class="data-lable">璁惧寮傚父鏁�</div> - <div class="data-num">{{ formatNumber(112313141111) }}</div> + <div class="data-num type3" v-roll>{{ 1000 }}</div> </div> </div> </dv-border-box-13> @@ -54,18 +54,10 @@ }, 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: { - - formatNumber(value) { - return new Intl.NumberFormat('en-US').format(value); - } }, mounted() { @@ -113,6 +105,16 @@ font-size: 24px; color: #fff; } + + .type1 { + color: #287cfa; + } + .type2 { + color: #0cd81d; + } + .type3 { + color: #e20c0c + } } } } diff --git a/src/views/screen/components/screen-wrapper/index.vue b/src/views/screen/components/screen-wrapper/index.vue index 7bdc799..6cbb50e 100644 --- a/src/views/screen/components/screen-wrapper/index.vue +++ b/src/views/screen/components/screen-wrapper/index.vue @@ -2,7 +2,7 @@ <div class="wrapper-container"> <select-item></select-item> <div class="return-button"> - <el-button type="primary">杩斿洖</el-button> + <el-button type="primary" @click="returnPath">杩斿洖</el-button> </div> <div class="wrapper-content"> <div class="left-container wrapper"> @@ -41,6 +41,11 @@ ScreenCar, ScreenMap }, + methods: { + returnPath() { + this.$router.go(-1); + } + } } </script> @@ -48,7 +53,7 @@ .return-button { position: absolute; right: 20px; - top: 30px; + top: 40px; } .wrapper-container { width: 100%; diff --git a/src/views/screen/components/select-item/index.vue b/src/views/screen/components/select-item/index.vue index 3297ce7..4bd541b 100644 --- a/src/views/screen/components/select-item/index.vue +++ b/src/views/screen/components/select-item/index.vue @@ -9,15 +9,8 @@ <div class="date-select"> <div class="select-label">鏃ユ湡</div> - <el-date-picker - v-model="dateValue" - type="daterange" - range-separator="鑷�" - start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡" - value-format="yyyy-MM-dd" - @change="setConfig" - /> + <el-date-picker v-model="dateValue" type="daterange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" value-format="yyyy-MM-dd" @change="setConfig" /> </div> </div> @@ -56,23 +49,44 @@ <style lang="scss" scoped> .select-container { position: absolute; - top: 30px; + top: 40px; left: 20px; display: flex; align-items: center; + .select-label { font-size: 20px; margin-right: 10px; color: #2375f0; + flex-shrink: 0; } + .type-select { display: flex; align-items: center; margin-right: 20px; + width: 240px; } + .date-select { display: flex; align-items: center; + width: 320px; } } +::v-deep .el-input__inner { + background: rgba(67, 102, 155, 0.4) !important; + color: #4481DD; + border-color: #4481DD !important; +} + +::v-deep .date-select .el-range-input { + background-color: transparent !important; + color: #4481DD; +} +::v-deep .date-select .el-date-editor .el-range-separator { + color: #4481DD !important; +} + + </style> \ No newline at end of file diff --git a/src/views/system/data-manage/index.vue b/src/views/system/data-manage/index.vue index 43b150b..eef8562 100644 --- a/src/views/system/data-manage/index.vue +++ b/src/views/system/data-manage/index.vue @@ -1,80 +1,79 @@ <template> <div> <div class="container"> - <el-row type="flex" justify="center"> - <el-col :span="24"> - <h3 style="color: rgb(104,104,103);padding-top: 20px;padding-bottom: 20px;">浜鸿劯鏁版嵁寮傚父妫�娴�</h3> - </el-col> - </el-row> + <el-row type="flex" justify="center"> + <el-col :span="24"> + <h3 style="color: rgb(104,104,103);padding-top: 20px;padding-bottom: 20px;">浜鸿劯鏁版嵁寮傚父妫�娴�</h3> + </el-col> + </el-row> - <el-row type="flex" justify="center"> - <el-col :span="6" v-for="(item, index) in faceData" :key="index"> - <el-link @click="handleDetail(item)"> - <el-card style="width:150px;height: 150px;text-align: center;"> - <i style="font-size: 40px;padding: 15px;" :class="item.icon"></i> - <div>{{ item.name }}</div> - </el-card> - </el-link> - </el-col> - </el-row> + <el-row type="flex" justify="center"> + <el-col :span="6" v-for="(item, index) in faceData" :key="index"> + <el-link @click="handleDetail(item)"> + <el-card style="width:150px;height: 150px;text-align: center;"> + <i style="font-size: 40px;padding: 15px;" :class="item.icon"></i> + <div>{{ item.name }}</div> + </el-card> + </el-link> + </el-col> + </el-row> </div> - <div class="container"> - <el-row type="flex" justify="center"> - <el-col :span="24"> - <h3 style="color: rgb(104,104,103);padding-top: 20px;padding-bottom: 20px;">杞︿咯鏁版嵁寮傚父妫�娴�</h3> - </el-col> - </el-row> + <div class="container"> + <el-row type="flex" justify="center"> + <el-col :span="24"> + <h3 style="color: rgb(104,104,103);padding-top: 20px;padding-bottom: 20px;">杞︿咯鏁版嵁寮傚父妫�娴�</h3> + </el-col> + </el-row> - <el-row type="flex" > - <el-col :span="6" v-for="(item, index) in carData" :key="index"> - <el-link @click="handleDetail(item)"> - <el-card style="width:150px;height: 150px;text-align: center;"> - <i style="font-size: 40px;padding: 15px;" :class="item.icon"></i> - <div>{{ item.name }}</div> - </el-card> - </el-link> - </el-col> - </el-row> - </div> + <el-row type="flex"> + <el-col :span="6" v-for="(item, index) in carData" :key="index"> + <el-link @click="handleDetail(item)"> + <el-card style="width:150px;height: 150px;text-align: center;"> + <i style="font-size: 40px;padding: 15px;" :class="item.icon"></i> + <div>{{ item.name }}</div> + </el-card> + </el-link> + </el-col> + </el-row> + </div> </div> </template> <script> export default { - data() { - return { - faceData: [ - { name: '浜鸿劯璇嗗埆鏃堕挓鍑嗙‘鎬�', icon: 'el-icon-alarm-clock', description: '鎻忚堪淇℃伅', routerUrl: '/face/index' }, - { name: '浜鸿劯鎶撴媿鏁版嵁鐩戞祴', icon: 'el-icon-user', description: '鎻忚堪淇℃伅', routerUrl: '/face/faceClock' }, - { name: '浜鸿劯鏁版嵁瓒嬪娍鍒嗘瀽', icon: 'el-icon-data-line', description: '鎻忚堪淇℃伅', routerUrl: '/face/faceClock' }, - { name: '浜鸿劯鎶撴媿璁惧娲昏穬鎬�', icon: 'el-icon-timer', description: '鎻忚堪淇℃伅', routerUrl: '/face/faceClock' }, - { name: '浜鸿劯鎶撴媿涓婁紶鍙婃椂鎬�', icon: 'el-icon-money', description: '鎻忚堪淇℃伅', routerUrl: '/face/faceClock' }, - { name: '浜鸿劯鎶撴媿澶у浘鍙敤鎬�', icon: 'el-icon-data-analysis', description: '鎻忚堪淇℃伅', routerUrl: '/face/faceClock' }, - ], - carData: [ - { name: '鍗″彛杩囪溅鏁版嵁涓�鑷存��', icon: 'el-icon-alarm-clock', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' }, - - ] - } - }, - methods: { - handleDetail(item) { - this.$router.push({ - path: item.routerUrl, - params: { - id: item.id - } - }) - } + data() { + return { + faceData: [ + { name: '浜鸿劯璇嗗埆鏃堕挓鍑嗙‘鎬�', icon: 'el-icon-alarm-clock', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' }, + { name: '浜鸿劯鎶撴媿鏁版嵁鐩戞祴', icon: 'el-icon-user', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' }, + { name: '浜鸿劯鏁版嵁瓒嬪娍鍒嗘瀽', icon: 'el-icon-data-line', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' }, + { name: '浜鸿劯鎶撴媿璁惧娲昏穬鎬�', icon: 'el-icon-timer', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' }, + { name: '浜鸿劯鎶撴媿涓婁紶鍙婃椂鎬�', icon: 'el-icon-money', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' }, + { name: '浜鸿劯鎶撴媿澶у浘鍙敤鎬�', icon: 'el-icon-data-analysis', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' }, + ], + carData: [ + { name: '鍗″彛杩囪溅鏁版嵁涓�鑷存��', icon: 'el-icon-truck', description: '鎻忚堪淇℃伅', routerUrl: '/car/vehicle-data-monitor/index' } + ] } + }, + methods: { + handleDetail(item) { + this.$router.push({ + path: item.routerUrl, + params: { + id: item.id + } + }) + } + } } </script> <style scoped> .container { - margin-left: 100px; - margin-right: 100px; - margin-top: 10px; + margin-left: 100px; + margin-right: 100px; + margin-top: 10px; } </style> diff --git a/src/views/system/report/index.vue b/src/views/system/report/index.vue index e78d801..aff69e5 100644 --- a/src/views/system/report/index.vue +++ b/src/views/system/report/index.vue @@ -81,6 +81,7 @@ <el-table-column label="杩愮淮鍗曚綅" align="center" prop="unitName" /> <el-table-column label="鎶ュ浜哄憳" align="center" prop="peopleName" /> <el-table-column label="鐐逛綅" align="center" prop="pointName" /> + <el-table-column label="鎶ュ绫诲瀷" align="center" prop="reportType" /> <el-table-column label="鎶ュ鍐呭" align="center" prop="reportContent" /> <el-table-column label="涓婃姤鏉愭枡" align="center" prop="reportMaterials" /> <el-table-column label="鏁呴殰绫诲瀷" align="center" prop="errorType" /> @@ -144,6 +145,12 @@ </el-option> </el-select> </el-form-item> + <el-form-item label="鎶ュ绫诲瀷" prop="reportType"> + <el-select v-model="form.reportType"> + <el-option label="浜嬪墠鎶ュ" value="浜嬪墠鎶ュ"/> + <el-option label="浜嬪悗鎶ュ" value="浜嬪悗鎶ュ"/> + </el-select> + </el-form-item> <el-form-item label="鏁呴殰绫诲瀷" prop="errorType"> <el-select v-model="form.errorType"> <el-option label="甯傛斂鏂藉伐" value="甯傛斂鏂藉伐"/> @@ -177,6 +184,9 @@ <el-form-item label="鎶ュ浜哄憳"> <el-input v-model="auditingForm.peopleName" disabled /> </el-form-item> + <el-form-item label="鎶ュ绫诲瀷"> + <el-input v-model="auditingForm.reportType" disabled /> + </el-form-item> <el-form-item label="鏁呴殰绫诲瀷"> <el-input v-model="auditingForm.errorType" disabled /> </el-form-item> @@ -196,6 +206,7 @@ <el-button @click="auditingCancel">鍙� 娑�</el-button> </div> </el-dialog> + </div> </template> @@ -242,7 +253,8 @@ errorType: "", reportContent: "", auditing: "", - suggest: "" + suggest: "", + reportType: "", }, // 鏌ヨ鍙傛暟 queryParams: { @@ -273,6 +285,9 @@ reportMaterials: [ { required: true, message: "涓婃姤鏉愭枡涓嶈兘涓虹┖", trigger: "blur" } ], + reportType: [ + { required: true, message: "璇烽�夋嫨鎶ュ绫诲瀷", trigger: "blur" } + ], } }; }, @@ -291,6 +306,7 @@ this.auditingForm.peopleName =row.peopleName this.auditingForm.errorType =row.errorType this.auditingForm.reportContent =row.reportContent + this.auditingForm.reportType =row.reportType }, // 杩滅▼鎼滅储鐐逛綅 remoteGetPoints(query) { @@ -382,6 +398,8 @@ }, /** 鎻愪氦鎸夐挳 */ submitForm() { + // todo 鍒ゆ柇鏄簨鍓嶆姤澶� + this.$refs["form"].validate(valid => { if (valid) { if (this.form.id != null) { @@ -392,7 +410,7 @@ }); } else { addReport(this.form).then(response => { - this.$modal.msgSuccess("鏂板鎴愬姛"); + this.$modal.msgSuccess("鎴愬姛鎻愪氦鎶ュ"); this.open = false; this.getList(); }); diff --git a/src/views/system/vehicle-data-monitor/index.vue b/src/views/system/vehicle-data-monitor/index.vue index 76ce1d1..44cac60 100644 --- a/src/views/system/vehicle-data-monitor/index.vue +++ b/src/views/system/vehicle-data-monitor/index.vue @@ -1,6 +1,6 @@ <template> <div class="app-container"> - <div class="top"> + <!-- <div class="top"> <el-row type="flex" justify="space-between" style="width: 60%;"> <el-col :span="6"> <el-card class="card"> @@ -37,7 +37,43 @@ </el-col> </el-row> - </div> + </div> --> + + + <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;font-size: 50px;color: #FFF;"> + <i class="el-icon-wind-power"></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">{{ totalKiosks }}</h3> + <p>鍗″彛鎬绘暟</p> + </div> + <div class="dashboard-item"> + <h3>{{ uniqueKiosks }}</h3> + <p>涓嶅敮涓�鍗″彛鏁�</p> + </div> + <div class="dashboard-item"> + <div style="width: 1px;height: 55px;border: 1px solid #D7EBFA;"></div> + </div> + <div class="dashboard-item"> + <h3 style="color: #5C9BF8">{{ totalCarData }}</h3> + <p>杩囪溅鏁版嵁鎬婚噺</p> + </div> + <div class="dashboard-item"> + <h3>{{ uniqueCarData }}</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="bayonetNumber"> @@ -276,41 +312,36 @@ }; </script> <style scoped> -.top { - height: 150px; +.box-card { + background-color: #F5F9FE; + width: 100%; margin-bottom: 20px; - background-color: #F2F9FF; - border: 1px solid #77befd; + height: 120px } -.container { - max-width: 1000px; - margin: auto; +.icon-container { + display: flex; + justify-content: center; + align-items: center; + border-radius: 20px; + width: 20%; + height: 80px; + margin-left: 5%; } -.number { - font-size: 36px; - font-weight: bold; - color: #00A5FE; +.el-icon-refresh-left { + font-size: 50px; + color: #FFFFFF; } -.numberTwo { - font-size: 36px; - font-weight: bold; - color: #505051; +.dashboard { + display: flex; + gap: 10%; + align-items: center; + margin-left: -50%; } -.card { - width: 100px; - height: 100px; +.dashboard-item { text-align: center; - background-color: #00A5FE; - color: aliceblue; - border-radius: 10%; - margin: 25px; -} - -.mod { - margin-top: 40px; } </style> \ No newline at end of file diff --git a/src/views/system/work-order/index.vue b/src/views/system/work-order/index.vue index 0ebfc45..a40125e 100644 --- a/src/views/system/work-order/index.vue +++ b/src/views/system/work-order/index.vue @@ -78,6 +78,11 @@ <el-table-column type="selection" width="55" align="center" /> <el-table-column label="宸ュ崟鍙�" align="center" prop="workOrderNo" width="170"/> <el-table-column label="宸ュ崟鏉ユ簮" align="center" prop="source" width="170"/> + <el-table-column label="鏄惁鎶ュ" align="center" width="170"> + <template slot-scope="scope"> + <el-tag>宸叉姤澶�(浜嬪墠)</el-tag> + </template> + </el-table-column> <el-table-column label="鏁呴殰绫诲瀷" align="center" prop="errorType" width="170"/> <el-table-column label="杩愮淮鍗曚綅" align="center" prop="unitName" width="150"/> <el-table-column label="杩愮淮浜哄憳" align="center" prop="ywPeopleName" /> @@ -91,13 +96,6 @@ <el-table-column label="鎿嶄綔" fixed="right" width="150" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> -<!-- <el-button--> -<!-- size="mini"--> -<!-- type="text"--> -<!-- icon="el-icon-edit"--> -<!-- @click="handleUpdate(scope.row)"--> -<!-- v-hasPermi="['x:work-order:edit']"--> -<!-- >淇敼</el-button>--> <el-button size="mini" type="text" @@ -125,6 +123,11 @@ type="text" @click="handleFlow(scope.row)" >杩囩▼鍥�</el-button> + <el-button + size="mini" + type="text" + @click="handleReport(scope.row)" + >浜嬪悗鎶ュ</el-button> </template> </el-table-column> </el-table> @@ -136,6 +139,35 @@ :limit.sync="queryParams.pageSize" @pagination="getList" /> + + <!-- 浜嬪悗鎶ュ --> + <el-dialog title="浜嬪悗鎶ュ" :visible.sync="reportOpen" width="600px" append-to-body> + <el-form ref="reportForm" :model="reportForm" :rules="reportFormRules" label-width="80px"> + <el-form-item label="鐐逛綅" prop="pointId"> + <el-input v-model="reportForm.pointId" disabled /> + </el-form-item> + <el-form-item label="鎶ュ绫诲瀷"> + <el-input v-model="reportForm.reportType" disabled /> + </el-form-item> + <el-form-item label="鏁呴殰绫诲瀷" prop="errorType"> + <el-select v-model="reportForm.errorType"> + <el-option label="甯傛斂鏂藉伐" value="甯傛斂鏂藉伐"/> + <el-option label="璁惧鏁呴殰" value="璁惧鏁呴殰"/> + <el-option label="璁惧閬楀け" value="璁惧閬楀け"/> + </el-select> + </el-form-item> + <el-form-item label="鎶ュ鍐呭" prop="reportContent"> + <editor v-model="reportForm.reportContent" :min-height="192"/> + </el-form-item> + <el-form-item label="涓婃姤鏉愭枡" prop="reportMaterials"> + <file-upload v-model="reportForm.reportMaterials"/> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="submitReportForm">鎻� 浜�</el-button> + <el-button @click="reportOpen = false">鍙� 娑�</el-button> + </div> + </el-dialog> <el-dialog title="宸ュ崟瀹℃牳" :visible.sync="auditingOpen" width="500px" append-to-body> <el-form ref="auditingForm" :model="auditingForm" :rules="auditingRules" label-width="80px"> @@ -421,6 +453,22 @@ }, data() { return { + reportFormRules: { + reportContent: [ + { required: true, message: "鎶ュ鍐呭涓嶈兘涓虹┖", trigger: "blur" } + ], + reportMaterials: [ + { required: true, message: "涓婃姤鏉愭枡涓嶈兘涓虹┖", trigger: "blur" } + ], + }, + reportOpen: false, + reportForm: { + reportType: "浜嬪悗鎶ュ", + pointId: "鐞间簬闀�3琛�1鍙锋憚鍍忓ご", + errorType: "", + reportContent: "", + reportMaterials: "" + }, // 杩囩▼鍥� flowOpen: false, flowForm: {}, @@ -505,6 +553,23 @@ this.getList(); }, methods: { + // 鎶ュ + submitReportForm() { + this.$refs["reportForm"].validate(valid => { + if (valid) { + addReport(this.form).then(response => { + this.$modal.msgSuccess("鎴愬姛鎻愪氦鎶ュ"); + this.open = false; + this.getList(); + }); + } + }); + }, + // 浜嬪悗鎶ュ鎸夐挳 + handleReport(row) { + this.reportForm.pointId = row.source; + this.reportOpen = true; + }, // 瀹℃牳鎸夐挳 handleAuditing(row) { this.auditingForm = row; diff --git a/vue.config.js b/vue.config.js index e61f74f..cf11cc5 100644 --- a/vue.config.js +++ b/vue.config.js @@ -35,7 +35,7 @@ proxy: { // detail: https://cli.vuejs.org/config/#devserver-proxy [process.env.VUE_APP_BASE_API]: { - target: `http://localhost:8080`, + target: `http://192.168.3.88:8080`, changeOrigin: true, pathRewrite: { ['^' + process.env.VUE_APP_BASE_API]: '' -- Gitblit v1.8.0