Commit 9f2f3854 authored by 赵啸非's avatar 赵啸非

Merge remote-tracking branch 'origin/master'

parents 32d7b20d 39d05e00
...@@ -8,15 +8,13 @@ export default { ...@@ -8,15 +8,13 @@ export default {
methods: { methods: {
// 渲染前置处理 // 渲染前置处理
beforeRender(data) { beforeRender(data) {
return data return data;
}, },
// 渲染后置处理 // 渲染后置处理
afterRender(data) { afterRender(data) {},
},
// 提交表单的前置处理 // 提交表单的前置处理
beforeSubmit(data) { beforeSubmit(data) {
return data return data;
}, },
// 提交表单的后置处理, 会阻断默认的回退行为 // 提交表单的后置处理, 会阻断默认的回退行为
afterSubmit(data) { afterSubmit(data) {
...@@ -46,19 +44,18 @@ export default { ...@@ -46,19 +44,18 @@ export default {
res.entity = this.util_toDateStr(res.entity, this.toDate); res.entity = this.util_toDateStr(res.entity, this.toDate);
this.form = Object.assign({}, this.form, res.entity); this.form = Object.assign({}, this.form, res.entity);
this.dict = Object.assign({}, this.dict, res.dict); this.dict = Object.assign({}, this.dict, res.dict);
this.afterRender(res); this.afterRender(res);
}) })
.catch(error => { .catch((error) => {
this.$message.error(error.message) this.$message.error(error.message);
throw error throw error;
}) })
.then(data => { .then((data) => {
clearTimeout(this.loadingTimer); clearTimeout(this.loadingTimer);
this.loadingTimer = setTimeout(() => { this.loadingTimer = setTimeout(() => {
this.loading = false; this.loading = false;
}, 300); }, 300);
}) });
}, },
// 提交表单 // 提交表单
submitForm(ref) { submitForm(ref) {
...@@ -66,70 +63,81 @@ export default { ...@@ -66,70 +63,81 @@ export default {
el.validate((valid) => { el.validate((valid) => {
if (!valid) return; if (!valid) return;
this.loading = true; this.loading = true;
this.$post(this.urls.saveUrl || this.pageInfo.saveUrl, this.beforeSubmit(this.form)) this.$post(
.then(res => { this.urls.saveUrl || this.pageInfo.saveUrl,
this.beforeSubmit(this.form)
)
.then((res) => {
this.$message.success(res.msg); this.$message.success(res.msg);
this.afterSubmit(res); this.afterSubmit(res);
}) })
.catch(error => { .catch((error) => {
this.$message.error(error.message); this.$message.error(error.message);
}) })
.then(data => { .then((data) => {
clearTimeout(this.loadingTimer); clearTimeout(this.loadingTimer);
this.loadingTimer = setTimeout(() => { this.loadingTimer = setTimeout(() => {
this.loading = false; this.loading = false;
}, 200); }, 200);
}) });
}); });
}, },
// 复制一个数组或对象 // 复制一个数组或对象
util_copy(data) { util_copy(data) {
return JSON.parse(JSON.stringify(data)) return JSON.parse(JSON.stringify(data));
}, },
// 工具方法,把数字转化为字符串 // 工具方法,把数字转化为字符串
util_toString(data, array) { util_toString(data, array) {
//原始数据 //原始数据
const dataCopy = Object.assign({}, data); const dataCopy = Object.assign({}, data);
array.forEach(item => { array.forEach((item) => {
//如果相等做操作 //如果相等做操作
dataCopy[item] = dataCopy[item] === undefined ? '' : dataCopy[item] + ''; dataCopy[item] =
}) dataCopy[item] === undefined ? "" : dataCopy[item] + "";
});
return dataCopy; return dataCopy;
}, },
// 工具方法,把字符串转化为数组 // 工具方法,把字符串转化为数组
util_toArrays(data, array) { util_toArrays(data, array) {
const dataCopy = Object.assign({}, data); const dataCopy = Object.assign({}, data);
array.forEach(item => { array.forEach((item) => {
dataCopy[item] = dataCopy[item] === undefined ? [] : dataCopy[item].split(","); dataCopy[item] =
}) dataCopy[item] === undefined ? [] : dataCopy[item].split(",");
});
return dataCopy; return dataCopy;
}, },
// 工具方法,把字符串转化为格式化日期 // 工具方法,把字符串转化为格式化日期
util_toDateStr(data, array) { util_toDateStr(data, array) {
const dataCopy = Object.assign({}, data); const dataCopy = Object.assign({}, data);
array.forEach(item => { array.forEach((item) => {
dataCopy[item] = dataCopy[item] === undefined ? '' : this.util_formatterDate(dataCopy[item]); dataCopy[item] =
}) dataCopy[item] === undefined
? ""
: this.util_formatterDate(dataCopy[item]);
});
return dataCopy; return dataCopy;
}, },
util_formatterDate(time) { util_formatterDate(time) {
let date = new Date(Number(time)); let date = new Date(Number(time));
let Y = date.getFullYear() + '-'; let Y = date.getFullYear() + "-";
let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; let M =
let D = this.panLeft(date.getDate()) + ' '; (date.getMonth() + 1 < 10
let h = this.panLeft(date.getHours()) + ':'; ? "0" + (date.getMonth() + 1)
let m = this.panLeft(date.getMinutes()) + ':'; : date.getMonth() + 1) + "-";
let D = this.panLeft(date.getDate()) + " ";
let h = this.panLeft(date.getHours()) + ":";
let m = this.panLeft(date.getMinutes()) + ":";
let s = this.panLeft(date.getSeconds()); let s = this.panLeft(date.getSeconds());
return Y + M + D + h + m + s; return Y + M + D + h + m + s;
}, },
panLeft(num) { panLeft(num) {
return num < 10 ? '0' + num : num; return num < 10 ? "0" + num : num;
}, },
// 从dict字段暴力取值,取不到则返回原值 // 从dict字段暴力取值,取不到则返回原值
util_formatter(key, val) { util_formatter(key, val) {
try { try {
return this.dict[key][val] return this.dict[key][val];
} catch (error) { } catch (error) {
return val; return val;
} }
...@@ -142,24 +150,24 @@ export default { ...@@ -142,24 +150,24 @@ export default {
} }
}); });
}, 0); }, 0);
} },
}, },
computed: { computed: {
pageInfo() { pageInfo() {
let currUrl = this.$route.path; let currUrl = this.$route.path;
let urlArray = currUrl.split('/'); let urlArray = currUrl.split("/");
let type = urlArray.pop(); let type = urlArray.pop();
urlArray.push('save'); urlArray.push("save");
let saveUrl = urlArray.join('/'); let saveUrl = urlArray.join("/");
urlArray.pop(); urlArray.pop();
urlArray.push('edit'); urlArray.push("edit");
let editUrl = urlArray.join('/'); let editUrl = urlArray.join("/");
urlArray.pop(); urlArray.pop();
urlArray.push('add'); urlArray.push("add");
let addUrl = urlArray.join('/'); let addUrl = urlArray.join("/");
urlArray.pop(); urlArray.pop();
urlArray.push('view'); urlArray.push("view");
let viewUrl = urlArray.join('/'); let viewUrl = urlArray.join("/");
return { return {
type, type,
currUrl, currUrl,
...@@ -183,9 +191,6 @@ export default { ...@@ -183,9 +191,6 @@ export default {
toString: [], // 需要把number转化为string的表单字段name数组 toString: [], // 需要把number转化为string的表单字段name数组
toArrays: [], // 需要把number转化为arrays的表单字段name数组 toArrays: [], // 需要把number转化为arrays的表单字段name数组
toDate: [], // 需要把number转化为date的表单字段name数组 toDate: [], // 需要把number转化为date的表单字段name数组
} };
} },
} };
...@@ -176,13 +176,14 @@ export default { ...@@ -176,13 +176,14 @@ export default {
// 格式化单元格数据 // 格式化单元格数据
formatter(row, column, val) { formatter(row, column, val) {
const content = formatter(this.tableData, column, val); const content = formatter(this.tableData, column, val);
return content ? ( return content ? (
<el-tag type={"info"} size="mini"> <el-tag type={"info"} size="mini">
{content} {content}
</el-tag> </el-tag>
) : ( ) : val ? (
val val
) : (
"--"
); );
}, },
......
...@@ -64,36 +64,52 @@ ...@@ -64,36 +64,52 @@
<div class="center"> <div class="center">
<div class="center-top"> <div class="center-top">
<div class="center-top-item"> <div class="center-top-item">
<img src="@/assets/images/icon1.png" alt=""> <img src="@/assets/images/icon1.png" alt="" />
<div> <div>
<h2 style="color: #69f3ff;text-shadow: 0 0 10px #69f3ff5b,0 0 20px #69f3ff5b,0 0 30px #69f3ff5b,0 0 40px #69f3ff5b;">{{centerTop.deviceTotalCount || 0}}</h2> <h2
style="color: #69f3ff;text-shadow: 0 0 10px #69f3ff5b,0 0 20px #69f3ff5b,0 0 30px #69f3ff5b,0 0 40px #69f3ff5b;"
>
{{ centerTop.deviceOnlineCount || 0 }}
</h2>
<p>在线设备总数</p> <p>在线设备总数</p>
</div> </div>
</div> </div>
<div class="center-top-item"> <div class="center-top-item">
<img src="@/assets/images/icon2.png" alt=""> <img src="@/assets/images/icon2.png" alt="" />
<div> <div>
<h2 style="color: #ffba69;text-shadow: 0 0 10px #ffb9693d,0 0 20px #ffb9693d,0 0 30px #ffb9693d,0 0 40px #ffb9693d;">{{centerTop.deviceOfflineCount || 0}}</h2> <h2
style="color: #ffba69;text-shadow: 0 0 10px #ffb9693d,0 0 20px #ffb9693d,0 0 30px #ffb9693d,0 0 40px #ffb9693d;"
>
{{ centerTop.deviceOfflineCount || 0 }}
</h2>
<p>离线设备总数</p> <p>离线设备总数</p>
</div> </div>
</div> </div>
<div class="center-top-item"> <div class="center-top-item">
<img src="@/assets/images/icon3.png" alt=""> <img src="@/assets/images/icon3.png" alt="" />
<div> <div>
<h2 style="color: #ff69b3;text-shadow: 0 0 10px #ff69b452,0 0 20px #ff69b452,0 0 30px #ff69b452,0 0 40px #ff69b452;">{{centerTop.deviceStopCount || 0}}</h2> <h2
style="color: #ff69b3;text-shadow: 0 0 10px #ff69b452,0 0 20px #ff69b452,0 0 30px #ff69b452,0 0 40px #ff69b452;"
>
{{ centerTop.deviceStopCount || 0 }}
</h2>
<p>停用设备总数</p> <p>停用设备总数</p>
</div> </div>
</div> </div>
<div class="center-top-item"> <div class="center-top-item">
<img src="@/assets/images/icon4.png" alt=""> <img src="@/assets/images/icon4.png" alt="" />
<div> <div>
<h2 style="color: #25f06c;text-shadow: 0 0 10px #25f06c3a,0 0 20px #25f06c3a,0 0 30px #25f06c3a,0 0 40px #25f06c3a;">{{centerTop.pushTotalCount || 0}}</h2> <h2
style="color: #25f06c;text-shadow: 0 0 10px #25f06c3a,0 0 20px #25f06c3a,0 0 30px #25f06c3a,0 0 40px #25f06c3a;"
>
{{ centerTop.pushTotalCount || 0 }}
</h2>
<p>今日消息推送总数</p> <p>今日消息推送总数</p>
</div> </div>
</div> </div>
</div> </div>
<div class="center-three"> <div class="center-three">
<three :floorArr="floorArr" lv="1" :checkItem="checkDeviceItem"/> <three :floorArr="floorArr" lv="1" :checkItem="checkDeviceItem" />
</div> </div>
</div> </div>
<div class="right"> <div class="right">
...@@ -204,19 +220,20 @@ export default { ...@@ -204,19 +220,20 @@ export default {
components: { components: {
HeaderSite, HeaderSite,
TitleItem, TitleItem,
three three,
}, },
data() { data() {
return { return {
floorArr:[], floorArr: [],
siteId: session.getSession("siteid"), siteId: session.getSession("siteid"),
warningInfo: { warningInfo: {
data: [], data: [],
rowNum: 5, rowNum: 5,
waitTime: 2000, waitTime: 2000,
unit: "",
}, },
realTimeInfo: { realTimeInfo: {
header: ["设备名称", "告警次数", "告警时间", "告警类型",'设备编码'], header: ["设备名称", "告警次数", "告警时间", "告警类型", "设备编码"],
headerHeight: 30, headerHeight: 30,
headerBGC: "#3B5A9E", headerBGC: "#3B5A9E",
oddRowBGC: "", oddRowBGC: "",
...@@ -237,38 +254,38 @@ export default { ...@@ -237,38 +254,38 @@ export default {
deviceFirmCollect: {}, // 设备厂家排名 deviceFirmCollect: {}, // 设备厂家排名
alarmLevelCollect: {}, // 今日告警等级分布 alarmLevelCollect: {}, // 今日告警等级分布
deviceAlarmMapInfoList: [], // 实施告警消息 deviceAlarmMapInfoList: [], // 实施告警消息
Statlist:[],//设备列表 Statlist: [], //设备列表
checkDeviceItem:{},//选中设备 checkDeviceItem: {}, //选中设备
centerTop:{} centerTop: {},
}; };
}, },
created() { created() {
this.getStatlist() this.getStatlist();
this.getDevAlarm(); this.getDevAlarm();
this.getData(); this.getData();
setTimeout(()=>{ setTimeout(() => {
this.floorArr = floorArr this.floorArr = floorArr;
},500) }, 500);
this.centerDeviceType() this.centerDeviceType();
}, },
methods: { methods: {
// 中间设备状态 // 中间设备状态
centerDeviceType(){ centerDeviceType() {
this.$post("/device/stat/list", { siteId: this.siteId,selected:0 }).then(res=>{ this.$post("/device/stat/list", {
siteId: this.siteId,
const {code,data} = res selected: 0,
console.log(data,"@@@@@") }).then((res) => {
if(code == 1 && data.data.length>0){ const { code, data } = res;
this.centerTop = data.data[0] if (code == 1 && data.data.length > 0) {
this.centerTop = data.data[0];
console.log(this.centerTop);
} }
}) });
}, },
// 点击设备 // 点击设备
tabelRow(arr){ tabelRow(arr) {
const { rowIndex } = arr;
const {rowIndex} = arr this.checkDeviceItem = this.Statlist[rowIndex];
this.checkDeviceItem = this.Statlist[rowIndex]
console.log(this.checkDeviceItem,"111")
}, },
// 获取今日告警设备统计 // 获取今日告警设备统计
getDevAlarm() { getDevAlarm() {
...@@ -285,7 +302,7 @@ export default { ...@@ -285,7 +302,7 @@ export default {
alarmTypeCollect, alarmTypeCollect,
deviceFirmCollect, deviceFirmCollect,
alarmLevelCollect, alarmLevelCollect,
deviceAlarmMapInfoList, // deviceAlarmMapInfoList,
} = res.data; } = res.data;
this.deviceTotalCount = deviceTotalCount; this.deviceTotalCount = deviceTotalCount;
this.siteSize = siteSize; this.siteSize = siteSize;
...@@ -297,11 +314,11 @@ export default { ...@@ -297,11 +314,11 @@ export default {
this.deviceFirmCollect = deviceFirmCollect; this.deviceFirmCollect = deviceFirmCollect;
this.siteDeviceAlarmCollect = siteDeviceAlarmCollect; this.siteDeviceAlarmCollect = siteDeviceAlarmCollect;
this.alarmLevelCollect = alarmLevelCollect; this.alarmLevelCollect = alarmLevelCollect;
this.deviceAlarmMapInfoList = deviceAlarmMapInfoList; // this.deviceAlarmMapInfoList = deviceAlarmMapInfoList;
// if (deviceAlarmMapInfoList.length) { // if (deviceAlarmMapInfoList.length) {
// let arr = deviceAlarmMapInfoList.map((v) => { // let arr = deviceAlarmMapInfoList.map((v) => {
// return [ // return [
// v.deviceName, // v.deviceName || "--",
// v.count, // v.count,
// v.alarmTime, // v.alarmTime,
// this.filterDevAlarmType(v.alarmType), // this.filterDevAlarmType(v.alarmType),
...@@ -312,9 +329,16 @@ export default { ...@@ -312,9 +329,16 @@ export default {
// } // }
let { 直连设备, 子设备, 网关设备 } = deviceConnTypeCollect; let { 直连设备, 子设备, 网关设备 } = deviceConnTypeCollect;
let { 在线, 离线, 缺纸 } = alarmTypeCollect; let { 在线, 离线, 缺纸 } = alarmTypeCollect;
let firmName = Object.keys(deviceFirmCollect).map((key) => key); let arr = Object.entries(deviceFirmCollect).sort((a, b) => {
let firmValues = Object.keys(deviceFirmCollect).map((key) => return parseFloat(b[1]) - parseFloat(a[1]);
Number(deviceFirmCollect[key]) });
let newDeviceFirmCollect = {};
arr.forEach((v) => {
newDeviceFirmCollect[v[0]] = v[1];
});
let firmName = Object.keys(newDeviceFirmCollect).map((key) => key);
let firmValues = Object.keys(newDeviceFirmCollect).map((key) =>
Number(newDeviceFirmCollect[key])
); );
if (Object.keys(siteDeviceAlarmCollect).length) { if (Object.keys(siteDeviceAlarmCollect).length) {
let arr = Object.keys(siteDeviceAlarmCollect).map((key) => { let arr = Object.keys(siteDeviceAlarmCollect).map((key) => {
...@@ -337,28 +361,29 @@ export default { ...@@ -337,28 +361,29 @@ export default {
); );
}, },
// 查询单个异常设备 // 查询单个异常设备
getStatlist(){ getStatlist() {
this.$post("/device/alarm/info/statlist", { siteId: this.siteId }).then(res=>{ this.$post("/device/alarm/info/statlist", { siteId: this.siteId }).then(
const {code,data} = res (res) => {
if(code == 1){ const { code, data } = res;
this.Statlist = data || [] if (code == 1) {
this.Statlist = data || [];
if (data.length) { if (data.length) {
let arr = data.map((v) => { let arr = data.map((v) => {
return [ return [
v.device.deviceName, v.device.deviceName || "--",
v.todayAlarmDeviceCount, v.todayAlarmInfoCount,
this.$moment(v.alarmTime).format('YYYY-MM-DD HH:mm'), this.$moment(v.alarmTime).format("YYYY-MM-DD HH:mm"),
v.alarmTypeStr, this.filterDevAlarmType(v.alarmTypeStr),
v.device.deviceCode v.device.deviceCode,
]; ];
}); });
this.realTimeInfo = { ...this.realTimeInfo, data: arr }; this.realTimeInfo = { ...this.realTimeInfo, data: arr };
} }
} }
}) }
);
}, },
// 获取设备类型分布图标 // 获取设备类型分布
getDevTypeDisEchart(direct, subset, network) { getDevTypeDisEchart(direct, subset, network) {
let chartDom = document.getElementById("devTypeDis"); let chartDom = document.getElementById("devTypeDis");
this.devType = this.$echarts.init(chartDom); this.devType = this.$echarts.init(chartDom);
...@@ -712,17 +737,18 @@ export default { ...@@ -712,17 +737,18 @@ export default {
// 过滤设备告警类型 // 过滤设备告警类型
filterDevAlarmType(type) { filterDevAlarmType(type) {
if (type == "离线") { if (type == "离线") {
return `<span style='color:#FF4A4A'>${type}</span>`; return `<span style='color:#FF964A'>${type}</span>`;
} else if (type == "在线") { } else if (type == "在线") {
return `<span style='color:#5ceeff'>${type}</span>`; return `<span style='color:#5ceeff'>${type}</span>`;
} else if (type == "停用") { } else if (type == "停用") {
return `<span style='color:#FF964A'>${type}</span>`; return `<span style='color:#FF4A4A'>${type}</span>`;
} }
}, },
// 定时获取数据 // 定时获取数据
getData() { getData() {
this.timer = setInterval(() => { this.timer = setInterval(() => {
this.getDevAlarm(); this.getDevAlarm();
this.getStatlist();
}, 1000 * 60); }, 1000 * 60);
}, },
}, },
...@@ -839,27 +865,27 @@ export default { ...@@ -839,27 +865,27 @@ export default {
.center { .center {
width: 780px; width: 780px;
position: relative; position: relative;
.center-top{ .center-top {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content:space-around; justify-content: space-around;
} }
.center-three{ .center-three {
height: 780px; height: 780px;
width: 780px; width: 780px;
} }
.center-top-item{ .center-top-item {
display: flex; display: flex;
align-items: center; align-items: center;
img{ img {
display: block; display: block;
width: 55px; width: 55px;
margin-right: 5px; margin-right: 5px;
} }
h2{ h2 {
font-size: 20px; font-size: 20px;
} }
p{ p {
font-size: 12px; font-size: 12px;
} }
} }
......
...@@ -4,10 +4,38 @@ ...@@ -4,10 +4,38 @@
<el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row> <el-row>
<!-- <Field :span="20" label="设备名称" prop="deviceName" v-model="form.deviceName" placeholder="请输入设备名称"/> --> <!-- <Field :span="20" label="设备名称" prop="deviceName" v-model="form.deviceName" placeholder="请输入设备名称"/> -->
<Field :span="20" label="设备编码" prop="deviceCode" v-model="form.deviceCode" placeholder="请输入设备编码"/> <Field
<Field :span="20" label="平台类型" prop="platformId" v-model="form.platformId" type="select" :enumData="dict.platformId" placeholder="请选择平台类型"/> :span="20"
<Field :span="20" label="产品类型" prop="productId" v-model="form.productId" type="select" :enumData="dict.productId" placeholder="请选择产品类型"/> label="设备编码"
<Field :span="20" label="设备的MAC地址" prop="deviceMac" v-model="form.deviceMac" placeholder="请输入设备的MAC地址"/> prop="deviceCode"
v-model="form.deviceCode"
placeholder="请输入设备编码"
/>
<Field
:span="20"
label="平台类型"
prop="platformId"
v-model="form.platformId"
type="select"
:enumData="dict.platformId"
placeholder="请选择平台类型"
/>
<Field
:span="20"
label="产品类型"
prop="productId"
v-model="form.productId"
type="select"
:enumData="dict.productId"
placeholder="请选择产品类型"
/>
<Field
:span="20"
label="设备的MAC地址"
prop="deviceMac"
v-model="form.deviceMac"
placeholder="请输入设备的MAC地址"
/>
<!-- <Field :span="20" label="中心设备编码" v-model="form.centernum" placeholder="请输入中心设备编码"/> --> <!-- <Field :span="20" label="中心设备编码" v-model="form.centernum" placeholder="请输入中心设备编码"/> -->
<Field :span="20" disabled label="设备访问ip" v-model="form.ip" /> <Field :span="20" disabled label="设备访问ip" v-model="form.ip" />
<Field :span="20" disabled label="端口" v-model="form.port" /> <Field :span="20" disabled label="端口" v-model="form.port" />
...@@ -21,27 +49,45 @@ ...@@ -21,27 +49,45 @@
type="select" type="select"
:enumData="dict.deviceFirmId" :enumData="dict.deviceFirmId"
/> />
<Field :span="20" label="备注" prop="deviceRemark" v-model="form.deviceRemark" type="textarea" placeholder="请输入备注"/> <Field
<Field :span="20" label="启用状态 " prop="status" v-model="form.status" type="radio" :enumData="dict.status" placeholder="请选择启用状态 "/> :span="20"
label="备注"
prop="deviceRemark"
v-model="form.deviceRemark"
type="textarea"
placeholder="请输入备注"
/>
<Field
:span="20"
label="启用状态 "
prop="status"
v-model="form.status"
type="radio"
:enumData="dict.status"
placeholder="请选择启用状态 "
/>
</el-row> </el-row>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" class="addclass" v-if="pageInfo.type !== 'view'" @click="submitForm">确 定</el-button> <el-button
type="primary"
class="addclass"
v-if="pageInfo.type !== 'view'"
@click="submitForm"
>确 定</el-button
>
<el-button @click="cancel">取 消</el-button> <el-button @click="cancel">取 消</el-button>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import form from "@/assets/mixins/formdialog"; import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow"; import dialogShow from "./dialogshow";
export default { export default {
mixins: [form], mixins: [form],
components: { components: {
dialogShow , dialogShow,
}, },
data() { data() {
return { return {
...@@ -51,61 +97,54 @@ ...@@ -51,61 +97,54 @@
title: "设备", title: "设备",
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
direction:"rtl", direction: "rtl",
toString:[ toString: ["deviceType", "deviceOnlineStatus", "status", "deviceFirmId"],
"deviceType",
"deviceOnlineStatus",
"status",
"deviceFirmId"
],
// 表单校验 // 表单校验
rules: { rules: {
deviceName: [ deviceName: [
{required: true,message: "请输入设备名称", trigger: "blur" }, { required: true, message: "请输入设备名称", trigger: "blur" },
{max: 20,message: "最多只能录入20个字符",trigger: "blur",}, { max: 20, message: "最多只能录入20个字符", trigger: "blur" },
], ],
deviceType: [ deviceType: [
{required: true,message: "请输入设备类型", trigger: "blur" }, { required: true, message: "请输入设备类型", trigger: "blur" },
], ],
deviceOnlineStatus: [ deviceOnlineStatus: [
{required: true,message: "请输入在线状态 ", trigger: "blur" }, { required: true, message: "请输入在线状态 ", trigger: "blur" },
], ],
status: [ status: [
{required: true,message: "请输入启用状态 ", trigger: "blur" }, { required: true, message: "请输入启用状态 ", trigger: "blur" },
],
createTime: [
{required: true,message: "请选择创建时间" },
], ],
} createTime: [{ required: true, message: "请选择创建时间" }],
},
}; };
}, },
methods: { methods: {
/** 编辑 */ /** 编辑 */
edit(row) { edit(row) {
this.reset() this.reset();
this.query = { id: row.id }; this.query = { id: row.id };
this.urls.currUrl =this.pageInfo.editUrl;; this.urls.currUrl = this.pageInfo.editUrl;
this.getData(); this.getData();
this.pageInfo.type="edit" this.pageInfo.type = "edit";
this.title = "修改设备"; this.title = "修改设备";
}, },
/** 新增 */ /** 新增 */
add(row) { add(row) {
this.reset() this.reset();
this.query = { id: row.id }; this.query = { id: row.id };
this.urls.currUrl = this.pageInfo.addUrl; this.urls.currUrl = this.pageInfo.addUrl;
this.getData(); this.getData();
this.pageInfo.type="add" this.pageInfo.type = "add";
this.title = "新增设备"; this.title = "新增设备";
}, },
/** 查看*/ /** 查看*/
view(row) { view(row) {
this.reset() this.reset();
this.query = { id: row.id }; this.query = { id: row.id };
this.urls.currUrl =this.pageInfo.viewUrl;; this.urls.currUrl = this.pageInfo.viewUrl;
this.getData(); this.getData();
this.pageInfo.type="view" this.pageInfo.type = "view";
this.title = "设备详细"; this.title = "设备详细";
}, },
/**取消按钮 */ /**取消按钮 */
...@@ -125,21 +164,21 @@ ...@@ -125,21 +164,21 @@
// 表单重置 // 表单重置
reset() { reset() {
this.form = { this.form = {
deviceName : "", deviceName: "",
deviceCode : "", deviceCode: "",
deviceType : 1, deviceType: 1,
deviceMac : "", deviceMac: "",
ip : "", ip: "",
centernum : "", centernum: "",
port : "", port: "",
siteNum : "", siteNum: "",
deviceFirmId : null, deviceFirmId: null,
deviceFirmname : "", deviceFirmname: "",
deviceOnlineStatus : 0, deviceOnlineStatus: 0,
status : 0, status: 0,
deviceRemark : "", deviceRemark: "",
onlineTime : null, onlineTime: null,
offlineTime : null, offlineTime: null,
}; };
this.resetForm("form"); this.resetForm("form");
}, },
...@@ -149,5 +188,5 @@ ...@@ -149,5 +188,5 @@
} }
}, },
}, },
}; };
</script> </script>
...@@ -152,15 +152,33 @@ ...@@ -152,15 +152,33 @@
placeholder="请选择启用状态 " placeholder="请选择启用状态 "
/> />
<Field label="显示短信" prop="showSms" v-model="form.showSms" type="radio" :enumData="dict.showSms" placeholder="请选择是否显示短信"/> <Field
<Field label="显示打印机" prop="showPrint" v-model="form.showPrint" type="radio" :enumData="dict.showPrint" placeholder="请选择是否显示打印机"/> label="显示短信"
<Field label="小程序二维码" prop="showWechatQrCode" v-model="form.showWechatQrCode" type="radio" :enumData="dict.showWechatQrCode" placeholder="请选择是否显示小程序二维码"/> prop="showSms"
v-model="form.showSms"
type="radio"
<Field :span="24" label="上传图片" :enumData="dict.showSms"
> placeholder="请选择是否显示短信"
<ImageUpload v-model="form.devicePhotoPath" prePath="/file/preview" />
<Field
label="显示打印机"
prop="showPrint"
v-model="form.showPrint"
type="radio"
:enumData="dict.showPrint"
placeholder="请选择是否显示打印机"
/>
<Field
label="小程序二维码"
prop="showWechatQrCode"
v-model="form.showWechatQrCode"
type="radio"
:enumData="dict.showWechatQrCode"
placeholder="请选择是否显示小程序二维码"
/> />
<Field :span="24" label="上传图片">
<ImageUpload v-model="form.devicePhotoPath" prePath="/file/preview" />
</Field> </Field>
<Field <Field
label="授权码" label="授权码"
...@@ -180,7 +198,7 @@ ...@@ -180,7 +198,7 @@
placeholder="请输入备注" placeholder="请输入备注"
/> />
</el-row> </el-row>
<form-buttons @submit="submitForm" noCancelBtn/> <form-buttons @submit="submitForm" noCancelBtn />
</el-form> </el-form>
</el-drawer> </el-drawer>
</template> </template>
...@@ -229,20 +247,20 @@ export default { ...@@ -229,20 +247,20 @@ export default {
// 表单校验 // 表单校验
rules: { rules: {
deviceName: [ deviceName: [
{required: true, message: "请输入设备名称", trigger: "blur"}, { required: true, message: "请输入设备名称", trigger: "blur" },
{max: 20, message: "最多只能录入20个字符", trigger: "blur"}, { max: 20, message: "最多只能录入20个字符", trigger: "blur" },
], ],
deviceCode: [ deviceCode: [
{required: true, message: "请输入设备编码", trigger: "blur"}, { required: true, message: "请输入设备编码", trigger: "blur" },
], ],
deviceMac: [ deviceMac: [
{required: true, message: "请输入Mac地址", trigger: "blur"}, { required: true, message: "请输入Mac地址", trigger: "blur" },
], ],
platformId: [ platformId: [
{required: true, message: "请选择平台", trigger: "blur"}, { required: true, message: "请选择平台", trigger: "blur" },
], ],
productId: [{required: true, message: "请选择产品", trigger: "blur"}], productId: [{ required: true, message: "请选择产品", trigger: "blur" }],
}, },
}; };
}, },
...@@ -252,13 +270,14 @@ export default { ...@@ -252,13 +270,14 @@ export default {
this.form.productCode = this.dict.productCode[val]; this.form.productCode = this.dict.productCode[val];
}, },
skinSelect(val) { skinSelect(val) {
this.form.skinName = this.form.skinName = this.dict.skinProductCodeMap[this.form.productCode][
this.dict.skinProductCodeMap[this.form.productCode][val]; val
];
}, },
/** 编辑 */ /** 编辑 */
edit(row) { edit(row) {
this.reset(); this.reset();
this.query = {id: row.id}; this.query = { id: row.id };
this.urls.currUrl = "/device/edit"; this.urls.currUrl = "/device/edit";
this.siteName = row.siteName; this.siteName = row.siteName;
this.siteCode = row.siteCode; this.siteCode = row.siteCode;
...@@ -280,7 +299,7 @@ export default { ...@@ -280,7 +299,7 @@ export default {
/** 查看*/ /** 查看*/
view(row) { view(row) {
this.reset(); this.reset();
this.query = {id: row.id}; this.query = { id: row.id };
this.urls.currUrl = "/device/view"; this.urls.currUrl = "/device/view";
this.getData(); this.getData();
this.pageInfo.type = "view"; this.pageInfo.type = "view";
...@@ -314,8 +333,7 @@ export default { ...@@ -314,8 +333,7 @@ export default {
this.$refs[refName].resetFields(); this.$refs[refName].resetFields();
} }
}, },
handleClose() { handleClose() {},
},
}, },
}; };
</script> </script>
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-tabs style="margin-left: 10px" v-model="activeName"> <el-tabs style="margin-left: 10px" v-model="activeName">
<el-tab-pane label="设备详情" name="deviceDetail"> <el-tab-pane label="设备详情" name="deviceDetail">
<view-show :form="viewInfo" :dict="dict" /> <view-show :siteInfo="siteInfo" :form="viewInfo" :dict="dict" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="告警记录" name="alarmLog"> <el-tab-pane label="告警记录" name="alarmLog">
<alarm-list :queryIn="{ alarmDevice: form.id }" /> <alarm-list :queryIn="{ alarmDevice: form.id }" />
...@@ -42,6 +42,13 @@ export default { ...@@ -42,6 +42,13 @@ export default {
alarmList, alarmList,
moduleList, moduleList,
}, },
props: {
siteInfo: {
type: Object,
required: true,
default: () => {},
},
},
data() { data() {
return { return {
activeName: "deviceDetail", activeName: "deviceDetail",
......
...@@ -254,7 +254,7 @@ ...@@ -254,7 +254,7 @@
<drawer-show ref="drawerform" @ok="getData" /> <drawer-show ref="drawerform" @ok="getData" />
<drawer-view ref="drawerViewform" @ok="getData" /> <drawer-view ref="drawerViewform" :siteInfo="siteInfo" @ok="getData" />
</div> </div>
</template> </template>
...@@ -310,7 +310,7 @@ export default { ...@@ -310,7 +310,7 @@ export default {
siteId: null, siteId: null,
siteName: "", siteName: "",
siteCode: "", siteCode: "",
siteInfo: {},
updateSiteId: null, updateSiteId: null,
updateSiteName: "", updateSiteName: "",
updateSiteCode: "", updateSiteCode: "",
...@@ -476,6 +476,7 @@ export default { ...@@ -476,6 +476,7 @@ export default {
//this.info=res.data //this.info=res.data
this.siteName = res.data.siteName; this.siteName = res.data.siteName;
this.siteCode = res.data.siteCode; this.siteCode = res.data.siteCode;
this.siteInfo = res.data;
} }
}) })
.catch((error) => { .catch((error) => {
......
...@@ -102,7 +102,7 @@ ...@@ -102,7 +102,7 @@
{{ form.lon }} {{ form.lon }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item <el-descriptions-item
label="度" label="度"
label-class-name="labelClass" label-class-name="labelClass"
content-class-name="contentClass" content-class-name="contentClass"
> >
...@@ -231,7 +231,27 @@ ...@@ -231,7 +231,27 @@
设备位置 设备位置
</template> </template>
</el-descriptions> </el-descriptions>
<Map></Map> <!-- <Map></Map> -->
<div class="map">
<el-amap
vid="amaps"
:zoom="20"
viewMode="3D"
expandZoomRange
:center="[siteInfo.longitude, siteInfo.latitude]"
>
<el-amap-marker
vid="2"
topWhenClick
:label="{
content: `我在${siteInfo.detailAddress}`,
offset: [0, -20],
}"
:position="[siteInfo.longitude, siteInfo.latitude]"
:icon="require('@/assets/images/d.png')"
></el-amap-marker>
</el-amap>
</div>
</layout-view> </layout-view>
</template> </template>
...@@ -248,6 +268,11 @@ export default { ...@@ -248,6 +268,11 @@ export default {
type: Object, type: Object,
default: null, default: null,
}, },
siteInfo: {
type: Object,
required: true,
default: () => {},
},
}, },
components: {}, components: {},
created() {}, created() {},
...@@ -326,4 +351,8 @@ export default { ...@@ -326,4 +351,8 @@ export default {
.contentClass { .contentClass {
width: 600px; width: 600px;
} }
.map {
width: 100%;
height: 600px;
}
</style> </style>
...@@ -139,7 +139,7 @@ ...@@ -139,7 +139,7 @@
<el-divider></el-divider> <el-divider></el-divider>
<el-row <el-row
v-for="(v, index) in tableData.data" v-for="(v, index) in productList.data"
:key="index" :key="index"
type="flex" type="flex"
style="border-bottom: 1px solid #e8eaec; padding: 10px" style="border-bottom: 1px solid #e8eaec; padding: 10px"
...@@ -245,6 +245,7 @@ export default { ...@@ -245,6 +245,7 @@ export default {
}); });
}, },
switchChange(val) { switchChange(val) {
this.$forceUpdate();
let arr = []; let arr = [];
for (let item in this.items) { for (let item in this.items) {
if (this.items[item] && this.items[item] != 0) if (this.items[item] && this.items[item] != 0)
...@@ -258,6 +259,7 @@ export default { ...@@ -258,6 +259,7 @@ export default {
afterRender(data) { afterRender(data) {
if (!this.sync) { if (!this.sync) {
this.$nextTick(() => { this.$nextTick(() => {
this.productList = data;
let count = 0; let count = 0;
for (let i of data.data) { for (let i of data.data) {
this.items[count] = i.productId + ""; this.items[count] = i.productId + "";
...@@ -298,6 +300,7 @@ export default { ...@@ -298,6 +300,7 @@ export default {
data() { data() {
return { return {
originData: [], originData: [],
productList: [],
value1: 1, value1: 1,
sync: false, sync: false,
// 用户导入参数 // 用户导入参数
......
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