Commit 27a5bdd1 authored by 赵啸非's avatar 赵啸非

Merge remote-tracking branch 'origin/master'

parents 988d5ea3 74025df0
......@@ -14,8 +14,8 @@ html * {
html,
body {
width: 100%;
// height: 100%;
min-height: 100%;
height: 100%;
// min-height: 100%;
font-family: "Microsoft Yahei", "Helvetica Neue", Helvetica, STHeiTi, Arial,
sans-serif;
}
......@@ -226,7 +226,9 @@ a {
pointer-events: none;
}
#app,
#app{
height: 100%;
}
.pages {
.flex;
.flex-v;
......
......@@ -328,7 +328,7 @@
text-align: right;
}
.addclass {
.el-button--primary {
background: linear-gradient(90deg, #5ab6ff 0%, #2e9aff 100%) !important;
color: #fff !important;
}
......@@ -7,7 +7,7 @@
vid="amapDetail"
:amap-manager="amapManager"
:center="center"
expandZoomRange
:expandZoomRange="true"
:zoom="20"
:pitch="65"
:rotation="45"
......@@ -32,6 +32,89 @@
:extData="marker"
>
</el-amap-marker>
<!--信息窗体-->
<el-amap-info-window
:closeWhenClickMap="true"
:position="window.position"
:visible="window.visible"
:offset="[0, -30]"
:events="{
init(m) {
m.on('open', () => (window.visible = true));
m.on('close', () => (window.visible = false));
},
}"
>
<div class="info-window">
<!-- 头部 -->
<div class="header flex aic jcb mb20">
<div class="title">
{{ curDev.productName + "-" + curDev.deviceName }}
</div>
<div class="hint">
<div class="green" v-if="curDev.deviceStatus === 2">
<i class="el-icon-link"></i>
在线
</div>
<div class="wraning" v-else-if="curDev.enabled === 0">
<i class="el-icon-switch-button"></i>
停用
</div>
<div class="ordinary" v-else-if="curDev.deviceStatus === 0">
<i class="el-icon-sunset"></i>
未激活
</div>
<div class="delete" v-else-if="curDev.deviceStatus === 1">
<i class="el-icon-light-rain"></i>
离线
</div>
</div>
</div>
<!-- 主体 -->
<div class="info-box">
<el-descriptions :column="1" size="small">
<el-descriptions-item label="设备编码">{{
curDev.deviceCode ? curDev.deviceCode : "--"
}}</el-descriptions-item>
<el-descriptions-item label="MAC地址">{{
curDev.deviceMac ? curDev.deviceMac : "--"
}}</el-descriptions-item>
<el-descriptions-item label="设备位置"
>{{
curDev.deviceInBuilding ? curDev.deviceInBuilding : "--"
}}{{
curDev.deviceInFloor ? curDev.deviceInFloor : "--"
}}</el-descriptions-item
>
<el-descriptions-item
:labelStyle="{ 'text-align': 'right', width: '50px' }"
label="负责人"
>
{{ curDev.leadingOfficial || "--" }}
</el-descriptions-item>
<el-descriptions-item label="联系电话">{{
curDev.leadingOfficialTelephone || "--"
}}</el-descriptions-item>
<el-descriptions-item label="创建时间">{{
formatterDate(curDev.createTime)
}}</el-descriptions-item>
</el-descriptions>
</div>
<!-- 底部按钮 -->
<!-- <div class="footer mt20 flex aic">
<el-button
size="small"
v-if="curDev.deviceStatus === 0"
type="primary"
@click="handleActive"
>一键激活</el-button
>
<el-button size="small" type="primary" @click="checkInfo(curDev.id)"
>查看设备详情</el-button
>
</div> -->
</div>
</el-amap-info-window>
</el-amap>
</div>
</template>
......@@ -110,6 +193,10 @@ export default {
events: {
click: (e) => {
let ExtData = e.target.getExtData();
this.window.visible = true;
this.window.position = ExtData.position;
this.curDev = ExtData.extData;
console.log("getExtData", e.target.getExtData());
},
},
......@@ -136,7 +223,11 @@ export default {
zoom: 20,
center: [104.007767, 30.568308],
marker: {},
window: {
position: [0, 0],
visible: false,
},
curDev: {},
// 一些工具插件
};
},
......@@ -146,7 +237,7 @@ export default {
<style lang="less">
.tuli {
width: 400px;
top: 20px;
top: 40px;
left: 34px;
position: absolute;
float: left;
......@@ -161,13 +252,14 @@ export default {
background-color: rgba(255, 255, 255, 0.7);
}
.rightTop {
width: 200px;
width: 250px;
height: 100%;
top: 0px;
right: 0px;
position: absolute;
float: right;
background-color: rgba(255, 255, 255, 1);
overflow-y: auto;
}
.amap-info-content {
position: relative;
......@@ -175,6 +267,30 @@ export default {
line-height: 1.4;
overflow: auto;
}
.info-window {
width: 400px;
padding: 10px;
font-size: 12px;
color: #606266;
.header {
.title {
font-size: 20px;
font-weight: 500;
}
}
.info-text-title {
width: 90px;
text-align: right;
}
.info-box {
padding: 10px 0px;
border-top: 1px solid #ececec;
border-bottom: 1px solid #ececec;
}
.footer {
justify-content: flex-end;
}
}
.my-map {
width: 100%;
height: 93vh;
......
......@@ -2,62 +2,145 @@
<div class="page">
<div class="page-header">
<div>
<span style="font-size: 14px"><b>设备列表</b>
<span style="font-size: 14px"
><b>设备列表</b>
<span style="margin-right: 6px">{{ siteName }}</span> 站点编码:{{
siteCode
}}
</span>
<el-link style="margin-left: 10px" type="primary" class="addclass" @click="switchMap" :underline="false">地图模式
</span
>
<el-link
style="margin-left: 10px"
type="primary"
class="addclass"
@click="switchMap"
:underline="false"
>地图模式
</el-link>
</div>
<el-button style="margin-right: 10px" @click="$router.back()" size="small">返回上一级
<el-button style="margin-right: 10px" @click="$router.back()" size="small"
>返回上一级
</el-button>
</div>
<el-divider></el-divider>
<LayoutTable :data="tableData" :config="tableConfig">
<el-button slot="table-head-left2" style="margin-left: 10px" type="primary" class="addclass" size="mini" @click="handleImport">导入
<el-button
slot="table-head-left2"
style="margin-left: 10px"
type="primary"
class="addclass"
size="mini"
@click="handleImport"
>导入
</el-button>
<el-button slot="table-head-left2" style="margin-left: 10px" type="primary" class="addclass" size="mini" @click="doExport"
:disabled="isExport">导出
<el-button
slot="table-head-left2"
style="margin-left: 10px"
type="primary"
class="addclass"
size="mini"
@click="doExport"
:disabled="isExport"
>导出
</el-button>
<el-button slot="table-head-left2" style="margin-left: 10px" type="primary" class="addclass" size="mini"
@click="batchActiveDevice">批量激活
<el-button
slot="table-head-left2"
style="margin-left: 10px"
type="primary"
class="addclass"
size="mini"
@click="batchActiveDevice"
>批量激活
</el-button>
<el-button slot="table-head-left2" style="margin-left: 10px" type="primary" class="addclass" size="mini"
@click="batchUpdateHall">更新大厅
<el-button
slot="table-head-left2"
style="margin-left: 10px"
type="primary"
class="addclass"
size="mini"
@click="batchUpdateHall"
>更新大厅
</el-button>
<el-button slot="table-head-left2" style="margin-left: 10px" type="primary" class="addclass" size="mini"
@click="batchRestartApp">批量重启
<el-button
slot="table-head-left2"
style="margin-left: 10px"
type="primary"
class="addclass"
size="mini"
@click="batchRestartApp"
>批量重启
</el-button>
<el-tag slot="table-body-head" size="mini" class="cursord" @click="changeStatAll()">设备总数:{{ tableData.totalCount }}
<el-tag
slot="table-body-head"
size="mini"
class="cursord"
@click="changeStatAll()"
>设备总数:{{ tableData.totalCount }}
</el-tag>
<el-tag slot="table-body-head" size="mini" style="margin: 5px" type="success" class="cursord"
@click="changeStat(2)">在线:{{ tableData.onlineCount }}
<el-tag
slot="table-body-head"
size="mini"
style="margin: 5px"
type="success"
class="cursord"
@click="changeStat(2)"
>在线:{{ tableData.onlineCount }}
</el-tag>
<el-tag slot="table-body-head" size="mini" style="margin: 5px" type="danger" class="cursord"
@click="changeStat(1)">离线:{{ tableData.offlineCount }}
<el-tag
slot="table-body-head"
size="mini"
style="margin: 5px"
type="danger"
class="cursord"
@click="changeStat(1)"
>离线:{{ tableData.offlineCount }}
</el-tag>
<el-tag slot="table-body-head" size="mini" style="margin: 5px" type="danger" class="cursord"
@click="changeStatEnabled(0)">停用:{{ tableData.stopCount }}
<el-tag
slot="table-body-head"
size="mini"
style="margin: 5px"
type="danger"
class="cursord"
@click="changeStatEnabled(0)"
>停用:{{ tableData.stopCount }}
</el-tag>
<el-tag slot="table-body-head" size="mini" style="margin: 5px" type="danger" class="cursord"
@click="changeStat(0)">未激活:{{ tableData.unActiveCount }}
<el-tag
slot="table-body-head"
size="mini"
style="margin: 5px"
type="warning"
class="cursord"
@click="changeStat(0)"
>未激活:{{ tableData.unActiveCount }}
</el-tag>
</LayoutTable>
<!-- 设备导入对话框 -->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
:action="upload.url + '?siteId=' + siteId" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess" :auto-upload="false" drag>
<el-dialog
:title="upload.title"
:visible.sync="upload.open"
width="400px"
append-to-body
>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url + '?siteId=' + siteId"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处,或
......@@ -66,7 +149,12 @@
<div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" />
是否更新已经存在的数据
<el-link type="primary" class="addclass" style="font-size: 14px" @click="downloadTemplate">下载模板
<el-link
type="primary"
class="addclass"
style="font-size: 14px"
@click="downloadTemplate"
>下载模板
</el-link>
</div>
<div class="el-upload__tip" style="color: red" slot="tip">
......@@ -74,46 +162,91 @@
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" class="addclass" @click="submitFileForm">确 定</el-button>
<el-button type="primary" class="addclass" @click="submitFileForm"
>确 定</el-button
>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
<!-- 站点修改对话框 -->
<el-dialog :title="tree.title" :visible.sync="tree.open" width="40%" append-to-body>
<span style="font-size: 13px"><b>当前站点:</b> (<el-link style="margin-left: 10px" type="primary" class="addclass"
:underline="false">{{ siteName }}</el-link>
站点编码:{{ siteCode }} )</span>
<el-dialog
:title="tree.title"
:visible.sync="tree.open"
width="40%"
append-to-body
>
<span style="font-size: 13px"
><b>当前站点:</b> (<el-link
style="margin-left: 10px"
type="primary"
class="addclass"
:underline="false"
>{{ siteName }}</el-link
>
站点编码:{{ siteCode }} )</span
>
<el-divider></el-divider>
<el-scrollbar style="height: 100%">
<el-tree size="mini" ref="siteTree" :data="areaData" id="el-tree" node-key="id" indent="4" :props="treeProps"
:load="loadNode" highlight-current default-expand-all :expand-on-click-node="false"
:render-content="renderContent" @node-click="handleNodeClick">
<el-tree
size="mini"
ref="siteTree"
:data="areaData"
id="el-tree"
node-key="id"
indent="4"
:props="treeProps"
:load="loadNode"
highlight-current
default-expand-all
:expand-on-click-node="false"
:render-content="renderContent"
@node-click="handleNodeClick"
>
</el-tree>
</el-scrollbar>
<div slot="footer" class="dialog-footer">
<el-button type="primary" class="addclass" @click="updateSiteConform">确 定</el-button>
<el-button type="primary" class="addclass" @click="updateSiteConform"
>确 定</el-button
>
<el-button @click="tree.open = false">取 消</el-button>
</div>
</el-dialog>
<!-- 大厅修改对话框 -->
<el-dialog :title="hallDialog.title" :visible.sync="hallDialog.open" width="60%" append-to-body>
<el-dialog
:title="hallDialog.title"
:visible.sync="hallDialog.open"
width="60%"
append-to-body
>
<el-form label-width="120px">
<Field label="站点大厅" v-model="hallId" type="radio" :enumData="tableData.dict.hallId" placeholder="请选择所属大厅" />
<Field
label="站点大厅"
v-model="hallId"
type="radio"
:enumData="tableData.dict.hallId"
placeholder="请选择所属大厅"
/>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" class="addclass" @click="updateBatchHallConform">确 定</el-button>
<el-button
type="primary"
class="addclass"
@click="updateBatchHallConform"
>确 定</el-button
>
<el-button @click="hallDialog.open = false">取 消</el-button>
</div>
</el-dialog>
<!-- 查看二维码弹窗 -->
<el-dialog title="设备二维码" :visible.sync="qrCodeDialog.visible" width="350px">
<el-dialog
title="设备二维码"
:visible.sync="qrCodeDialog.visible"
width="350px"
>
<img :src="qrCodeDialog.qrCode" />
<p style="word-wrap: break-word">{{ qrCodeDialog.qrCodeUrl }}</p>
</el-dialog>
......@@ -170,8 +303,6 @@ export default {
this.upload.open = true;
},
/** 下载模板操作 */
downloadTemplate() {
this.isExport = true;
......@@ -241,15 +372,15 @@ export default {
},
changeStatAll() {
delete this.query["productId"]
delete this.query["deviceName"]
delete this.query["deviceCode"]
delete this.query["deviceStatus"]
delete this.query["productId"];
delete this.query["deviceName"];
delete this.query["deviceCode"];
delete this.query["deviceStatus"];
this.query["page"] = 1
this.query["page"] = 1;
this.query = Object.assign(this.query, {
//deviceStatusList: [1, 2],
// enabled: 1,
// enabled: 1,
});
this.getData();
......@@ -257,9 +388,9 @@ export default {
changeStatEnabled(enabled) {
//去除其它条件
this.query["page"] = 1
this.query["page"] = 1;
this.query = Object.assign(this.query, {
// deviceStatusList: [1, 2],
// deviceStatusList: [1, 2],
enabled: enabled,
});
......@@ -270,13 +401,12 @@ export default {
//去除其它条件
// delete this.query["productId"]
//delete this.query["deviceName"]
delete this.query["enabled"]
delete this.query["enabled"];
this.query = Object.assign(this.query, { deviceStatus: val });
this.query["page"] = 1
this.query["page"] = 1;
this.getData();
},
activeDevice(row) {
this.$post("/device/active", {
deviceCode: row.deviceCode,
......@@ -307,28 +437,26 @@ export default {
});
},
batchUpdateHall() {
this.hallId = null;
this.hallName = ""
this.hallName = "";
this.hallDialog.title = "设备所属大厅设置";
this.hallDialog.open = true;
},
updateBatchHallConform(row) {
this.hallName = this.tableData.dict.hallId[this.hallId];
this.$post("/device/batchUpdateHall", {
idList: this.selection,
hallId: this.hallId,
hallName: this.hallName
hallName: this.hallName,
})
.then((res) => {
if (res.code == 1) {
this.$message.success("批量更新大厅设备成功!");
this.hallDialog.open = false;
console.log(this.$refs)
this.selection = []
console.log(this.$refs);
this.selection = [];
this.getData();
}
})
......@@ -337,7 +465,6 @@ export default {
});
},
batchRestartApp(row) {
this.$post("/device/batchRestartApp", {
idList: this.selection,
......
......@@ -19,7 +19,8 @@
</el-form-item>
<el-form-item size="large">
<el-button
type="primary" class="addclass"
type="primary"
class="addclass"
native-type="submit"
:loading="loading"
@click="onSubmit"
......@@ -40,9 +41,7 @@ import { createSocket } from "@/assets/utils/websocket";
export default {
name: "login",
created() {
},
created() {},
methods: {
login() {
this.loading = true;
......
......@@ -2,13 +2,21 @@
<div>
<MapDetail ref="map" :markersData="originData" @choose="getDetailData">
<el-card body-style="padding:0px;" slot="leftTop1">
<el-button type="text" size="mini" style="margin-left: 10px" icon="el-icon-back"
@click="switchStat">返回至站点分布</el-button>
<el-button
type="text"
size="mini"
style="margin-left: 10px"
icon="el-icon-back"
@click="switchStat"
>返回至站点分布</el-button
>
</el-card>
<el-card slot="leftTop">
<el-row type="flex" justify="space-between">
<span style="font-size: 18px"><b>{{ info.siteName }}</b></span>
<span style="font-size: 18px"
><b>{{ info.siteName }}</b></span
>
</el-row>
<el-divider></el-divider>
......@@ -19,8 +27,11 @@
<el-descriptions-item label="站点地址">{{
info.address
}}</el-descriptions-item>
<el-descriptions-item label="联系人" :labelStyle="{ 'text-align': 'right', width: '50px' }">{{ info.leadingOfficial
}}</el-descriptions-item>
<el-descriptions-item
label="联系人"
:labelStyle="{ 'text-align': 'right', width: '50px' }"
>{{ info.leadingOfficial }}</el-descriptions-item
>
<el-descriptions-item label="联系电话">
{{ info.leadingOfficialTelephone }}
</el-descriptions-item>
......@@ -32,23 +43,33 @@
<el-divider></el-divider>
<el-row type="flex" justify="space-around">
<el-col :span="4">
<span style="font-size: 13px"><b>{{ info.deviceTotal }}</b></span><br />
<span style="font-size: 13px"
><b>{{ info.deviceTotal }}</b></span
><br />
<span style="font-size: 12px">设备总数</span>
</el-col>
<el-col :span="4">
<span style="font-size: 13px"><b style="color: green">{{ info.onlineCount }}</b></span><br />
<span style="font-size: 13px"
><b style="color: green">{{ info.onlineCount }}</b></span
><br />
<span style="font-size: 12px">在线</span>
</el-col>
<el-col :span="4">
<span style="font-size: 13px"><b style="color: red">{{ info.offlineCount }}</b></span><br />
<span style="font-size: 13px"
><b style="color: red">{{ info.offlineCount }}</b></span
><br />
<span style="font-size: 12px">离线</span>
</el-col>
<el-col :span="4">
<span style="font-size: 13px"><b style="color: orange">{{ info.stopCount }}</b></span><br />
<span style="font-size: 13px"
><b style="color: orange">{{ info.stopCount }}</b></span
><br />
<span style="font-size: 12px">停用</span>
</el-col>
<el-col :span="4">
<span style="font-size: 13px"><b style="color: grey">{{ info.unActiveCount }}</b></span><br />
<span style="font-size: 13px"
><b style="color: grey">{{ info.unActiveCount }}</b></span
><br />
<span style="font-size: 12px">待激活</span>
</el-col>
</el-row>
......@@ -56,39 +77,86 @@
<el-divider></el-divider>
<el-row type="flex" justify="space-around" style="margin-top: 10px">
<el-button type="primary" class="addclass" @click="switchList" size="mini">列表模式</el-button>
<el-button type="primary" class="addclass" size="mini" icon="el-icon-edit-outline">编辑站点</el-button>
<el-button type="primary" class="addclass" size="mini" @click="addDevice" icon="el-icon-plus">添加设备</el-button>
<el-button
type="primary"
class="addclass"
@click="switchList"
size="mini"
>列表模式</el-button
>
<el-button
type="primary"
class="addclass"
size="mini"
icon="el-icon-edit-outline"
>编辑站点</el-button
>
<el-button
type="primary"
class="addclass"
size="mini"
@click="addDevice"
icon="el-icon-plus"
>添加设备</el-button
>
</el-row>
</el-card>
<el-col slot="rightTop" style="box-shadow: 12px 2px 12px 12px rgba(0, 0, 0, 0.1)">
<el-col
slot="rightTop"
style="box-shadow: 12px 2px 12px 12px rgba(0, 0, 0, 0.1)"
>
<el-row type="flex" justify="space-around">
<el-select style="padding: 5px" size="mini" @change="deviceStatuschange" v-model="deviceStatus"
placeholder="请选择设备状态">
<el-option v-for="($label, $value) in tableData.dict.deviceStatus" :key="$value" :label="$label"
:value="$value"></el-option>
<el-select
style="padding: 5px"
size="mini"
@change="deviceStatuschange"
v-model="deviceStatus"
placeholder="请选择设备状态"
>
<el-option
v-for="($label, $value) in tableData.dict.deviceStatus"
:key="$value"
:label="$label"
:value="$value"
></el-option>
</el-select>
<span> </span>
</el-row>
<el-row>
<el-input size="mini" v-model="deviceName" @change="deviceNameChange" style="padding: 5px"
placeholder="请输入设备编码"></el-input>
<el-input
size="mini"
v-model="deviceName"
@change="deviceNameChange"
style="padding: 5px"
placeholder="请输入设备编码"
></el-input>
</el-row>
<el-divider></el-divider>
<el-row v-for="(label, value, index) in tableData.dict.productId" :key="index" type="flex"
style="border-bottom: 1px solid #e8eaec; padding: 10px" justify="space-between">
<el-row
v-for="(label, value, index) in tableData.dict.productId"
:key="index"
type="flex"
style="border-bottom: 1px solid #e8eaec; padding: 10px"
justify="space-between"
>
<!-- <img src="../../assets/images/排队机.png" alt="" /> -->
<img :src="require(`../../assets/images/${label}.png`)" />
<!-- <i style="font-size: 20px" class="el-icon-location-information"></i> -->
<span style="font-size: 12px">{{ label }}</span>
<el-switch v-model="items[index]" :active-value="value" :inactive-value="0" @change="switchChange"
active-color="#2882ED" inactive-color="#8C8B8E">
<el-switch
v-model="items[index]"
:active-value="value"
:inactive-value="0"
@change="switchChange"
active-color="#2882ED"
inactive-color="#8C8B8E"
>
</el-switch>
</el-row>
</el-col>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment