This commit is contained in:
yanran200730
2022-05-13 14:55:21 +08:00
11 changed files with 174 additions and 358 deletions

View File

@@ -59,11 +59,12 @@ export default {
}, },
getTabs() { getTabs() {
let {name, query, hash} = this.$route let {name, query, hash} = this.$route
let tab = this.tabs.find(e => e.name == this.currentTab) let tab = this.tabs.find(e => e.name == this.currentTab),
tabName = [name, query?.id, hash].join("")
if (tab) { if (tab) {
} else if (name) { } else if (tabName) {
let menu = this.apps.find(e => e.name == name) let menu = this.apps.find(e => e.name == name)
this.tabs.push({name, query, hash, label: menu?.label}) this.tabs.push({name: tabName, query, hash, label: menu?.label})
} }
}, },
}, },

View File

@@ -43,7 +43,6 @@
<el-table-column label="操作" slot="options" fixed="right" align="center" width="180"> <el-table-column label="操作" slot="options" fixed="right" align="center" width="180">
<template v-slot="{row}"> <template v-slot="{row}">
<div class="table-options"> <div class="table-options">
<!-- <el-button type="text" title="编辑" @click="edit(row)" :disabled="!$permissions('app_appvillagerintegralfamily_edit')">编辑</el-button> -->
<el-button type="text" title="家庭成员" @click="familyMember(row)" :disabled="!$permissions('app_appvillagerintegralfamilymember_edit')">家庭成员</el-button> <el-button type="text" title="家庭成员" @click="familyMember(row)" :disabled="!$permissions('app_appvillagerintegralfamilymember_edit')">家庭成员</el-button>
<el-button type="text" :disabled="!$permissions('app_appvillagerintegralfamily_detail')" title="详情" @click="goDetail(row)">详情</el-button> <el-button type="text" :disabled="!$permissions('app_appvillagerintegralfamily_detail')" title="详情" @click="goDetail(row)">详情</el-button>
</div> </div>
@@ -53,93 +52,12 @@
</template> </template>
</ai-list> </ai-list>
<detail v-if="detailShow" @goBack="goBack" :detailInfo='detailInfo' :instance='instance' :dict='dict'></detail> <detail v-if="detailShow" @goBack="goBack" :detailInfo='detailInfo' :instance='instance' :dict='dict'></detail>
<ai-dialog
:title="dialog.title"
:visible.sync="dialog.visible"
:customFooter="true"
:destroyOnClose="true"
@close="init('ruleForm')"
width="520px">
<div class="form_div">
<el-form ref="ruleForm" :model="dialogInfo" :rules="formRules" size="small" label-suffix=""
label-width="120px">
<el-form-item label="类型" prop="personType">
<el-radio-group v-model="dialogInfo.personType" @change="typeChange"
:disabled="dialog.title.indexOf('修改')!=-1">
<el-radio label="0">户籍居民</el-radio>
<el-radio label="1">外来人员</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item :label="dialog.title.indexOf('家庭')!=-1?'户主':'姓名'" prop="name">
<el-row type="flex" :gutter="8">
<el-col>
<el-input v-model="dialogInfo.name" disabled clearable/>
</el-col>
<el-col>
<ai-person-select :instance="instance" :key="personUrl" :url="personUrl" @selectPerson="getSelect"
v-if="dialog.title.indexOf('添加')!=-1"></ai-person-select>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="身份证号" prop="idNumber">
<el-input v-model="dialogInfo.idNumber" disabled clearable/>
</el-form-item>
<el-form-item label="联系电话" prop="phone">
<el-input type="number" v-model="dialogInfo.phone" maxlength="11" clearable/>
</el-form-item>
<el-form-item label="所属组" prop="villageGroup" v-if="dialog.title.indexOf('家庭')!=-1">
<el-select v-model="dialogInfo.villageGroup" placeholder="请选择...">
<el-option
v-for="(item,i) in dict.getDict('integralVillageGroup')"
:key="i"
:label="item.dictName"
:value="item.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status" v-if="dialog.title.indexOf('家庭')!=-1">
<el-select v-model="dialogInfo.status" placeholder="请选择...">
<el-option
v-for="(item,i) in dict.getDict('integralRuleStatus')"
:key="i"
:label="item.dictName"
:value="item.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="与户主关系" prop="householdRelation" v-if="dialog.title.indexOf('成员')!=-1">
<el-select
v-model="dialogInfo.householdRelation"
placeholder="请选择"
size="mini"
clearable
style="width:216px;"
>
<el-option
v-for="(item,i) in dict.getDict('householdRelation')"
:label="item.dictName"
:key="i"
:value="item.dictValue"
></el-option>
</el-select>
</el-form-item>
</el-form>
</div>
<div class="dialog-footer" slot="footer">
<el-button @click="dialog.visible=false" size="medium">取消</el-button>
<el-button @click="onConfirm('ruleForm')" type="primary" size="medium">确认</el-button>
</div>
</ai-dialog>
<ai-dialog class="family-list" <ai-dialog class="family-list"
title="成员列表" title="成员列表"
:visible.sync="addMemberVisible" :visible.sync="addMemberVisible"
:customFooter="true" :customFooter="true"
:destroyOnClose="true" :destroyOnClose="true"
width="780px"> width="780px">
<!-- <p class="add_btn">
<span class="iconfont iconAdd" @click="addFamily()"></span>
<span @click="addFamily()">添加家庭成员</span>
</p> -->
<ai-table <ai-table
:tableData="familyList" :tableData="familyList"
:col-configs="familycolConfigs" :col-configs="familycolConfigs"
@@ -162,16 +80,6 @@
<ai-id mode="show" :show-eyes="false" :value="row.idNumber"/> <ai-id mode="show" :show-eyes="false" :value="row.idNumber"/>
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column label="操作" slot="options" align="center">
<template v-slot="{row}">
<el-button type="text"
v-if="row.householdRelation!=11&&$permissions('app_appvillagerintegralfamilymember_edit')"
icon="iconfont iconEdit" title="编辑" @click="editFamily(row)"/>
<el-button type="text"
v-if="row.householdRelation!=11&&$permissions('app_appvillagerintegralfamilymember_del')"
icon="iconfont iconDelete" title="删除" @click="deleteFamily(row.id)"/>
</template>
</el-table-column> -->
</ai-table> </ai-table>
<div class="dialog-footer" slot="footer"> <div class="dialog-footer" slot="footer">
<el-button @click="addMemberVisible=false" size="medium"> </el-button> <el-button @click="addMemberVisible=false" size="medium"> </el-button>
@@ -372,7 +280,7 @@ export default {
}, },
created() { created() {
this.areaId = this.user.info.areaId; this.areaId = this.user.info.areaId;
this.dict.load('integralVillageGroup', 'integralRuleStatus', 'integralPersonType', 'householdRelation', 'residentType'); this.dict.load('integralVillageGroup', 'integralRuleStatus', 'householdRelation', 'residentType');
this.getList(); this.getList();
}, },
methods: { methods: {
@@ -398,55 +306,6 @@ export default {
this.dialogInfo.avatar = ""; this.dialogInfo.avatar = "";
this.dialogInfo.areaId = ""; this.dialogInfo.areaId = "";
}, },
add() {
this.dialog.visible = true;
this.dialog.title = '添加家庭';
},
addFamily() {
this.dialog.visible = true;
this.dialog.title = '添加成员';
},
onConfirm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
if (this.dialog.title.indexOf('家庭') != -1) {
this.instance.post("/app/appvillagerintegralfamily/addOrUpdate", {
...this.dialogInfo,
}, null).then(res => {
if (res.code == 0) {
this.dialog.visible = false;
if (this.dialog.title.indexOf('添加') != -1) {
this.$message.success("添加成功")
} else {
this.$message.success("修改成功")
}
this.getList();
}
})
} else {
this.instance.post("/app/appvillagerintegralfamilymember/addOrUpdate", {
...this.dialogInfo,
familyId: this.familyId,
familyIdNumber: this.rowInfo.idNumber,
familyName: this.rowInfo.name
}, null).then(res => {
if (res.code == 0) {
this.dialog.visible = false;
if (this.dialog.title.indexOf('添加') != -1) {
this.$message.success("添加成功")
} else {
this.$message.success("修改成功")
}
this.familyMember(this.rowInfo);
this.getList();
}
})
}
} else {
return false;
}
});
},
init(formName) { init(formName) {
this.$refs[formName].clearValidate(); this.$refs[formName].clearValidate();
Object.keys(this.dialogInfo).forEach(e => { Object.keys(this.dialogInfo).forEach(e => {
@@ -461,35 +320,8 @@ export default {
}); });
this.getList(); this.getList();
}, },
edit(row) {
this.dialog.visible = true;
this.dialog.title = '修改家庭';
this.dialogInfo = {...row}
},
editFamily(row) {
this.dialog.visible = true;
this.dialog.title = '修改成员';
this.dialogInfo = {...row}
},
deleteFamily(ids) {
ids && this.$confirm("是否要删除该家庭成员", {
type: 'error'
}).then(() => {
this.instance.post("/app/appvillagerintegralfamilymember/delete", null, {
params: {ids}
}).then(res => {
if (res?.code == 0) {
this.$message.success("删除成功!")
this.familyMember(this.rowInfo);
}
})
}).catch(() => {
})
},
getSelect(val) { getSelect(val) {
console.log(val)
if (val) { if (val) {
this.dialogInfo.name = val.name; this.dialogInfo.name = val.name;
this.dialogInfo.idNumber = val.idNumber; this.dialogInfo.idNumber = val.idNumber;
this.dialogInfo.avatar = val.photo; this.dialogInfo.avatar = val.photo;

View File

@@ -72,24 +72,7 @@
<span class="form_label">积分</span> <span class="form_label">积分</span>
<span class="form_value">{{dialogInfo.changeIntegral >= 0 ? '增加' : '减少'}}<span style="color:#2266FF">{{Math.abs(dialogInfo.changeIntegral)}}</span></span> <span class="form_value">{{dialogInfo.changeIntegral >= 0 ? '增加' : '减少'}}<span style="color:#2266FF">{{Math.abs(dialogInfo.changeIntegral)}}</span></span>
</div> </div>
<!-- <div>
<span class="form_label">途径</span>
<span class="form_value">{{$dict.getLabel("integralDetailBizType", dialogInfo.bizType)}}</span>
</div> -->
</div> </div>
<!-- <div class="form_info">
<span class="form_label">{{dialogInfo.bizType == 1 ? '申诉' : '申报'}}说明</span>
<span
class="form_value"
>{{dialogInfo.description}}</span>
</div>
<div class="form_info">
<span class="form_label">照片</span>
<span class="form_value" v-if="dialogInfo.fileList && dialogInfo.fileList.length">
<ai-uploader :disabled="true" :instance="instance" v-model="dialogInfo.fileList" :limit="9" ></ai-uploader>
</span>
<span class="form_value" v-else>-</span>
</div> -->
</div> </div>
<div class="dialog-footer" slot="footer"> <div class="dialog-footer" slot="footer">
<el-button @click="dialog.visible=false" size="medium">关闭</el-button> <el-button @click="dialog.visible=false" size="medium">关闭</el-button>
@@ -173,7 +156,6 @@ export default {
.load([ .load([
"integralDeclareDoType", "integralDeclareDoType",
"integralDetailType", "integralDetailType",
"integralDetailBizType"
]) ])
.then(() => { .then(() => {
this.getList(); this.getList();

View File

@@ -298,7 +298,7 @@ export default {
}, },
created() { created() {
this.areaId = this.user.info.areaId; this.areaId = this.user.info.areaId;
this.dict.load('integralVillageGroup', 'integralRuleStatus', 'integralPersonType', 'householdRelation', 'residentType'); this.dict.load( 'integralRuleStatus', 'householdRelation', 'residentType');
this.getList(); this.getList();
}, },
methods: { methods: {

View File

@@ -282,7 +282,7 @@ export default {
}, },
created() { created() {
this.dict.load(["classification", "integralIntegralType", "integralRuleStatus", 'atWillReportType']).then(() => { this.dict.load([ "integralIntegralType", "integralRuleStatus", 'atWillReportType']).then(() => {
this.getList(); this.getList();
}); });
}, },

View File

@@ -10,7 +10,7 @@
</el-button> </el-button>
</template> </template>
<template #right> <template #right>
<el-input size="small" placeholder="搜索党员/四邻信息" v-model="search.name" clearable <el-input size="small" placeholder="搜索户主姓名" v-model="search.name" clearable
@change="page.current=1,getTableData()" suffix-icon="iconfont iconSearch"/> @change="page.current=1,getTableData()" suffix-icon="iconfont iconSearch"/>
</template> </template>
</ai-search-bar> </ai-search-bar>
@@ -36,7 +36,7 @@
<el-table-column slot="resident"> <el-table-column slot="resident">
<template #header> <template #header>
<b v-text="`户主信息列表`"/> <b v-text="`户主信息列表`"/>
<el-input class="fill" v-model="list.con" size="small" placeholder="搜索姓名/身份证号" clearable <el-input class="fill searchbar" v-model="list.con" size="small" placeholder="搜索姓名/身份证号" clearable
@change="list.current=1,getResident()"/> @change="list.current=1,getResident()"/>
</template> </template>
<template slot-scope="{row}"> <template slot-scope="{row}">
@@ -220,5 +220,9 @@ export default {
} }
} }
} }
::v-deep.searchbar {
padding-right: 0;
}
} }
</style> </style>

View File

@@ -12,7 +12,7 @@ import Add from './components/Add'
import BuildMsg from './components/BuildMsg' import BuildMsg from './components/BuildMsg'
export default { export default {
label: '楼栋管理', label: '楼栋管理(sass)',
name: 'AppBuildManage', name: 'AppBuildManage',
props: { props: {
instance: Function, instance: Function,
@@ -41,7 +41,7 @@ export default {
if (data.type === 'buildmsg') { if (data.type === 'buildmsg') {
this.component = 'BuildMsg' this.component = 'BuildMsg'
this.params = { ...data.params } this.params = {...data.params}
} }
if (data.type == 'list') { if (data.type == 'list') {

View File

@@ -12,18 +12,19 @@
<ai-bar title="基础信息"></ai-bar> <ai-bar title="基础信息"></ai-bar>
<el-form-item label="小区名称" prop="communityName" class="line" ref="communityNameContent"> <el-form-item label="小区名称" prop="communityName" class="line" ref="communityNameContent">
<!-- 选择小区 --> <!-- 选择小区 -->
<ai-select v-if="instance" :instance="instance" v-model="formData.communityId" action="/app/appcommunityinfo/listAll" :prop="{ label: 'communityName' }"></ai-select> <ai-select v-if="instance" :instance="instance" v-model="formData.communityId" action="/app/appcommunityinfo/listAll"
:prop="{ label: 'communityName' }"></ai-select>
</el-form-item> </el-form-item>
<div class="flex"> <div class="flex">
<!-- 楼栋号 --> <!-- 楼栋号 -->
<el-form-item label="楼栋号" prop="buildingNumber" :rules="[{ required: true, message: '请输入楼栋号', trigger: 'blur' }]"> <el-form-item label="楼栋号" prop="buildingNumber" :rules="[{ required: true, message: '请输入楼栋号', trigger: 'blur' }]">
<el-input size="small" v-model="formData.buildingNumber" placeholder="请输入" clearable :disabled="isEdit" /> <el-input size="small" v-model="formData.buildingNumber" placeholder="请输入" clearable :disabled="isEdit"/>
</el-form-item> </el-form-item>
<!-- 单元数 --> <!-- 单元数 -->
<el-form-item label="单元数" prop="unitNumber"> <el-form-item label="单元数" prop="unitNumber">
<el-input size="small" v-model.number="formData.unitNumber" placeholder="请输入" clearable :disabled="isEdit" /> <el-input size="small" v-model.number="formData.unitNumber" placeholder="请输入" clearable :disabled="isEdit"/>
</el-form-item> </el-form-item>
<!-- 起始计数层数 --> <!-- 起始计数层数 -->
@@ -96,28 +97,22 @@
<el-button type="primary" @click="confirm()">提交</el-button> <el-button type="primary" @click="confirm()">提交</el-button>
</template> </template>
</ai-detail> </ai-detail>
<ai-dialog title="地图" :visible.sync="showMap" @opened="getCorpLocation" width="800px" class="mapDialog" @onConfirm="selectMap"> <ai-dialog title="地图" :visible.sync="showMap" @opened="getCorpLocation" width="800px" class="mapDialog" @onConfirm="selectMap" fullscreen>
<div id="map"></div> <div id="map"></div>
<el-form label-width="80px" style="padding: 10px 20px 0 20px;"> <el-form label-position="left">
<el-row type="flex" justify="space-between"> <el-form-item label="经纬度">{{ [placeDetail.lng, placeDetail.lat].toString() }}</el-form-item>
<el-form-item label="经度">
<el-input disabled size="small" v-model="placeDetail.lng"></el-input>
</el-form-item>
<el-form-item label="纬度">
<el-input disabled size="small" v-model="placeDetail.lat"></el-input>
</el-form-item>
</el-row>
</el-form> </el-form>
<el-input id="searchPlaceInput" size="medium" class="searchPlaceInput" clearable v-model="searchPlace" autocomplete="on" @change="placeSearch.search(searchPlace)" placeholder="请输入关键字"> <el-input id="searchPlaceInput" size="medium" class="searchPlaceInput" clearable v-model="searchPlace" autocomplete="on"
@change="placeSearch.search(searchPlace)" placeholder="请输入关键字">
<el-button type="primary" slot="append" @click="placeSearch.search(searchPlace)">搜索</el-button> <el-button type="primary" slot="append" @click="placeSearch.search(searchPlace)">搜索</el-button>
</el-input> </el-input>
<div id="searchPlaceOutput" /> <div id="searchPlaceOutput"/>
</ai-dialog> </ai-dialog>
</section> </section>
</template> </template>
<script> <script>
import { mapState } from 'vuex' import {mapState} from 'vuex'
import AMapLoader from '@amap/amap-jsapi-loader' import AMapLoader from '@amap/amap-jsapi-loader'
export default { export default {
@@ -148,33 +143,33 @@ export default {
}, },
formRules: { formRules: {
unitNumber: [ unitNumber: [
{ required: true, message: '请输入单元数', trigger: 'change' }, {required: true, message: '请输入单元数', trigger: 'change'},
{ {
validator: (r, v, cb) => (!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb('请输入正整数')), validator: (r, v, cb) => (!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb('请输入正整数')),
}, },
], ],
layerStart: [ layerStart: [
{ required: true, message: '请输入起始计数层数', trigger: 'change' }, {required: true, message: '请输入起始计数层数', trigger: 'change'},
{ {
validator: (r, v, cb) => (!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb('请输入正整数')), validator: (r, v, cb) => (!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb('请输入正整数')),
}, },
], ],
layerNumber: [ layerNumber: [
{ required: true, message: '请输入最高层数', trigger: 'change' }, {required: true, message: '请输入最高层数', trigger: 'change'},
{ {
validator: (r, v, cb) => (!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb('请输入正整数')), validator: (r, v, cb) => (!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb('请输入正整数')),
}, },
], ],
householdStart: [ householdStart: [
{ required: true, message: '请输入起始计数户数', trigger: 'change' }, {required: true, message: '请输入起始计数户数', trigger: 'change'},
{ {
validator: (r, v, cb) => (!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb('请输入正整数')), validator: (r, v, cb) => (!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb('请输入正整数')),
}, },
], ],
householdNumber: [ householdNumber: [
{ required: true, message: '请输入每层户数', trigger: 'change' }, {required: true, message: '请输入每层户数', trigger: 'change'},
{ {
validator: (r, v, cb) => (!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb('请输入正整数')), validator: (r, v, cb) => (!v || /^[1-9]\d*|0$/g.test(v) ? cb() : cb('请输入正整数')),
}, },
@@ -226,7 +221,7 @@ export default {
zooms: [6, 20], zooms: [6, 20],
zoom: 11, zoom: 11,
}) })
this.placeSearch = new AMap.PlaceSearch({ map: this.map }) this.placeSearch = new AMap.PlaceSearch({map: this.map})
new AMap.AutoComplete({ new AMap.AutoComplete({
input: 'searchPlaceInput', input: 'searchPlaceInput',
output: 'searchPlaceOutput', output: 'searchPlaceOutput',
@@ -267,33 +262,33 @@ export default {
getListinfo() { getListinfo() {
return this.instance return this.instance
.post('/app/appcommunitybuildinginfo/queryDetailById', null, { .post('/app/appcommunitybuildinginfo/queryDetailById', null, {
params: { params: {
id: this.params.id, id: this.params.id,
}, },
}) })
.then((res) => { .then((res) => {
if (res.data) { if (res.data) {
this.formData = res.data this.formData = res.data
} }
}) })
}, },
confirm() { confirm() {
this.$refs['ruleForm'].validate((valid) => { this.$refs['ruleForm'].validate((valid) => {
if (valid) { if (valid) {
this.instance this.instance
.post(`/app/appcommunitybuildinginfo/addOrUpdate`, { .post(`/app/appcommunitybuildinginfo/addOrUpdate`, {
...this.formData, ...this.formData,
}) })
.then((res) => { .then((res) => {
if (res.code == 0) { if (res.code == 0) {
this.$message.success('提交成功') this.$message.success('提交成功')
setTimeout(() => { setTimeout(() => {
this.cancel(true) this.cancel(true)
}, 1000) }, 1000)
} }
}) })
} }
}) })
}, },
@@ -317,29 +312,36 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.AppBuildManage { .AppBuildManage {
::v-deep .amap-logo { ::v-deep .amap-logo {
display: none!important; display: none !important;
} }
::v-deep .amap-copyright { ::v-deep .amap-copyright {
display: none!important; display: none !important;
} }
} }
.Add { .Add {
height: 100%; height: 100%;
.ai-detail__title { .ai-detail__title {
background-color: #fff; background-color: #fff;
} }
.ai-detail__content { .ai-detail__content {
.ai-detail__content--wrapper { .ai-detail__content--wrapper {
.el-form { .el-form {
background-color: #fff; background-color: #fff;
padding: 0 60px; padding: 0 60px;
.flex { .flex {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: space-between; justify-content: space-between;
.el-form-item { .el-form-item {
width: 48%; width: 48%;
} }
.buildingTypes { .buildingTypes {
width: 100%; width: 100%;
} }
@@ -350,11 +352,20 @@ export default {
} }
::v-deep .mapDialog { ::v-deep .mapDialog {
.el-dialog {
display: flex;
flex-direction: column;
}
.el-dialog__body { .el-dialog__body {
padding: 0; padding: 0;
flex: 1;
min-height: 0;
.ai-dialog__content { .ai-dialog__content {
padding: 0; padding: 0;
max-height: unset !important;
height: 100%;
} }
.ai-dialog__content--wrapper { .ai-dialog__content--wrapper {
@@ -364,7 +375,7 @@ export default {
#map { #map {
width: 100%; width: 100%;
height: 420px; height: 100%;
} }
.searchPlaceInput { .searchPlaceInput {
@@ -374,6 +385,21 @@ export default {
left: 25px; left: 25px;
} }
.el-form {
position: absolute;
width: 230px;
right: 25px;
top: 20px;
background: rgba(#fff, .8);
color: #26f;
padding: 0 16px;
box-sizing: border-box;
.el-form-item {
margin: 0;
}
}
#searchPlaceOutput { #searchPlaceOutput {
position: absolute; position: absolute;
width: 250px; width: 250px;

View File

@@ -1,67 +1,73 @@
<template> <template>
<ai-list class="AppPetitionManage"> <ai-list class="bmList">
<ai-title slot="title" title="楼栋管理" isShowBottomBorder /> <ai-title slot="title" title="楼栋管理" isShowBottomBorder/>
<template #left> <template #left>
<ai-tree-menu title="楼栋管理" @search="(v) => $refs.gridTree.filter(v)"> <ai-tree-menu title="楼栋管理" @search="(v) => $refs.gridTree.filter(v)">
<el-tree :data="treeData" ref="gridTree" :filter-node-method="handleTreeFilter" @node-click="handleSelectGrid" highlight-current node-key="id" :props="{ label: 'name', children: 'children' }" /> <el-tree :data="treeData" ref="gridTree" :filter-node-method="handleTreeFilter" @node-click="handleSelectGrid" highlight-current node-key="id"
</ai-tree-menu> :props="{ label: 'name', children: 'children' }"/>
</template> </ai-tree-menu>
<template #content> </template>
<ai-search-bar bottomBorder> <template #content>
<template slot="left"> <ai-search-bar bottomBorder>
<!-- 定位状态 --> <template slot="left">
<ai-select v-model="search.locationStatus" placeholder="定位状态" clearable :selectList="$dict.getDict('BuildLocationStatus')" @change=";(page.current = 1), getList()"></ai-select> <!-- 定位状态 -->
<ai-select v-model="search.locationStatus" placeholder="定位状态" clearable :selectList="$dict.getDict('BuildLocationStatus')"
@change=";(page.current = 1), getList()"></ai-select>
</template>
<!-- 搜索 -->
<template slot="right">
<el-input v-model="search.managerName" size="small" placeholder="楼栋号/楼长/联系方式" clearable v-throttle="() => {page.current = 1, getList()}"
@clear=";(page.current = 1), (search.managerName = ''), getList()" suffix-icon="iconfont iconSearch"/>
</template>
</ai-search-bar>
<ai-search-bar style="margin-top: 16px;">
<template slot="left">
<el-button icon="iconfont iconAdd" type="primary" size="small" @click="onAdd('')" :disabled="!isAdd">添加</el-button>
<el-button icon="iconfont iconDelete" size="small" @click="removeAll" :disabled="ids.length == 0">删除</el-button>
</template>
<!-- 导入导出 -->
<template #right>
<ai-import :instance="instance" :dict="dict" type="appcommunitybuildinginfo" :importParams="{ areaId: user.info && user.info.areaId }" name="楼栋管理"
@success="getList()">
<el-button icon="iconfont iconImport">导入</el-button>
</ai-import>
<ai-download :instance="instance" url="/app/appcommunitybuildinginfo/listExport" :params="param" fileName="楼栋管理模板" :disabled="tableData.length == 0">
<el-button icon="iconfont iconExported" :disabled="tableData.length == 0">导出</el-button>
</ai-download>
</template>
</ai-search-bar>
<ai-table :tableData="tableData" :col-configs="colConfigs" :total="total" ref="aitableex" style="margin-top: 20px;" :current.sync="page.current"
:size.sync="page.size" @getList="getList" @selection-change="(v) => (ids = v.map((e) => e.id))">
<el-table-column slot="locationStatus" label="定位状态" align="center">
<template slot-scope="{ row }">
<span style="color:red" v-if="row.locationStatus == 0">{{ dict.getLabel('BuildLocationStatus', row.locationStatus) }}</span>
<span style="color:green" v-if="row.locationStatus == 1">{{ dict.getLabel('BuildLocationStatus', row.locationStatus) }}</span>
</template> </template>
</el-table-column>
<!-- 搜索 --> <el-table-column slot="options" label="操作" align="center" width="240px" fixed="right">
<template slot="right"> <div class="table-options" slot-scope="{ row }">
<el-input v-model="search.managerName" size="small" placeholder="楼栋号/楼长/联系方式" clearable v-throttle="() => {page.current = 1, getList()}" @clear=";(page.current = 1), (search.managerName = ''), getList()" suffix-icon="iconfont iconSearch" /> <el-button type="text" @click="onAdd(row.id)">编辑</el-button>
</template> <el-button type="text" @click="remove(row.id)">删除</el-button>
</ai-search-bar> <el-button type="text" @click="toBuildMsg(row)">房屋信息</el-button>
<el-button type="text"
<ai-search-bar style="margin-top: 16px;"> @click="$router.push({ name: '63', query: { communityId: row.communityId, buildingId: row.id, unitNum: 1, buildingNumber: row.buildingNumber } })">
<template slot="left"> 楼栋模型
<el-button icon="iconfont iconAdd" type="primary" size="small" @click="onAdd('')" :disabled="!isAdd">添加 </el-button> </el-button>
<el-button icon="iconfont iconDelete" size="small" @click="removeAll" :disabled="ids.length == 0">删除 </el-button> </div>
</template> </el-table-column>
</ai-table>
<!-- 导入导出 --> </template>
<template #right>
<ai-import :instance="instance" :dict="dict" type="appcommunitybuildinginfo" :importParams="{ areaId: user.info && user.info.areaId }" name="楼栋管理" @success="getList()">
<el-button icon="iconfont iconImport">导入</el-button>
</ai-import>
<ai-download :instance="instance" url="/app/appcommunitybuildinginfo/listExport" :params="param" fileName="楼栋管理模板" :disabled="tableData.length == 0">
<el-button icon="iconfont iconExported" :disabled="tableData.length == 0">导出</el-button>
</ai-download>
</template>
</ai-search-bar>
<ai-table :tableData="tableData" :col-configs="colConfigs" :total="total" ref="aitableex" style="margin-top: 20px;" :current.sync="page.current" :size.sync="page.size" @getList="getList" @selection-change="(v) => (ids = v.map((e) => e.id))">
<el-table-column slot="locationStatus" label="定位状态" align="center">
<template slot-scope="{ row }">
<span style="color:red" v-if="row.locationStatus == 0">{{ dict.getLabel('BuildLocationStatus', row.locationStatus) }}</span>
<span style="color:green" v-if="row.locationStatus == 1">{{ dict.getLabel('BuildLocationStatus', row.locationStatus) }}</span>
</template>
</el-table-column>
<el-table-column slot="options" label="操作" align="center" width="240px" fixed="right">
<div class="table-options" slot-scope="{ row }">
<el-button type="text" @click="onAdd(row.id)">编辑</el-button>
<el-button type="text" @click="remove(row.id)">删除</el-button>
<el-button type="text" @click="toBuildMsg(row)">房屋信息</el-button>
<el-button type="text" @click="$router.push({ name: '63', query: { communityId: row.communityId, buildingId: row.id, unitNum: 1, buildingNumber: row.buildingNumber } })">
楼栋模型
</el-button>
</div>
</el-table-column>
</ai-table>
</template>
</ai-list> </ai-list>
</template> </template>
<script> <script>
import { mapState } from 'vuex' import {mapState} from 'vuex'
export default { export default {
name: 'List', name: 'List',
@@ -86,7 +92,7 @@ export default {
id: '', id: '',
ids: [], ids: [],
colConfigs: [ colConfigs: [
{ type: 'selection' }, {type: 'selection'},
{ {
prop: 'communityName', prop: 'communityName',
label: '小区名称', label: '小区名称',
@@ -96,26 +102,26 @@ export default {
label: '楼栋号', label: '楼栋号',
align: 'center', align: 'center',
}, },
{ prop: 'unitNumber', label: '单元数', align: 'center' }, {prop: 'unitNumber', label: '单元数', align: 'center'},
{ {
prop: 'layerNumber', prop: 'layerNumber',
label: '最高层数', label: '最高层数',
align: 'center', align: 'center',
}, },
{ prop: 'householdNumber', label: '每层户数', align: 'center' }, {prop: 'householdNumber', label: '每层户数', align: 'center'},
{ {
prop: 'houseNum', prop: 'houseNum',
label: '实有户数', label: '实有户数',
align: 'center', align: 'center',
}, },
{ prop: 'residentNum', label: '实有人口', align: 'center' }, {prop: 'residentNum', label: '实有人口', align: 'center'},
{ {
prop: 'managerName', prop: 'managerName',
label: '楼栋长名', label: '楼栋长名',
align: 'center', align: 'center',
}, },
{ prop: 'managerPhone', label: '楼栋长联系方式', align: 'center', width: '150' }, {prop: 'managerPhone', label: '楼栋长联系方式', align: 'center', width: '150'},
{ slot: 'locationStatus' }, {slot: 'locationStatus'},
{ {
slot: 'options', slot: 'options',
label: '操作', label: '操作',
@@ -169,20 +175,20 @@ export default {
getList() { getList() {
this.instance this.instance
.post(`/app/appcommunitybuildinginfo/list`, null, { .post(`/app/appcommunitybuildinginfo/list`, null, {
params: { params: {
...this.page, ...this.page,
...this.search, ...this.search,
communityId: this.communityId, communityId: this.communityId,
areaId: this.areaId, areaId: this.areaId,
}, },
}) })
.then((res) => { .then((res) => {
if (res.code == 0) { if (res.code == 0) {
this.tableData = res.data.records this.tableData = res.data.records
this.total = res.data.total this.total = res.data.total
} }
}) })
}, },
// 添加 // 添加
@@ -245,7 +251,7 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.AppPetitionManage { .bmList {
height: 100%; height: 100%;
.ai-detail { .ai-detail {
@@ -284,7 +290,7 @@ export default {
background: transparent; background: transparent;
.el-tree-node__expand-icon.is-leaf { .el-tree-node__expand-icon.is-leaf {
color: transparent!important; color: transparent !important;
} }
.el-tree-node__content > .el-tree-node__expand-icon { .el-tree-node__content > .el-tree-node__expand-icon {
@@ -316,8 +322,9 @@ export default {
color: #fff; color: #fff;
} }
width: 100%;
background: #2266FF; background: #2266FF;
span { span {
color: #fff; color: #fff;
} }

View File

@@ -72,24 +72,7 @@
<span class="form_label">积分</span> <span class="form_label">积分</span>
<span class="form_value">{{dialogInfo.changeIntegral >= 0 ? '增加' : '减少'}}<span style="color:#2266FF">{{Math.abs(dialogInfo.changeIntegral)}}</span></span> <span class="form_value">{{dialogInfo.changeIntegral >= 0 ? '增加' : '减少'}}<span style="color:#2266FF">{{Math.abs(dialogInfo.changeIntegral)}}</span></span>
</div> </div>
<!-- <div>
<span class="form_label">途径</span>
<span class="form_value">{{$dict.getLabel("integralDetailBizType", dialogInfo.bizType)}}</span>
</div> -->
</div> </div>
<!-- <div class="form_info">
<span class="form_label">{{dialogInfo.bizType == 1 ? '申诉' : '申报'}}说明</span>
<span
class="form_value"
>{{dialogInfo.description}}</span>
</div>
<div class="form_info">
<span class="form_label">照片</span>
<span class="form_value" v-if="dialogInfo.fileList && dialogInfo.fileList.length">
<ai-uploader :disabled="true" :instance="instance" v-model="dialogInfo.fileList" :limit="9" ></ai-uploader>
</span>
<span class="form_value" v-else>-</span>
</div> -->
</div> </div>
<div class="dialog-footer" slot="footer"> <div class="dialog-footer" slot="footer">
<el-button @click="dialog.visible=false" size="medium">关闭</el-button> <el-button @click="dialog.visible=false" size="medium">关闭</el-button>
@@ -173,7 +156,6 @@ export default {
.load([ .load([
"integralDeclareDoType", "integralDeclareDoType",
"integralDetailType", "integralDetailType",
"integralDetailBizType"
]) ])
.then(() => { .then(() => {
this.getList(); this.getList();

View File

@@ -69,24 +69,7 @@
<span class="form_value">{{ dialogInfo.changeIntegral >= 0 ? '增加' : '减少' }}<span <span class="form_value">{{ dialogInfo.changeIntegral >= 0 ? '增加' : '减少' }}<span
style="color:#2266FF">{{ Math.abs(dialogInfo.changeIntegral) }}</span></span> style="color:#2266FF">{{ Math.abs(dialogInfo.changeIntegral) }}</span></span>
</div> </div>
<!-- <div>
<span class="form_label">途径</span>
<span class="form_value">{{dict.getLabel("integralDetailBizType", dialogInfo.bizType)}}</span>
</div> -->
</div> </div>
<!-- <div class="form_info">
<span class="form_label">{{dialogInfo.bizType == 1 ? '申诉' : '申报'}}说明</span>
<span
class="form_value"
>{{dialogInfo.description}}</span>
</div>
<div class="form_info">
<span class="form_label">照片</span>
<span class="form_value" v-if="dialogInfo.fileList && dialogInfo.fileList.length">
<ai-uploader :disabled="true" :instance="instance" v-model="dialogInfo.fileList" :limit="9" ></ai-uploader>
</span>
<span class="form_value" v-else>-</span>
</div> -->
</div> </div>
<div class="dialog-footer" slot="footer"> <div class="dialog-footer" slot="footer">
<el-button @click="dialog.visible=false" size="medium">关闭</el-button> <el-button @click="dialog.visible=false" size="medium">关闭</el-button>
@@ -160,7 +143,6 @@ export default {
"integralDoType", "integralDoType",
"integralDeclareDoType", "integralDeclareDoType",
"integralDetailType", "integralDetailType",
"integralDetailBizType",
).then(() => { ).then(() => {
this.getList(); this.getList();
}); });