Merge remote-tracking branch 'origin/master'
| | |
| | | import VScaleScreen from 'v-scale-screen' |
| | | import dataV from '@jiaminghi/data-view' |
| | | |
| | | import gsap from 'gsap'; |
| | | import { formatNumber } from './utils/format'; |
| | | |
| | | |
| | | |
| | | // 全局方法挂载 |
| | |
| | | |
| | | 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, |
| | |
| | | |
| | | NProgress.configure({ showSpinner: false }) |
| | | |
| | | const whiteList = ['/login', '/register', '/screen'] |
| | | const whiteList = ['/login', '/register'] |
| | | |
| | | router.beforeEach((to, from, next) => { |
| | | NProgress.start() |
| | |
| | | }, |
| | | { |
| | | path: '/screen', |
| | | component: Layout, |
| | | hidden: true, |
| | | component: () => import('@/views/screen/index'), |
| | | name: 'Profile', |
| | | meta: { title: '大屏信息', icon: 'user' } |
| | | }, |
| | | { |
| | | path: '/user', |
New file |
| | |
| | | export const formatNumber = (value) => { |
| | | return new Intl.NumberFormat('en-US').format(value); |
| | | } |
| | |
| | | <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"> |
| | |
| | | </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> |
| | |
| | | </div> |
| | | <div class="data-info"> |
| | | <div class="data-lable">设备正常数</div> |
| | | <div class="data-num">{{ formatNumber(200000) }}</div> |
| | | <div class="data-num type2" v-roll>{{ 2000 }}</div> |
| | | </div> |
| | | </div> |
| | | </dv-border-box-13> |
| | |
| | | </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> |
| | |
| | | }, |
| | | |
| | | methods: { |
| | | formatNumber(value) { |
| | | return new Intl.NumberFormat('en-US').format(value); |
| | | } |
| | | }, |
| | | |
| | | mounted() { |
| | |
| | | font-size: 24px; |
| | | color: #fff; |
| | | } |
| | | |
| | | .type1 { |
| | | color: #287cfa; |
| | | } |
| | | .type2 { |
| | | color: #0cd81d; |
| | | } |
| | | .type3 { |
| | | color: #e20c0c |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | <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"> |
| | |
| | | <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> |
| | |
| | | <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"> |
| | |
| | | </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> |
| | |
| | | </div> |
| | | <div class="data-info"> |
| | | <div class="data-lable">设备正常数</div> |
| | | <div class="data-num">{{ formatNumber(200000) }}</div> |
| | | <div class="data-num type2" v-roll>{{ 2000 }}</div> |
| | | </div> |
| | | </div> |
| | | </dv-border-box-13> |
| | |
| | | </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> |
| | |
| | | }, |
| | | |
| | | methods: { |
| | | |
| | | formatNumber(value) { |
| | | return new Intl.NumberFormat('en-US').format(value); |
| | | } |
| | | }, |
| | | |
| | | mounted() { |
| | |
| | | font-size: 24px; |
| | | color: #fff; |
| | | } |
| | | |
| | | .type1 { |
| | | color: #287cfa; |
| | | } |
| | | .type2 { |
| | | color: #0cd81d; |
| | | } |
| | | .type3 { |
| | | color: #e20c0c |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | <img src="@/assets/images/screen/header_bg.png" class="width-img" alt=""> |
| | | </div> |
| | | <div class="header-text"> |
| | | 自贡市运维考核可视化大屏 |
| | | 自贡市运维考核可视化 |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <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"> |
| | |
| | | </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> |
| | |
| | | </div> |
| | | <div class="data-info"> |
| | | <div class="data-lable">设备正常数</div> |
| | | <div class="data-num">{{ formatNumber(200000) }}</div> |
| | | <div class="data-num type2" v-roll>{{ 2000 }}</div> |
| | | </div> |
| | | </div> |
| | | </dv-border-box-13> |
| | |
| | | </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> |
| | |
| | | }, |
| | | 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() { |
| | |
| | | font-size: 24px; |
| | | color: #fff; |
| | | } |
| | | |
| | | .type1 { |
| | | color: #287cfa; |
| | | } |
| | | .type2 { |
| | | color: #0cd81d; |
| | | } |
| | | .type3 { |
| | | color: #e20c0c |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | <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"> |
| | |
| | | ScreenCar, |
| | | ScreenMap |
| | | }, |
| | | methods: { |
| | | returnPath() { |
| | | this.$router.go(-1); |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | |
| | | .return-button { |
| | | position: absolute; |
| | | right: 20px; |
| | | top: 30px; |
| | | top: 40px; |
| | | } |
| | | .wrapper-container { |
| | | width: 100%; |
| | |
| | | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | <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" /> |
| | |
| | | </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="市政施工"/> |
| | |
| | | <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> |
| | |
| | | <el-button @click="auditingCancel">取 消</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | errorType: "", |
| | | reportContent: "", |
| | | auditing: "", |
| | | suggest: "" |
| | | suggest: "", |
| | | reportType: "", |
| | | }, |
| | | // 查询参数 |
| | | queryParams: { |
| | |
| | | reportMaterials: [ |
| | | { required: true, message: "上报材料不能为空", trigger: "blur" } |
| | | ], |
| | | reportType: [ |
| | | { required: true, message: "请选择报备类型", trigger: "blur" } |
| | | ], |
| | | } |
| | | }; |
| | | }, |
| | |
| | | this.auditingForm.peopleName =row.peopleName |
| | | this.auditingForm.errorType =row.errorType |
| | | this.auditingForm.reportContent =row.reportContent |
| | | this.auditingForm.reportType =row.reportType |
| | | }, |
| | | // 远程搜索点位 |
| | | remoteGetPoints(query) { |
| | |
| | | }, |
| | | /** 提交按钮 */ |
| | | submitForm() { |
| | | // todo 判断是事前报备 |
| | | |
| | | this.$refs["form"].validate(valid => { |
| | | if (valid) { |
| | | if (this.form.id != null) { |
| | |
| | | }); |
| | | } else { |
| | | addReport(this.form).then(response => { |
| | | this.$modal.msgSuccess("新增成功"); |
| | | this.$modal.msgSuccess("成功提交报备"); |
| | | this.open = false; |
| | | this.getList(); |
| | | }); |
| | |
| | | <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"> |
| | |
| | | </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"> |
| | |
| | | }; |
| | | </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> |
| | |
| | | <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" /> |
| | |
| | | |
| | | <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" |
| | |
| | | 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> |
| | |
| | | :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"> |
| | |
| | | }, |
| | | 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: {}, |
| | |
| | | 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; |
| | |
| | | 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]: '' |