Browse Source

微网格管理

shibei_master
mk 2 years ago
parent
commit
7beda007c8
  1. 1
      .gitignore
  2. BIN
      src/assets/img/del.png
  3. 9
      src/views/modules/base/microGrid/index.vue
  4. 191
      src/views/modules/base/microGrid/microGridHouse.vue
  5. 2
      vue.config.js

1
.gitignore

@ -14,6 +14,7 @@
hs_err_pid*
node_modules
dist
epmet-oper-gov
epmet-oper
package-lock.json
.idea/

BIN
src/assets/img/del.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

9
src/views/modules/base/microGrid/index.vue

@ -77,9 +77,9 @@
<script>
import microGridAdd from '../microGrid/microGridAdd'
import microGridDetail from '../microGrid/microGridDetail'
import microGridHouse from '../microGrid/microGridHouse'
import microGridAdd from './microGridAdd'
import microGridDetail from './microGridDetail'
import microGridHouse from './microGridHouse'
import { requestPost } from "@/js/dai/request";
import { mapGetters } from 'vuex'
@ -204,7 +204,9 @@
this.tableLoading = true
const url = "/gov/org/customerMicroGrid/page"
// const url = "http://yapi.elinkservice.cn/mock/245/gov/org/icPublicService/list"
if (Array.isArray(this.formData.agencyId) && this.formData.agencyId.length > 0) {
this.formData.agencyId = this.formData.agencyId[this.formData.agencyId.length-1]
}
let params = {
pageSize: this.pageSize,
pageNo: this.pageNo,
@ -266,7 +268,6 @@
addFormOk() {
this.formShow = false
this.loadTable()
},
async handleDelete(row) {

191
src/views/modules/base/microGrid/microGridHouse.vue

@ -10,64 +10,76 @@
</el-table-column>
<el-table-column label="操作" fixed="right" width="250" header-align="center" align="center" class="operate">
<template slot-scope="scope">
<el-button type="text" class="div-table-button--delete" size="small"
@click="handleDelete(scope.row)">删除</el-button>
<el-popconfirm title="确认删除?"
@confirm="handleDelete(scope.row)">
<el-button slot='reference' type="text" class="div-table-button--delete" size="small"
>删除</el-button>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
<div>
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page.sync="pageNo"
:page-sizes="[10, 20, 50]" :page-size="pageSize" layout="sizes, prev, pager, next, total">
<el-pagination @size-change="handleSizeChange" :current-page="pageNo" @current-change="handleCurrentChange" :total="total" :current-page.sync="pageNo" :page-sizes="[10, 20, 50]" :page-size="pageSize" layout="total,sizes, prev, pager, next">
</el-pagination>
</div>
<el-dialog :visible.sync="addHouseShow" :close-on-click-modal="false" :close-on-press-escape="false" width="920px"
destroy-on-close :before-close="beforeClose" top="30vh" @closed="addHouseShow = false" class="dialog-h" z-index="3000">
<el-dialog v-if="addHouseShow" :visible.sync="addHouseShow" :close-on-click-modal="false" :close-on-press-escape="false" width="920px"
destroy-on-close :before-close="beforeClose" top="30vh" @closed="addHouseShow = false" class="dialog-h"
z-index="3000">
<div style="padding:10px;">
<div> 所属组织:{{ gridName }}</div>
<el-row>
<el-col :span="18">
<el-col :span="24">
<div class="resi-cell">
<div class="resi-cell-label">所属房屋</div>
<div class="resi-cell-label">选择房屋</div>
<div class="resi-cell-value">
<el-select v-model.trim="VILLAGE_ID" placeholder="请选择小区" size="small" clearable
class="resi-cell-select" @clear="handleClearVillage" @change="handleChangeV" popper-class="vSelsect">
<el-option v-for="item in optionsV" :key="item.value" :label="item.label"
class="resi-cell-select" @clear="handleClearVillage" @change="handleChangeV"
popper-class="vSelsect">
<el-option v-for="(item, index) in optionsV" :key="index" :label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-select v-model.trim="BUILD_ID" placeholder="楼号" size="small" clearable
style="width: 150px;" class="resi-cell-select " :disabled="changeVDisabled"
@clear="handleClearBuild" multiple collapse-tags @change="handleChangeB" popper-class="vSelsect">
<el-option v-for="item in optionsB" :key="item.value" :label="item.label"
@clear="handleClearBuild" multiple collapse-tags @change="handleChangeB"
popper-class="vSelsect" ref="buildS">
<el-option v-for="(item, index) in optionsB" :key="index" :label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-select v-model.trim="UNIT_ID" multiple collapse-tags :disabled="changeBDisabled"
placeholder="单元" size="small" clearable style="width: 150px;" class="resi-cell-select "
@click="handleClearDan" @change="handleChangeD" popper-class="vSelsect">
<el-option v-for="item in optionsD" :key="item.value" :label="item.label"
@clear="handleClearDan" @change="handleChangeD" popper-class="vSelsect">
<el-option v-for="(item, index) in optionsD " :key="index" :label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-select v-model.trim="HOME_ID" multiple collapse-tags :disabled="changeDDisabled"
placeholder="房号" size="small" clearable style="width: 150px;" class="resi-cell-select " popper-class="vSelsect">
<el-option v-for="item in optionsH" :key="item.value" :label="item.label"
placeholder="房号" size="small" clearable style="width: 150px;" class="resi-cell-select "
popper-class="vSelsect" @clear="handleClearHouse" @change="handleChangeH">
<el-option v-for="(item, index) in optionsH" :key="index" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
</div>
<div class="btn_bto">
<el-row type="flex" justify="end" >
<section>
<div v-for="(item, index) in selArr" :key="index" style="margin-top: 10px;">
<span>{{ item.name }}</span><img src="../../../../assets/img/del.png"
style="cursor: pointer;" @click="handelClickDel(item)" width="16px" alt="">
</div>
</section>
</el-col>
<el-col :span="24">
<el-button type="primary" plain @click="handleClose" >取消</el-button>
<div class="btn_bto">
<el-button type="primary" plain @click="handleClose">取消</el-button>
<el-button type="primary" plain @click="handelSave"> 确定</el-button>
</div>
</el-col>
</el-row>
</div>
</el-col></el-row>
</div>
</el-dialog>
</div>
</template>
@ -75,7 +87,7 @@
<script>
import { requestGet } from "@/js/dai/request";
import { requestGet, requestPost } from "@/js/dai/request";
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // Loading
@ -84,7 +96,7 @@ export default {
data() {
return {
loading: false,
pageSize: 10,
pageSize: 20,
pageNo: 0,
tableLoading: false,
microGridId: '',//Id
@ -104,7 +116,12 @@ export default {
BUILD_ID: '',
UNIT_ID: '',
HOME_ID: '',
selArr:[]
selArr: [],
prevSelectedOptionsB: [],
prevSelectedOptionsD: [],
prevSelectedOptionsH: [],
total:0
}
},
components: {
@ -129,12 +146,13 @@ export default {
async loadTable() {
this.tableLoading = true
const url = `/gov/org/house/getMicroGridHouseList?microGridId=${this.microGridId}`
const url = `/gov/org/house/getMicroGridHouseList?microGridId=${this.microGridId}&pageSize=${this.pageSize}&pageNo=${this.pageNo}`
// const url = "http://yapi.elinkservice.cn/mock/245/heart/userdemand/recordList"
const { data, code, msg } = await requestGet(url)
if (code === 0) {
this.tableData = data || []
this.tableData = data.list || []
this.total = data.total
} else {
this.$message.error(msg)
}
@ -218,16 +236,44 @@ export default {
this.getBuildList()
},
handleChangeB(val) {
console.log('val', val)
const selected = val.filter(item => !this.prevSelectedOptionsB.includes(item));
const unselected = this.prevSelectedOptionsB.filter(item => !val.includes(item));
console.log(unselected);
if (unselected.length > 0) {
this.selArr = this.selArr.filter(item => item.id !== unselected[0])
} else {
this.getMicroGridHouseName(selected[selected.length - 1], 'building')
}
this.prevSelectedOptionsB = [...val];
//
this.UNIT_ID = ''
this.HOME_ID = ''
this.getUniList()
},
handleChangeD(val) {
console.log('val', val)
const selected = val.filter(item => !this.prevSelectedOptionsD.includes(item));
const unselected = this.prevSelectedOptionsD.filter(item => !val.includes(item));
if (unselected.length > 0) {
this.selArr = this.selArr.filter(item => item.id !== unselected[0])
} else {
this.getMicroGridHouseName(selected[selected.length - 1], 'unit')
}
this.prevSelectedOptionsD = [...val];
this.HOME_ID = ''
this.getHouseList()
},
handleChangeH(val) {
const selected = val.filter(item => !this.prevSelectedOptionsH.includes(item));
const unselected = this.prevSelectedOptionsH.filter(item => !val.includes(item));
if (unselected.length > 0) {
this.selArr = this.selArr.filter(item => item.id !== unselected[0])
} else {
this.getMicroGridHouseName(selected[selected.length - 1], 'house')
}
this.prevSelectedOptionsH = [...val];
},
handleClearVillage() {
this.BUILD_ID = ''
this.HOME_ID = ''
@ -236,10 +282,15 @@ export default {
this.BUILD_ID = ''
this.UNIT_ID = ''
this.HOME_ID = ''
this.selArr = []
},
handleClearDan() {
this.UNIT_ID = ''
this.HOME_ID = ''
this.selArr = this.selArr.filter(item => item.level !== 'unit' || item.level !== 'house') || []
},
handleClearHouse() {
this.selArr = this.selArr.filter(item => item.level !== 'house') || []
},
handleSizeChange(val) {
this.pageSize = val
@ -255,28 +306,81 @@ export default {
this.addHouseShow = true
this.getValiheList()
},
beforeClose(done){
this.VILLAGE_ID = ''
beforeClose(done) {
this.VILLAGE_ID = '';
this.BUILD_ID = '';
this.UNIT_ID = '';
this.HOME_ID = '';
this.selArr = []
this.addHouseShow = false
},
async getMicroGridHouseName(id,level) {
this.tableLoading = true
async getMicroGridHouseName(id, level) {
const url = `/gov/org/house/getMicroGridHouseName?levelId=${id}&level=${level}`
// const url = "http://yapi.elinkservice.cn/mock/245/heart/userdemand/recordList"
const { data, code, msg } = await requestGet(url)
if (code === 0) {
this.selArr.push(data)
// selArr id
const isIdInSelArr = this.selArr.some(item => item.id === id);
if (!isIdInSelArr) {
this.selArr.push(data);
}
} else {
this.$message.error(msg)
}
this.tableLoading = false
},
handleClose(){
handelClickDel(val) {
if (val.level === "building") {
this.BUILD_ID = this.BUILD_ID.filter(item => item !== val.id);
} else if (val.level === "unit") {
this.UNIT_ID = this.UNIT_ID.filter(item => item !== val.id);
} else if (val.level === "house") {
this.HOME_ID = this.HOME_ID.filter(item => item !== val.id);
}
this.selArr = this.selArr.filter(item => item.id !== val.id);
},
handleClose() {
this.addHouseShow = false
this.restData()
},
handelSave(){
console.log(this.VILLAGE_ID ,this.BUILD_ID,this.UNIT_ID,this.HOME_ID);
async handleDelete(row) {
let parm = {
houseId: row.homeId
}
let url = '/gov/org/house/removeMicroGridHouse'
const { data, code, msg } = await requestPost(url, parm)
if (code == 0) {
this.loadTable()
} else {
console.log(mas);
}
},
async handelSave() {
let parm = {
houseIds: this.HOME_ID ? this.HOME_ID.join(',') : '',
unitIds: this.UNIT_ID ? this.UNIT_ID.join(',') : '',
buildingIds: this.BUILD_ID ? this.BUILD_ID.join(',') : '',
microGridId: this.microGridId
}
let url = '/gov/org/house/addMicroGridHouse'
const { data, code, msg } = await requestPost(url, parm)
if (code == 0) {
this.addHouseShow = false
this.restData()
this.loadTable()
} else {
console.log(mas);
}
},
restData(){
this.VILLAGE_ID = '';
this.UNIT_ID = [];
this.BUILD_ID = [];
this.HOME_ID = [];
this.selArr = [];
this.optionsB= [];
this.optionsD= [];
this.optionsH= [];
},
//
startLoading() {
@ -327,6 +431,7 @@ export default {
</script>
<style lang="scss" scoped >
@import "@/assets/scss/buttonstyle.scss";
// @import "@/assets/scss/common.scss";
.div_main {
background: #ffffff;
@ -372,5 +477,17 @@ export default {
margin-top: 10px;
margin-right: 50px;
}
.btn_bto{
display: flex;
justify-content: flex-end;
margin-top: 16px;
}
.resi-cell{
display: flex;
align-items: center;
.resi-cell-label{
margin-right: 10px;
}
}
</style>

2
vue.config.js

@ -23,7 +23,7 @@ module.exports = {
.loader('svg-sprite-loader')
},
productionSourceMap: false,
outputDir: 'dist',
outputDir: 'epmet-oper-gov',
assetsDir: 'static',
devServer: {
open: true,

Loading…
Cancel
Save