Browse Source

fix 3141bug

wangqin
qingzhengli 11 months ago
parent
commit
da6d05d1d2
  1. 3
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFilter/index.vue
  2. 9
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFrameControl/index.vue
  3. 286
      ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue
  4. 5
      ruoyi-ui/src/views/JiHeExpressway/utils/enum/common.js

3
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFilter/index.vue

@ -33,6 +33,7 @@ import { merge, cloneDeep, find } from "lodash";
import request from "@/utils/request";
import { log } from "mathjs";
import { ChildTypes } from "@screen/utils/enum.js"
import { initSearch } from "@screen/utils/enum/common.js"
const DeviceTypeIds = [1, 2];
export default {
@ -128,7 +129,7 @@ export default {
async handleResetForm() {
this.$refs.FormConfigRef?.reset();
this.activeIcon = "filter";
this.filterEnd(null);
this.filterEnd(initSearch);
},
async handleSearch() {
const data = await this.$refs.FormConfigRef.validate();

9
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFrameControl/index.vue

@ -34,6 +34,7 @@ import { markerClusterIns } from "@screen/pages/Home/components/RoadAndEvents/ut
import { ChildTypes } from "@screen/utils/enum.js"
import { getDeviceList } from "@screen/pages/Home/components/RoadAndEvents/utils/httpList.js";
import { delay } from "@screen/utils/common";
import { initSearch } from "@screen/utils/enum/common.js"
import { DeviceForMap } from "@screen/pages/Home/components/RoadAndEvents/utils/buttonEvent"
const DeviceTopics = {}
@ -112,7 +113,7 @@ export default {
},
},
key: "startStakeMark[0]",
default: "55",
default: initSearch.startStakeMark[0],
rules: [
{
message: "请补全桩号",
@ -140,7 +141,7 @@ export default {
color: "#3DE8FF",
},
},
default: "378",
default: initSearch.startStakeMark[1],
key: "startStakeMark[1]",
ons: { //on element
change(value, ...args) {
@ -163,7 +164,7 @@ export default {
},
},
key: "endStakeMark[0]",
default: "208",
default: initSearch.endStakeMark[0],
rules: [
{
message: "请补全桩号",
@ -190,7 +191,7 @@ export default {
color: "#3DE8FF",
},
},
default: "153",
default: initSearch.endStakeMark[1],
key: "endStakeMark[1]",
ons: { //on element
change(value, ...args) {

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

@ -9,55 +9,47 @@
<!-- <img class="qbbBigDotBa" src="@/assets/screen/xtb/qbba.png" alt=""> -->
<!-- </div> -->
<WgtTitle :title="'情报板列表'"></WgtTitle>
<el-form
:model="form"
class="formSearch" size="mini"
>
<!-- class="partCon" -->
<!-- style="display: flex; flex-direction: column" -->
<!-- ref="form" -->
<el-form :model="form" class="formSearch" size="mini">
<!-- class="partCon" -->
<!-- style="display: flex; flex-direction: column" -->
<!-- ref="form" -->
<el-form-item>
<el-col :span="12">
<el-select
v-model="form.selectedDirection"
size="medium"
placeholder="请选择方向"
class="direction"
>
<el-option
v-for="item in boardDirectionList"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue"
/>
<!-- @click.native="____changeDirection(item.dictValue)" -->
<el-select v-model="form.selectedDirection" size="medium" placeholder="请选择方向" class="direction">
<el-option v-for="item in boardDirectionList" :key="item.dictValue" :label="item.dictLabel"
:value="item.dictValue" />
<!-- @click.native="____changeDirection(item.dictValue)" -->
</el-select>
</el-col>
<el-col :span="11" :offset="1">
<el-checkbox-group v-model="form.status" style="height:26px">
<el-checkbox label="1">在线</el-checkbox>
<el-checkbox label="0">离线</el-checkbox>
</el-checkbox-group>
<el-checkbox-group v-model="form.status" style="height:26px">
<el-checkbox label="1">在线</el-checkbox>
<el-checkbox label="0">离线</el-checkbox>
</el-checkbox-group>
</el-col>
</el-form-item>
<el-form-item label="开始桩号:">
<el-col :span="2" class="text-center tc-lb">K</el-col>
<el-col :span="7">
<el-input-number v-model="form.stakeFrom[0]" style="width: 100%;" :precision="0" :min="0" :max="1000"></el-input-number>
<el-input-number v-model="form.stakeFrom[0]" style="width: 100%;" :precision="0" :min="0"
:max="1000"></el-input-number>
</el-col>
<el-col :span="2" class="text-center tc-lb">+</el-col>
<el-col :span="7">
<el-input-number v-model="form.stakeFrom[1]" style="width: 100%;" :precision="0" :min="0" :max="1000"></el-input-number>
<el-input-number v-model="form.stakeFrom[1]" style="width: 100%;" :precision="0" :min="0"
:max="1000"></el-input-number>
</el-col>
</el-form-item>
<el-form-item label="结束桩号:">
<el-col :span="2" class="text-center tc-lb">K</el-col>
<el-col :span="7">
<el-input-number v-model="form.stakeTo[0]" style="width: 100%;" :precision="0" :min="0" :max="1000"></el-input-number>
<el-input-number v-model="form.stakeTo[0]" style="width: 100%;" :precision="0" :min="0"
:max="1000"></el-input-number>
</el-col>
<el-col :span="2" class="text-center tc-lb">+</el-col>
<el-col :span="7">
<el-input-number v-model="form.stakeTo[1]" style="width: 100%;" :precision="0" :min="0" :max="1000"></el-input-number>
<el-input-number v-model="form.stakeTo[1]" style="width: 100%;" :precision="0" :min="0"
:max="1000"></el-input-number>
</el-col>
</el-form-item>
<el-form-item style="display: flex; justify-content: center;">
@ -67,55 +59,35 @@
</el-form>
<div style="flex:1; height: 0; padding:0 10px 10px">
<vuescroll :ops="scrollOptions">
<el-collapse
v-model="selectedSize"
accordion
@change="____onChangeSize"
style="margin-right: 20px"
>
<el-collapse-item
v-for="(item, key) in boardSizeDic"
:key="key"
:title="item.label"
:name="key"
>
<el-collapse v-model="selectedSize" accordion @change="____onChangeSize" style="margin-right: 20px">
<el-collapse-item v-for="(item, key) in boardSizeDic" :key="key" :title="item.label" :name="key">
<div v-if="item.list.length > 0">
<el-checkbox-group
class="deviceList"
v-model="checkedDeviceIds"
@change="____onSelectDevices"
>
<el-checkbox
v-for="(itm, index) in item.list"
:label="itm.iotDeviceId"
:key="index"
:disabled="!itm.iotDeviceId || itm.iotDeviceId.includes('null') || itm.deviceState == 0 || itm.deviceState == null"
>
<el-tooltip content="设备未接入" placement="top" v-if="!itm.iotDeviceId || itm.iotDeviceId.includes('null_')">
<el-checkbox-group class="deviceList" v-model="checkedDeviceIds" @change="____onSelectDevices">
<el-checkbox v-for="(itm, index) in item.list" :label="itm.iotDeviceId" :key="index"
:disabled="!itm.iotDeviceId || itm.iotDeviceId.includes('null') || itm.deviceState == 0 || itm.deviceState == null">
<el-tooltip content="设备未接入" placement="top"
v-if="!itm.iotDeviceId || itm.iotDeviceId.includes('null_')">
<div class="title">{{ itm.deviceName }}</div>
</el-tooltip>
<el-tooltip content="设备离线" placement="top" v-else-if="itm.deviceState == 0 || itm.deviceState == null">
<el-tooltip content="设备离线" placement="top"
v-else-if="itm.deviceState == 0 || itm.deviceState == null">
<div class="title">{{ itm.deviceName }}</div>
</el-tooltip>
<div v-else class="title">{{ itm.deviceName }}</div>
<el-tooltip :content="(itm.deviceState == 0 || itm.deviceState == null) ? '离线' : '在线'" placement="top">
<img src="@/assets/jihe/images/offline.svg" class="state" v-if="itm.deviceState=='0' || itm.deviceState==null">
<el-tooltip :content="(itm.deviceState == 0 || itm.deviceState == null) ? '离线' : '在线'"
placement="top">
<img src="@/assets/jihe/images/offline.svg" class="state"
v-if="itm.deviceState == '0' || itm.deviceState == null">
<img src="@/assets/jihe/images/online.svg" class="state" v-else>
</el-tooltip>
<el-tooltip content="回读" placement="top">
<el-button
class="el-icon-tickets huiduButton"
@click.stop.prevent="____forkDeviceInfo(itm)"
:disabled="submitButton"
></el-button>
<el-button class="el-icon-tickets huiduButton" @click.stop.prevent="____forkDeviceInfo(itm)"
:disabled="submitButton"></el-button>
</el-tooltip>
</el-checkbox>
</el-checkbox-group>
</div>
<div
v-else
style="color: #fff; text-align: center; line-height: 60px"
>
<div v-else style="color: #fff; text-align: center; line-height: 60px">
暂无数据
</div>
</el-collapse-item>
@ -128,20 +100,10 @@
<!-- <WgtTitle :title="'待下发信息'"></WgtTitle> -->
<WgtTitle :title="`待下发信息 ${selectedSize ? selectedSize : ''}`">
<div class="titleBtnBox">
<el-button
class="btnInfoBoard"
type="add"
:disabled="!selectedSize"
@click.native="____onAddDeviceItem()"
>添加信息</el-button
>
<el-button
class="btnInfoBoard"
type="publish"
@click="____onPublish"
:disabled="selectedBdMsg.length <= 0 || selectedDevices.length <=0"
>发布信息</el-button
>
<el-button class="btnInfoBoard" type="add" :disabled="!selectedSize"
@click.native="____onAddDeviceItem()">添加信息</el-button>
<el-button class="btnInfoBoard" type="publish" @click="____onPublish"
:disabled="selectedBdMsg.length <= 0 || selectedDevices.length <= 0">发布信息</el-button>
</div>
</WgtTitle>
<!-- <div class="partTitle partDeviceTempateTitle">
@ -162,45 +124,23 @@
</div> -->
<div class="partCon">
<!-- {{ selectedBdMsg }} -->
<vuescroll
:ops="scrollOptions"
class="templateBox"
v-if="selectedBdMsg.length > 0"
:class="{ hide: isHideCtt }"
>
<div
v-for="(itm, indx) in selectedBdMsg"
:key="indx"
class="tplItem"
>
<vuescroll :ops="scrollOptions" class="templateBox" v-if="selectedBdMsg.length > 0"
:class="{ hide: isHideCtt }">
<div v-for="(itm, indx) in selectedBdMsg" :key="indx" class="tplItem">
<!-- 模板内容 -->
<BoardPreview
class="boardPreview"
:boardWH="selectedSize"
:tpl="itm"
></BoardPreview>
<BoardPreview class="boardPreview" :boardWH="selectedSize" :tpl="itm"></BoardPreview>
<!-- 操作按钮 -->
<div class="infoBtnBox">
<el-tooltip content="编辑" placement="top">
<p
@click="____onEditBoardItem(itm, indx)"
class="btn btnEdit"
></p>
<p @click="____onEditBoardItem(itm, indx)" class="btn btnEdit"></p>
</el-tooltip>
<el-tooltip content="删除" placement="top">
<p
@click="____onDeleteBoardItem(indx)"
class="btn btnDelete"
></p>
<p @click="____onDeleteBoardItem(indx)" class="btn btnDelete"></p>
</el-tooltip>
</div>
</div>
</vuescroll>
<Empty
v-else
text="请从设备回读或从模板添加信息..."
style="padding-top: 100px"
></Empty>
<Empty v-else text="请从设备回读或从模板添加信息..." style="padding-top: 100px"></Empty>
</div>
</div>
<!-- ++++++++++右边部分信息模板++++++++++ -->
@ -219,29 +159,17 @@
</div> -->
<WgtTitle :title="`信息模板 ${selectedSize ? selectedSize : ''}`">
<div class="titleBtnBox">
<el-button
class="btnInfoBoard"
type="add"
@click="____onAddTemplate"
>添加模板</el-button
>
<el-button class="btnInfoBoard" type="add" @click="____onAddTemplate">添加模板</el-button>
</div>
</WgtTitle>
<div class="partCon">
<vuescroll :ops="scrollOptions" class="templateBox">
<div
v-for="(item, index) in templateAvailable"
:key="item.dictValue"
>
<div v-for="(item, index) in templateAvailable" :key="item.dictValue">
<!-- 原来是<el-collapse v-model="activeNames"> -->
<h3>{{ item.dictLabel }}</h3>
<div v-for="(itm, indx) in item.list" :key="indx" class="tplItem">
<!-- 模板内容 -->
<BoardTplPreview
class="boardPreview"
:boardWH="selectedSize"
:tpl="itm"
></BoardTplPreview>
<BoardTplPreview class="boardPreview" :boardWH="selectedSize" :tpl="itm"></BoardTplPreview>
<!-- <div class="infoPreview">
<div class="infoBox" :style="____boardBgStyle">
<span class="infoTxt" :style="____boardTxtStyle(itm)" v-html="itm.content.replace(/\n|\r\n/g, '<br>').replace(/ /g, '&nbsp')"></span>
@ -250,22 +178,14 @@
<!-- 操作按钮 -->
<div class="infoBtnBox">
<el-tooltip content="加入待下发信息" placement="top">
<p
@click="____onTplToDevice(itm, false)"
:class="
disabledButton && !selectedSize ? 'disabledClass' : ''
"
class="btn btnApply"
></p>
<p @click="____onTplToDevice(itm, false)" :class="disabledButton && !selectedSize ? 'disabledClass' : ''
" class="btn btnApply"></p>
</el-tooltip>
<el-tooltip content="编辑" placement="top">
<p @click="____onEditTemplate(itm)" class="btn btnEdit"></p>
</el-tooltip>
<el-tooltip content="删除" placement="top">
<p
@click="____onDeleteTemplate(itm)"
class="btn btnDelete"
></p>
<p @click="____onDeleteTemplate(itm)" class="btn btnDelete"></p>
</el-tooltip>
</div>
</div>
@ -274,21 +194,12 @@
</div>
</div>
</div>
<el-dialog
title="提示"
:visible.sync="arrowRightVisible"
width="20%"
:before-close="dialogClose"
>
<el-dialog title="提示" :visible.sync="arrowRightVisible" width="20%" :before-close="dialogClose">
<el-row>
<el-col :span="18">
<el-select v-model="toRightCategory" placeholder="请选择所属类别">
<el-option
v-for="item in tplCategory"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue"
>
<el-option v-for="item in tplCategory" :key="item.dictValue" :label="item.dictLabel"
:value="item.dictValue">
</el-option>
</el-select>
</el-col>
@ -299,14 +210,8 @@
</el-col>
</el-row>
</el-dialog>
<BoardInfoEditor
@afterSubmit="____onEditSubmit"
:mode="editDialog.mode"
:type="editDialog.type"
:visible.sync="editDialog.visible"
:screenSize="selectedSize"
:tpl="editDialog.tpl"
></BoardInfoEditor>
<BoardInfoEditor @afterSubmit="____onEditSubmit" :mode="editDialog.mode" :type="editDialog.type"
:visible.sync="editDialog.visible" :screenSize="selectedSize" :tpl="editDialog.tpl"></BoardInfoEditor>
<!-- <editInfo :boardEmitItem="this.boardEmitItem" @receiveForm="receiveForm" v-if="this.showEmit" @dialogClose="dialogClose"></editInfo> -->
</div>
</template>
@ -336,6 +241,7 @@ import testDeviceInfo from "@screen/testData/infoBoard.js";
import WgtTitle from "@screen/pages/perception/widgets/title";
import InfoBoard from "@screen/mixins/InfoBoard";
import { initSearch } from "@screen/utils/enum/common.js"
export default {
name: "Device",
@ -519,18 +425,18 @@ export default {
this.____getIotBoard();
},
____onSearchDevice(){
____onSearchDevice() {
this.____getIotBoard();
},
____resetForm(){
____resetForm() {
this.form = {
selectedDirection: "",
status: ["0", "1"],
stakeFrom: [55, 378],
stakeTo: [208, 153]
stakeFrom: initSearch.startStakeMark,
stakeTo: initSearch.endStakeMark
}
},
____onResetSearchDevice(){
____onResetSearchDevice() {
this.____resetForm();
this.____initDirection();
this.____getIotBoard();
@ -548,10 +454,10 @@ export default {
let stakeFrom = this.form.stakeFrom[0] * 1000 + this.form.stakeFrom[1];
let stakeTo = this.form.stakeTo[0] * 1000 + this.form.stakeTo[1];
let statusForm = _.cloneDeep(this.form.status);
if(statusForm.includes("0")){
if (statusForm.includes("0")) {
statusForm.push(null)
}
}
if (IS_TESTING) {
let res = testDeviceList;
res.data.forEach((item) => {
@ -574,10 +480,10 @@ export default {
item.otherConfig = JSON.parse(item.otherConfig);
}
item.iotDeviceId = item.iotDeviceId || "null_" + item.id;
let stakeThis = +item?.stakeMark?.replace(/[K\+]/g, "") || -1;
if(stakeThis >= stakeFrom && stakeThis <= stakeTo && statusForm.includes(item.deviceState)){
if (stakeThis >= stakeFrom && stakeThis <= stakeTo && statusForm.includes(item.deviceState)) {
this.boardSizeDic[item.otherConfig.screenSize].list.push(item);
}
if (!this.selectedSize) {
@ -612,11 +518,11 @@ export default {
this.isHideCtt = false;
});
})
.catch((err) => {});
.catch((err) => { });
}
},
____onAddTemplate() {
// if(selectedSize){
// fontSize = "64px"
// }
@ -798,7 +704,7 @@ export default {
},
// form
receiveForm(form) {
receiveForm(form) {
console.log(form, "接收子组件form表单 修改");
this.contentList.splice(this.index_, 1, form);
this.$forceUpdate();
@ -812,11 +718,11 @@ export default {
if (this.checkedDeviceIds.length == 0) {
return;
}
this.selectedDevices = _.filter(this.boardSizeDic[this.selectedSize].list, (item)=>{
this.selectedDevices = _.filter(this.boardSizeDic[this.selectedSize].list, (item) => {
return this.checkedDeviceIds.includes(item.iotDeviceId)
});
// this.____forkDeviceInfo(this.selectedDevices);
},
@ -1037,11 +943,14 @@ export default {
};
</script>
<style lang="scss" scoped>
::v-deep .formSearch{
::v-deep .formSearch {
padding: 20px 20px 0;
.el-form-item__label{ color: #fff;}
.el-form-item__label {
color: #fff;
}
}
.direction {
::v-deep .el-input {
.el-input__inner {
@ -1050,8 +959,11 @@ export default {
}
}
}
.infoBoardBox {
width: 100%; height: 100%;
width: 100%;
height: 100%;
.infoBoardCon {
width: 100%;
height: 100%;
@ -1200,9 +1112,8 @@ export default {
}
.checkbox {
.boardLabel{
.boardLabel {}
}
// label {
// width: 100%;
// padding: 10px 0;
@ -1225,13 +1136,26 @@ export default {
padding-bottom: 0px;
}
.deviceList{
.deviceList {
::v-deep .el-checkbox__label {
display: flex !important;
justify-content: space-between;
width: 100%;
.title{ flex:1; width:0; overflow: hidden; text-overflow: ellipsis; word-break: keep-all;}
.state{ width: 18px; height: 18px; margin-right: 4px;}
.title {
flex: 1;
width: 0;
overflow: hidden;
text-overflow: ellipsis;
word-break: keep-all;
}
.state {
width: 18px;
height: 18px;
margin-right: 4px;
}
.huiduButton {
background: transparent;
border: none;
@ -1358,11 +1282,7 @@ export default {
background-color: #053b4f;
}
::v-deep
.el-table--enable-row-hover
.el-table__body
tr:hover
> td.el-table__cell {
::v-deep .el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {
background-color: #053b4f;
}

5
ruoyi-ui/src/views/JiHeExpressway/utils/enum/common.js

@ -0,0 +1,5 @@
//通用配置类
export const initSearch = {
startStakeMark: ["55", "378"],
endStakeMark: ["208", "153"],
};
Loading…
Cancel
Save