Browse Source

Merge branch 'dev' of http://git.elinkit.com.cn:7070/r/epmet-oper-gov into dev

shibei_master
jiangyy 4 years ago
parent
commit
2f9319762a
  1. BIN
      src/assets/img/aiaf-design/cheliu.png
  2. BIN
      src/assets/img/aiaf-design/gongdan.png
  3. BIN
      src/assets/img/aiaf-design/index.png
  4. BIN
      src/assets/img/aiaf-design/renliu.png
  5. BIN
      src/assets/img/aiaf-design/shebei-chongdianzhuang.png
  6. BIN
      src/assets/img/aiaf-design/shebei-denggan.png
  7. BIN
      src/assets/img/aiaf-design/shebei-fabu.png
  8. BIN
      src/assets/img/aiaf-design/shebei-jiankong.png
  9. BIN
      src/assets/img/aiaf-design/shebei-jinggai.png
  10. BIN
      src/assets/img/aiaf-design/shebei-kakou.png
  11. BIN
      src/assets/img/aiaf-design/shebei-laoren.png
  12. BIN
      src/assets/img/aiaf-design/shebei-menjin.png
  13. BIN
      src/assets/img/aiaf-design/shebei.png
  14. BIN
      src/assets/img/aiaf-design/yujing-alert.png
  15. BIN
      src/assets/img/aiaf-design/yujing.png
  16. 42
      src/assets/scss/modules/ai/index.scss
  17. 38
      src/router/index.js
  18. 103
      src/views/modules/base/community/communityTable.vue
  19. 131
      src/views/modules/base/resi.vue
  20. 65
      src/views/modules/communityService/sqzzz/index.vue
  21. 22
      src/views/modules/visual/ai/cheliu.vue
  22. 22
      src/views/modules/visual/ai/gongdan.vue
  23. 22
      src/views/modules/visual/ai/index.vue
  24. 22
      src/views/modules/visual/ai/renliu.vue
  25. 44
      src/views/modules/visual/ai/shebei.vue
  26. 22
      src/views/modules/visual/ai/yujing.vue
  27. 25
      src/views/modules/visual/communityParty/community.vue
  28. 2
      src/views/modules/visual/communityParty/elegant.vue
  29. 3
      src/views/modules/visual/communityParty/elegantInfo.vue

BIN
src/assets/img/aiaf-design/cheliu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/gongdan.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 MiB

BIN
src/assets/img/aiaf-design/index.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/renliu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/shebei-chongdianzhuang.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/shebei-denggan.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/shebei-fabu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/shebei-jiankong.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/shebei-jinggai.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/shebei-kakou.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/shebei-laoren.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/shebei-menjin.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/shebei.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

BIN
src/assets/img/aiaf-design/yujing-alert.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 MiB

BIN
src/assets/img/aiaf-design/yujing.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 MiB

42
src/assets/scss/modules/ai/index.scss

@ -0,0 +1,42 @@
@import "../../c/config";
@import "../../c/function";
.m-design {
img {
display: block;
width: 100%;
}
}
.m-sidebar {
position: fixed;
right: 0;
top: 50%;
transform: translateY(-50%);
width: 100px;
.wrap {
background-color: rgba(#037, 0.6);
transform: translateX(50px);
transition: all ease 0.3s;
cursor: pointer;
border-radius: 4px;
box-shadow: 0 0 10px 1px #fff;
&:hover {
transform: translateX(0);
background-color: rgba(#037, 0.9);
}
.nav {
color: rgba(#fff, 0.8);
text-align: center;
font-size: 14px;
line-height: 40px;
&:hover {
color: #fff;
}
&.z-on {
color: #ffa;
font-weight: bold;
}
}
}
}

38
src/router/index.js

@ -282,6 +282,44 @@ router.beforeEach((to, from, next) => {
url: "visual/heart/index",
children: [],
},
// {
// icon: "icon-setting",
// id: "44rq22222q2222",
// name: "AI安防",
// // url: "visual/basicinfo/basicInfoMain",
// children: [
// {
// url: "/visual/ai/index",
// name: "AI安防",
// id: "5feawfwa111111efwa57",
// },
// {
// url: "/visual/ai/renliu",
// name: "人流数据",
// id: "5fwaefwae222112fawef58",
// },
// {
// url: "/visual/ai/cheliu",
// name: "车流数据",
// id: "erawerwecsxefwaw",
// },
// {
// url: "/visual/ai/shebei",
// name: "设备数据",
// id: "zfzffewaf",
// },
// {
// url: "/visual/ai/gongdan",
// name: "工单数据",
// id: "fewafwafewaefddd",
// },
// {
// url: "/visual/ai/yujing",
// name: "预警事件",
// id: "545345fdsfs",
// },
// ],
// },
];
fnAddDynamicMenuRoutes2(window.SITE_CONFIG["menuShujuList"]);

103
src/views/modules/base/community/communityTable.vue

@ -109,12 +109,18 @@
</div>
<div class="div_table">
<el-table :data="tableData"
<el-table ref="ref_table"
:data="tableData"
border
:height="tableHeight"
v-loading="tableLoading"
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}"
style="width: 100%">
style="width: 100%"
@select-all="selectAll"
@selection-change="selectionChange">
<el-table-column type="selection"
width="55">
</el-table-column>
<el-table-column prop="neighborHoodName"
label="小区名称"
min-width="100">
@ -173,6 +179,16 @@
:total="total">
</el-pagination>
</div>
<div class="div_del">
<el-checkbox :indeterminate="isIndeterminate"
v-model="selAllFlag"
@change="handleSelectAll">全选</el-checkbox>
<el-button style="margin-left:15px"
type="red"
size="small"
@click="deleteBatch">删除</el-button>
</div>
</div>
<!-- 修改弹出框 -->
@ -210,11 +226,14 @@ export default {
pageSize: 20,
pageNo: 0,
tableLoading: true,
selAllFlag: false,
isIndeterminate: false,//
agencyObj: {},//
ownerName: '',
ownerPhone: '',
tableData: [],
selection: [],
//form
formShow: false,
@ -244,7 +263,61 @@ export default {
...mapGetters(['clientHeight'])
},
methods: {
handleSelectAll (selectAllFlag) {
this.$refs.ref_table.clearSelection();
if (selectAllFlag) {
this.tableData.forEach(row => {
this.$refs.ref_table.toggleRowSelection(row);
});
}
},
deleteBatch () {
if (this.selection.length > 0) {
this.$confirm("确认删除选择的小区?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.deleteCommunityBatch()
})
.catch(err => {
if (err == "cancel") {
// this.$message({
// type: "info",
// message: ""
// });
}
});
} else {
this.$message.warning('请先选择要删除的小区')
}
},
selectAll (selection) {
this.selection = selection
if (selection.length > 0) {
this.selAllFlag = true
} else {
this.selAllFlag = false
}
},
selectionChange (selection) {
this.selection = selection
if (selection.length === this.tableData.length) {
this.selAllFlag = true
this.isIndeterminate = false
} else if (selection.length > 0) {
this.selAllFlag = false
this.isIndeterminate = true
} else {
this.selAllFlag = false
this.isIndeterminate = false
}
},
handleSearch () {
this.loadTable()
},
@ -339,6 +412,26 @@ export default {
});
},
async deleteCommunityBatch () {
const url = "/gov/org/neighborhood/neighborhooddel"
let params = {
neighborHoodId: row.neighborHoodId
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.$message({
type: "success",
message: "删除成功"
});
this.$emit('refreshTree')
this.loadTable()
} else {
this.$message.error(msg)
}
},
async deleteCommunity (row) {
const url = "/gov/org/neighborhood/neighborhooddel"
@ -610,6 +703,12 @@ export default {
.div_table {
margin-top: 20px;
position: relative;
}
.div_del {
position: absolute;
left: 10px;
bottom: 0;
}
.div_search {
display: flex;

131
src/views/modules/base/resi.vue

@ -32,11 +32,15 @@
</el-upload>
</div>
<el-table :data="tableData"
<el-table ref="ref_table" :data="tableData"
v-loading="tableLoading"
border
style="width: 100%"
class="resi-table">
class="resi-table"
@select-all="selectAll"
@selection-change="selectionChange">
<el-table-column type="selection"
width="55" />
<el-table-column label="序号"
type="index"
align="center"
@ -86,15 +90,27 @@
</template>
</el-table-column>
</el-table>
<div>
<el-pagination @size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="currentPage"
:page-sizes="[20, 50, 100, 200]"
:page-size="pageSize"
layout="sizes, prev, pager, next"
:total="total">
</el-pagination>
<div class="div-flex">
<div class="div_del">
<el-checkbox :indeterminate="isIndeterminate"
v-model="selAllFlag"
@change="handleSelectAll">全选</el-checkbox>
<el-button style="margin-left:15px"
type="danger"
size="small"
@click="deleteBatch">删除</el-button>
</div>
<div>
<el-pagination @size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="currentPage"
:page-sizes="[20, 50, 100, 200]"
:page-size="pageSize"
layout="sizes, prev, pager, next, total"
:total="total">
</el-pagination>
</div>
</div>
</el-card>
@ -240,6 +256,8 @@ export default {
btnLoading: false,
disabled: false,
pageLoading: false,
selAllFlag: false,
isIndeterminate: false,
dialogEditVisible: false,
dialogVisible: false,
uploadUlr: window.SITE_CONFIG['apiURL'] + '/epmetuser/icresiuser/importExcel',
@ -262,6 +280,7 @@ export default {
formList: [],
tableHeader: [],
tabsList: [],
selection: [],
defaultCategotyKey: '',
@ -336,6 +355,61 @@ export default {
const { user } = this.$store.state
return id === user.agencyId
},
selectionChange (selection) {
this.selection = selection
if (selection.length === this.tableData.length) {
this.selAllFlag = true
this.isIndeterminate = false
} else if (selection.length > 0) {
this.selAllFlag = false
this.isIndeterminate = true
} else {
this.selAllFlag = false
this.isIndeterminate = false
}
},
handleSelectAll (selectAllFlag) {
this.$refs.ref_table.clearSelection();
if (selectAllFlag) {
this.tableData.forEach(row => {
this.$refs.ref_table.toggleRowSelection(row);
});
}
},
selectAll (selection) {
this.selection = selection
if (selection.length > 0) {
this.selAllFlag = true
} else {
this.selAllFlag = false
}
},
deleteBatch () {
if (this.selection.length > 0) {
this.$confirm("删除之后无法恢复,确认删除?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.deleteresiBatch()
})
.catch(err => {
if (err == "cancel") {
// this.$message({
// type: "info",
// message: ""
// });
}
});
} else {
this.$message.warning('请先选择要删除的小区')
}
},
handleSizeChange (val) {
console.log(`每页 ${val}`)
this.pageSize = val
@ -627,7 +701,7 @@ export default {
handleDel (row) {
let params = {
formCode: 'resi_base_info',
icResiUserId: row.icResiUserId
userIds: [row.icResiUserId]
}
console.log('row1', row)
this.$http
@ -926,7 +1000,29 @@ export default {
.catch(() => {
return this.$message.error('网络错误')
})
}
},
async deleteresiBatch () {
if (this.selection.length === 0) return this.$message.error('请选择之后进行操作')
let userIds = this.selection.map(item => item.icResiUserId)
let params = {
formCode: 'resi_base_info',
userIds
}
this.$http
.post('/epmetuser/icresiuser/delete', params)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
this.$message.success('删除成功')
this.getTableData()
}
})
.catch((err) => {
console.log('row4', err)
return this.$message.error('网络错误')
})
},
}
}
</script>
@ -1033,4 +1129,13 @@ export default {
margin-top: 20px;
text-align: center;
}
.div-flex {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
.div_del {
margin-top: 15px;
}
}
</style>

65
src/views/modules/communityService/sqzzz/index.vue

@ -270,34 +270,53 @@ export default {
}
return fileType && isLt1M;
},
uploadHttpRequest(file) {
async uploadHttpRequest(file) {
this.importLoading = true;
this.importBtnTitle = "正在上传中...";
this.$message({
showClose: true,
message: '导入中,请到系统管理-导入记录中查看进度',
duration: 0
})
const formData = new FormData(); //FormDataappend('key', value)
formData.append("file", file.file); //
axios({
url:
window.SITE_CONFIG["apiURL"] +
"/heart/iccommunityselforganization/importcommunityselforganization",
method: "post",
data: formData,
// responseType: "blob",
})
.then((res) => {
this.importLoading = false;
this.importBtnTitle = "excel导入";
console.log("resresresresresresres", res);
this.getTableData();
if (res.data.code == 0) {
return this.$message.success(res.data.data || "导入成功");
} else {
return this.$message.error(res.data.msg);
}
await this.$http
.post('/heart/iccommunityselforganization/importcommunityselforganization', formData).then(res => {
console.log('res-up', res)
if (res.data.code == 0 && res.data.msg == 'success') {
this.$message.success('导入成功')
this.getTableData()
} else this.$message.error(res.data.msg)
}).catch(err => {
console.log('失败', err)
file.onError() //
this.$message.error('导入失败')
})
.catch((err) => {
console.log("失败", err);
});
// axios({
// url:
// window.SITE_CONFIG["apiURL"] +
// "/heart/iccommunityselforganization/importcommunityselforganization",
// method: "post",
// data: formData,
// // responseType: "blob",
// })
// .then((res) => {
// this.importLoading = false;
// this.importBtnTitle = "excel";
// console.log("resresresresresresres", res);
// this.getTableData();
// if (res.data.code == 0) {
// return this.$message.success(res.data.data || "");
// } else {
// return this.$message.error(res.data.msg);
// }
// })
// .catch((err) => {
// console.log("", err);
// });
this.importLoading = false
this.importBtnTitle = 'excel导入'
this.$refs.upload.clearFiles();
},

22
src/views/modules/visual/ai/cheliu.vue

@ -0,0 +1,22 @@
<template>
<div class="m-design">
<img src="@/assets/img/aiaf-design/cheliu.png" />
</div>
</template>
<script>
export default {
mixins: [],
data() {
return {};
},
components: {},
methods: {},
};
</script>
<style
lang="scss"
src="@/assets/scss/modules/ai/index.scss"
scoped
></style>

22
src/views/modules/visual/ai/gongdan.vue

@ -0,0 +1,22 @@
<template>
<div class="m-design">
<img src="@/assets/img/aiaf-design/gongdan.png" />
</div>
</template>
<script>
export default {
mixins: [],
data() {
return {};
},
components: {},
methods: {},
};
</script>
<style
lang="scss"
src="@/assets/scss/modules/ai/index.scss"
scoped
></style>

22
src/views/modules/visual/ai/index.vue

@ -0,0 +1,22 @@
<template>
<div class="m-design">
<img src="@/assets/img/aiaf-design/index.png" />
</div>
</template>
<script>
export default {
mixins: [],
data() {
return {};
},
components: {},
methods: {},
};
</script>
<style
lang="scss"
src="@/assets/scss/modules/ai/index.scss"
scoped
></style>

22
src/views/modules/visual/ai/renliu.vue

@ -0,0 +1,22 @@
<template>
<div class="m-design">
<img src="@/assets/img/aiaf-design/renliu.png" />
</div>
</template>
<script>
export default {
mixins: [],
data() {
return {};
},
components: {},
methods: {},
};
</script>
<style
lang="scss"
src="@/assets/scss/modules/ai/index.scss"
scoped
></style>

44
src/views/modules/visual/ai/shebei.vue

@ -0,0 +1,44 @@
<template>
<div>
<div class="m-design">
<img v-show="currentNav=='index'" src="@/assets/img/aiaf-design/shebei.png" />
<img v-show="currentNav=='jiankong'" src="@/assets/img/aiaf-design/shebei-jiankong.png" />
<img v-show="currentNav=='kakou'" src="@/assets/img/aiaf-design/shebei-kakou.png" />
<img v-show="currentNav=='menjin'" src="@/assets/img/aiaf-design/shebei-menjin.png" />
<img v-show="currentNav=='chongdianzhuang'" src="@/assets/img/aiaf-design/shebei-chongdianzhuang.png" />
<img v-show="currentNav=='denggan'" src="@/assets/img/aiaf-design/shebei-denggan.png" />
<img v-show="currentNav=='jinggai'" src="@/assets/img/aiaf-design/shebei-jinggai.png" />
<img v-show="currentNav=='fabu'" src="@/assets/img/aiaf-design/shebei-fabu.png" />
<img v-show="currentNav=='laoren'" src="@/assets/img/aiaf-design/shebei-laoren.png" />
</div>
<div class="m-sidebar">
<div class="wrap">
<div class="nav" @click="currentNav='index'" :class="{'z-on': currentNav=='index'}">设备</div>
<div class="nav" @click="currentNav='jiankong'" :class="{'z-on': currentNav=='jiankong'}">监控</div>
<div class="nav" @click="currentNav='kakou'" :class="{'z-on': currentNav=='kakou'}">卡口</div>
<div class="nav" @click="currentNav='menjin'" :class="{'z-on': currentNav=='menjin'}">门禁</div>
<div class="nav" @click="currentNav='chongdianzhuang'" :class="{'z-on': currentNav=='chongdianzhuang'}">充电桩</div>
<div class="nav" @click="currentNav='denggan'" :class="{'z-on': currentNav=='denggan'}">智能灯杆</div>
<div class="nav" @click="currentNav='jinggai'" :class="{'z-on': currentNav=='jinggai'}">智能井盖</div>
<div class="nav" @click="currentNav='fabu'" :class="{'z-on': currentNav=='fabu'}">信息发布</div>
<div class="nav" @click="currentNav='laoren'" :class="{'z-on': currentNav=='laoren'}">老人关怀</div>
</div>
</div>
</div>
</template>
<script>
export default {
mixins: [],
data() {
return {
currentNav: 'index'
};
},
components: {},
methods: {},
};
</script>
<style lang="scss" src="@/assets/scss/modules/ai/index.scss" scoped></style>

22
src/views/modules/visual/ai/yujing.vue

@ -0,0 +1,22 @@
<template>
<div class="m-design">
<img src="@/assets/img/aiaf-design/yujing.png" />
</div>
</template>
<script>
export default {
mixins: [],
data() {
return {};
},
components: {},
methods: {},
};
</script>
<style
lang="scss"
src="@/assets/scss/modules/ai/index.scss"
scoped
></style>

25
src/views/modules/visual/communityParty/community.vue

@ -36,7 +36,8 @@
prefix-icon="el-icon-caret-bottom"
value-format="yyyy-MM-dd HH:mm:ss"
:clearable="false"
:default-time="['00:00:00', '23:59:59']">
:default-time="['00:00:00', '23:59:59']"
@change="handleTimeChange">
</el-date-picker>
</div>
</div>
@ -121,6 +122,7 @@
<script>
import { requestPost } from "@/js/dai/request";
import util from '@js/util.js';
import screenTable from "../components/screen-table/index";
import cptCard from "@/views/modules/visual/cpts/card";
import nextTick from "dai-js/tools/nextTick";
@ -232,12 +234,27 @@ export default {
watch: {
timeRange (val) {
console.log('val-www', val)
this.getList(this.agencyId);
this.getCateCount(this.agencyId)
// this.getList(this.agencyId);
// this.getCateCount(this.agencyId)
}
},
methods: {
handleTimeChange (time) {
if (time) {
const startTimeArray = util.dateFormatter(time[0], 'date').split('-')
const endTimeArray = util.dateFormatter(time[1], 'date').split('-')
const startTime = startTimeArray[0] + '-' + startTimeArray[1] + '-' + startTimeArray[2] + ' 00:00:00'
const endTime = endTimeArray[0] + '-' + endTimeArray[1] + '-' + endTimeArray[2] + ' 23:59:59'
this.timeRange = [startTime, endTime]
// this.startTimeShow = startTimeArray[0] + '' + startTimeArray[1] + '' + startTimeArray[2] + ''
// this.endTimeShow = endTimeArray[0] + '' + endTimeArray[1] + '' + endTimeArray[2] + ''
} else {
this.initTime()
}
this.getList(this.agencyId);
this.getCateCount(this.agencyId)
},
//
async getList (agencyId) {
this.visibleLoading = true

2
src/views/modules/visual/communityParty/elegant.vue

@ -555,7 +555,7 @@ export default {
flex-wrap: wrap;
padding: 30px 0 20px;
.elegant-item {
width: 19%;
width: calc((100% - 80px) / 5);
margin-right: 20px;
margin-bottom: 36px;
box-sizing: border-box;

3
src/views/modules/visual/communityParty/elegantInfo.vue

@ -41,7 +41,8 @@
v-for="(item, index) in info.imageList" :key="index"
style="width: 200px; height: 200px;margin-right: 10px;"
:src="item"
:preview-src-list="info.imageList">
:preview-src-list="info.imageList"
:z-index="99999">
</el-image>
</div>
<!-- <span>{{ info.peopleCount }}</span> -->

Loading…
Cancel
Save