This commit is contained in:
jjLv 2024-08-30 18:18:08 +08:00
commit d83172d88f
9 changed files with 223 additions and 118 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -648,7 +648,7 @@
staticStyle: {
color: "#fff",
position: "absolute",
top: "calc(50% - 13px)",
top: "calc(75% - 13px)",
"text-align": "center",
width: "100%",
},
@ -34480,7 +34480,7 @@
staticStyle: {
color: "#fff",
position: "absolute",
top: "calc(50% - 13px)",
top: "calc(75% - 13px)",
"text-align": "center",
width: "100%",
},

View File

@ -740,6 +740,7 @@
<!-- <img src="" alt="">-->
</div>
<div class="shboxCodeTemp">手环箱编号{{ rowObj.shboxCode }}</div>
<div class="deviceName">手环箱名称{{ rowObj.shboxName }}</div>
</div>
<div slot="footer" class="dialog-footer" style="text-align: center">
<el-button type="primary" @click="downloadCode"

View File

@ -364,7 +364,9 @@
<div id="qrcode" class="qrcode" ref="codeItem"></div>
<!-- <img src="" alt="">-->
</div>
<div class="deviceCode">设备编号{{ rowObj.deviceCode }}</div>
<div class="deviceName">设备名称{{ rowObj.deviceName }}</div>
</div>
<div slot="footer" class="dialog-footer" style="text-align: center">
<el-button type="primary" @click="downloadCode"

View File

@ -62,10 +62,10 @@ export default {
async handleQrCodeExport() {
this.codeId = true;
console.log('checkboxModel', this.checkboxModel)
if(this.checkboxModel.length>0){
const msg = this.$modal.loading('批量生成中,请稍候...')
let that = this
try {
let captureId = document.getElementsByClassName('captureId')
for (let i = 0; i < this.checkboxModel.length; i++) {
const element = this.checkboxModel[i]
@ -87,13 +87,13 @@ export default {
colorLight: '#fff',
})
let canvas = document.createElement('canvas'),
scale = 1.2
scale = 0.9
canvas.width = width * scale
canvas.height = height * scale
canvas.style.width =
(shareContent.clientWidth * scale) / 100 + 'rem'
(shareContent.clientWidth * scale) / 100 + 'px'
canvas.style.height =
(shareContent.clientHeight * scale) / 100 + 'rem'
(shareContent.clientHeight * scale) / 100 + 'px'
canvas.getContext('2d').scale(scale, scale)
let opts = {
scale: scale,
@ -122,7 +122,7 @@ export default {
that.$modal.closeLoading()
})
}
await new Promise((resolve) => setTimeout(resolve, 1000))
await new Promise((resolve) => setTimeout(resolve, 2000))
that.packageImages()
setTimeout(msg, 1000)
that.$modal.closeLoading()
@ -132,6 +132,10 @@ export default {
this.$emit('clearCheck')
that.$modal.closeLoading()
}
}else{
this.$modal.msgError("请先选择导出设备");
}
},
//
packageImages() {

View File

@ -212,7 +212,7 @@
<el-option
v-for="dict in deviceList"
:key="dict.devCode+''"
:label="dict.devName"
:label="dict.devCode"
:value="dict.devCode+''"
:disabled="dict.disabled"
/>

View File

@ -46,21 +46,29 @@
<img :src="battery3" alt="电量" v-if="parseFloat(item.electricQuantity) < 20">
<span style="margin-left: 5px;">{{ item.electricQuantity }}%</span>
</div>
<div class="jd-dev-img layout"><img :src="config" alt="配置" @click.stop="clickJdDev(item.devId)"></div>
<div class="jd-dev-img layout"><img :src="config" alt="配置" @click.stop="clickJdDev(item.devId, item.devCode)">
</div>
</div>
</div>
<div class="no-data-box layout" v-if="!isShow2">
<el-empty description="暂无数据"></el-empty>
</div>
<div class="warn-info">
<el-table :data="tableData" style="width: 100%" max-height="400">
<el-table-column prop="devName" label="设备名称" align="center">
</el-table-column>
<el-table-column prop="warnTime" label="告警时间" align="center">
</el-table-column>
<el-table-column prop="warnContent" label="告警内容" align="center">
</el-table-column>
</el-table>
<div class="warn-title">
预警信息
</div>
<div class="infinite-list-wrapper" v-if="isShow3">
<ul class="list" v-infinite-scroll="loadWarnInfoData" infinite-scroll-disabled="busy"
infinite-scroll-distance="50">
<li v-for="(item, index) in tableData" :key="index" class="warn-li layout">
<span class="layout">{{ item.devName }}</span>
<span class="layout">{{ item.warnTime }}</span>
<span class="layout">{{ item.warnContent }}</span>
</li>
<p v-if="loading" style="text-align: center;">加载中...</p>
</ul>
</div>
<el-empty v-if="!isShow3" description="暂无预警信息"></el-empty>
</div>
</div>
<el-dialog title="近电感应配置" :visible.sync="dialogVisible" :append-to-body="true" width="700px"
@ -68,21 +76,22 @@
<el-form ref="form" :model="form" :rules="rules">
<div class="form-box">
<div v-for="(data, index) in form.configItems" :key="index">
<h3>配置{{ index + 1 }}</h3>
<el-form-item label="线路属性">
<h3>配置</h3>
<!-- <h3>配置{{ index + 1 }}</h3> -->
<!-- <el-form-item label="线路属性">
<el-radio-group v-model="data.configType">
<el-radio v-for="item in configTypeArr" :label="item.id" :key="item.id"
@change="chooseConfigType(index, data.configType)">{{ item.name }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="电压等级">
</el-form-item> -->
<!-- <el-form-item label="电压等级">
<el-radio-group v-model="data.voltageLevel" v-if="data.configType === 'communication'">
<el-radio v-for="item in jlArr" :label="item.id" :key="item.id">{{ item.name }}</el-radio>
</el-radio-group>
<el-radio-group v-model="data.voltageLevel" v-if="data.configType === 'direct_current'">
<el-radio v-for="item in zlArr" :label="item.id" :key="item.id">{{ item.name }}</el-radio>
</el-radio-group>
</el-form-item>
</el-form-item> -->
<el-form-item label="报警距离" :prop="'configItems.' + index + '.distance'" :rules="[
{
required: true, message: '报警距离不能为空', trigger: 'blur'
@ -93,19 +102,21 @@
trigger: 'blur'
}
]">
<el-col :span="12">
<el-input v-model="data.distance"></el-input>
<el-col :span="20">
<el-input v-model="data.distance" maxlength="5"></el-input>
</el-col>
<el-col :span="5" style="margin-left: 10px;"><el-button type="danger" plain
@click.prevent="removeConfig(data)"><i class="el-icon-delete"></i></el-button></el-col>
<!-- <el-col :span="5" style="margin-left: 10px;">
<el-button type="danger" plain
@click.prevent="removeConfig(data)"><i class="el-icon-delete"></i></el-button>
</el-col> -->
</el-form-item>
<hr>
<!-- <hr> -->
</div>
</div>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确定</el-button>
<el-button type="primary" @click="addConfigItem">添加配置</el-button>
<!-- <el-button type="primary" @click="addConfigItem">添加配置</el-button> -->
<el-button @click="closeConfigItem">取消</el-button>
</div>
</el-dialog>
@ -133,13 +144,15 @@ export default {
isShow: false,
//
isShow2: false,
//
isShow3: true,
// 线
configTypeArr: [],
//
jlArr: [],
//
zlArr: [],
loading: false,
// loading: false,
//
battery1: require('../../../../assets/images/battery1.png'),
battery2: require('../../../../assets/images/battery2.png'),
@ -152,6 +165,7 @@ export default {
//
form: {
devId: null,
devCode: null,
configItems: [],
},
//
@ -160,16 +174,26 @@ export default {
nocheckStyle: ['dev-info-box', 'layout', 'nocheck'],
checkStyle: ['dev-info-box', 'layout', 'check'],
warnStyle: ['dev-info-box', 'layout', 'warn'],
//
loading: false,
//
isHasData: true,
busy: true,
//
queryParams: {
pageNum: 0,
pageSize: 10
},
};
},
created() {
this.laodDzWarnList();
this.loadJdList();
this.loadJdWarnList();
},
mounted() {
this.$nextTick(() => {
this.$refs.iframePage.src = this.htmlContent;
this.busy = false;
})
},
methods: {
@ -222,13 +246,40 @@ export default {
}).catch(() => { })
},
/* 加载近电感应设备预警信息 */
loadJdWarnList() {
//
loadWarnInfoData() {
if (!this.isHasData) {
return;
}
this.queryParams.pageNum = this.queryParams.pageNum + 1;
this.loading = true;
this.busy = true;
getJdWarnList(this.queryParams).then(res => {
const data = res.data;
if (data && data.length > 0) {
data.forEach(item => {
this.tableData.push(item);
})
} else {
this.isHasData = false;
if(this.queryParams.pageNum === 1){
this.isShow3 = false;
}
}
this.loading = false;
this.busy = false;
}).catch(res => {
this.loading = false;
this.busy = false;
});
},
/* loadJdWarnList() {
let params = {};
getJdWarnList(params).then((res) => {
const data = res.data
this.tableData = data;
}).catch(() => { })
},
}, */
/* 加载线路属性 */
async loadLineStats() {
let loading = this.$loading({
@ -292,8 +343,9 @@ export default {
this.laodDzWarnList();
},
/* 近电感应设备点击事件 */
clickJdDev(id) {
clickJdDev(id, devCode) {
this.form.devId = id;
this.form.devCode = devCode;
this.loadLineStats();
},
//
@ -328,6 +380,7 @@ export default {
closeConfigItem() {
this.form.configItems.splice(0);
this.form.devId = null;
this.form.devCode = null;
this.dialogVisible = false;
},
// 线
@ -352,6 +405,7 @@ export default {
}
const obj = {
'devId': this.form.devId,
'devCode': this.form.devCode,
'configItems': this.form.configItems
}
configJdDevice(obj).then((res) => {
@ -549,7 +603,7 @@ export default {
.dev-config {
width: 100%;
max-height: 300px;
height: 200px;
overflow-y: auto;
border: 1px solid #cccccc;
border-radius: 6px;
@ -586,9 +640,30 @@ export default {
.warn-info {
width: 100%;
margin-top: 10px;
min-height: calc(100% - 300px);
max-height: calc(100% - 150px);
overflow-y: auto;
height: calc(100% - 220px);
}
.warn-li {
width: 100%;
height: 60px;
border-bottom: 1px solid #cccccc;
}
.warn-li span {
width: 33.33%;
height: 100%;
letter-spacing: 1px;
}
ul {
padding-inline-start: 0;
margin-block-start: 0;
margin-block-end: 0;
}
.infinite-list-wrapper {
height: 96%;
overflow: auto;
}
.form-box {

View File

@ -6,7 +6,7 @@
<div class="content tree">
<el-tree :data="treeData" icon="el-icon-search" node-key="id" :default-expanded-keys="idArr"
@node-click="handleNodeClick" :render-content="renderContent" style="font-size: 15px;letter-spacing: 1px;"
ref="tree" :filter-node-method="filterNode" :highlight-current="true" />
ref="tree" :filter-node-method="filterNode" :highlight-current="true" :expand-on-click-node="false" />
</div>
</div>
<div class="center">
@ -306,12 +306,8 @@ export default {
keyword2: "",
//
teamTreeData: [],
//
intervalTime: 1,
//
provingTypeRadioValue: "1",
provingTimeValue: [''],
//
checkTeamId: null
};
},
created() {
@ -343,7 +339,11 @@ export default {
this.treeData = treeData
//
treeData.forEach(item => {
this.idArr.push(item.id);
const children = item.children;
children.forEach(child => {
//
this.idArr.push(child.id);
})
})
}
}).catch(res => {
@ -353,7 +353,7 @@ export default {
/* 人员树过滤 */
filterNode(value, data, node) {
if (!value) {
if (node.level == 1) {
if (node.level == 1 || node.level == 2) {
node.expanded = true
} else {
node.expanded = false
@ -411,7 +411,7 @@ export default {
const teamTreeData = res.data;
if (teamTreeData && teamTreeData.length > 0) {
this.teamTreeData = teamTreeData
//
//
teamTreeData.forEach(item => {
this.idArr2.push(item.id);
})
@ -495,7 +495,7 @@ export default {
this.dialogVisible2 = false
},
//
loadPersonsInfo(params) {
loadPersonsInfo(params, personData) {
getPersonsInfo(params).then((res) => {
const data = res.data;
if (data) {
@ -524,6 +524,9 @@ export default {
this.addPersonMarker(item);
}
}
if (personData) {
this.clickMarker(personData);
}
}
}
}).catch((res) => { })
@ -610,13 +613,26 @@ export default {
'id': towerId,
'teamId': teamId
}
this.loadPersonsInfo(obj);
this.checkTeamId = teamId;
this.loadPersonsInfo(obj, null);
} else if (node.level === 4) {
this.isTower = false;
this.isTeam = false;
this.isPerson = true;
const teamId = parseInt(data.parentId.replace('team-', ''));
const towerId = data.gtId;
if (!this.checkTeamId || this.checkTeamId !== teamId) {
this.removeOverlay();
const obj = {
'id': towerId,
'teamId': teamId
}
this.checkTeamId = teamId;
this.loadPersonsInfo(obj, data);
} else {
//
this.clickMarker(data);
}
} else {
this.isTower = false;
this.isTeam = false;
@ -711,7 +727,7 @@ export default {
'id': this.id,
'teamId': this.teamId
}
this.loadPersonsInfo(obj);
this.loadPersonsInfo(obj, null);
},
//
loadGj() {
@ -900,7 +916,7 @@ export default {
.personManage .left {
width: 20%;
width: 22%;
height: 100%;
padding: 0 0.5%;
box-sizing: border-box;
@ -913,7 +929,7 @@ export default {
}
.personManage .center {
width: 58%;
width: 54%;
height: 100%;
}
@ -931,7 +947,7 @@ export default {
}
.personManage .right {
width: 20%;
width: 22%;
height: 100%;
}

View File

@ -106,7 +106,7 @@
<!-- 预警信息 -->
<div class="right">
<h4>预警信息</h4>
<div class="infinite-list-wrapper">
<div class="infinite-list-wrapper" v-if="isShow3">
<ul class="list" v-infinite-scroll="loadWarnInfoData" infinite-scroll-disabled="busy"
infinite-scroll-distance="50">
<li v-for="(item, index) in warnInfoArr" :key="index" class="warn-li layout">
@ -118,6 +118,7 @@
<p v-if="loading" style="text-align: center;">加载中...</p>
</ul>
</div>
<el-empty v-if="!isShow3" description="暂无预警信息"></el-empty>
</div>
</div>
</template>
@ -159,6 +160,7 @@ export default {
//
isHasData: true,
busy: true,
isShow3:true,
//
boxNum: 1,//14
boxIndex:1,//
@ -238,6 +240,9 @@ export default {
})
} else {
this.isHasData = false;
if(this.queryParams.pageNum === 1){
this.isShow3 = false;
}
}
this.loading = false;
this.busy = false;
@ -735,6 +740,8 @@ export default {
ul {
padding-inline-start: 0;
margin-block-start: 0;
margin-block-end: 0;
}
.infinite-list-wrapper {