Browse Source

修改禅道BUG

wangqin
王钦 9 months ago
parent
commit
d326732a76
  1. 1
      ruoyi-ui/src/main.js
  2. 2
      ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/index.vue
  3. 22
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/index.vue
  4. 20
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DeviceControl/index.vue
  5. 575
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DisposalProcess/DialogProcess/index.vue
  6. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DisposalProcess/index.vue
  7. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/ReleaseInformation/index.vue
  8. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/index.vue
  9. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/data.js
  10. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/index.vue
  11. 28
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/FormEvent/PresetFormItems.js
  12. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/index.vue
  13. 3
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/auditAnalytics/StatsDialogVisible/index.vue
  14. 847
      ruoyi-ui/src/views/JiHeExpressway/pages/datav/roadNet/index.vue
  15. 71
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/manage/index.vue
  16. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/left-bg-action.png
  17. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/left-bg.png
  18. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/switch0.png
  19. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/switch1.png
  20. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t01-1.svg
  21. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t01-2.svg
  22. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t01-4.svg
  23. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t01-5.svg
  24. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t010.svg
  25. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t011.svg
  26. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t012.svg
  27. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t013.svg
  28. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t014.svg
  29. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t015.svg
  30. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t02-1.svg
  31. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t03.svg
  32. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t05.svg
  33. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t06.svg
  34. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t07.svg
  35. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t08.svg
  36. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t11-1.svg
  37. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t11-2.svg
  38. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t11-4.svg
  39. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t11-5.svg
  40. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t110.svg
  41. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t111.svg
  42. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t112.svg
  43. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t113.svg
  44. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t114.svg
  45. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t115.svg
  46. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t12-1.svg
  47. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t13.svg
  48. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t15.svg
  49. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t16.svg
  50. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t17.svg
  51. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t18.svg
  52. 133
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/index.vue
  53. 74
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/xscroll.vue
  54. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue
  55. 4
      ruoyi-ui/src/views/JiHeExpressway/utils/enum_event/PresetFormItems.js
  56. 122
      ruoyi-ui/src/views/JiHeExpressway/utils/enum_event/data.js
  57. 2
      ruoyi-ui/src/views/websocket.vue
  58. 4
      ruoyi-ui/vue.config.js

1
ruoyi-ui/src/main.js

@ -107,6 +107,7 @@ Vue.prototype.socket = Socket;
Vue.prototype.numberMul = numberMul;
Vue.prototype.emitter = emitter;
// 挂载全局事件变更ws响应
Vue.prototype.EventBus = new Vue();
// gis
Vue.prototype.$GlobalConfig = config.GlobalConfig;

2
ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/index.vue

@ -2,8 +2,6 @@
<BorderRadiusImage class="RoadStateCard" borderRadius="2px"
borderColor="linear-gradient(360deg, rgba(55, 231, 255, 0.3), rgba(55, 231, 255, 0))" borderWidth="2px">
<div class="left" v-if="isShowLeft">
<!-- <img :src="(cardData.pictures ? cardData.pictures[0] : null) || require(`./test.png`)"> -->
<!-- <img :src="require(`./test.png`)"> -->
<ElImage style="width: 212px; height: 159px" :src="cardData.pictures ? cardData.pictures[0] : null"
:preview-src-list="cardData.pictures || []">
<div slot="error">

22
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/index.vue

@ -18,9 +18,9 @@
</div>
<div class="bottom">
<!-- <div class="cleared-btn" @click="handleRefresh">
<!-- <div class="cleared-btn" @click="updateEventState">
<img src="@screen/images/clearLayer.svg" />
<span>更新图层</span>
<span>debug</span>
</div> -->
<div class="cleared-btn" @click="handleCleared">
<img src="@screen/images/clearLayer.svg" />
@ -195,6 +195,14 @@ export default {
getMinMapLayers();
this.$root.$on('delete-event', this.handleRefresh);
//
this.EventBus.$on("deviceState", deviceList => {
this.updateEventState(deviceList)
});
},
destroyed(){
this.EventBus.$off("deviceState");
},
beforeDestroy() {
this.emitter.off("selectedCompleted", this.selectedCompletedHandle);
@ -270,6 +278,16 @@ export default {
handleDevice: debounce(async function (item) {
await this.handleDeviceImmediate(item);
}, 360),
//
async updateEventState(eventList){
markerClusterIns.data.forEach(e => {
const device = _.find(eventList,{iotDeviceId: e.extData.iotDeviceId})
if(device){
e.extData.deviceState = device.deviceState;
}
});
markerClusterIns.setData()
},
async handleRefresh(){
const tab = _.filter(this.tabContentData,{status:'_active'})
try{

20
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DeviceControl/index.vue

@ -59,16 +59,24 @@ export default {
return {
planId: "",
tableData: [],
subclass:""
};
},
watch: {},
mounted() {},
methods: {
detailChange(eventId) {
if(this.tableData.length === 0){
this.initData(this.detailData);
watch: {
"provideData.detail"(newValue, oldValue) {
if(this.subclass !== newValue.subclass){
this.initData(newValue)
}
},
},
mounted() {},
methods: {
// detailChange(eventId) {
// if(this.tableData.length === 0){
// this.initData(this.detailData);
// }
// },
initData(eventInfo) {
request({
url: `business/plans/list/event/type`,

575
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DisposalProcess/DialogProcess/index.vue

@ -1,33 +1,19 @@
<template>
<Dialog v-model="modelVisible" title="事件上报" width="1485px" top="90px">
<Dialog v-model="modelVisible" title="事件上报" width="1485px" top="55px">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="事件" name="first">
<div class="EventDetail">
<span class="title">事件基本信息</span>
<Form
class="form"
ref="FormConfigRef"
:formList="formConfigList"
v-model="fData"
labelWidth="120px"
/>
<Form class="form" ref="FormConfigRef" :formList="formConfigList" v-model="fData" labelWidth="120px" />
<span class="title">上报侧重要素</span>
<Form
ref="FormReportRef"
:formList="reportList"
v-model="reportData"
label-width="150px"
/>
<div class="footer">
<Button @click.native="onSubmit">保存</Button>
<!-- :loading="submitting" -->
<Button
style="background: #c9c9c9"
@click.native="modelVisible = false"
>关闭</Button
>
</div>
<Form ref="FormReportRef" :formList="reportList" v-model="reportData" label-width="150px" />
</div>
<div class="linespace"></div>
<div class="footer">
<Button @click.native="onSubmit">保存</Button>
<!-- :loading="submitting" -->
<Button style="background: #c9c9c9" @click.native="modelVisible = false">关闭</Button>
</div>
</el-tab-pane>
<el-tab-pane label="初报" name="second">
@ -36,15 +22,10 @@
<el-form :model="formFileData">
<div class="file-title">重要事件</div>
<div class="file-top">
<span class="file-top-fromDept"
>报送单位:
<el-input
:disabled="type != 0"
v-model="formFileData.fromDept"
/>
<span class="file-top-fromDept">报送单位:
<el-input :disabled="type != 0" v-model="formFileData.fromDept" />
</span>
<span class="file-top-createTime"
>报送时间: {{ formFileData.createTime }}
<span class="file-top-createTime">报送时间: {{ formFileData.createTime }}
</span>
</div>
<div class="file-content">
@ -53,75 +34,36 @@
</el-input>
</div>
<div class="file-content-toDept">
<el-input
:disabled="type != 0"
v-model="formFileData.toDept"
></el-input
>:
<el-input :disabled="type != 0" v-model="formFileData.toDept"></el-input>:
</div>
<el-input
:disabled="type != 0"
class="file-content-text"
v-model="formFileData.content"
type="textarea"
:rows="2"
placeholder="请输入内容"
></el-input>
<el-input :disabled="type != 0" class="file-content-text" v-model="formFileData.content" type="textarea"
:rows="2" placeholder="请输入内容"></el-input>
</div>
<div class="file-footer">
<div class="file-createName">
<span>填报人:</span
><el-input
:disabled="type != 0"
v-model="formFileData.createName"
placeholder=""
></el-input>
<span>填报人:</span><el-input :disabled="type != 0" v-model="formFileData.createName"
placeholder=""></el-input>
</div>
<div class="file-phoneNumber">
<span>联系电话:</span
><el-input
:disabled="type != 0"
v-model="formFileData.phoneNumber"
placeholder=""
></el-input>
<span>联系电话:</span><el-input :disabled="type != 0" v-model="formFileData.phoneNumber"
placeholder=""></el-input>
</div>
<div class="file-issuedr">
<span>签发人:</span
><el-input
:disabled="type != 0"
v-model="formFileData.issued"
placeholder=""
></el-input>
<span>签发人:</span><el-input :disabled="type != 0" v-model="formFileData.issued"
placeholder=""></el-input>
</div>
</div>
</el-form>
</div>
</div>
<div class="linespace"></div>
<div class="footer">
<Button
v-if="type == 0"
style="background: #39d5bf"
@click.native="handleInitData(1)"
>重新生成</Button
>
<Button style="background: #3de8ff" @click.native="handlePreview"
>预览</Button
>
<Button
v-if="type == 0"
style="background: #ffdb82"
@click.native="onFileSubmit"
>保存</Button
>
<Button v-if="type == 0" @click.native="onSubmitUpload"
>保存并上报</Button
>
<Button
style="background: #c9c9c9"
@click.native="modelVisible = false"
>关闭</Button
>
<Button v-if="type == 0" style="background: #39d5bf" @click.native="handleInitData(1)">重新生成</Button>
<Button style="background: #3de8ff" @click.native="handlePreview">预览</Button>
<Button v-if="type == 0" style="background: #ffdb82" @click.native="onFileSubmit">保存</Button>
<Button v-if="type == 0" @click.native="onSubmitUpload">保存并上报</Button>
<Button style="background: #c9c9c9" @click.native="modelVisible = false">关闭</Button>
</div>
</el-tab-pane>
<el-tab-pane label="续报" name="third" :disabled="type == 0">
@ -131,129 +73,60 @@
<el-form :model="formFileData">
<div class="file-title">重要事件</div>
<div class="file-top">
<span class="file-top-fromDept"
>报送单位:
<el-input
:disabled="
type == 3 || (type == 2 && formFileData.status == 1)
"
v-model="formFileData.fromDept"
/>
<span class="file-top-fromDept">报送单位:
<el-input :disabled="type == 3 || (type == 2 && formFileData.status == 1)
" v-model="formFileData.fromDept" />
</span>
<span class="file-top-createTime"
>报送时间: {{ formFileData.createTime }}
<span class="file-top-createTime">报送时间: {{ formFileData.createTime }}
</span>
</div>
<div class="file-content">
<div class="file-content-title">
<el-input
:disabled="
type == 3 || (type == 2 && formFileData.status == 1)
"
v-model="formFileData.title"
>
<el-input :disabled="type == 3 || (type == 2 && formFileData.status == 1)
" v-model="formFileData.title">
</el-input>
</div>
<div class="file-content-toDept">
<el-input
:disabled="
type == 3 || (type == 2 && formFileData.status == 1)
"
v-model="formFileData.toDept"
></el-input
>:
<el-input :disabled="type == 3 || (type == 2 && formFileData.status == 1)
" v-model="formFileData.toDept"></el-input>:
</div>
<el-input
:disabled="
type == 3 || (type == 2 && formFileData.status == 1)
"
class="file-content-text"
v-model="formFileData.content"
type="textarea"
:rows="2"
placeholder="请输入内容"
></el-input>
<el-input :disabled="type == 3 || (type == 2 && formFileData.status == 1)
" class="file-content-text" v-model="formFileData.content" type="textarea" :rows="2"
placeholder="请输入内容"></el-input>
</div>
<div class="file-footer">
<div class="file-createName">
<span>填报人:</span
><el-input
:disabled="
type == 3 || (type == 2 && formFileData.status == 1)
"
v-model="formFileData.createName"
placeholder=""
></el-input>
<span>填报人:</span><el-input :disabled="type == 3 || (type == 2 && formFileData.status == 1)
" v-model="formFileData.createName" placeholder=""></el-input>
</div>
<div class="file-phoneNumber">
<span>联系电话:</span
><el-input
:disabled="
type == 3 || (type == 2 && formFileData.status == 1)
"
v-model="formFileData.phoneNumber"
placeholder=""
></el-input>
<span>联系电话:</span><el-input :disabled="type == 3 || (type == 2 && formFileData.status == 1)
" v-model="formFileData.phoneNumber" placeholder=""></el-input>
</div>
<div class="file-issuedr">
<span>签发人:</span
><el-input
:disabled="
type == 3 || (type == 2 && formFileData.status == 1)
"
v-model="formFileData.issued"
placeholder=""
></el-input>
<span>签发人:</span><el-input :disabled="type == 3 || (type == 2 && formFileData.status == 1)
" v-model="formFileData.issued" placeholder=""></el-input>
</div>
</div>
</el-form>
</div>
</div>
<!-- @current-change="initData" @size-change="onSizeChange" -->
<Pagination
style="margin-top: 20px"
width="'100%'"
:page-size="pageSize"
:current-page.sync="pageNum"
layout="total, prev, pager, next"
:total="renewedList.length"
@size-change="onSizeChange"
@current-change="onCurrentChange"
>
<Pagination style="margin-top: 20px" width="'100%'" :page-size="pageSize" :current-page.sync="pageNum"
layout="total, prev, pager, next" :total="renewedList.length" @size-change="onSizeChange"
@current-change="onCurrentChange">
</Pagination>
<div class="footer">
<Button
v-if="type != 3"
style="background: #39d5bf"
@click.native="handleInitData(2, 1)"
>重新生成</Button
>
<Button style="background: #3de8ff" @click.native="handlePreview"
>预览</Button
>
<Button
v-if="
(type == 1 && formFileData.status == 0) ||
(newType == 1 && formFileData.status == 0)
"
style="background: #ffdb82"
@click.native="onFileSubmit"
>保存</Button
>
<Button
v-if="
(type == 1 && formFileData.status == 0) ||
(newType == 1 && formFileData.status == 0)
"
@click.native="onSubmitUpload"
>保存并上报</Button
>
<Button
style="background: #c9c9c9"
@click.native="modelVisible = false"
>关闭</Button
>
<Button v-if="type != 3" style="background: #39d5bf" @click.native="handleInitData(2, 1)">重新生成</Button>
<Button style="background: #3de8ff" @click.native="handlePreview">预览</Button>
<Button v-if="(type == 1 && formFileData.status == 0) ||
(newType == 1 && formFileData.status == 0)
" style="background: #ffdb82" @click.native="onFileSubmit">保存</Button>
<Button v-if="(type == 1 && formFileData.status == 0) ||
(newType == 1 && formFileData.status == 0)
" @click.native="onSubmitUpload">保存并上报</Button>
<Button style="background: #c9c9c9" @click.native="modelVisible = false">关闭</Button>
</div>
</el-tab-pane>
<el-tab-pane label="终报" name="fourth" :disabled="type == 0">
@ -262,15 +135,10 @@
<el-form :model="formFileData">
<div class="file-title">重要事件</div>
<div class="file-top">
<span class="file-top-fromDept"
>报送单位:
<el-input
:disabled="type == 3"
v-model="formFileData.fromDept"
/>
<span class="file-top-fromDept">报送单位:
<el-input :disabled="type == 3" v-model="formFileData.fromDept" />
</span>
<span class="file-top-createTime"
>报送时间: {{ formFileData.createTime }}
<span class="file-top-createTime">报送时间: {{ formFileData.createTime }}
</span>
</div>
<div class="file-content">
@ -279,222 +147,135 @@
</el-input>
</div>
<div class="file-content-toDept">
<el-input
:disabled="type == 3"
v-model="formFileData.toDept"
></el-input
>:
<el-input :disabled="type == 3" v-model="formFileData.toDept"></el-input>:
</div>
<el-input
:disabled="type == 3"
class="file-content-text"
v-model="formFileData.content"
type="textarea"
:rows="2"
placeholder="请输入内容"
></el-input>
<el-input :disabled="type == 3" class="file-content-text" v-model="formFileData.content" type="textarea"
:rows="2" placeholder="请输入内容"></el-input>
</div>
<div class="file-footer">
<div class="file-createName">
<span>填报人:</span
><el-input
:disabled="type == 3"
v-model="formFileData.createName"
placeholder=""
></el-input>
<span>填报人:</span><el-input :disabled="type == 3" v-model="formFileData.createName"
placeholder=""></el-input>
</div>
<div class="file-phoneNumber">
<span>联系电话:</span
><el-input
:disabled="type == 3"
v-model="formFileData.phoneNumber"
placeholder=""
></el-input>
<span>联系电话:</span><el-input :disabled="type == 3" v-model="formFileData.phoneNumber"
placeholder=""></el-input>
</div>
<div class="file-issuedr">
<span>签发人:</span
><el-input
:disabled="type == 3"
v-model="formFileData.issued"
placeholder=""
></el-input>
<span>签发人:</span><el-input :disabled="type == 3" v-model="formFileData.issued"
placeholder=""></el-input>
</div>
</div>
</el-form>
</div>
</div>
<div class="linespace"></div>
<div class="footer">
<Button
v-if="type != 3"
style="background: #39d5bf"
@click.native="handleInitData(3)"
>重新生成</Button
>
<Button style="background: #3de8ff" @click.native="handlePreview"
>预览</Button
>
<Button
v-if="type != 3"
style="background: #ffdb82"
@click.native="onFileSubmit"
>保存</Button
>
<Button v-if="type != 3" @click.native="onSubmitUpload"
>保存并上报</Button
>
<Button
style="background: #c9c9c9"
@click.native="modelVisible = false"
>关闭</Button
>
<Button v-if="type != 3" style="background: #39d5bf" @click.native="handleInitData(3)">重新生成</Button>
<Button style="background: #3de8ff" @click.native="handlePreview">预览</Button>
<Button v-if="type != 3" style="background: #ffdb82" @click.native="onFileSubmit">保存</Button>
<Button v-if="type != 3" @click.native="onSubmitUpload">保存并上报</Button>
<Button style="background: #c9c9c9" @click.native="modelVisible = false">关闭</Button>
</div>
</el-tab-pane>
<Dialog style="" v-model="showDocx" width="1085px" top="60px">
<div class="docx-wrapper">
<section
ref="initFile"
class="docx"
style="
<section ref="initFile" class="docx" style="
padding: 72pt 90.15pt;
width: 595.3pt;
min-height: 741.9pt;
column-count: 1;
column-gap: 36pt;
"
>
">
<article>
<p
style="
<p style="
line-height: 1;
text-align: center;
vertical-align: baseline;
margin-bottom: 10px;
"
>
<span
lang="en-US"
style="
">
<span lang="en-US" style="
font-family: 方正小标宋简体;
color: rgb(255, 0, 0);
min-height: 46pt;
font-size: 46pt;
font-weight: 700;
"
>重要事件</span
>
">重要事件</span>
</p>
<p
style="
<p style="
margin-bottom: 2pt;
min-height: 15pt;
line-height: 15pt;
text-align: center;
vertical-align: baseline;
"
>
<span
lang="null"
style="
">
<span lang="null" style="
font-family: 仿宋_GB2312;
font-weight: normal;
min-height: 10.5pt;
font-size: 10.5pt;
"
>报送单位</span
><span
lang="en-US"
style="
">报送单位:</span><span lang="en-US" style="
font-family: 仿宋_GB2312;
font-weight: normal;
min-height: 10.5pt;
font-size: 10.5pt;
"
>
{{ formFileData.fromDept }}</span
><span
lang="null"
style="
">
{{ formFileData.fromDept }}</span><span lang="null" style="
font-family: 仿宋_GB2312;
font-weight: normal;
min-height: 10.5pt;
font-size: 10.5pt;
"
>报送时间</span
><span
lang="en-US"
style="
">报送时间:</span><span lang="en-US" style="
font-family: 仿宋_GB2312;
font-weight: normal;
min-height: 10.5pt;
font-size: 10.5pt;
"
>{{ formFileData.createTime }}</span
>
">{{ formFileData.createTime }}</span>
</p>
<p
style="
<p style="
margin-bottom: 1pt;
min-height: 10pt;
line-height: 10pt;
text-align: center;
vertical-align: baseline;
"
>
<span
style="
">
<span style="
font-family: 'Times New Roman';
font-weight: bold;
color: rgb(255, 0, 0);
min-height: 22pt;
font-size: 22pt;
"
></span
>
"></span>
</p>
<p
style="
<p style="
margin-bottom: 6pt;
min-height: 25pt;
line-height: 25pt;
text-align: center;
vertical-align: baseline;
"
>
<span
lang="en-US"
style="
">
<span lang="en-US" style="
font-family: 方正小标宋简体;
min-height: 22pt;
font-size: 22pt;
font-weight: bold;
"
>{{ formFileData.title }}</span
>
">{{ formFileData.title }}</span>
</p>
<p
style="
<p style="
text-indent: 0pt;
text-align: left;
vertical-align: baseline;
"
>
<span
lang="en-US"
style="
">
<span lang="en-US" style="
font-family: 仿宋_GB2312;
font-weight: normal;
color: black;
min-height: 16pt;
font-size: 16pt;
"
>智慧管理中心</span
>
">智慧管理中心</span>
</p>
<textarea
v-model="formFileData.content"
disabled
style="
<textarea v-model="formFileData.content" disabled style="
width: 100%;
height: 40vh;
line-height: 1.5;
@ -507,44 +288,34 @@
font-size: 16pt;
background: #fff;
border: none;
"
>
">
{{ formFileData.content }}
</textarea>
<p
style="
<p style="
line-height: 1;
text-indent: 0pt;
vertical-align: baseline;
"
></p>
"></p>
<p style="vertical-align: baseline"></p>
<p
style="
<p style="
margin-bottom: 1pt;
min-height: 10pt;
line-height: 10pt;
text-align: center;
vertical-align: baseline;
"
>
<span
style="
">
<span style="
font-family: 'Times New Roman';
font-weight: bold;
color: rgb(255, 0, 0);
min-height: 22pt;
font-size: 22pt;
"
></span
>
"></span>
</p>
<p
class="docx-num-0-0"
style="
<p class="docx-num-0-0" style="
display: flex;
justify-content: space-between;
margin-top: 0pt;
@ -554,8 +325,7 @@
font-weight: normal;
min-height: 14pt;
font-size: 14pt;
"
>
">
<span lang="en-US">填报人:{{ formFileData.createName }} </span>
<span>联系电话:{{ formFileData.phoneNumber }}</span>
<span> 签发人{{ formFileData.issued }}</span>
@ -606,7 +376,7 @@ export default {
visible: Boolean,
formData: {
type: Object,
default: () => {},
default: () => { },
},
eventId: String,
},
@ -652,20 +422,26 @@ export default {
};
},
watch: {
"provideData.detail"(newValue, oldValue) {
this.provideDetail = newValue;
this.eventId = newValue.id;
this.initData();
this.getReportData();
this.getImportantFileStatus();
},
async modelVisible(newValue, oldValue){
if(newValue){
this.provideDetail = this.provideData.detail;
this.eventId = this.provideDetail.id;
await this.initData();
this.getReportData();
this.getImportantFileStatus();
}
}
// "provideData.detail"(newValue, oldValue) {
// this.provideDetail = newValue;
// this.eventId = newValue.id;
// this.initData();
// this.getReportData();
// this.getImportantFileStatus();
// },
},
computed: {
modelVisible: {
get() {
// if (this.visible) {
// this.getProcess();
// }
return this.visible;
},
set(val) {
@ -675,13 +451,14 @@ export default {
},
methods: {
async initData() {
let infoData = await request({
url: `/dc/system/event/eventSubclass/${this.eventId}`, //
method: "get",
});
if (infoData.code != 200) return Message.error(infoData?.msg);
let info = infoData.data;
let result = await request({
url: `/dc/system/event/eventSubclass/${this.eventId}`,
method: "GET",
})
let info = result.data;
if (info.lang && typeof info.lang == "string") {
info.lang = info.lang.split(",")
}
if (typeof info.stakeMark == "string") {
let numbers = info.stakeMark.match(/\d+/g).map(Number);
info.stakeMark = numbers;
@ -690,7 +467,7 @@ export default {
let _confirgList = _.cloneDeep(configList[info.eventName]);
const facilityResult = await request({ url: `/business/facility/query`,method: "get"})
const facilityResult = await request({ url: `/business/facility/query`, method: "get" })
if (facilityResult.code != 200) return Message.error(facilityResult?.msg);
this.lwss = [];
facilityResult.data.forEach((it) =>
@ -700,33 +477,33 @@ export default {
type: it.facilityType,
})
);
_confirgList.forEach(async (it) => {
if (it.label==='服务区:' && it.type==='select' ) { //
if (it.label === '服务区:' && it.type === 'select') { //
it.options.options = this.lwss.filter((x) => x.type == 6);
}
if (it.label==='立交桥:' && it.type==='select' ) { //
if (it.label === '立交桥:' && it.type === 'select') { //
it.options.options = this.lwss.filter((x) => x.type == 4);
let aryKey = it.key.split('.')
const v = info[aryKey[0]][aryKey[1]]
if(v){
if (v) {
const zdResult = await request({ url: `/system/ramp/listAll?facilityId=${v}`,method: "get"})
const zdResult = await request({ url: `/system/ramp/listAll?facilityId=${v}`, method: "get" })
if (zdResult.code != 200) return Message.error(zdResult?.msg);
console.log
let zd = [];
zdResult.rows.forEach((it) =>
zd.push({ key: it.id, label: it.rampName })
);
_confirgList.filter(x=>x.label==='匝道:' && x.type==='select').forEach(f=>{
_confirgList.filter(x => x.label === '匝道:' && x.type === 'select').forEach(f => {
f.options.options = zd
})
}
}
if (it.label==='收费站:' && it.type==='select' ) { //
if (it.label === '收费站:' && it.type === 'select') { //
it.options.options = this.lwss.filter((x) => x.type == 1);
}
if (it.label==='停车区:' && it.type==='select' ) { //
if (it.label === '停车区:' && it.type === 'select') { //
it.options.options = this.lwss.filter((x) => x.type == 7);
}
@ -794,7 +571,7 @@ export default {
},
//
onSubmit() {
this.$refs.FormConfigRef.validate().then((formData) => {});
this.$refs.FormConfigRef.validate().then((formData) => { });
this.$refs.FormReportRef.validate().then((formData) => {
formData.eventId = this.eventId;
editEventImportant(formData).then((result) => {
@ -873,9 +650,9 @@ export default {
status: 0,
};
if (this.formFileData && this.formFileData.id) {
editEventImportantFile(data).then((res) => {});
editEventImportantFile(data).then((res) => { });
} else {
addEventImportantFile(data).then((res) => {});
addEventImportantFile(data).then((res) => { });
}
if (this.activeName == "second") {
@ -894,9 +671,9 @@ export default {
status: 1,
};
if (this.formFileData && this.formFileData.id) {
editEventImportantFile(data).then((res) => {});
editEventImportantFile(data).then((res) => { });
} else {
addEventImportantFile(data).then((res) => {});
addEventImportantFile(data).then((res) => { });
}
this.getImportantFileStatus();
if (this.activeName == "second") {
@ -909,7 +686,7 @@ export default {
},
},
mounted() {},
mounted() { },
};
</script>
@ -918,21 +695,15 @@ export default {
display: flex;
gap: 9px;
width: 100%;
height: 600px;
height: 665px;
overflow-y: auto;
flex-direction: column;
.title {
margin: 10px 0;
}
// .footer {
// display: flex;
// justify-content: end;
// gap: 15px;
// margin-top: 20px;
// margin-right: 20px;
// div {
// }
// }
}
.file {
// width: 80%;
padding: 20px;
@ -946,10 +717,12 @@ export default {
// background: #fff;
width: auto;
}
.el-input.is-disabled input.el-input__inner {
color: #000 !important;
background: none;
}
.el-input__inner {
caret-color: #000;
font-family: 仿宋;
@ -966,6 +739,7 @@ export default {
margin: 0;
padding: 0;
}
.el-textarea__inner {
caret-color: #000 !important;
margin-bottom: 20px;
@ -984,12 +758,14 @@ export default {
.file-box {
width: 95%;
margin: 0 auto;
.file-title {
font-size: 40px;
color: red;
font-family: AlibabaPuHuiTi-Medium, AlibabaPuHuiTi;
font-weight: 600;
}
.file-top {
border-bottom: 3px solid red;
display: flex;
@ -999,11 +775,13 @@ export default {
font-family: 仿宋;
color: rgb(0, 0, 0);
font-weight: 400 !important;
.file-top-fromDep {
display: flex;
align-items: center;
width: 50%;
}
.file-top-createTime {
display: flex;
align-items: center;
@ -1011,10 +789,12 @@ export default {
justify-content: end;
}
}
.file-content {
.file-content-title .el-input {
width: 100% !important;
}
::v-deep .file-content-title .el-input__inner {
width: 100% !important;
font-family: AlibabaPuHuiTi-Medium, AlibabaPuHuiTi;
@ -1026,9 +806,11 @@ export default {
line-height: 34px;
height: 34px;
}
::v-deep .file-content-toDept .el-input__inner {
width: 160px;
}
.file-content-toDept {
font-size: 1.14583vw;
font-family: 仿宋;
@ -1039,6 +821,7 @@ export default {
text-align: left;
padding: 0 15px;
}
.file-content-text {
margin-bottom: 20px;
font-size: 1.14583vw;
@ -1052,6 +835,7 @@ export default {
border-image: initial;
}
}
.file-footer {
border-top: 3px solid red;
display: flex;
@ -1060,18 +844,22 @@ export default {
font-family: 仿宋;
color: rgb(0, 0, 0);
font-weight: 400 !important;
.file-createName {
display: flex;
align-items: center;
text-align: left;
}
.file-phoneNumber {
}
.file-issuedr {
}
.file-phoneNumber {}
.file-issuedr {}
}
}
}
.linespace{
height: 46px;
}
.footer {
// display: flex;
// max-width: 40%;
@ -1080,10 +868,14 @@ export default {
// margin-top: 30px;
// justify-content: space-around;
display: flex;
position: absolute;
right: 10px;
bottom: 0px;
justify-content: end;
gap: 15px;
margin-top: 20px;
margin-right: 20px;
div {
// width: 120px;
// height: 30px;
@ -1091,6 +883,7 @@ export default {
margin-left: 20px;
}
}
::v-deep .el-tabs__content {
overflow: auto;
position: relative;
@ -1100,17 +893,20 @@ export default {
color: #c0c4cc !important;
cursor: default;
}
.docx-wrapper {
background: #fff;
padding: 30px;
display: flex;
flex-flow: column;
align-items: center;
> section.docx {
>section.docx {
background: white;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
margin-bottom: 30px;
}
.docx p,
p.docx_1 span {
font-family: var(--docx-minorHAnsi-font);
@ -1118,6 +914,7 @@ export default {
min-height: 11pt;
font-size: 11pt;
}
button {
cursor: pointer;
width: 100px;

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DisposalProcess/index.vue

@ -242,8 +242,6 @@ export default {
this.getImportantStatus();
await this.disposalRecords(this.eventId);
//
},
},
methods: {

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/ReleaseInformation/index.vue

@ -157,7 +157,7 @@ export default {
.then((result) => {
if (result.code != 200) return this.$message.error(result?.msg);
this.$message.success("提交成功");
this.modelVisible = false;
this.reload();
})
.catch(() => {
this.$message.error("提交失败");

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/index.vue

@ -83,7 +83,7 @@ export default {
method: "GET",
})
.then((result) => {
if (result.code != 200) return;
if (result.code != 200) return;
this.provideData.detail = result.data;
console.log("#############", this.provideData.detail);
if (

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/data.js

@ -127,7 +127,7 @@ export const _formList = [
},
{
label: "事件描述:",
key: "remark",
key: "description",
type: "input",
isAlone: true,
gridColumn: 3,

4
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/index.vue

@ -123,7 +123,6 @@ export default {
get() {
if (this.visible) {
this.getProcess();
console.log(this.activeName,'--------')
}
return this.visible;
},
@ -143,9 +142,6 @@ export default {
let directionFlg = true;
getProcessList(this.formData.id).then((rows) => {
console.log('rows', rows)
// if (result.code != 200) return Message.error(result?.msg);
// const rows = result.rows;
this.timeLine1List = [];
this.timeLine2List = [];

28
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/FormEvent/PresetFormItems.js

@ -18,7 +18,7 @@ export const source = {
},
{
key: "2",
label: "交转接",
label: "交转接",
},
{
key: "3",
@ -39,7 +39,7 @@ export const source = {
{
key: "7",
label: "其他",
},
}
],
},
};
@ -295,6 +295,30 @@ export const eventSources = {
key: "7",
label: "其他",
},
{
key: "8",
label: "雷达识别",
},
{
key: "9",
label: "锥桶",
},
{
key: "10",
label: "护栏碰撞",
},
{
key: "11",
label: "扫码报警",
},
{
key: "12",
label: "非机预警",
},
{
key: "13",
label: "气象检测器",
},
],
},
};

4
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/index.vue

@ -204,6 +204,7 @@ export default {
params: this.searchData,
}).then((result) => {
if (result.code != 200) return Message.error(result?.msg);
result.rows.forEach(it => {
it.stringDirection = gzDirectionMapping[it.direction] || it.direction;
it.stringEventType = it.stringEventType + (it.eventSubclass ? `(${it.eventSubclassName})` : '');
@ -217,7 +218,7 @@ export default {
}
})
console.log(result.rows)
console.log("id", result.rows);
this.data = result.rows;
this.total = result.total;
});
@ -280,7 +281,6 @@ export default {
this.isShowAddNew = false;
},
firstBtnClick(id) {////
console.log("id", id);
if (this.activeName == '-1') {
request({
url: `/perceivedEvents/warning/getWarningById`,//

3
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/auditAnalytics/StatsDialogVisible/index.vue

@ -380,7 +380,7 @@ export default {
this.searchFormList[2].options.options = dataList;
this.facilityIds = res[0].value.data.map((item) => item.id);
this.searchFormList[2].default = dataList.map((item) => item.key);
console.log(56, this.searchFormList[2].default);
let currentMonth = moment().format("YYYY-MM");
let currentDate = moment().format("YYYY-MM-DD");
this.queryParams = {
@ -397,7 +397,6 @@ export default {
// this.getSelectTollStation(data);
// },
handleSearch(data, value) {
console.log(888, data, value);
if (value == "reset") {
data = this.queryParams;
}

847
ruoyi-ui/src/views/JiHeExpressway/pages/datav/roadNet/index.vue

@ -1,195 +1,198 @@
<template>
<div class="roadNet">
<div class="summary">
<div class="summaryUnit" v-for="item in summary" :style="{'flex-basis' : item.width + 'px'}">
<div class="info info_01 keep-ratio" origin="left">
<p v-if="item.dataAll">
<span class="em">{{ item.dataAll.title }}:</span>
<em class="blue">{{ item.dataAll.value }}<template v-if="item.dataAll.total">/{{ item.dataAll.total }}</template></em>
<i v-if="item.dataAll.unit">{{ item.dataAll.unit }}</i>
</p>
</div>
<div class="info info_02 keep-ratio" origin="left">
<p v-if="item.dataGreen"><span>{{ item.dataGreen.title }}:</span><em class="green">{{ item.dataGreen.value }}</em><i v-if="item.dataGreen.unit">{{ item.dataGreen.unit }}</i></p>
<p v-if="item.dataRed"><span>{{ item.dataRed.title }}:</span><em class="red">{{ item.dataRed.value }}</em><i v-if="item.dataRed.unit">{{ item.dataRed.unit }}</i></p>
<div class="roadNet">
<div class="summary">
<div class="summaryUnit" v-for="item in summary" :style="{ 'flex-basis': item.width + 'px' }">
<div class="info info_01 keep-ratio" origin="left">
<p v-if="item.dataAll">
<span class="em">{{ item.dataAll.title }}:</span>
<em class="blue">{{ item.dataAll.value }}<template v-if="item.dataAll.total">/{{
item.dataAll.total }}</template></em>
<i v-if="item.dataAll.unit">{{ item.dataAll.unit }}</i>
</p>
</div>
<div class="info info_02 keep-ratio" origin="left">
<p v-if="item.dataGreen"><span>{{ item.dataGreen.title }}:</span><em class="green">{{
item.dataGreen.value }}</em><i v-if="item.dataGreen.unit">{{ item.dataGreen.unit }}</i></p>
<p v-if="item.dataRed"><span>{{ item.dataRed.title }}:</span><em class="red">{{ item.dataRed.value
}}</em><i v-if="item.dataRed.unit">{{ item.dataRed.unit }}</i></p>
</div>
</div>
</div>
</div>
<div class="flow">
<div class="part sensor">
<sensors class="graph"></sensors>
</div>
<div class="part manage">
<img class="arrow arrow_01" src="./img/arrowRight.svg" alt="">
<img class="arrow arrow_02" src="./img/arrowRight.svg" alt="">
<img class="arrow arrow_03" src="./img/arrowRight.svg" alt="">
<div class="manageTotal">
<h4 class="keep-ratio">济菏运管中心</h4>
<p>内存<em>20.79</em>/62.36GB CPU<em>1.00</em>/12<br>存储<em>25.68</em>/2328.93GB</p>
<div class="flow">
<div class="part sensor">
<sensors class="graph"></sensors>
</div>
<ul class="manageDetail">
<li v-for="item in manage">
<div class="part manage">
<img class="arrow arrow_01" src="./img/arrowRight.svg" alt="">
<img class="arrow arrow_02" src="./img/arrowRight.svg" alt="">
<img class="arrow arrow_03" src="./img/arrowRight.svg" alt="">
<div class="manageTotal">
<h4 class="keep-ratio">济菏运管中心</h4>
<p>内存<em>20.79</em>/62.36GB CPU<em>1.00</em>/12<br>存储<em>25.68</em>/2328.93GB</p>
</div>
<ul class="manageDetail">
<li v-for="item in manage">
<div class="con">
<h4 class="keep-ratio">{{ item.title }}</h4>
<p class="keep-ratio"><em>{{ item.value }}</em><i></i></p>
</div>
</li>
</ul>
</div>
<div class="part partCalc">
<img class="arrow" src="./img/arrowRight.svg" alt="">
<div class="calcUnit small">
<h4 class="keep-ratio">实时计算</h4>
<div class="con">
<h4 class="keep-ratio">{{ item.title }}</h4>
<p class="keep-ratio"><em>{{ item.value }}</em><i></i></p>
<p class="total keep-ratio">25,568,876</p>
<ul>
<li class="keep-ratio">节点</li>
<li class="keep-ratio">5/5</li>
<li class="keep-ratio">实时清洗</li>
<li class="keep-ratio">实时加工</li>
<li class="keep-ratio">实时汇报</li>
<li class="keep-ratio">实时分析</li>
</ul>
</div>
</li>
</ul>
</div>
<div class="part partCalc">
<img class="arrow" src="./img/arrowRight.svg" alt="">
<div class="calcUnit small">
<h4 class="keep-ratio">实时计算</h4>
<div class="con">
<p class="total keep-ratio">25,568,876</p>
<ul>
<li class="keep-ratio">节点</li>
<li class="keep-ratio">5/5</li>
<li class="keep-ratio">实时清洗</li>
<li class="keep-ratio">实时加工</li>
<li class="keep-ratio">实时汇报</li>
<li class="keep-ratio">实时分析</li>
</ul>
</div>
</div>
<div class="calcUnit big">
<h4>AI模型</h4>
<div class="con">
<p class="total">33,210</p>
<ul>
<li class="keep-ratio">实时交通态势感知模型</li>
<li class="keep-ratio">交通预警模型</li>
<li class="keep-ratio">在途车辆分析模型</li>
<li class="keep-ratio">应急指挥疏导模型</li>
<li class="keep-ratio">智能行车诱导模型</li>
<li class="keep-ratio">短临预报算法模型</li>
<li class="keep-ratio">交通综合指数模型</li>
<li class="keep-ratio">路网分析模型</li>
</ul>
<div class="calcUnit big">
<h4>AI模型</h4>
<div class="con">
<p class="total">33,210</p>
<ul>
<li class="keep-ratio">实时交通态势感知模型</li>
<li class="keep-ratio">交通预警模型</li>
<li class="keep-ratio">在途车辆分析模型</li>
<li class="keep-ratio">应急指挥疏导模型</li>
<li class="keep-ratio">智能行车诱导模型</li>
<li class="keep-ratio">短临预报算法模型</li>
<li class="keep-ratio">交通综合指数模型</li>
<li class="keep-ratio">路网分析模型</li>
</ul>
</div>
</div>
</div>
<div class="calcUnit small">
<h4>离线计算</h4>
<div class="con">
<p class="total">2,017</p>
<ul>
<li class="keep-ratio">节点</li>
<li class="keep-ratio">6/6</li>
<li class="keep-ratio">实时清洗</li>
<li class="keep-ratio">批量加工</li>
<li class="keep-ratio">数据汇聚</li>
<li class="keep-ratio">数据分析</li>
</ul>
<div class="calcUnit small">
<h4>离线计算</h4>
<div class="con">
<p class="total">2,017</p>
<ul>
<li class="keep-ratio">节点</li>
<li class="keep-ratio">6/6</li>
<li class="keep-ratio">实时清洗</li>
<li class="keep-ratio">批量加工</li>
<li class="keep-ratio">数据汇聚</li>
<li class="keep-ratio">数据分析</li>
</ul>
</div>
</div>
</div>
</div>
<div class="partRight">
<div class="part share">
<img class="arrow" src="./img/arrowRight.svg" alt="">
<div class="shareCon">
<img src="./img/shareCenter.svg" alt="" class="center keep-ratio">
<div class="item" v-for="item,index in dataShare" :style="positionArr[index]">
<img src="./img/shareItem.svg" alt="">
<em>{{ item.value }}</em>
<p class="title">
<el-tooltip class="title" effect="dark" :content="item.title" placement="top-start">
<span>
{{ item.title }}
</span>
</el-tooltip>
</p>
<div class="partRight">
<div class="part share">
<img class="arrow" src="./img/arrowRight.svg" alt="">
<div class="shareCon">
<img src="./img/shareCenter.svg" alt="" class="center keep-ratio">
<div class="item" v-for="item, index in dataShare" :style="positionArr[index]">
<img src="./img/shareItem.svg" alt="">
<em>{{ item.value }}</em>
<p class="title">
<el-tooltip class="title" effect="dark" :content="item.title" placement="top-start">
<span>
{{ item.title }}
</span>
</el-tooltip>
</p>
</div>
</div>
</div>
</div>
<div class="part apply">
<div class="applyUnit" v-for="item in apply" :key="item.title">
<div class="con">
<img src="./img/applyitem.svg" alt="">
<div class="part apply">
<div class="applyUnit" v-for="item in apply" :key="item.title">
<div class="con">
<img src="./img/applyitem.svg" alt="">
<h4 class="keep-ratio">{{ item.title }}</h4>
<p class="keep-ratio">调用<em>{{ item.value }}</em></p>
<p class="keep-ratio">调用<em>{{ item.value }}</em></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import bgBtn from "@screen/components/Decorations/bg-btn.vue"
import sensors from "./sensors.vue"
import request from '@/utils/request'
export default {
name: 'dataVRoadNet',
data(){
data() {
return {
summary:[],
manage:[],
apply:[],
positionArr:[
{top:"-60px", right:"50%", transform: "translate(-20px, -50%)", opacity:0 },
{top:"-60px", left:"50%", transform: "translate(20px, -50%)", opacity: 0 },
{top:"0%", right:"50%", transform: "translate(-20px, 0)" },
{top:"0%", left:"50%", transform: "translate(20px, 0)" },
{top:"33.33%", right:"50%", transform: "translate(-70px, -50%)" },
{top:"33.33%", left:"50%", transform: "translate(70px, -50%)" },
{top:"62%", right:"50%", transform: "translate(-70px, -50%)" },
{top:"62%", left:"50%", transform: "translate(70px, -50%)" },
{bottom:"0%", right:"50%", transform: "translate(-20px, 0)" },
{bottom:"0%", left:"50%", transform: "translate(20px, 0)" },
{top:"calc(100% + 60px)", right:"50%", transform: "translate(-20px, -50%)", opacity: 0 },
{top:"calc(100% + 60px)", left:"50%", transform: "translate(20px, -50%)", opacity: 0 }
summary: [],
manage: [],
apply: [],
positionArr: [
{ top: "-60px", right: "50%", transform: "translate(-20px, -50%)", opacity: 0 },
{ top: "-60px", left: "50%", transform: "translate(20px, -50%)", opacity: 0 },
{ top: "0%", right: "50%", transform: "translate(-20px, 0)" },
{ top: "0%", left: "50%", transform: "translate(20px, 0)" },
{ top: "33.33%", right: "50%", transform: "translate(-70px, -50%)" },
{ top: "33.33%", left: "50%", transform: "translate(70px, -50%)" },
{ top: "62%", right: "50%", transform: "translate(-70px, -50%)" },
{ top: "62%", left: "50%", transform: "translate(70px, -50%)" },
{ bottom: "0%", right: "50%", transform: "translate(-20px, 0)" },
{ bottom: "0%", left: "50%", transform: "translate(20px, 0)" },
{ top: "calc(100% + 60px)", right: "50%", transform: "translate(-20px, -50%)", opacity: 0 },
{ top: "calc(100% + 60px)", left: "50%", transform: "translate(20px, -50%)", opacity: 0 }
],
dataShare:[]
dataShare: []
}
},
components: {
bgBtn, sensors
},
mounted(){
mounted() {
this.initData();
this.mockData();
},
methods: {
mockData(){
const mock = ()=>{
let num1 = this.summary[1].dataAll.value + Math.floor(Math.random()*200);
mockData() {
const mock = () => {
let num1 = this.summary[1].dataAll.value + Math.floor(Math.random() * 200);
this.summary[1].dataAll.value = num1;
this.summary[1].dataRed.value = (num1/this.summary[1].dataGreen.value*100).toFixed(2);
this.summary[1].dataRed.value = (num1 / this.summary[1].dataGreen.value * 100).toFixed(2);
let num2 = +this.summary[2].dataAll.value + Math.random()*0.01;
let num2 = +this.summary[2].dataAll.value + Math.random() * 0.01;
this.summary[2].dataAll.value = num2.toFixed(2);
this.summary[2].dataRed.value = (num2/this.summary[2].dataGreen.value*100).toFixed(2);
this.summary[2].dataRed.value = (num2 / this.summary[2].dataGreen.value * 100).toFixed(2);
let num3 = this.summary[3].dataAll.value + Math.floor(Math.random()*20);
let num3 = this.summary[3].dataAll.value + Math.floor(Math.random() * 20);
this.summary[3].dataAll.value = num3;
this.summary[3].dataRed.value = (num3/this.summary[3].dataGreen.value*100).toFixed(2);
this.summary[3].dataRed.value = (num3 / this.summary[3].dataGreen.value * 100).toFixed(2);
let num4 = 1154 + Math.random()*120;
let num4 = 1154 + Math.random() * 120;
this.summary[4].dataAll.value = num4.toFixed(2);
this.summary[4].dataGreen.value = (num4/this.summary[4].dataAll.total*100).toFixed(2);
this.summary[4].dataGreen.value = (num4 / this.summary[4].dataAll.total * 100).toFixed(2);
let num5 = 81 + Math.random()*20;
let num5 = 81 + Math.random() * 20;
this.summary[5].dataAll.value = num5.toFixed(2);
this.summary[5].dataGreen.value = (num5/this.summary[5].dataAll.total*100).toFixed(2);
this.summary[5].dataGreen.value = (num5 / this.summary[5].dataAll.total * 100).toFixed(2);
}
mock();
let interval = setInterval(()=>{
let interval = setInterval(() => {
mock();
}, 1500);
this.$once("hook:beforeDestroy", () => this.clearInterval(interval));
},
initData() {
async initData() {
this.summary = [
{
width:287,
dataAll:{ title:"接入设备总数", value:3015, unit:"套"},
dataGreen:{ title:"设备类型数", value:55, unit:"类"},
dataRed:{ title:"故障数", value:207, unit:"套"}
width: 287,
dataAll: { title: "接入设备总数", value: 3015, unit: "套" },
dataGreen: { title: "设备类型数", value: 55, unit: "类" },
dataRed: { title: "故障数", value: 207, unit: "套" }
},
{
width:376,
width: 376,
dataAll: { title: "接入数据总数", value: 1251446, unit: "条" },
dataGreen: { title: "昨日接入数", value: 20624577, unit: "条" },
dataRed: { title: "环比", value: 0.04, unit: "%" }
@ -207,191 +210,527 @@ export default {
dataRed: { title: "环比", value: 0.04, unit: "%" }
},
{
width:226,
dataAll: { title: "内存", value: 0, total:1800, unit: "G" },
width: 226,
dataAll: { title: "内存", value: 0, total: 1800, unit: "G" },
dataGreen: { title: "使用率", value: 70.73, unit: "%" }
},
{
width: 226,
dataAll: { title: "CPU", value: 0, total:126, unit: "" },
dataAll: { title: "CPU", value: 0, total: 126, unit: "" },
dataGreen: { title: "使用率", value: 56.35, unit: "%" }
}
];
this.manage = [
{ title : "ETC门架", value : 25800 },
{ title : "雷达", value : 25800 },
{ title : "一类交调站", value : 25800 },
{ title : "气象监测", value : 25800 },
{ title : "事件预警", value : 25800 },
{ title : "基础数据", value : 25800 },
{ title : "摄像机", value : 25800 },
{ title : "智能设备箱", value : 25800 }
{ title: "ETC门架", value: 25800 },
{ title: "雷达", value: 25800 },
{ title: "一类交调站", value: 25800 },
{ title: "气象监测", value: 25800 },
{ title: "事件预警", value: 25800 },
{ title: "基础数据", value: 25800 },
{ title: "摄像机", value: 25800 },
{ title: "智能设备箱", value: 25800 }
];
this.dataShare = [
//使
const _dataShare = [
{ title: '', value: '' },
{ title: '', value: '' },
{ title: "根据收费站国标查询出口流水车型信息", value: 26805 },
{ title: "济菏当天的交易牌识数据量", value: 26805 },
{ title: "查询出入口信息", value: 26805 },
{ title: "收费站出口流水数据统计", value: 26805 },
{ title: "当天门架牌识流水数据统计", value: 26805 },
{ title: "收费站入口流水数据统计 ", value: 26805 },
{ title: "数据共享中心内存使用情况", value: 26805 },
{ title: "设备接入总数", value: 26805 },
{ title: "非机预警数据使用情况", value: 26805 },
{ title: "根据Passid和时间查询出口流水是否有记录", value: 26805 },
{ title: "基础数据统计", value: 26805 },
{ title: "非机预警数据使用情况", value: '-' },
{ title: "门架流水数据统计", value: 26805 },
{ title: "数据共享中心CPU使用情况", value: 26805 },
{ title: '', value: '' },
{ title: '', value: '' },
];
const warningNumber = await request({ url: 'business/warning/countNumber', method: 'get'});
if (warningNumber.code != 200) return;
_dataShare[7].value = warningNumber.data;
const odsExpNumber = await request({ url: 'business/odsTollExpassData/countNumber', method: 'get'});
if (odsExpNumber.code != 200) return;
_dataShare[2].value = odsExpNumber.data;
const odsEnpNumber = await request({ url: 'business/odsTollEnpassData/countNumber', method: 'get'});
if (odsEnpNumber.code != 200) return;
_dataShare[4].value = odsEnpNumber.data;
const odsEtcNumber = await request({ url: 'business/odsTollEtctuData/countNumber', method: 'get'});
if (odsEtcNumber.code != 200) return;
_dataShare[8].value = odsEtcNumber.data;
const odsViuNumber = await request({ url: 'business/odsTollViuData/countNumber', method: 'get'});
if (odsViuNumber.code != 200) return;
_dataShare[3].value = odsViuNumber.data;
const basicNumber = await request({ url: 'business/moduleCall/basicDataNumber', method: 'get'});
if (basicNumber.code != 200) return;
_dataShare[6].value = basicNumber.data;
this.dataShare = _dataShare;
//
//
request({
url: 'business/dcOperLog/count/deviceType',
url: 'business/moduleCall/countNumber',
method: 'get'
}).then(res=>{
console.log(res,'----------')
}).then(result => {
if (result.code != 200) return;
const _apply = [];
result.data.forEach(e => {
_apply.push({ title: e.name, value: e.quantity })
});
this.apply = _apply;
// this.apply = [
// { title : "",value : 45},
// { title : "",value : 1},
// { title : "",value : 2137},
// { title : "",value : 455},
// { title : "",value : 73700},
// { title : "",value : 1348},
// { title : "",value : 4545},
// { title : "",value : 626}
// ];
})
this.apply = [
{ title : "设备资产",value : 45},
{ title : "智能行车诱导系统",value : 1},
{ title : "桥梁检测",value : 2137},
{ title : "情报板发布",value : 455},
{ title : "交通态势可视化",value : 73700},
{ title : "交通态势可视化监控",value : 1348},
{ title : "交通事件信息查询",value : 4545},
{ title : "设备运行监测",value : 626}
];
}
}
}
</script>
<style lang='scss' scoped>
h4, p, ul,li{ margin: 0; padding:0;}
.roadNet{ padding: 20px; width:100%; height:100%; display: flex; flex-direction: column;
.summary{
display: flex; justify-content: space-between; height: 87px; align-items: stretch;
.summaryUnit{ border-left: 2px solid #00D1FF; background: linear-gradient( -90deg, rgba(6,66,88,0) 0%, #064258 93%); box-sizing: border-box; padding: 0 20px; display: flex; flex-direction: column; justify-content: center; align-items: stretch;
.info{ display: flex; flex-direction: row; font-size: 14px; height: 32px; align-items: center;
p{ margin-right: 16px;
&:last-child{
margin-right: 0;
h4,
p,
ul,
li {
margin: 0;
padding: 0;
}
.roadNet {
padding: 20px;
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
.summary {
display: flex;
justify-content: space-between;
height: 87px;
align-items: stretch;
.summaryUnit {
border-left: 2px solid #00D1FF;
background: linear-gradient(-90deg, rgba(6, 66, 88, 0) 0%, #064258 93%);
box-sizing: border-box;
padding: 0 20px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: stretch;
.info {
display: flex;
flex-direction: row;
font-size: 14px;
height: 32px;
align-items: center;
p {
margin-right: 16px;
&:last-child {
margin-right: 0;
}
}
span {
font-size: 14px;
&.em {
font-size: 16px;
font-family: PangMenZhengDao;
letter-spacing: 1px;
}
}
span{ font-size: 14px;
&.em{
font-size: 16px; font-family: PangMenZhengDao; letter-spacing: 1px;
em {
font-size: 19px;
font-style: normal;
font-family: PangMenZhengDao;
margin: 0 2px;
&.blue {
color: #00D1FF;
}
&.green {
color: #00EBC1;
}
&.red {
color: #FF5F5F;
}
}
em{ font-size: 19px; font-style: normal; font-family:PangMenZhengDao; margin: 0 2px;
&.blue{ color: #00D1FF;}
&.green{ color: #00EBC1;}
&.red{ color: #FF5F5F;}
i {
font-style: normal;
font-size: 11px;
opacity: 0.5;
}
i{ font-style: normal; font-size: 11px; opacity: 0.5;}
}
}
}
.flow{
flex:1; display: flex; justify-content: space-between; align-items: stretch; margin-top: 30px;
.part{ position: relative; background-image: linear-gradient( 180deg, #1FCAF100 0%, #1FCAFF32 100%); border: 1px dashed #00D1FF;
.arrow{ position: absolute; width: 40px; height: 36px;}
.flow {
flex: 1;
display: flex;
justify-content: space-between;
align-items: stretch;
margin-top: 30px;
.part {
position: relative;
background-image: linear-gradient(180deg, #1FCAF100 0%, #1FCAFF32 100%);
border: 1px dashed #00D1FF;
.arrow {
position: absolute;
width: 40px;
height: 36px;
}
}
}
.sensor{
flex-basis: 260px; position: relative;
&.part{ border: none; background-image: none;}
.graph{
position: absolute; height: 100%; width: calc(100% + 100px); z-index: 1000;
.sensor {
flex-basis: 260px;
position: relative;
&.part {
border: none;
background-image: none;
}
.graph {
position: absolute;
height: 100%;
width: calc(100% + 100px);
z-index: 1000;
}
}
.manage{
flex-basis: 430px; display: flex; flex-direction: column; align-items: center;
.arrow_01{right: -40px; top:22%; }
.arrow_02{right: -40px; top:47% }
.arrow_03{right: -40px; top:72%;}
.manageTotal{
width:366px; height:112px; background: url(./img/manageTotal.svg) no-repeat center center; text-align: center; margin-top: 30px;
h4{ color: #FFD15C; line-height: 50px; margin-bottom: 2px;}
p{ font-family: PangMenZhengDao;
em{ color: #00D1FF; font-style: normal;}
.manage {
flex-basis: 430px;
display: flex;
flex-direction: column;
align-items: center;
.arrow_01 {
right: -40px;
top: 22%;
}
.arrow_02 {
right: -40px;
top: 47%
}
.arrow_03 {
right: -40px;
top: 72%;
}
.manageTotal {
width: 366px;
height: 112px;
background: url(./img/manageTotal.svg) no-repeat center center;
text-align: center;
margin-top: 30px;
h4 {
color: #FFD15C;
line-height: 50px;
margin-bottom: 2px;
}
p {
font-family: PangMenZhengDao;
em {
color: #00D1FF;
font-style: normal;
}
}
}
.manageDetail{
display: flex; flex-wrap: wrap; flex: 1; align-content: stretch; padding: 0; margin-top: 30px;
li{
flex-basis: 50%; list-style-type: none; display: flex; flex-direction: column; align-items: center; justify-content: center;
.con{ background: url(./img/sourceItem.svg) no-repeat; width: 166px; height: 136px; text-align: center;
h4{ font-size: 14px; line-height: 30px; margin: 0;}
p{
em{ font-size: 16px; color: #00D1FF; font-style: normal; font-family: PangMenZhengDao; margin: 0 3px;}
i{ font-size: 10px; opacity: 0.5; font-style: normal;}
.manageDetail {
display: flex;
flex-wrap: wrap;
flex: 1;
align-content: stretch;
padding: 0;
margin-top: 30px;
li {
flex-basis: 50%;
list-style-type: none;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.con {
background: url(./img/sourceItem.svg) no-repeat;
width: 166px;
height: 136px;
text-align: center;
h4 {
font-size: 14px;
line-height: 30px;
margin: 0;
}
p {
em {
font-size: 16px;
color: #00D1FF;
font-style: normal;
font-family: PangMenZhengDao;
margin: 0 3px;
}
i {
font-size: 10px;
opacity: 0.5;
font-style: normal;
}
}
}
}
}
}
.partCalc{
flex-basis: 256px; display: flex; flex-direction: column; justify-content: space-around; align-items: center; padding: 20px 0;
.arrow{right: -40px; top:20%}
.calcUnit{ font-size: 15px; text-align: center;
h4{font-family: PangMenZhengDao;}
.con{ background: url(./img/process.svg); background-size: 100% 100%;
p{ font-family: PangMenZhengDao; color: #FFD15C; }
ul{ list-style-type: none; margin-top: 6px;
li{ line-height: 24px; font-size: 14px; font-weight: 600;}
.partCalc {
flex-basis: 256px;
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: center;
padding: 20px 0;
.arrow {
right: -40px;
top: 20%
}
.calcUnit {
font-size: 15px;
text-align: center;
h4 {
font-family: PangMenZhengDao;
}
.con {
background: url(./img/process.svg);
background-size: 100% 100%;
p {
font-family: PangMenZhengDao;
color: #FFD15C;
}
ul {
list-style-type: none;
margin-top: 6px;
li {
line-height: 24px;
font-size: 14px;
font-weight: 600;
}
}
}
}
.calcUnit.small{ width: 172px; height: 215px;
h4{ height: 22px; line-height: 24px;}
.con{ height: 193px;
p{ line-height: 22px;}
.calcUnit.small {
width: 172px;
height: 215px;
h4 {
height: 22px;
line-height: 24px;
}
.con {
height: 193px;
p {
line-height: 22px;
}
}
}
.calcUnit.big{ width: 225px; height: 272px;
.con{ height: 250px;
p{ height: 30px; line-height: 30px; }
.calcUnit.big {
width: 225px;
height: 272px;
.con {
height: 250px;
p {
height: 30px;
line-height: 30px;
}
}
}
}
.partRight{
flex-basis: 816px; display: flex; flex-direction: column; justify-content: space-between;
.partRight {
flex-basis: 816px;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.share{
flex:1.2; margin-bottom: 46px; display: flex; justify-content: center; align-items: center;
.arrow{ transform: rotateZ(90deg); left: 48%; top:calc(100% + 8px);}
.shareCon{
background-image: url(./img/ShareAll.svg); background-position: center center; background-size: contain; background-repeat: no-repeat; width: 756px; height: 245px; display: flex; align-items: center; justify-content: center; position: relative;
.center{ width: 130px; height: 130px;}
.item{ position: absolute; height: 38px; line-height: 38px; display: flex; min-width: 240px; cursor: default;
.share {
flex: 1.2;
margin-bottom: 46px;
display: flex;
justify-content: center;
align-items: center;
.arrow {
transform: rotateZ(90deg);
left: 48%;
top: calc(100% + 8px);
}
.shareCon {
background-image: url(./img/ShareAll.svg);
background-position: center center;
background-size: contain;
background-repeat: no-repeat;
width: 756px;
height: 245px;
display: flex;
align-items: center;
justify-content: center;
position: relative;
.center {
width: 130px;
height: 130px;
}
.item {
position: absolute;
height: 38px;
line-height: 38px;
display: flex;
min-width: 240px;
cursor: default;
//
&:nth-child(odd){ padding-left: 10px; flex-direction: row-reverse; justify-content: flex-end;
img{ transform: scaleX(100%); left: 0; top:0; }
&:nth-child(odd) {
padding-left: 10px;
flex-direction: row-reverse;
justify-content: flex-end;
img {
transform: scaleX(100%);
left: 0;
top: 0;
}
}
//
&:nth-child(even){ padding-right: 10px; justify-content: flex-end;
img{ transform: scaleX(-100%); right: 0; top:0; }
&:nth-child(even) {
padding-right: 10px;
justify-content: flex-end;
img {
transform: scaleX(-100%);
right: 0;
top: 0;
}
}
img {
position: absolute;
height: 100%;
z-index: -10;
}
em {
color: #00D1FF;
font-family: PangMenZhengDao;
font-size: 16px;
font-style: normal;
margin: 0 4px;
}
img{ position: absolute; height: 100%; z-index: -10;}
em{ color: #00D1FF; font-family: PangMenZhengDao; font-size: 16px; font-style: normal; margin: 0 4px;}
.title{ font-size: 14px; max-width: 200px; overflow: hidden; text-overflow: ellipsis; word-break: keep-all;
span:hover{ color: #00D1FF;}
.title {
font-size: 14px;
max-width: 200px;
overflow: hidden;
text-overflow: ellipsis;
word-break: keep-all;
span:hover {
color: #00D1FF;
}
}
}
}
}
.apply{
flex: 1; display: flex; flex-wrap: wrap; padding: 40px 45px; align-content: stretch;
.applyUnit{ flex-basis: 25%; display: flex; flex-direction: column; justify-content: center; align-items: center;
.con{ width: 140px; text-align: center; align-items: center; justify-content: center;
h4, p{ font-family: PangMenZhengDao; font-size: 15px; line-height: 22px; margin: 0; padding:0;
.apply {
flex: 1;
display: flex;
flex-wrap: wrap;
padding: 40px 45px;
align-content: stretch;
.applyUnit {
flex-basis: 25%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
.con {
width: 140px;
text-align: center;
align-items: center;
justify-content: center;
h4,
p {
font-family: PangMenZhengDao;
font-size: 15px;
line-height: 22px;
margin: 0;
padding: 0;
}
h4,
p em {
color: #00D1FF;
font-style: normal;
margin: 0 3px;
}
h4, p em{ color: #00D1FF; font-style: normal; margin: 0 3px; }
}
}
}
}
</style>
</style>

71
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/manage/index.vue

@ -91,7 +91,28 @@
:formList="formList"
:value="formData"
/>
<el-upload
class="upload-file"
drag
:file-list="fileList"
:show-file-list="false"
:on-success="handleUploadSuccess"
:on-error="handleUploadError"
accept=".jpg,.jpeg,.png"
:headers="headers"
:action="uploadImgUrl"
>
<el-image
v-if="imageUrl !== ''"
style="width: 100%; height: 100%"
:src="urlRoot+imageUrl"
fit="fit"></el-image>
<template v-else>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip" slot="tip">只能上传jpg/png文件且不超过500kb</div>
</template>
</el-upload>
<template #footer>
<Button
style="background-color: rgba(0, 179, 204, 0.3)"
@ -114,7 +135,7 @@ import BoardRecordPreview from '@screen/components/infoBoard/BoardRecordPreview.
import {DirectionTypes,deviceTypeOptions,directionOptions} from '@screen/utils/enum.js';
import InputSearch from "@screen/components/InputSearch/index.vue";
import { searchFormList } from "./data";
import moment from "moment";
import { getToken } from "@/utils/auth";
import { delay, exportFile, confirm } from "@screen/utils/common";
import { Message } from "element-ui";
import Button from "@screen/components/Buttons/Button.vue";
@ -144,6 +165,13 @@ export default {
pageNum: 1,
dcDeviceType: "2"
},
headers: {
Authorization: "Bearer " + getToken(),
},
uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", //
fileList: [],
fileType: ["bmp", "gif", "jpg", "jpeg", "png", "webp"],
imageUrl: "",
urlRoot: process.env.VUE_APP_BASE_API, //
//
modelVisible:false,
@ -284,6 +312,7 @@ export default {
type: "textarea",
autosize: true,
maxlength: 60,
style:{width: '50%'},
autosize: { minRows: 6, maxRows: 6 },
showWordLimit: true,
}
@ -295,6 +324,7 @@ export default {
options: {
type: "textarea",
autosize: true,
style:{width: '50%'},
maxlength: 60,
autosize: { minRows: 6, maxRows: 6 },
showWordLimit: true,
@ -312,6 +342,18 @@ export default {
this.getOptions();
},
methods: {
//
handleUploadSuccess(res, file) {
if(res.code !== 200){this.$message.error(res.msg); return;}
this.$message.success("上传成功");
this.imageUrl = res.fileName;
},
//
handleUploadError() {
this.$message.error("上传失败");
},
onRefreshForm(){
this.searchData.pageNum = 1;
this.$refs.searchComp.handleResetForm();
@ -344,6 +386,11 @@ export default {
/** 修改按钮操作 */
handleUpdate(row) {
this.formData = row;
if(row.deviceImg && row.deviceImg !== ''){
this.imageUrl = row.deviceImg;
} else {
this.imageUrl = '';
}
this.modelVisible = true;
},
/** 提交按钮 */
@ -353,6 +400,9 @@ export default {
if (this.formData) {
data.id = this.formData.id
}
if(this.imageUrl !== ''){
data.deviceImg = this.imageUrl;
}
request({
url: `/business/device`,
method: "PUT",
@ -389,10 +439,6 @@ export default {
pageSize: this.pageSize,
pageNum: this.currentPage,
};
// params = {
// pageSize: 1000000,
// pageNum: 1
// };
return params;
},
initData() {
@ -465,4 +511,17 @@ export default {
padding: 0 10px !important;
}
}
.upload-file{
position: absolute;
width: 120px;
height: 120px;
margin-left: 55%;
bottom: 210px;
z-index: 9999;
}
::v-deep .el-upload-dragger{
background-color: #104c66 !important;
border: 1px solid #359cbc !important;
}
</style>

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/left-bg-action.png → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/left-bg-action.png

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/left-bg.png → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/left-bg.png

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/switch0.png → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/switch0.png

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/switch1.png → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/switch1.png

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t01-1.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t01-1.svg

Before

Width:  |  Height:  |  Size: 574 B

After

Width:  |  Height:  |  Size: 574 B

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t01-2.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t01-2.svg

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t01-4.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t01-4.svg

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t01-5.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t01-5.svg

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t010.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t010.svg

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t011.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t011.svg

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t012.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t012.svg

Before

Width:  |  Height:  |  Size: 855 B

After

Width:  |  Height:  |  Size: 855 B

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t013.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t013.svg

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t014.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t014.svg

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t015.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t015.svg

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t02-1.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t02-1.svg

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t03.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t03.svg

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t05.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t05.svg

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t06.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t06.svg

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t07.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t07.svg

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t08.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t08.svg

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t11-1.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t11-1.svg

Before

Width:  |  Height:  |  Size: 574 B

After

Width:  |  Height:  |  Size: 574 B

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t11-2.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t11-2.svg

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t11-4.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t11-4.svg

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t11-5.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t11-5.svg

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t110.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t110.svg

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t111.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t111.svg

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t112.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t112.svg

Before

Width:  |  Height:  |  Size: 855 B

After

Width:  |  Height:  |  Size: 855 B

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t113.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t113.svg

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t114.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t114.svg

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t115.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t115.svg

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t12-1.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t12-1.svg

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t13.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t13.svg

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t15.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t15.svg

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t16.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t16.svg

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t17.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t17.svg

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/t18.svg → ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/img/t18.svg

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

133
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/index.vue

@ -30,14 +30,14 @@
<div class="content" v-if="selIndex === 0">
<div class="c c-border">
<div class="arrow-panel-line">
<div class="arrowdow"></div>
<div class="arrowdow"></div>
<div class="arrowdow arrowdowDown"></div>
<div class="arrowdow arrowdowDown"></div>
</div>
<div class="arrow-panel" style="margin-top: -5px">
<div class="arrow"></div>
<div class="arrow"></div>
<div class="arrow"></div>
<div class="arrow"></div>
<div class="arrow arrowleft"></div>
<div class="arrow arrowleft"></div>
<div class="arrow arrowleft"></div>
<div class="arrow arrowleft"></div>
</div>
<div v-for="(item, index) in topo" v-if="index < 5" class="switch">
<div
@ -55,8 +55,8 @@
:class="'arrowdown ' + (item.netWorkStatus ? '' : 'arrowr')"
style="margin-top: -35px"
></div>
<img v-if="item.netWorkStatus" src="./switch1.png" />
<img v-else src="./switch0.png" />
<img v-if="item.netWorkStatus" src="./img/switch1.png" />
<img v-else src="./img/switch0.png" />
<div :class="'c-desc ' + (item.netWorkStatus ? '' : 'c-descr')">
<div>桩号{{ item.stakeMark }}</div>
<div>IP{{ item.switchIp }}</div>
@ -69,9 +69,9 @@
<div class="arrow arrowrig"></div>
</div>
<div class="arrow-panel-line" style="margin-left: 100.1%">
<div class="arrowdow arrowtop"></div>
<div class="arrowdow arrowtop"></div>
<div class="arrow-panel-line" style="margin-left: 100.1%;justify-content: flex-end;">
<div class="arrowdow arrowdowUp"></div>
<div class="arrowdow arrowdowUp"></div>
</div>
</div>
<div class="c" style="margin-top: -5px">
@ -91,8 +91,8 @@
:class="'arrowdown ' + (item.netWorkStatus ? '' : 'arrowr')"
style="margin-top: -35px"
></div>
<img class="imgsw" v-if="item.netWorkStatus" src="./switch1.png" />
<img class="imgsw" v-else src="./switch0.png" />
<img class="imgsw" v-if="item.netWorkStatus" src="./img/switch1.png" />
<img class="imgsw" v-else src="./img/switch0.png" />
<div
:class="'c-name ' + (item.netWorkStatus ? '' : 'c-namer')"
style="padding: 0px 50px; margin-top: -5px; border: 0px"
@ -110,15 +110,16 @@
style="margin-bottom: 30px"
v-for="(item, index) of topo"
>
<div class="arrow-panel-line">
<div class="arrowdow"></div>
<div class="arrowdow"></div>
<div class="arrowdow arrowdowDown"></div>
<div class="arrowdow arrowdowDown"></div>
</div>
<div class="arrow-panel" style="margin-top: -5px">
<div class="arrow"></div>
<div class="arrow"></div>
<div class="arrow"></div>
<div class="arrow"></div>
<div class="arrow arrowleft"></div>
<div class="arrow arrowleft"></div>
<div class="arrow arrowleft"></div>
<div class="arrow arrowleft"></div>
</div>
<div class="cscorll">
<!-- width:' + item.length * 200 + 'px;' -->
@ -135,9 +136,9 @@
<img
class="imgsw"
v-if="itm.netWorkStatus"
src="./switch1.png"
src="./img/switch1.png"
/>
<img class="imgsw" v-else src="./switch0.png" />
<img class="imgsw" v-else src="./img/switch0.png" />
<el-tooltip
class="item"
effect="dark"
@ -172,7 +173,7 @@
>
<img
:src="
require(`./t${itm.netWorkStatus}${
require(`./img/t${itm.netWorkStatus}${
idv.childType || idv.deviceType
}.svg`)
"
@ -194,15 +195,15 @@
</div>
<div class="arrow-panel" style="margin-top: 308px">
<div class="arrow"></div>
<div class="arrow"></div>
<div class="arrow"></div>
<div class="arrow"></div>
<div class="arrow arrowrig"></div>
<div class="arrow arrowrig"></div>
<div class="arrow arrowrig"></div>
<div class="arrow arrowrig"></div>
</div>
<div class="arrow-panel-line" style="margin-left: 100.1%">
<div class="arrowdow"></div>
<div class="arrowdow"></div>
<div class="arrow-panel-line" style="margin-left: 100.1%;justify-content: flex-end;">
<div class="arrowdow arrowdowUp"></div>
<div class="arrowdow arrowdowUp"></div>
</div>
</div>
</div>
@ -213,6 +214,7 @@
<script>
import request from "@/utils/request";
import { Message } from "element-ui";
import { set } from "lodash";
const enum_device_type = [{ type: "1", label: "枪机" }];
export default {
name: "InDevelopment",
@ -281,6 +283,17 @@ export default {
}
this.topo = topo;
this.card = cards;
setTimeout(() => {
var scrollWrap = document.getElementsByClassName('cscorll');
scrollWrap.forEach(scrol => {
scrol.addEventListener('wheel', function(event) {
event.preventDefault();
var delta = event.wheelDelta || -event.detail;
scrol.scrollLeft += (delta > 0 ? -30 : 30);
});
});
}, 500);
}
},
},
@ -310,7 +323,7 @@ export default {
margin: 0px 40px 0px 20px;
.listItem {
background-image: url(../topology/left-bg.png);
background-image: url(../topology/img/left-bg.png);
background-repeat: no-repeat;
background-size: 100% 100%;
height: 50px;
@ -322,7 +335,7 @@ export default {
}
.listItemAction {
background-image: url(../topology/left-bg-action.png);
background-image: url(../topology/img/left-bg-action.png);
}
}
@ -395,19 +408,38 @@ export default {
.arrow-panel {
position: absolute;
z-index: 999;
width: 65%;
width: 100%;
display: flex;
justify-content: space-around;
.arrow {
width: 25px;
height: 10px;
background: linear-gradient(to right, #34d3eb, #ffffff00);
border-radius: 50%;
}
.arrowleft{
background: linear-gradient(to right, #34d3eb, #ffffff00);
animation: moveLinearLeft 5s linear infinite;
}
@keyframes moveLinearLeft {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-185px); /* 移动的终点位置 */
}
}
.arrowrig {
background: linear-gradient(to left, #34d3eb, #ffffff00);
animation: moveLinearRight 5s linear infinite;
}
@keyframes moveLinearRight {
0% {
transform: translateX(0);
}
100% {
transform: translateX(185px); /* 移动的终点位置 */
}
}
}
@ -424,17 +456,44 @@ export default {
position: absolute;
margin-left: -100.1%;
z-index: 99999;
justify-content: space-around;
justify-content: flex-start;
.arrowdow {
border-radius: 50%;
width: 10px;
height: 20px;
background: linear-gradient(to top, #34d3eb, #ffffff00);
}
.arrowtop {
.arrowdowUp{
background: linear-gradient(to bottom, #34d3eb, #ffffff00);
animation: moveLinearUp 5s linear infinite;
}
.arrowdowUp:first-child{
margin-bottom: 120px;
}
@keyframes moveLinearUp {
0% {
transform: translateY(0px);
}
100% {
transform: translateY(-140px); /* 移动的终点位置 */
}
}
.arrowdowDown{
background: linear-gradient(to top, #34d3eb, #ffffff00);
animation: moveLinearDown 5s linear infinite;
}
.arrowdowDown:last-child{
margin-top: 130px;
}
@keyframes moveLinearDown {
0% {
transform: translateY(0);
}
100% {
transform: translateY(150px); /* 移动的终点位置 */
}
}
}
.cscorll {

74
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/topology/xscroll.vue

@ -0,0 +1,74 @@
<template>
<!-- v-size-ob 指令可以在 dom 元素改变大小时获取 dom 元素的尺寸并且返回尺寸 -->
<div v-size-ob="handleChange" class="container">
<div class="scroll">
<div class="content">
<slot></slot>
</div>
</div>
</div>
</template>
<script>
import { reactive } from 'vue';
const s = reactive({ //
w: 0,
h: 0,
});
function handleChange(size) { // v-size-ob container
s.w = size.width;
s.h = size.height;
}
const map = new WeakMap();
const ob = new ResizeObserver((entries) => {
for (const entry of entries) {
const handler = map.get(entry.target);
if (handler) {
const box = entry.borderBoxSize[0];
handler({
width: box.inlineSize,
height: box.blockSize,
});
}
}
});
export default {
name: 'smartAnalysis',
components: {
},
mounted(el, binding) {
ob.observe(el);
map.set(el, binding.value);
},
unmounted(el) {
ob.unobserve(el);
},
};
</script>
<style scoped>
/* 为每一个盒子加上边框方便查看效果 */
.container {
outline: 5px solid #f1ac6a;
height: calc(v-bind("s.h") * 1px);
position: absolute;
left: 100%;
transform-origin: 0 0;
transform: rotate(90deg);
}
.scroll {
outline: 5px solid #7985ec;
width: calc(v-bind("s.h") * 1px);
height: calc(v-bind("s.w") * 1px);
position: relative;
overflow: auto;
transform-origin: 0 0;
transform: translateY(calc(v-bind("s.h") * 1px)) rotate(-90deg);
}
.content {
outline: 5px solid #f1ac6a;
height: calc(v-bind("s.h") * 1px);
}
</style>

1
ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue

@ -360,7 +360,6 @@ export default {
this.$set(this.deviceStateLatest, item.iotDeviceId, bool);
}
})
});
// this.rowDrop();
this.hideScrollFn();

4
ruoyi-ui/src/views/JiHeExpressway/utils/enum_event/PresetFormItems.js

@ -699,7 +699,7 @@ export const trafficAccidentType = {
},
{
value: "1-4",
label: "自",
label: "自",
},
{
value: "1-5",
@ -917,7 +917,7 @@ export const effect = {
};
export const isArrives = {
label: "是否货:",
label: "是否货:",
key: "dcEventAccident.isReverseCargo",
type: "RadioGroup",
options: {

122
ruoyi-ui/src/views/JiHeExpressway/utils/enum_event/data.js

@ -436,43 +436,53 @@ export const configList = {
(it) => it.key == "dcEventTrafficControl.classify"
);
let ss = {
"3-1": "主线",
"3-2": "收费站",
"3-3": "立交",
"3-4": "服务区",
"3-1": [{label: "主线关闭",key:1}],
"3-2": [{label: "收费站关闭",key:6}],
"3-3": [{label: "立交匝道关闭",key:10}],
"3-4": [{label: "服务区关闭",key:14}],
};
let ad = {
1: [
{
key: 1,
label: `${ss[value]}关闭`,
},
let classi = {
"3-1": [
{label: "主线限行",key:2},
{label: "主线间隔放行",key:3},
{label: "主线并道",key:4},
{label: "主线限速",key:5}
],
2: [
{
key: 2,
label: "主线限行",
},
{
key: 3,
label: "主线间隔放行",
},
{
key: 4,
label: "主线并道",
},
{
key: 5,
label: "主线限速",
},
"3-2": [
{label: "收费站限行",key:7},
{label: "收费站分流",key:8},
{label: "收费站间隔放行",key:9},
],
"3-3": [
{label: "立交限行",key:11},
{label: "立交匝道限行",key:12},
{label: "立交分流",key:13},
],
"3-4": [{label: "服务区关闭",key:14}],
}
let ad = {
1: ss[value],
2: classi[value]||[],
};
classify.options.options =
ad[data.dcEventTrafficControl.controlType];
classify.options.options = ad[data.dcEventTrafficControl.controlType];
if (data.dcEventTrafficControl) {
data.dcEventTrafficControl.facilityId = null;
}
const controlType = formList.find(
(it) => it.key == "dcEventTrafficControl.controlType"
);
if(value === '3-4'){
controlType.options.options =[{label: "封闭",key:1}]
data.dcEventTrafficControl.controlType = 1;
data.dcEventTrafficControl.classify = 14;
}else{
controlType.options.options =[{label: "封闭",key:1},{label: "限行",key:2}]
data.dcEventTrafficControl.classify = ad[data.dcEventTrafficControl.controlType][0].key;
}
let facilityType = 1;
if (value == "3-2") {
facilityType = 1;
@ -517,37 +527,30 @@ export const configList = {
(it) => it.key == "dcEventTrafficControl.measure"
);
let ss = {
"3-1": "主线",
"3-2": "收费站",
"3-3": "立交",
"3-4": "服务区",
"3-1": [{label: "主线关闭",key:1}],
"3-2": [{label: "收费站关闭",key:6}],
"3-3": [{label: "立交匝道关闭",key:10}],
"3-4": [{label: "服务区关闭",key:14}],
};
let ad = {
1: [
{
key: 1,
label: `${ss[data.eventSubclass]}关闭`,
},
let classi = {
"3-1": [
{label: "主线限行",key:2},
{label: "主线间隔放行",key:3},
{label: "主线并道",key:4},
{label: "主线限速",key:5}
],
2: [
{
key: 2,
label: "主线限行",
},
{
key: 3,
label: "主线间隔放行",
},
{
key: 4,
label: "主线并道",
},
{
key: 5,
label: "主线限速",
},
"3-2": [
{label: "收费站限行",key:7},
{label: "收费站分流",key:8},
{label: "收费站间隔放行",key:9},
],
};
"3-3": [
{label: "立交限行",key:11},
{label: "立交匝道限行",key:12},
{label: "立交分流",key:13},
],
"3-4": [{label: "服务区关闭",key:14}],
}
let cs = {
1: [
{
@ -582,8 +585,13 @@ export const configList = {
},
],
};
let ad = {
1: ss[data.eventSubclass],
2: classi[data.eventSubclass]
};
measure.options.options = cs[value];
classify.options.options = ad[value];
data.dcEventTrafficControl.classify = ad[value][0].key;
},
},
},

2
ruoyi-ui/src/views/websocket.vue

@ -129,7 +129,7 @@ export default {
"content": [
{
"id": 896,
"iotDeviceId": "8162-65535",
"iotDeviceId": "K67+240tynb",
"deviceType":"2",
deviceState
}

4
ruoyi-ui/vue.config.js

@ -42,11 +42,11 @@ module.exports = {
// target: `http://192.168.0.182:8080`,
// target: `http://192.168.0.194:8080`,
// target: `http://10.0.81.201:8080`,
target: `http://10.168.66.196:8087`, //刘文阁
// target: `http://10.168.66.196:8087`, //刘文阁
// target: `http://10.168.68.42:8087`, //王思祥
// target: `http://10.168.72.174:8087`, //赵祥龙
// target: `http://10.168.65.156:8097`, //孟凡峰
// target: `http://10.168.76.181:8089`, //王家宝
target: `http://10.168.76.181:8089`, //王家宝
// target: `http://10.168.77.128:8087`, //王兴琳
changeOrigin: true,
pathRewrite: {

Loading…
Cancel
Save