| | |
| | | "@vueuse/core": "^10.10.0", |
| | | "axios": "^1.7.2", |
| | | "dayjs": "^1.11.11", |
| | | "echarts": "^5.5.1", |
| | | "element-plus": "^2.7.4", |
| | | "pinia": "^2.1.7", |
| | | "unplugin-vue-components": "^0.27.0", |
| | |
| | | "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz", |
| | | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/echarts": { |
| | | "version": "5.5.1", |
| | | "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.1.tgz", |
| | | "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==", |
| | | "dependencies": { |
| | | "tslib": "2.3.0", |
| | | "zrender": "5.6.0" |
| | | } |
| | | }, |
| | | "node_modules/echarts/node_modules/tslib": { |
| | | "version": "2.3.0", |
| | | "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", |
| | | "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" |
| | | }, |
| | | "node_modules/editorconfig": { |
| | | "version": "1.0.4", |
| | |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/zrender": { |
| | | "version": "5.6.0", |
| | | "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz", |
| | | "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==", |
| | | "dependencies": { |
| | | "tslib": "2.3.0" |
| | | } |
| | | }, |
| | | "node_modules/zrender/node_modules/tslib": { |
| | | "version": "2.3.0", |
| | | "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", |
| | | "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" |
| | | } |
| | | }, |
| | | "dependencies": { |
| | |
| | | "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz", |
| | | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", |
| | | "dev": true |
| | | }, |
| | | "echarts": { |
| | | "version": "5.5.1", |
| | | "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.1.tgz", |
| | | "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==", |
| | | "requires": { |
| | | "tslib": "2.3.0", |
| | | "zrender": "5.6.0" |
| | | }, |
| | | "dependencies": { |
| | | "tslib": { |
| | | "version": "2.3.0", |
| | | "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", |
| | | "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" |
| | | } |
| | | } |
| | | }, |
| | | "editorconfig": { |
| | | "version": "1.0.4", |
| | |
| | | "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", |
| | | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", |
| | | "dev": true |
| | | }, |
| | | "zrender": { |
| | | "version": "5.6.0", |
| | | "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz", |
| | | "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==", |
| | | "requires": { |
| | | "tslib": "2.3.0" |
| | | }, |
| | | "dependencies": { |
| | | "tslib": { |
| | | "version": "2.3.0", |
| | | "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", |
| | | "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | "@vueuse/core": "^10.10.0", |
| | | "axios": "^1.7.2", |
| | | "dayjs": "^1.11.11", |
| | | "echarts": "^5.5.1", |
| | | "element-plus": "^2.7.4", |
| | | "pinia": "^2.1.7", |
| | | "unplugin-vue-components": "^0.27.0", |
| | |
| | | let ip2_file = 'https://fyami.com.cn/' |
| | | |
| | | if (debug) { |
| | | ip1 = 'http://192.168.0.138:8082/' |
| | | // ip1 = 'http://192.168.0.138:8082/' |
| | | ip1 = 'http://localhost:8080/' |
| | | // ip1_file = 'http://47.100.191.150:9005/'; |
| | | // ip2 = 'http://192.168.0.138:8080/'; |
| | | // ip2_file = 'https://fyami.com.cn/'; |
| | |
| | | declare module 'vue' { |
| | | export interface GlobalComponents { |
| | | BaseMap: typeof import('./components/map/BaseMap.vue')['default'] |
| | | copy: typeof import('./components/search/OptionLocation copy.vue')['default'] |
| | | CoreHeader: typeof import('./components/core/CoreHeader.vue')['default'] |
| | | ElButton: typeof import('element-plus/es')['ElButton'] |
| | | ElCalendar: typeof import('element-plus/es')['ElCalendar'] |
| | | ElCard: typeof import('element-plus/es')['ElCard'] |
| | | ElCascader: typeof import('element-plus/es')['ElCascader'] |
| | | ElCol: typeof import('element-plus/es')['ElCol'] |
| | | ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] |
| | | ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] |
| | | ElFormItem: typeof import('element-plus/es')['ElFormItem'] |
| | | ElIcon: typeof import('element-plus/es')['ElIcon'] |
| | | ElLink: typeof import('element-plus/es')['ElLink'] |
| | | ElOption: typeof import('element-plus/es')['ElOption'] |
| | | ElProgress: typeof import('element-plus/es')['ElProgress'] |
| | | ElRow: typeof import('element-plus/es')['ElRow'] |
| | | ElScorllbar: typeof import('element-plus/es')['ElScorllbar'] |
| | | ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] |
| | | ElSegmented: typeof import('element-plus/es')['ElSegmented'] |
| | | ElSelect: typeof import('element-plus/es')['ElSelect'] |
| | |
| | | ElText: typeof import('element-plus/es')['ElText'] |
| | | ElTimeline: typeof import('element-plus/es')['ElTimeline'] |
| | | ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem'] |
| | | FYOptionTime: typeof import('./components/search/FYOptionTime.vue')['default'] |
| | | OptionLocation: typeof import('./components/search/OptionLocation.vue')['default'] |
| | | OptionSceneType: typeof import('./components/search/OptionSceneType.vue')['default'] |
| | | OptionTime: typeof import('./components/search/OptionTime.vue')['default'] |
| | |
| | | <template> |
| | | <div class="wrapper"> |
| | | <div>ç°åºå·¡æ¥</div> |
| | | <TaskTrack></TaskTrack> |
| | | <WorkStream></WorkStream> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | * ç°åºå·¡æ¥å®æ¶è·è¸ª |
| | | */ |
| | | import TaskTrack from '@/views/inspection/TaskTrack.vue' |
| | | import WorkStream from '@/views/inspection/WorkStream.vue' |
| | | |
| | | </script> |
| | | |
| | | <style scoped> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="border-r-small m-h-2 p-h-4"> |
| | | <el-scrollbar ref="scrollbarRef" height="calc(var(--fy-body-height) / 3 * 1 - 30px)"> |
| | | <div ref="scrollContentRef"> |
| | | <div v-for="item in streams" :key="item.index"> |
| | | <el-text type="primary">[{{ item.time }}]: </el-text> |
| | | <el-text>ç¨æ·</el-text> |
| | | <el-text type="warning">{{ item.user }}</el-text> |
| | | <el-text>å¨</el-text> |
| | | <el-text type="success">{{ item.obj }}</el-text> |
| | | <el-text>{{ item.event }}</el-text> |
| | | </div> |
| | | </div> |
| | | </el-scrollbar> |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import { reactive, ref, onMounted } from 'vue' |
| | | import dayjs from 'dayjs' |
| | | |
| | | const streams = reactive([]) |
| | | const scrollContentRef = ref() |
| | | const scrollbarRef = ref() |
| | | |
| | | const users = ['pcheck', 'zzq', 'xzq'] |
| | | const events = [ |
| | | 'æ°å¢ä¸ä¸ªé®é¢', |
| | | 'æ°å¢ä¸é¡¹ç°åºæ´æ¹', |
| | | 'å®¡æ ¸äºä¸ä¸ªé®é¢', |
| | | 'å®¡æ ¸äºä¸ä¸ªæ´æ¹', |
| | | 'å¼å§å·¡æ¥', |
| | | 'ç»æå·¡æ¥' |
| | | ] |
| | | const objs = [ |
| | | '大å®å½é
妿 ¡(å°å¦é¨)æ°å»ºå·¥ç¨', |
| | | 'æ°å»º472è¡åå
Œ
±ç»¿å°åå°ä¸ç©ºé´å¼å项ç®', |
| | | '黿µ¦æ±å»¶ä¼¸æ®µWS3åå
xH130Eè¡å030406070911å°å', |
| | | '徿±åºé¾åè¡é188N-F-04å°åï¼æ¡©åºå·¥ç¨ï¼', |
| | | 'ç½æä¸æµ·è¥¿å²¸ç åä¸å¿é¡¹ç®', |
| | | '徿±åºé»æµ¦æ±å延伸段WS3åå
xh130Dè¡å03ã04ã06ã08ã09ã11å12å°åé¡¹ç®æ¡©åºå·¥ç¨', |
| | | '太ä¿å®¶åÂ·ä¸æµ·éå®å½é
康å
»ç¤¾åºé¡¹ç®è£
修工ç¨', |
| | | '彿µ¦è¥¿ç³»ç»é¨è°èæ± å·¥ç¨', |
| | | '徿±åºé¿æ¡¥è¡é395è¡åxh311B-07Bå°åæ°å»ºå¹¼å¿å', |
| | | 'å½ä¸ä½å®
å°åºæ§ä½æ¿æé¤é建工ç¨', |
| | | 'é¿é巴巴䏿µ·å¾æ±é¡¹ç®äºæ' |
| | | ] |
| | | |
| | | function scrollToBottom() { |
| | | const h1 = scrollContentRef.value.clientHeight + 100 |
| | | setTimeout(() => { |
| | | scrollbarRef.value.setScrollTop(h1) |
| | | }, 100) |
| | | } |
| | | |
| | | onMounted(() => { |
| | | // var index = 0 |
| | | setInterval(() => { |
| | | streams.push({ |
| | | // index: index, |
| | | time: dayjs().format('YYYY-MM-DD HH:mm:ss'), |
| | | user: users[parseInt(Math.random() * users.length)], |
| | | obj: objs[parseInt(Math.random() * objs.length)], |
| | | event: events[parseInt(Math.random() * events.length)] |
| | | }) |
| | | scrollToBottom() |
| | | // index++ |
| | | }, 10000) |
| | | }) |
| | | </script> |
| | |
| | | <ProblemSummary :data="subtaskList"></ProblemSummary> |
| | | <ProblemTable :data="subtaskList"></ProblemTable> |
| | | </div> |
| | | <div> |
| | | <ProblemChangeChart></ProblemChangeChart> |
| | | </div> |
| | | <div> |
| | | <ProblemType></ProblemType> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | |
| | | import ProblemTable from './component/ProblemTable.vue' |
| | | import ProblemSummary from './component/ProblemSummary.vue' |
| | | import ProblemChangeChart from './component/ProblemChangeChart.vue' |
| | | import ProblemType from './component/ProblemType.vue' |
| | | |
| | | import taskApi from '@/api/fysp/taskApi.js' |
| | | |
| | | export default { |
| | | components: { ProblemSummary, ProblemTable }, |
| | | components: { ProblemSummary, ProblemTable, ProblemChangeChart, ProblemType }, |
| | | data() { |
| | | return { |
| | | subtaskList: [] |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-row justify="space-between"> |
| | | <div>åæè¶å¿</div> |
| | | <OptionTime v-model="time"></OptionTime> |
| | | </el-row> |
| | | <div ref="echart" class="line-chart"></div> |
| | | </template> |
| | | <script> |
| | | import * as echarts from 'echarts' |
| | | |
| | | export default { |
| | | methods: { |
| | | refresh() { |
| | | const fontSize = 12 |
| | | const option = { |
| | | legend: { |
| | | data: ['é®é¢', 'æ´æ¹'], |
| | | textStyle: { |
| | | fontSize: fontSize, |
| | | color: 'white' |
| | | } |
| | | }, |
| | | grid: { |
| | | left: '3%', |
| | | right: '4%', |
| | | bottom: '3%', |
| | | containLabel: true |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: ['1å·', '2å·', '3å·', '4å·', '5å·', '6å·'], |
| | | axisLabel: { |
| | | textStyle: { |
| | | fontSize: fontSize |
| | | }, |
| | | color: '#ffffff', |
| | | textBorderColor: '#fff' |
| | | } |
| | | }, |
| | | yAxis: { |
| | | type: 'value', |
| | | axisLabel: { |
| | | textStyle: { |
| | | fontSize: fontSize, |
| | | color: 'white' |
| | | } |
| | | } |
| | | }, |
| | | series: [ |
| | | { |
| | | name: 'é®é¢', |
| | | type: 'bar', |
| | | data: [67, 45, 90, 67, 45, 90] |
| | | }, |
| | | { |
| | | name: 'æ´æ¹', |
| | | type: 'bar', |
| | | data: [67, 45, 90, 67, 40, 81] |
| | | } |
| | | // { |
| | | // name: 'æ´æ¹ç', |
| | | // type: 'bar', |
| | | // data: [820, 832, 901, 934, 1290, 1330, 1320] |
| | | // } |
| | | ] |
| | | } |
| | | this.echart.setOption(option) |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.echart = echarts.init(this.$refs.echart) |
| | | this.refresh() |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .line-chart { |
| | | /* width: 200px; */ |
| | | height: 200px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-row justify="space-between"> |
| | | <div>é®é¢åå¸</div> |
| | | <OptionTime v-model="time"></OptionTime> |
| | | </el-row> |
| | | <div ref="echart" class="line-chart"></div> |
| | | </template> |
| | | <script> |
| | | import * as echarts from 'echarts' |
| | | |
| | | export default { |
| | | methods: { |
| | | refresh() { |
| | | const fontSize = 12 |
| | | const option = { |
| | | legend: { |
| | | data: ['é®é¢', 'æ´æ¹'], |
| | | textStyle: { |
| | | fontSize: fontSize, |
| | | color: 'white' |
| | | } |
| | | }, |
| | | grid: { |
| | | left: '3%', |
| | | right: '4%', |
| | | bottom: '3%', |
| | | containLabel: true |
| | | }, |
| | | tooltip: { |
| | | trigger: 'item' |
| | | }, |
| | | series: [ |
| | | { |
| | | name: 'é®é¢åå¸', |
| | | type: 'pie', |
| | | radius: '55%', |
| | | center: ['50%', '50%'], |
| | | data: [ |
| | | { value: 24, name: 'åºå
¥å£ï¼éè·¯ï¼æ¬å°' }, |
| | | { value: 20, name: 'å·¥ç¨è½¦è¾' }, |
| | | { value: 18, name: 'éè·¯æ¬å°' }, |
| | | { value: 26, name: 'è·¯é¢ç¡¬å' }, |
| | | { value: 30, name: '渣å' } |
| | | ].sort(function (a, b) { |
| | | return a.value - b.value |
| | | }), |
| | | roseType: 'radius', |
| | | label: { |
| | | color: 'rgba(255, 255, 255, 0.3)' |
| | | }, |
| | | labelLine: { |
| | | lineStyle: { |
| | | color: 'rgba(255, 255, 255, 0.3)' |
| | | }, |
| | | smooth: 0.2, |
| | | length: 10, |
| | | length2: 20 |
| | | }, |
| | | itemStyle: { |
| | | color: '#c23531', |
| | | shadowBlur: 200, |
| | | shadowColor: 'rgba(0, 0, 0, 0.5)' |
| | | }, |
| | | animationType: 'scale', |
| | | animationEasing: 'elasticOut', |
| | | animationDelay: function (idx) { |
| | | return Math.random() * 200 |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | this.echart.setOption(option) |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.echart = echarts.init(this.$refs.echart) |
| | | this.refresh() |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .line-chart { |
| | | /* width: 200px; */ |
| | | height: 200px; |
| | | } |
| | | </style> |