施工预警系统部分页面搭建完善

This commit is contained in:
FrancisHu 2024-09-10 18:10:06 +08:00
parent e45db05d72
commit 04313fa78a
17 changed files with 604 additions and 96 deletions

195
package-lock.json generated
View File

@ -93,6 +93,166 @@
}
}
},
"@interactjs/actions": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/actions/-/actions-1.10.2.tgz",
"integrity": "sha512-BHJcW84WCMf/LsKmha/1Yog7aH3+QBXbLvowvZvwYvgjdUIb3xCa1a7FUYXuWAeKNMyKPVjFun+WPce75B+1tA==",
"requires": {
"@interactjs/interact": "1.10.2"
}
},
"@interactjs/arrange": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/arrange/-/arrange-1.10.2.tgz",
"integrity": "sha512-pPLA9o4RWMFN0VfalklOFSRLL4WqqXcD9no4XEuqV00goZPCxLBbMTztaWwnutlRy7evtOhUjUH+pZVsS+dZ4Q=="
},
"@interactjs/auto-scroll": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/auto-scroll/-/auto-scroll-1.10.2.tgz",
"integrity": "sha512-yYqzOawwvWd1NNnlqZdzrXoOMFafQ2/ws85erpJqdaNMQE221z2uP+QYhFRLQRgYUlTbHFfmjDpzhuJgq4uA8Q==",
"requires": {
"@interactjs/interact": "1.10.2"
}
},
"@interactjs/auto-start": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/auto-start/-/auto-start-1.10.2.tgz",
"integrity": "sha512-nZudj8VzJzz+uEyDHqXwtKpvUYr+Oj1+xBrJEu21CywroHQWM2J4fCIiCgeCo3d5/p/TrzFk5b+YfAWePKiLxA==",
"requires": {
"@interactjs/interact": "1.10.2"
}
},
"@interactjs/clone": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/clone/-/clone-1.10.2.tgz",
"integrity": "sha512-XzA8BRHSCwvysOegZ1kopg+IJF3erh4qzY6DRoZsIJovKAXawoa176E58IAzDbgYPJ2yoaSGT+XyzT2C0wa3pQ=="
},
"@interactjs/core": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/core/-/core-1.10.2.tgz",
"integrity": "sha512-SA5KRGo+gFJOhBj1Z2dLHhAf0/2nyHNd4SQ460aIQ3jj/QhqbJW6kGzmh7hBa2FzVGgxLhcQu7NZaP4rnDfUNw=="
},
"@interactjs/dev-tools": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/dev-tools/-/dev-tools-1.10.2.tgz",
"integrity": "sha512-aAd9NgTAGA3yVdFCYcAAYrM4TYQFuVqEvsF+xj+g5SlGyrJ7+GTjPZ2rScOyAsABY4Tz64L2pXvWmXMG87dncA==",
"requires": {
"@interactjs/interact": "1.10.2",
"@interactjs/utils": "1.10.2"
}
},
"@interactjs/feedback": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/feedback/-/feedback-1.10.2.tgz",
"integrity": "sha512-XlcoICGrFeUwwRtDgOpstOOvlU42WZoEg7gJHK3LwF7j0IctPd1+3blXofFlBeVvodle8MvUMepm5CRXz741fA=="
},
"@interactjs/inertia": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/inertia/-/inertia-1.10.2.tgz",
"integrity": "sha512-ZmN1joN6J36Q6SOp3V0iZOisXZOBMSAUj0STo8wbwCKy7K8IrC9vjUBbO2JM52cT6o7hg5ebHsp5c8FrebSHlg==",
"requires": {
"@interactjs/interact": "1.10.2",
"@interactjs/offset": "1.10.2"
}
},
"@interactjs/interact": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/interact/-/interact-1.10.2.tgz",
"integrity": "sha512-Ms5uVCY9IobVYpQyBnBdkP6Bk6iDY7TkC7GupsdUPUxzAvYSQCTEAGr/1PwxSrSS6dN/8O8TuyUWPbCaylr/JA==",
"requires": {
"@interactjs/core": "1.10.2",
"@interactjs/types": "1.10.2",
"@interactjs/utils": "1.10.2"
}
},
"@interactjs/interactjs": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/interactjs/-/interactjs-1.10.2.tgz",
"integrity": "sha512-OwLl70af6lfZOOg/bvWKSNm1DS1nDI72QnzDYljSKfc2D8stqLIGDO1wPY2rhZudUG5q3t50EhmMUQF76yll/g==",
"requires": {
"@interactjs/actions": "1.10.2",
"@interactjs/arrange": "1.10.2",
"@interactjs/auto-scroll": "1.10.2",
"@interactjs/auto-start": "1.10.2",
"@interactjs/clone": "1.10.2",
"@interactjs/core": "1.10.2",
"@interactjs/dev-tools": "1.10.2",
"@interactjs/feedback": "1.10.2",
"@interactjs/inertia": "1.10.2",
"@interactjs/interact": "1.10.2",
"@interactjs/modifiers": "1.10.2",
"@interactjs/multi-target": "1.10.2",
"@interactjs/offset": "1.10.2",
"@interactjs/pointer-events": "1.10.2",
"@interactjs/react": "1.10.2",
"@interactjs/reflow": "1.10.2",
"@interactjs/utils": "1.10.2",
"@interactjs/vue": "1.10.2"
}
},
"@interactjs/modifiers": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/modifiers/-/modifiers-1.10.2.tgz",
"integrity": "sha512-3wYEucvZF2NTIslnVIKw5MWhkn9LM42cGCQaC19o3LZeWnbps7NnHJCyQp6zylJrCbwt7f+CSt4Oj2/s0f6XEA==",
"requires": {
"@interactjs/interact": "1.10.2",
"@interactjs/snappers": "1.10.2"
}
},
"@interactjs/multi-target": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/multi-target/-/multi-target-1.10.2.tgz",
"integrity": "sha512-O2GiIqgZBzjAVTOpL8doTnAcM9AtM3+H/Bb+An12wWKtNutVK7JbqUAO2nYueOk55/PP3yDLY9Qdr15RJns3lQ=="
},
"@interactjs/offset": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/offset/-/offset-1.10.2.tgz",
"integrity": "sha512-xLgQqinFUY7ZqSX9d9on7XRcxvQdHNEAktj2QFwxMsEwrA6zbKROpPVwt8WQ1yBAeJSFjgYGcmCMPW5K41dT0w==",
"requires": {
"@interactjs/interact": "1.10.2"
}
},
"@interactjs/pointer-events": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/pointer-events/-/pointer-events-1.10.2.tgz",
"integrity": "sha512-O8s3N399hkGIzWGlcJVy0LJyDn5YWDh6XKjyowh/QivtlZSWPY8eglmlN2uZX0lmiqUYghbKI4CpQYP/cE0ZDA==",
"requires": {
"@interactjs/interact": "1.10.2"
}
},
"@interactjs/react": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/react/-/react-1.10.2.tgz",
"integrity": "sha512-JXzPdANft+W2vq3SCSzprCwom5UuC8TaiAAhVdt8R+/P6xHbOeAX93XLS5YmDwT8e0Zh9J9jYvz55tkTdwjFZQ=="
},
"@interactjs/reflow": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/reflow/-/reflow-1.10.2.tgz",
"integrity": "sha512-pc6o6RRhSCYQC4auZexRb7z5FQkdSVev5HzlRfUAjfw4C076qgbcs63ESRKy4YXdSBtUTvARQZxpuWUNGquzJw==",
"requires": {
"@interactjs/interact": "1.10.2"
}
},
"@interactjs/snappers": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/snappers/-/snappers-1.10.2.tgz",
"integrity": "sha512-wQ41Vn5GRn6VavjIEUtTkd9d5QgdKgC4+CPW0fjKkiQclLBmaic7VibNETO8twN0Jx5e73EoPj9K2nAVHIA0hA=="
},
"@interactjs/types": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/types/-/types-1.10.2.tgz",
"integrity": "sha512-l0T1bU8OHRv716ztQOYwP+K7b/lA76C0T3r/cdabbUv6CKeAFdFRRFlmNxYOM36SxMGWAiq5VWrN3SeXlB7Fow=="
},
"@interactjs/utils": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/utils/-/utils-1.10.2.tgz",
"integrity": "sha512-sOr+pu7XGAN4qv+ikajMo3RJygbkbMLegmx0Tv5Qf6e80sF42FjkmHeMGuV7fL98nwat0VmDiWerOFBnKctXow=="
},
"@interactjs/vue": {
"version": "1.10.2",
"resolved": "https://registry.npmmirror.com/@interactjs/vue/-/vue-1.10.2.tgz",
"integrity": "sha512-msLdc42DFsCPQZt6YBGZrw8Ro23kQcNnj+iLz2OUQcOrp/lma7WjorUuAwwfyFna2DevLtiYlMLbT0dpO/cVhg=="
},
"@isaacs/cliui": {
"version": "8.0.2",
"resolved": "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz",
@ -1806,6 +1966,11 @@
"integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
"dev": true
},
"batch-processor": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/batch-processor/-/batch-processor-1.0.0.tgz",
"integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA=="
},
"bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
@ -4711,6 +4876,14 @@
"integrity": "sha512-d5rZRka9n2Y3MkWRN74IoAsxR0HK3yaAt7T50e3iT9VZmCCQDT3geXUO5ZRMhDToa1pkCeQXuNo+0g+NfDOVPA==",
"dev": true
},
"element-resize-detector": {
"version": "1.2.4",
"resolved": "https://registry.npmmirror.com/element-resize-detector/-/element-resize-detector-1.2.4.tgz",
"integrity": "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==",
"requires": {
"batch-processor": "1.0.0"
}
},
"element-ui": {
"version": "2.15.14",
"resolved": "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.14.tgz",
@ -16058,6 +16231,28 @@
"csstype": "^3.1.0"
}
},
"vue-drag-resize": {
"version": "1.5.4",
"resolved": "https://registry.npmmirror.com/vue-drag-resize/-/vue-drag-resize-1.5.4.tgz",
"integrity": "sha512-SR3U7n6TAZEBgP7zw7bR9mjtAlYBjqIoaWTDPz5HXN/nYhOxKSA31aD7p71fmq1jtyt9reAnCx62valNL9ZAcg==",
"requires": {
"vue-drag-resize": "^1.5.0-rc3"
}
},
"vue-grid-layout": {
"version": "2.4.0",
"resolved": "https://registry.npmmirror.com/vue-grid-layout/-/vue-grid-layout-2.4.0.tgz",
"integrity": "sha512-MRQVt1BdWDaPN4gKGEKOVVwiTyucqJhrGEyjiY9Muor+dzFFq4Hm0geSpYJpLvC1GLlTL8KWUwy0suKrHm+mqg==",
"requires": {
"@interactjs/actions": "1.10.2",
"@interactjs/auto-scroll": "1.10.2",
"@interactjs/auto-start": "1.10.2",
"@interactjs/dev-tools": "1.10.2",
"@interactjs/interactjs": "1.10.2",
"@interactjs/modifiers": "1.10.2",
"element-resize-detector": "^1.2.1"
}
},
"vue-hot-reload-api": {
"version": "2.3.4",
"resolved": "https://registry.npmmirror.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz",

View File

@ -29,6 +29,8 @@
"swiper": "^3.4.2",
"vant": "^2.12.21",
"vue": "^2.5.2",
"vue-drag-resize": "^1.5.4",
"vue-grid-layout": "^2.4.0",
"vue-router": "^3.0.1",
"vuex": "^3.6.2"
},
@ -58,7 +60,7 @@
"html-webpack-plugin": "^2.30.1",
"jest": "^22.0.4",
"jest-serializer-vue": "^0.3.0",
"less": "3.0.0",
"less": "^3.0.0",
"nightwatch": "^0.9.12",
"node-notifier": "^5.1.2",
"node-sass": "^4.14.1",

View File

@ -42,7 +42,7 @@ export default {
{ title: null, id: null },
{ title: null, id: null },
{ title: '线路', id: 3, path: '/line/index' },
{ title: '工作台', id: 4 },
{ title: '工作台', id: 4, path: '/workbench/index' },
],
currentIndex: this.indexCount
}

View File

@ -27,23 +27,64 @@
<el-form-item
label="设备名称"
prop="deviceName"
v-if="status <= 7"
>
<el-input
v-model="queryParams.deviceName"
placeholder="请输入设备名称"
clearable
style="width: 200px;"
style="width: 240px;"
/>
</el-form-item>
<el-form-item
label="设备编号"
prop="deviceCode"
v-if="status <= 7"
>
<el-input
v-model="queryParams.deviceCode"
placeholder="请输入设备编号"
clearable
style="width: 200px;"
style="width: 240px;"
/>
</el-form-item>
<el-form-item
label="工程名称"
prop="projName"
v-if="status > 7"
>
<el-input
v-model="queryParams.projName"
placeholder="请输入工程名称"
clearable
style="width: 240px;"
/>
</el-form-item>
<el-form-item
label="工程类型"
prop="projType"
v-if="status > 7 && status <= 10"
>
<el-input
v-model="queryParams.projType"
placeholder="请输入工程类型"
clearable
style="width: 240px;"
/>
</el-form-item>
<el-form-item
label="日期"
prop="date"
v-if="status > 10"
>
<el-date-picker
v-model="queryParams.date"
style="width: 240px"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
/>
</el-form-item>
<el-button
@ -119,7 +160,6 @@
</template>
<script>
import TableDialog from "../dialog/tableDialog.vue";
import Pagination from "../Pagination/index.vue";
import {
getMaterialReqDataApi,
@ -133,12 +173,12 @@ export default {
name: 'commonDialog',
components: {
Pagination,
TableDialog
},
data() {
return {
total: 0,
loading: false,
status: undefined,
queryParams: {
pageNum: 1,
pageSize: 10
@ -159,6 +199,7 @@ export default {
ddd,
setOpen(v) {
this.open = v.open
this.status = v.param.order
switch (v.param.order) {
case 1:
this.columnList = [
@ -240,19 +281,75 @@ export default {
this.currentFunc = this.ddd
this.getTableList(this.ddd)
break;
case 8:
this.columnList = [
{ t_props: 'name', t_label: '工程名称', },
{ t_props: 'vol', t_label: '电压等级', },
{ t_props: 'unit', t_label: '建管单位' },
{ t_props: 'type', t_label: '工程类型', },
{ t_props: 'status', t_label: '工程状态', },
]
this.currentFunc = this.ddd
this.getTableList(this.ddd)
break;
case 9:
this.columnList = [
{ t_props: 'name', t_label: '工程名称', },
{ t_props: 'vol', t_label: '电压等级', },
{ t_props: 'unit', t_label: '建管单位' },
{ t_props: 'type', t_label: '工程类型', },
{ t_props: 'status', t_label: '工程状态', },
]
this.currentFunc = this.ccc
this.getTableList(this.ccc)
break;
case 10:
this.columnList = [
{ t_props: 'name', t_label: '工程名称', },
{ t_props: 'vol', t_label: '电压等级', },
{ t_props: 'unit', t_label: '建管单位' },
{ t_props: 'type', t_label: '工程类型', },
{ t_props: 'status', t_label: '工程状态', },
]
this.currentFunc = this.bbb
this.getTableList(this.bbb)
break;
case 11:
this.columnList = [
{ t_props: 'name', t_label: '工程名称', },
{ t_props: 'vol', t_label: '预警时间', },
{ t_props: 'content', t_label: '预警内容' },
]
this.currentFunc = this.getMaterialReqDataApi
this.getTableList(this.getMaterialReqDataApi)
break;
case 12:
this.columnList = [
{ t_props: 'name', t_label: '工程名称', },
{ t_props: 'vol', t_label: '预警时间', },
{ t_props: 'content', t_label: '预警内容' },
]
this.currentFunc = this.getMaApi
this.getTableList(this.getMaApi)
break;
}
},
async getTableList(func) {
if(this.queryParams.date) {
this.queryParams.startTime = this.queryParams.date[0]
this.queryParams.endTime = this.queryParams.date[1]
delete this.queryParams.date
}
let res = await func(this.queryParams)
},
rowStyle(scope) {
if(scope.rowIndex % 2 === 0) {
return {
background: '#EAF5FF',
background: '#E1EEFF',
}
} else {
return {
background: '#E1EEFF',
background: '#EAF5FF',
}
}
},

View File

@ -49,6 +49,10 @@ export default {
},
sendNumber: {
type: Number
},
showLine: {
type: Boolean,
default: false
}
},
watch: {
@ -210,7 +214,7 @@ export default {
}
});
let mapData = [{
/*let mapData = [{
name: "青海省",
value: ['101.778', '36.623'], a: '100'
},
@ -224,7 +228,7 @@ export default {
{
name: '湖南省', value: ['112.982', '28.194'], a: '100'
}
]
]*/
let that = this
this.pointAll = this.cityCount
this.pointAll.push({
@ -385,7 +389,9 @@ export default {
layoutCenter: ['50%', '68%'],
itemStyle: {
normal: {
label: { show: false },
label: {
show: false
},
areaColor: this.sendMapColor, //
opacity: 1,
borderColor: '#174C95', //
@ -463,40 +469,24 @@ export default {
className: 'iconMap',
extraCssText: 'box-shadow: 0 0 3px rgba(0, 0, 0, 0);',
formatter: function (params) {
if (params.data) {
let companyHtml = ''
if (params.componentSubType === "scatter") {
let className = 'itemColor1 itemColor'
// that.companyList.forEach(item => {
// if (item.provinceId == params.data.areaId) {
// if (item.companyType == '') {
// className = 'itemColor1 itemColor'
// } else if (item.companyType == '') {
// className = 'itemColor2 itemColor'
// } else if (item.companyType == '') {
// className = 'itemColor3 itemColor'
// } else if (item.companyType == '') {
// className = 'itemColor4 itemColor'
// } else if (item.companyType == '') {
// className = 'itemColor5 itemColor'
// } else if (item.companyType == '') {
// className = 'itemColor6 itemColor'
// }
// companyHtml +=
// '<div class="' +
// className +
// '" style="overflow:hidden;text-overflow: ellipsis;white-space: nowrap;">' +
// item.companyName +
// '</div>'
// }
// })
let html = `
<div style="width:260px;height:180px;background: url(${imgUrl}) no-repeat; background-size:100% 100%; padding:10px 12px;position: relative;">
<div id="tooltipGB" style="position: absolute;cursor: pointer; width:30px;height:30px;line-height:30px;text-align:center;right:5px;top:5px;">X</div>
<div style="font-size: 14px; height: 20px;line-height:20px;">${params.data.areaName}</div>
<div class="scrollTooltip" style="margin-top:10px;height:130px; overflow-y:auto;">
<div style="white-space:normal;font-size: 12px;font-weight: 400; position:relative;">
${companyHtml}
</div>
<div
id="pop-tooltip"
style="
width:260px;height:140px;border-radius: 15px;
background: linear-gradient(to bottom, #4D8DFF, #57B9FF, #4D8DFF);
padding:12px;position: relative;display: flex;flex-direction: column;
"
>
<div id="tooltipGB" onclick="document.querySelector('#pop-tooltip').style.display = 'none'" style="position: absolute;cursor: pointer; width:30px;height:30px;line-height:30px;text-align:center;right:5px;top:5px;font-size: 20px;">x</div>
<div style="font-size: 18px; height: 20px;line-height:20px;">${params.data.name}工程</div>
<div class="scrollTooltip" style="margin-top:10px;flex: 1; overflow-y:auto;white-space:normal;font-size: 16px;font-weight: 400; position:relative; display: flex; flex-direction: column; justify-content: space-around;">
<span style="padding-bottom: 5px">所绑定感知设备xx类</span>
<span style="padding-bottom: 5px">xxxx设备</span>
<span style="padding-bottom: 5px">所绑定感知设备xxx个</span>
<span style="padding-bottom: 5px">设备运行正常-xx个设备数据异常</span>
</div>
</div>`
return html
@ -515,13 +505,18 @@ export default {
series: [
{
type: 'scatter', //
map: mapData,
map: this.geoVal || [],
roam: false,
coordinateSystem: 'geo', //使
zlevel: 1,
symbolSize: [45, 55],
symbol: (value, params) => {
if (params.name == '安徽省') {
if (params.data.isActive) {
return 'image://' + require('@/assets/img/myImage/point_on.png')
} else {
return 'image://' + require('@/assets/img/myImage/point.png')
}
/*if (params.name == '') {
return 'image://' + require('@/assets/img/myImage/markPoints.png')
}
if (params.name == '湖南省') {
@ -532,7 +527,7 @@ export default {
}
if (params.name == '青海省') {
return 'image://' + require('@/assets/img/myImage/markPoints.png')
}
}*/
},
emphasis: {
scale: false,
@ -541,14 +536,14 @@ export default {
label: {
normal: {
show: true,
color: '#7CC3FF',
color: '#8304f8',
fontSize: 16,
fontFamily: 'cursive',
fontWeight: 'bold',
position: 'top',
padding: [0, 0, -15, 0],
padding: [0, 0, -10, 0],
formatter: function (params) {
return params.data.count
return params.data.name + '杆塔'
}
}
},
@ -557,7 +552,7 @@ export default {
color: '#fff'
}
},
data: mapData || []
data: this.geoVal || []
},
/*{
name: "lines",
@ -638,7 +633,7 @@ export default {
]
}
// 线
if(this.geoVal) {
if(this.geoVal && this.showLine) {
for(let i = 0; i < this.geoVal.length; i++) {
if(i !== this.geoVal.length - 1) {
echartOption.series.push({
@ -673,8 +668,8 @@ export default {
fromName: this.geoVal[i].name,
toName: this.geoVal[i + 1].name,
coords: [
this.geoVal[i].geo,
this.geoVal[i + 1].geo
this.geoVal[i].value,
this.geoVal[i + 1].value
]
}],
})
@ -706,8 +701,22 @@ export default {
})
this.mapEcharts.on('click', function (params) {
console.log(that.sendNumber)
if (params.seriesType === 'scatter' && !params.name) {
if(params.componentSubType === "scatter") {
let option = that.mapEcharts.getOption() //option
//
option.series[0].data.forEach(item => {
if (params.data.name !== item.name) {
if (item.isActive) {
item.isActive = false
}
} else {
item.isActive = true
}
})
that.mapEcharts.setOption(option)
that.$emit('closeMap', { value: params.data })
}
/*if (params.seriesType === 'scatter' && !params.name) {
let option = that.mapEcharts.getOption() //option
//
option.series[0].data.forEach(item => {
@ -747,9 +756,9 @@ export default {
let dom2 = document.getElementsByClassName('iconMap')
dom2[0].style.display = 'none'
that.mapEcharts.setOption(option)
}
}*/
})
let set = event => {
/*let set = event => {
this.pointAll.forEach((v, i) => {
if (v.areaName != event.data.areaName) {
if (v.isActive) {
@ -759,7 +768,7 @@ export default {
v.isActive = true
}
})
}
}*/
},
setMapOption2() {

View File

@ -5,14 +5,21 @@
工程信息
</div>
<div class="proj-infos">
<div class="info-lef">
<div
class="info-lef"
style="cursor: pointer;"
@click="toggleDialog(8)"
>
<div class="lef-upper">236</div>
<div class="lef-lower">工程总数</div>
</div>
<div class="info-rig">
<div class="bars">
<img src="../../assets/img/proj-spin.png" alt="">
<div>
<div
style="cursor: pointer"
@click="toggleDialog(9)"
>
<span style="font-size: 22px; color: #1791C7">35346</span>
<div id="change-bar"></div>
<span>变电工程数</span>
@ -20,7 +27,10 @@
</div>
<div class="bars">
<img src="../../assets/img/proj-spin.png" alt="">
<div>
<div
style="cursor: pointer"
@click="toggleDialog(10)"
>
<span style="font-size: 22px; color: #1791C7">35346</span>
<div id="line-bar"></div>
<span>线路工程数</span>
@ -65,6 +75,9 @@ export default {
this.$eventBus.$off('maType');
},
methods: {
toggleDialog(v) {
this.$emit('openDialog', { order: v })
},
getScrapAnalysisByMonthApiPage() {
let params = {
maType: this.maType

View File

@ -1,8 +1,14 @@
<template>
<div class="risk-warn-page">
<div class="inner-tit">
<img src="../../assets/img/lef-badge.png" alt="">
安全隐患预测预警
<div>
<img src="../../assets/img/lef-badge.png" alt="">
安全隐患预测预警
</div>
<span
style="cursor: pointer"
@click="toggleDialog(11)"
>更多</span>
</div>
<div class="risk-table">
<el-table
@ -100,6 +106,9 @@ export default {
this.$eventBus.$off('maType');
},
methods: {
toggleDialog(v) {
this.$emit('openDialog', { order: v })
},
rowStyle(scope) {
if(scope.rowIndex % 2 === 0) {
return {
@ -519,6 +528,7 @@ export default {
background-color: #EFF4FE;
display: flex;
align-items: center;
justify-content: space-between;
color: #000;
font-size: 20px;
font-family: 'YouShe', sans-serif;
@ -528,9 +538,9 @@ export default {
2px 2px 2px #F8F9FE;
margin-bottom: 15px;
img{
span{
margin-right: 10px;
color: #757B87;
}

View File

@ -1,8 +1,14 @@
<template>
<div class="build-risk-page">
<div class="inner-tit">
<img src="../../assets/img/lef-badge.png" alt="">
施工风险实时报警
<div>
<img src="../../assets/img/lef-badge.png" alt="">
安全隐患预测预警
</div>
<span
style="cursor: pointer"
@click="toggleDialog(12)"
>更多</span>
</div>
<div class="build-table">
<el-table
@ -100,6 +106,9 @@ export default {
this.$eventBus.$off('maType');
},
methods: {
toggleDialog(v) {
this.$emit('openDialog', { order: v })
},
rowStyle(scope) {
if(scope.rowIndex % 2 === 0) {
return {
@ -157,6 +166,7 @@ export default {
padding: 10px 20px;
background-color: #EFF4FE;
display: flex;
justify-content: space-between;
align-items: center;
color: #000;
font-size: 20px;
@ -167,9 +177,9 @@ export default {
2px 2px 2px #F8F9FE;
margin-bottom: 15px;
img{
span{
margin-right: 10px;
color: #757B87;
}

View File

@ -122,6 +122,12 @@ import * as echarts from 'echarts'
export default {
components: {
},
props: {
sendMsg: {
type: Object,
default: null
}
},
name: 'manDetect',
data() {
@ -167,6 +173,7 @@ export default {
},
mounted() {
console.log(this.sendMsg)
this.generateCharts()
},
methods: {

View File

@ -2,7 +2,7 @@
<div class="hole-page">
<div class="crew">
<el-input
placeholder="请输入内容"
placeholder="请输入人员名"
suffix-icon="el-icon-search"
v-model="crewIpt"
style="margin-bottom: 20px"
@ -11,7 +11,7 @@
<div class="sel-top">班组人员</div>
<el-collapse v-model="activeCrew">
<el-collapse-item
v-for="group in crewList"
v-for="group in searchCrew"
:key="group.id"
:name="group.id"
>
@ -97,6 +97,12 @@
export default {
components: {
},
props: {
sendMsg: {
type: Object,
default: null
}
},
name: 'manDetect',
data() {
@ -155,10 +161,11 @@ export default {
if(!this.crewIpt) {
return this.crewList
} else {
let filtered = this.crewList.map(item => {
return item.children.filter(subItem => subItem.name.includes(this.crewIpt))
})
return filtered
return this.crewList.map(item => ({
id: item.id,
crew: item.crew,
children: item.children.filter(child => child.name.includes(this.crewIpt))
}))
}
}
},
@ -167,6 +174,7 @@ export default {
},
mounted() {
console.log(this.sendMsg)
this.createMap()
},
methods: {

View File

@ -158,6 +158,12 @@ import * as echarts from 'echarts'
export default {
components: {
},
props: {
sendMsg: {
type: Object,
default: null
}
},
name: 'pitDetect',
data() {
@ -194,6 +200,7 @@ export default {
},
mounted() {
console.log(this.sendMsg)
this.generateCharts()
},
methods: {

View File

@ -197,6 +197,12 @@
export default {
components: {
},
props: {
sendMsg: {
type: Object,
default: null
}
},
name: 'towerDetect',
data() {
@ -260,7 +266,7 @@ export default {
},
mounted() {
console.log(this.sendMsg)
},
methods: {
selTower(val) {

View File

@ -0,0 +1,42 @@
<template>
<div class="drag-area">
</div>
</template>
<script >
export default {
name: 'gridLayout',
components: {
},
data() {
return {
width: 0,
height: 0,
top: 0,
left: 0
}
},
methods: {
resize(newRect) {
this.width = newRect.width;
this.height = newRect.height;
this.top = newRect.top;
this.left = newRect.left;
}
}
}
</script>
<style scoped lang="less">
.drag-area{
width: 100%;
height: 100%;
background-color: red;
}
</style>

View File

@ -12,6 +12,7 @@ const Layout = () => import('@/views/layout');
const Home = () => import('@/views/Home/index');
const Substation = () => import('@/views/substation/index');
const Line = () => import('@/views/line/index');
const Workbench = () => import('@/views/workbench/index');
const Login = () => import('@/views/Login/index');
const routes = [
{
@ -63,6 +64,15 @@ const routes = [
requireLoginAuth: true,
},
},
{
path: '/workbench/index',
component: Workbench,
name: 'Workbench',
meta: {
title: '工作台',
requireLoginAuth: true,
},
},
{
path: '/Login/index',
component: Login,

View File

@ -36,7 +36,7 @@
<div class="leftModuleBox">
<LeftOne @openDialog="handleDialog"></LeftOne>
<LeftTwo @openDialog="handleDialog"></LeftTwo>
<LeftThree></LeftThree>
<LeftThree @openDialog="handleDialog"></LeftThree>
<!-- <LeftFour></LeftFour>-->
</div>
@ -47,6 +47,7 @@
<!-- 宁夏地图 -->
<CountryMap
:send-height="'627px'"
:send-geo="geoData"
></CountryMap>
<!-- 重庆地图 -->
<!-- <Center3DMap></Center3DMap>-->
@ -75,8 +76,8 @@
</div>
<!-- 右侧数据模块列表 -->
<div class="rightModuleBox">
<RightOne></RightOne>
<rightTwo></rightTwo>
<RightOne @openDialog="handleDialog"></RightOne>
<rightTwo @openDialog="handleDialog"></rightTwo>
<!-- <rightThree></rightThree>-->
<!-- <LeftThree></LeftThree>-->
<!-- <RightFour></RightFour> -->
@ -176,7 +177,7 @@ export default {
//
transformList: [],
currentIndex: 1,
showDialog: true,
geoData: undefined
}
},
created() {
@ -209,6 +210,14 @@ export default {
this.transformList = res.data
})*/
this.geoData = [
{ name: '北京市', itemStyle: { normal: { areaColor: '#7DDEFF' } }, value: [116.407526, 39.90403] },
{ name: '上海市', itemStyle: { normal: { areaColor: '#7DDEFF' } }, value: [121.473701, 31.230416] },
{ name: '云南省', itemStyle: { normal: { areaColor: '#7DDEFF' } }, value: [102.103365, 24.235567] },
{ name: '陕西省', itemStyle: { normal: { areaColor: '#7DDEFF' } }, value: [108.551244, 34.150234] },
{ name: '新疆维吾尔自治区', itemStyle: { normal: { areaColor: '#7DDEFF' } }, value: [87.627704, 43.793026] },
]
},
methods: {
handleDialog(val) {

View File

@ -62,6 +62,8 @@
:send-height="'940px'"
send-map-color="#e2e2e2"
:send-geo="geoData"
:show-line="true"
@closeMap="handleCloseMap"
>
</country-map>
<!-- <province-map
@ -74,10 +76,22 @@
class="rig-components"
v-if="showLefSec"
>
<man-detect v-if="currentLefIndex === 1"></man-detect>
<envir-detect v-if="currentLefIndex === 2"></envir-detect>
<tower-detect v-if="currentLefIndex === 3"></tower-detect>
<pit-detect v-if="currentLefIndex === 4"></pit-detect>
<man-detect
v-if="currentLefIndex === 1"
:send-msg="lefSendMsg"
></man-detect>
<envir-detect
v-if="currentLefIndex === 2"
:send-msg="lefSendMsg"
></envir-detect>
<tower-detect
v-if="currentLefIndex === 3"
:send-msg="lefSendMsg"
></tower-detect>
<pit-detect
v-if="currentLefIndex === 4"
:send-msg="lefSendMsg"
></pit-detect>
</div>
</div>
</div>
@ -145,8 +159,8 @@ export default {
itemStyle: { normal: { areaColor: '#7DDEFF' } }
},
],*/
geoData: undefined
geoData: undefined,
lefSendMsg: undefined
}
},
computed: {
@ -186,20 +200,20 @@ export default {
switch (this.currentProjIndex) {
case 1:
this.geoData = [
{ name: '北京市', itemStyle: { normal: { areaColor: '#7DDEFF' } }, geo: [116.407526, 39.90403] },
{ name: '上海市', itemStyle: { normal: { areaColor: '#7DDEFF' } }, geo: [121.473701, 31.230416] },
{ name: '云南省', itemStyle: { normal: { areaColor: '#7DDEFF' } }, geo: [102.103365, 24.235567] },
{ name: '陕西省', itemStyle: { normal: { areaColor: '#7DDEFF' } }, geo: [108.551244, 34.150234] },
{ name: '新疆维吾尔自治区', itemStyle: { normal: { areaColor: '#7DDEFF' } }, geo: [87.627704, 43.793026] },
{ name: '北京市', itemStyle: { normal: { areaColor: '#7DDEFF' } }, value: [116.407526, 39.90403] },
{ name: '上海市', itemStyle: { normal: { areaColor: '#7DDEFF' } }, value: [121.473701, 31.230416] },
{ name: '云南省', itemStyle: { normal: { areaColor: '#7DDEFF' } }, value: [102.103365, 24.235567] },
{ name: '陕西省', itemStyle: { normal: { areaColor: '#7DDEFF' } }, value: [108.551244, 34.150234] },
{ name: '新疆维吾尔自治区', itemStyle: { normal: { areaColor: '#7DDEFF' } }, value: [87.627704, 43.793026] },
]
break;
case 2:
this.geoData = [
{ name: '北京市', itemStyle: { normal: { areaColor: '#7DDEFF' } }, geo: [106.407526, 37.90403] },
{ name: '上海市', itemStyle: { normal: { areaColor: '#FFD04C' } }, geo: [111.473701, 33.230416] },
{ name: '云南省', itemStyle: { normal: { areaColor: '#7DDEFF' } }, geo: [92.103365, 26.235567] },
{ name: '陕西省', itemStyle: { normal: { areaColor: '#FFD04C' } }, geo: [108.551244, 32.150234] },
{ name: '新疆维吾尔自治区', itemStyle: { normal: { areaColor: '#7DDEFF' } }, geo: [87.627704, 43.793026] },
{ name: '北京市', itemStyle: { normal: { areaColor: '#7DDEFF' } }, value: [106.407526, 37.90403] },
{ name: '上海市', itemStyle: { normal: { areaColor: '#FFD04C' } }, value: [111.473701, 33.230416] },
{ name: '云南省', itemStyle: { normal: { areaColor: '#7DDEFF' } }, value: [92.103365, 26.235567] },
{ name: '陕西省', itemStyle: { normal: { areaColor: '#FFD04C' } }, value: [108.551244, 32.150234] },
{ name: '新疆维吾尔自治区', itemStyle: { normal: { areaColor: '#7DDEFF' } }, value: [87.627704, 43.793026] },
]
break;
}
@ -212,12 +226,20 @@ export default {
this.currentLefIndex = val.id
},
clickCountry() {
this.geoData = []
this.showProjSec = true
this.showLefSec = false
this.currentLefIndex = undefined
this.currentProjIndex = undefined
this.currentCountryIndex = undefined
this.sendMap = 1
},
handleCloseMap(val) {
console.log(val)
this.lefSendMsg = val
this.showProjSec = false
this.currentLefIndex = 1
this.showLefSec = true
}
}
}

View File

@ -0,0 +1,61 @@
<template>
<div class="homePage">
<global-bar
:index-count="currentIndex"
>
</global-bar>
<div class="page-cont">
<GridPage></GridPage>
</div>
</div>
</template>
<script>
import GlobalBar from '../../components/globalBar.vue'
import GridPage from '../../components/workbench/gridLayout.vue'
export default {
components: {
GlobalBar,
GridPage
},
name: 'workbench',
data() {
return {
currentIndex: 4
}
},
created() {
},
mounted() {
},
methods: {
}
}
</script>
<style lang='less' scoped>
.homePage {
width: 1920px;
height: 1080px;
background: url(../../assets/img/bgd.png) no-repeat center;
background-size: 100% 100%;
color: #fff;
position: relative;
.page-cont{
margin-top: 124px;
width: 100%;
height: 940px;
display: flex;
justify-content: space-between;
}
}
</style>