diff --git a/Jenkinsfile-prd b/Jenkinsfile-prd index 1bd53bb27..09cd9e7b6 100644 --- a/Jenkinsfile-prd +++ b/Jenkinsfile-prd @@ -11,7 +11,6 @@ pipeline { nodejs 'nodejs-10' } steps { - sh 'npm update' sh 'npm install' sh 'npm run build' } diff --git a/Jenkinsfile-test b/Jenkinsfile-test index fff7d237c..7961d5f98 100644 --- a/Jenkinsfile-test +++ b/Jenkinsfile-test @@ -11,7 +11,6 @@ pipeline { nodejs 'nodejs-10' } steps { - sh 'npm update' sh 'npm install' sh 'npm run test' } diff --git a/package.json b/package.json index d551ce4d2..2ec416153 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "path-to-regexp": "2.4.0", "qrcode.vue": "^1.6.2", "qs": "^6.9.3", + "quill-image-extend-module": "^1.1.2", "recordrtc": "^5.5.9", "script-loader": "^0.7.2", "sessionstorage": "^0.1.0", diff --git a/src/api/learn.js b/src/api/learn.js new file mode 100644 index 000000000..738eb18cf --- /dev/null +++ b/src/api/learn.js @@ -0,0 +1,84 @@ +import request from '@/utils/request'; + +// 根据postId帖子ID分页查询留言列表 +export function queryMessagePagingByPostId(postId, params) { + return request({ + url: `/api/learn/${postId}/message/pagedQuery/postId`, + method: 'get', + params: params + }); +} +// 根据项目分页查询留言列表 +export function queryMessagePagingByProjectCode(projectCode, params) { + return request({ + url: `/api/learn/${projectCode}/message/pagedQuery/project`, + method: 'get', + params: params + }); +} +// 回复帖子 +export function answerPost(data) { + return request({ + url: `/api/learn/message/create`, + method: 'post', + data: data + }); +} +// 评论留言 +export function commentLevelMessage(messageId, data) { + return request({ + url: `/api/learn/${messageId}/comment`, + method: 'post', + data: data + }); +} +// 评论 留言的评论 +export function commentComents(messageId, commentId, data) { + return request({ + url: `/api/learn/${messageId}/${commentId}/comment`, + method: 'post', + data: data + }); +} +// 管理员删除留言 +export function deleteMessageByAdmin(messageId) { + return request({ + url: `/api/learn/${messageId}/deleteMessage/admin`, + method: 'delete' + }); +} +// 用户自己删除留言 +export function deleteMessageBySelf(messageId) { + return request({ + url: `/api/learn/${messageId}/deleteMessage/user`, + method: 'delete' + }); +} +// 查询留言的评论列表 +export function queryMessageCommentList(messageId) { + return request({ + url: `/api/learn/${messageId}/list`, + method: 'get' + }); +} +// 删除评论回复管理员 +export function deleteCommentByAdmin(commentId) { + return request({ + url: `/api/learn/${commentId}/deleteComment/admin`, + method: 'delete' + }); +} +// 删除评论回复用户 +export function deleteCommentBySelf(commentId) { + return request({ + url: `/api/learn/${commentId}/deleteComment/user`, + method: 'delete' + }); +} +// 根据项目获取项目关联的帖子 +export function getPostByProjectCode(projectCode) { + return request({ + url: `/api/learn/${projectCode}/post`, + method: 'get' + }); +} diff --git a/src/assets/bg_board.jpg b/src/assets/bg_board.jpg new file mode 100644 index 000000000..57b78a062 Binary files /dev/null and b/src/assets/bg_board.jpg differ diff --git a/src/assets/delete.png b/src/assets/delete.png new file mode 100644 index 000000000..a5d3f42fa Binary files /dev/null and b/src/assets/delete.png differ diff --git a/src/assets/like.png b/src/assets/like.png new file mode 100644 index 000000000..d36ee6510 Binary files /dev/null and b/src/assets/like.png differ diff --git a/src/assets/reply.png b/src/assets/reply.png new file mode 100644 index 000000000..04215c4a0 Binary files /dev/null and b/src/assets/reply.png differ diff --git a/src/assets/unlike.png b/src/assets/unlike.png new file mode 100644 index 000000000..dddf99c85 Binary files /dev/null and b/src/assets/unlike.png differ diff --git a/src/components/QuillEditor/index.vue b/src/components/QuillEditor/index.vue index 2e4bf60d7..a5913a843 100644 --- a/src/components/QuillEditor/index.vue +++ b/src/components/QuillEditor/index.vue @@ -4,7 +4,8 @@ ref="editor" v-model="content" :options="options" - :style="{height: height+'px', 'margin-bottom': '80px'}" + style="background-color: #fff" + :style="{height: height+'px', 'margin-bottom': marginBottom+'px'}" @change="onChange" @blur="onBlur" @focus="onFocus" @@ -13,9 +14,10 @@ + + diff --git a/src/views/newMap/displayNew/demon/runPlanView.vue b/src/views/newMap/displayNew/demon/runPlanView.vue index fca562703..a3aebd600 100644 --- a/src/views/newMap/displayNew/demon/runPlanView.vue +++ b/src/views/newMap/displayNew/demon/runPlanView.vue @@ -245,6 +245,22 @@ export default { this.runPlanData, this.runSeries, { color: '#FF00DE', width: 2 } ); const series = [...this.staticSeries, ...this.runSeries, ... this.selectSeries]; + // let index = 0; + // this.stations.forEach((station, ii) => { + // if (station.visible) { + // index++; + // series.push({ + // type: 'bar', + // barGap: '-100%', + // yAxisIndex: index, + // barWidth: '3000%', + // itemStyle: { + // color: 'red' + // }, + // data: [[29030, 50], [29060, 60], [29090, 20], [29120, 60], [29150, 80], [29180, 160], [29210, 50], [29240, 80], [29270, 30]] + // }); + // } + // }); this.myChart && this.myChart.setOption({series: series}); }, async loadChartPage() { @@ -268,20 +284,6 @@ export default { async loadInitData() { this.myChart && this.myChart.showLoading(); const option = { - title: { - text: '', - left: 'center' - }, - grid: { - top: '30px', - left: '120px', - right: '40px', - bottom: '65px', - containLabel: true, - backgroundColor: 'floralwhite' - }, - toolbox: { - }, tooltip: { axisPointer: { trigger: 'item', @@ -290,10 +292,14 @@ export default { formatter: this.axisTooltip, borderWidth: 1 }, + grid: { + right: '40px', + left: '120px', + height: '85%' + }, xAxis: [ { type: 'category', - boundaryGap: false, data: [], axisLine: { onZero: false, @@ -318,54 +324,55 @@ export default { } } ], - yAxis: { - type: 'value', - splitLine: { - show: false - }, - axisTick: { - show: false - }, - axisLine: { - onZero: false, - lineStyle: { - width: 2, - color: '#d14a61' - } - }, - axisLabel: { - interval: 'auto', - formatter: this.yAxisLableFormat - }, - axisPointer: { - xAxisIndex: 'all', - label: { - formatter: this.yAxisPointFormat, - backgroundColor: 'rgb(0,100,0,0.5)', - color: 'white' - } - }, - min: 0, - max: 0 - }, - series: [], - dataZoom: [ + yAxis: [ { - type: 'inside' - }, - { - fiterMode: 'filter', - handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z', - handleSize: '80%', - handleStyle: { - color: '#fff', - shadowBlur: 3, - shadowColor: 'rgba(0, 0, 0, 0.6)', - shadowOffsetX: 2, - shadowOffsetY: 2 + type: 'value', + yAxisIndex: 0, + splitLine: { + show: false }, - bottom: '20px' + axisTick: { + show: false + }, + axisLine: { + onZero: false, + lineStyle: { + width: 2, + color: '#d14a61' + } + }, + axisLabel: { + interval: 'auto', + formatter: this.yAxisLableFormat + }, + axisPointer: { + xAxisIndex: 'all', + label: { + formatter: this.yAxisPointFormat, + backgroundColor: 'rgb(0,100,0,0.5)', + color: 'white' + } + } } + ], + dataZoom: [{ + type: 'inside' + }, + { + fiterMode: 'filter', + handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z', + handleSize: '80%', + handleStyle: { + color: '#fff', + shadowBlur: 3, + shadowColor: 'rgba(0, 0, 0, 0.6)', + shadowOffsetX: 2, + shadowOffsetY: 2 + }, + bottom: '20px' + }], + series: [ + ] }; await this.xAxisInit(option); @@ -394,6 +401,23 @@ export default { option.dataZoom[0].startValue = option.dataZoom[1].startValue = startValue - offsetTime; option.dataZoom[0].endValue = option.dataZoom[1].endValue = startValue + offsetTime; option.series = [...this.staticSeries, ...this.runSeries, ...this.selectSeries]; + // let index = 0; + // this.stations.forEach((station, ii) => { + // if (station.visible) { + // index++; + // option.series.push({ + // type: 'bar', + // barGap: '-100%', + // yAxisIndex: index, + // barWidth: '3000%', + // itemStyle: { + // color: 'red' + // }, + // data: [[29030, 50], [29060, 60], [29090, 20], [29120, 60], [29150, 80], [29180, 160], [29210, 50], [29240, 80], [29270, 30]] + // }); + // } + // }); + this.myChart = echarts.init(document.getElementById(this.runPlanId)); if (this.myChart) { this.myChart.setOption(option); @@ -440,8 +464,20 @@ export default { }, yAxisInit(option) { if (Object.keys(this.PlanConvert).length) { - option.yAxis.min = this.PlanConvert.computedYaxisMinValue(this.stations); - option.yAxis.max = this.PlanConvert.computedYaxisMaxValue(this.stations); + option.yAxis[0].min = this.PlanConvert.computedYaxisMinValue(this.stations); + option.yAxis[0].max = this.PlanConvert.computedYaxisMaxValue(this.stations); + let index = 1; + this.stations.forEach((station, ii) => { + if (station.visible) { + option.yAxis.push({ + type: 'value', + min: option.yAxis[0].min - Math.floor(station.kmRange * this.PlanConvert.CoordMultiple + this.PlanConvert.EdgeHeight), + max: Math.floor(option.yAxis[0].max - station.kmRange * this.PlanConvert.CoordMultiple) - this.PlanConvert.EdgeHeight, + show: false, + yAxisIndex : index++ + }); + } + }); } }, axisTooltip(param) { diff --git a/src/views/newMap/displayNew/demonMenu.vue b/src/views/newMap/displayNew/demonMenu.vue index b835e2997..d35237ef8 100644 --- a/src/views/newMap/displayNew/demonMenu.vue +++ b/src/views/newMap/displayNew/demonMenu.vue @@ -4,6 +4,10 @@
菜单
+ {{ jl3dmodel }} @@ -12,6 +16,8 @@ {{ jl3dpassflow }} {{ jl3dtrafficplan }} + {{ $t('display.demon.traffictraintext') }} + 故障设备 @@ -23,12 +29,9 @@ 理论考试 - 联系方式 - + 权限分发 + 留言板 + 联系方式 + @@ -55,6 +59,7 @@ import SchedulingView from '@/views/newMap/displayNew/demon/schedulingView'; import { EventBus } from '@/scripts/event-bus'; import DistributeDraft from '@/views/components/limits/distribute'; import QrCode from '@/components/QrCode'; +import MessageBoard from './demon/messageBoard'; import ContectUs from '@/views/newMap/displayNew/dispatherContest/contectUs'; export default { name:'DemonMenu', @@ -65,7 +70,8 @@ export default { SchedulingView, DistributeDraft, QrCode, - ContectUs + ContectUs, + MessageBoard }, props:{ isAllShow:{ @@ -217,6 +223,19 @@ export default { }); window.open(routeData.href, '_blank', 'noopener noreferrer'); }, + jumpjl3dtraffictrain() { + const routeData = this.$router.resolve({ + path:'/jlmap3d/traffictrain', + query:{ + mapid:this.mapId, + group:this.group, + project: this.project, + noPreLogout: true, + lineCode:this.lineCode + } + }); + window.open(routeData.href, '_blank', 'noopener noreferrer'); + }, jumpjlmap3dFault() { const routeData = this.$router.resolve({ path:'/jlmap3d/maintainer', @@ -281,6 +300,9 @@ export default { this.$refs.distribute.doShow({PermissionType:'03', mapId: this.$route.query.mapId, prdType: this.$route.query.prdType}); } }, + messageBoardShow() { + this.$refs.messageBoard.doShow(); + }, contectUs() { this.$refs.contectUs.doShow(); } diff --git a/src/views/newMap/displayNew/dispatherContest/sceneList.vue b/src/views/newMap/displayNew/dispatherContest/sceneList.vue index 2316221aa..cf7ca1a24 100644 --- a/src/views/newMap/displayNew/dispatherContest/sceneList.vue +++ b/src/views/newMap/displayNew/dispatherContest/sceneList.vue @@ -1,20 +1,18 @@