提交 d1fb9720 authored 作者: 宋雄's avatar 宋雄
......@@ -3,6 +3,8 @@ import Vue from 'vue'
import {UI_CACHE_DB_DICT_DATA } from "@/store/mutation-types"
// 首页统计
const homeDataStatistics = (params)=>getAction("/community/homepage/dataStatistics",params);
const companyNoticeList = (params)=>getAction("/property-company/notice/companyNotice/list",params);
//角色管理
const addRole = (params)=>postAction("/sys/role/add",params);
const editRole = (params)=>putAction("/sys/role/edit",params);
......@@ -69,6 +71,7 @@ const getRoomListApi = (params)=>getAction("/property-community/building/communi
const addCommunityOwner = (params)=>postAction("/property-community/info/communityOwner/add",params);
const geCommunityOwnertInfoApi = (params)=>getAction("/property-community/info/communityOwner/queryById",params);
const auditCommunityOwnerApi = (params)=>postAction("/property-community/info/communityOwner/audit",params);
const downloadOwnerTemplate = (params)=>postAction("/property-community/info/communityOwner/downloadOwnerTemplate",params);
// 生活缴费-费用规则
const geCommunityRuleListApi = (params)=>getAction("/property-company/system/companyChargerule/communityRuleList",params);
......@@ -132,6 +135,7 @@ export const transitRESTful = {
export {
homeDataStatistics,
companyNoticeList,
addRole,
editRole,
checkRoleCode,
......@@ -192,6 +196,7 @@ export {
getBuildingListApi,
getUnitListApi,
getRoomListApi,
downloadOwnerTemplate,
addCommunityOwner,
geCommunityOwnertInfoApi,
auditCommunityOwnerApi,
......
......@@ -3,7 +3,8 @@
<a-row :gutter="24">
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
<div class="statistics">
<img class="icon" src="~@/assets/guaz.png" alt="">
<div class="icon" style="background-color:#1890ff;"><a-icon type="team" /></div>
<!-- <img class="icon" src="~@/assets/guaz.png" alt=""> -->
<div>
<p style="color:#666;margin-bottom:5px;">住户总数量</p>
<p style="margin-bottom:0;color:#333;font-size:28px;line-height:1;">{{pageForm.ownerNum}}</p>
......@@ -12,7 +13,7 @@
</a-col>
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
<div class="statistics">
<img class="icon" src="~@/assets/guaz.png" alt="">
<div class="icon" style="background-color:#7262fd;"><a-icon type="home" /></div>
<div>
<p style="color:#666;margin-bottom:5px;">房屋总数量</p>
<p style="margin-bottom:0;color:#333;font-size:28px;line-height:1;">{{pageForm.roomNum}}</p>
......@@ -21,7 +22,7 @@
</a-col>
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
<div class="statistics">
<img class="icon" src="~@/assets/guaz.png" alt="">
<div class="icon" style="background-color:#ffaa00;"><a-icon type="bank" /></div>
<div>
<p style="color:#666;margin-bottom:5px;">楼栋总数量</p>
<p style="margin-bottom:0;color:#333;font-size:28px;line-height:1;">{{pageForm.buildingNum}}</p>
......@@ -30,7 +31,7 @@
</a-col>
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
<div class="statistics">
<img class="icon" src="~@/assets/guaz.png" alt="">
<div class="icon" style="background-color:#52c41a;"><a-icon type="pay-circle" /></div>
<div>
<p style="color:#666;margin-bottom:5px;">年度累计已缴物业费</p>
<p style="margin-bottom:0;color:#333;font-size:28px;line-height:1;">{{pageForm.propertyYearFee}}</p>
......@@ -41,131 +42,291 @@
<a-row :gutter="24">
<a-col :sm="24" :md="12" :xl="12" :style="{ marginBottom: '24px' }">
<pie title="缴费率" :dataSource="pieData" />
<div class="to-do t-box">
<h3 class="box-title">待办事项</h3>
<div class="todo-list">
<div class="item">
<p>入驻业主待审核</p>
<p>{{pageForm.waitAuditOwnerNum}}</p><a-button type="primary" size="small" @click="toOperation(1)"
:disabled="pageForm.waitAuditOwnerNum == 0">去处理</a-button>
</div>
<div class="item">
<p>租户物业费催缴</p>
<p>{{pageForm.waitCallPropertyFee}}</p><a-button type="primary" size="small" @click="toOperation(2)"
:disabled="pageForm.waitCallPropertyFee == 0">去处理</a-button>
</div>
<div class="item">
<p>业主投诉待处理</p>
<p>{{pageForm.waitHandle}}</p><a-button type="primary" size="small" @click="toOperation(3)"
:disabled="pageForm.waitHandle == 0">去处理</a-button>
</div>
<div class="item">
<p>业主报修待处理</p>
<p>{{pageForm.waitDispatch}}</p><a-button type="primary" size="small" @click="toOperation(4)"
:disabled="pageForm.waitDispatch == 0">去处理</a-button>
</div>
</div>
</div>
</a-col>
<a-col :sm="24" :md="12" :xl="12" :style="{ marginBottom: '24px' }">
<div>
<h5>园区公告</h5>
<div class="announcement t-box">
<div class="title">
<h3 class="box-title">最新公告</h3><a-button size="small" @click="toMore()">查看更多</a-button> <a-button
size="small" @click="toMore()">发布公告</a-button>
</div>
<ul>
<li>清明节放假通知,213231312313</li>
<li>5月1日停电通知,因1233233 园区公告 清明节放假通知,21323131231323233</li>
<li v-for="(item, index) in noticeList" :key="index"><a @click="toDetails(item)">{{ item.noticeTitle}}</a>
<p>{{ item.createTime.slice(0,10)}}</p>
</li>
</ul>
</div>
</a-col>
</a-row>
<a-card :loading="loading" :bordered="false" :body-style="{padding: '0'}">
<div class="salesCard">
<a-row :gutter="24">
<a-col :sm="24" :md="24" :xl="24" :style="{ marginBottom: '24px' }">
<div class="quick t-box">
<h3 class="box-title">快速新建</h3>
<div class="todo-list">
<div class="item" @click="toQuick(1)"><a-icon type="bank" />
<p>新建楼宇</p>
</div>
<div class="item" @click="toQuick(2)"><a-icon type="user-add" />
<p>新建业主</p>
</div>
<div class="item" @click="toQuick(3)"><a-icon type="home" />
<p>新建房屋</p>
</div>
<div class="item" @click="toQuick(4)"><a-icon type="user" />
<p>雇员管理</p>
</div>
<div class="item" @click="toQuick(5)"><a-icon type="pay-circle" />
<p>物业费查询</p>
</div>
<div class="item" @click="toQuick(6)"><a-icon type="money-collect" />
<p>生活费查询</p>
</div>
<div class="item" @click="toQuick(7)"><a-icon type="tool" />
<p>报修处理</p>
</div>
<div class="item" @click="toQuick(8)"><a-icon type="question-circle" />
<p>投诉处理</p>
</div>
<div class="item" @click="toQuick(9)"><a-icon type="form" />
<p>发布公告</p>
</div>
</div>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :sm="24" :md="12" :xl="12" :style="{ marginBottom: '24px' }">
<div class="salesCard t-box">
<h3 class="box-title">缴费统计</h3>
<div class="extra-type">
<a>物业</a>
<a>水费</a>
<a>电费</a>
<a>燃气费</a>
<a-radio-group @change="handleSizeChange" :value="typeCode">
<a-radio-button value="SFLX00001">物业费</a-radio-button>
<a-radio-button value="SFLX00002">水费</a-radio-button>
<a-radio-button value="SFLX00003">电费</a-radio-button>
<a-radio-button value="SFLX00004">燃气费</a-radio-button>
<a-radio-button value="SFLX00005">暖气费</a-radio-button>
</a-radio-group>
</div>
<div>
<bar :dataSource="barData"/>
<bar :dataSource="barData" style="padding: 0;" />
</div>
</div>
</a-card>
</a-col>
<a-col :sm="24" :md="12" :xl="12" :style="{ marginBottom: '24px' }">
<div class="pay-cost t-box">
<h3 class="box-title">缴费率</h3>
<pie :dataSource="payData" style="margin-top: 40px;" />
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :sm="24" :md="12" :xl="12" :style="{ marginBottom: '24px' }">
<pie title="报修统计" :dataSource="pieData" />
<div class="pay-cost t-box">
<h3 class="box-title">报修统计</h3>
<pie :dataSource="repairData" />
<div class="number">
<p>全部报修 {{pageForm.repairTotal}}</p>
<p v-for="(item, index) in repairData" :key="index">{{ item.item }} {{ item.count }}</p>
</div>
</div>
</a-col>
<a-col :sm="24" :md="12" :xl="12" :style="{ marginBottom: '24px' }">
<pie title="投诉统计" :dataSource="pieData" />
<div class="pay-cost t-box">
<h3 class="box-title">投诉统计</h3>
<pie :dataSource="complaintsData" />
<div class="number">
<p>全部投诉 {{pageForm.complaintTotal}}</p>
<p v-for="(item, index) in complaintsData" :key="index">{{ item.item }} {{ item.count }}</p>
</div>
</div>
</a-col>
</a-row>
<a-modal :title="noticeTitle" :visible="visible" @cancel="handleCancel" :footer="null" width="40%">
<p v-html="noticeContent "></p>
</a-modal>
</div>
</template>
<script>
import Bar from '@/components/chart/Bar'
import Pie from '@/components/chart/Pie'
import { homeDataStatistics } from "@/api/api"
import Bar from '@/components/chart/Bar'
import Pie from '@/components/chart/Pie'
import { homeDataStatistics, companyNoticeList } from '@/api/api'
const barData = []
for (let i = 0; i < 12; i += 1) {
barData.push({
x: `${i + 1}月`,
y: Math.floor(Math.random() * 1000) + 200
})
}
export default {
name: "Analysis",
// const barData = []
// for (let i = 0; i < 12; i += 1) {
// barData.push({
// x: `${i + 1}月`,
// y: 1000,
// })
// }
export default {
name: 'Analysis',
components: {
Bar,
Pie
Pie,
},
data() {
return {
pageForm: {},
loading: true,
barData,
pieData: [
{ item: '物业费', count: 40 },
{ item: '水费', count: 21 },
{ item: '电费', count: 17 },
{ item: '燃气费', count: 13 },
{ item: '停车费', count: 9 }
]
payData: [],
noticeList: [],
typeCode: 'SFLX00001',
repairData: [],
complaintsData: [],
barData: [],
noticeTitle: '',
noticeContent: '',
visible: false,
}
},
created() {
this.onDetail()
this.companyNotice()
},
methods: {
async onDetail() {
let {result} = await homeDataStatistics()
this.pageForm = {...result}
this.loading = !this.loading
//当前小区业主数量
// private Integer ownerNum;
// //当前小区房屋数量
// private Integer roomNum;
// //当前小区楼栋数量
// private Integer buildingNum;
// //当前小区累积缴纳物业费
// private BigDecimal propertyYearFee;
// //物业费占比
// private BigDecimal propertyFeeRate;
// //水费占比
// private BigDecimal waterRate;
// //电费占比
// private BigDecimal electricRate;
// //燃气费占比
// private BigDecimal gasFeeRate;
// //按月统计费用
// private List<MonthlyStatisticsVo> monthlyStatistics;
// //报修总数
// private Integer repairTotal;
// //报修待派单数量
// private Integer waitDispatch;
// //报修维修中数量
// private Integer inRepair;
// //报修完成数量
// private Integer repairOver;
// //全部投诉数量
// private Integer complaintTotal;
// //投诉待处理数量
// private Integer waitHandle;
// //投诉已处理数量
// private Integer complaintOver;
// //当前小区待审核业主数量
// private Integer waitAuditOwnerNum;
// //当前小区物业费待催缴业主数量
// private Integer waitCallPropertyFee;
async onDetail(typeCode) {
let { result } = await homeDataStatistics({ typeCode: typeCode })
this.pageForm = { ...result }
this.payData = [
{ item: '物业费', count: result.propertyFeeRate || 0 },
{ item: '水费', count: result.waterRate || 0 },
{ item: '电费', count: result.electricRate || 0 },
{ item: '燃气费', count: result.gasFeeRate || 0 },
{ item: '暖气费', count: result.heatFeeRate || 0 },
]
this.barData = result.monthlyStatistics.map((item) => {
return {
x: item.monthNum + '月',
y: item.totalMoney,
}
})
this.repairData = [
// { item: '全部报修', count: result.repairTotal || 0 },
// { item: '待派单', count: result.waitDispatch || 0 },
{ item: '未完成', count: result.repairTotal - result.repairOver || 0 },
{ item: '已完成', count: result.repairOver || 0 },
]
this.complaintsData = [
// { item: '全部投诉', count: result.complaintTotal || 0 },
{ item: '待处理', count: result.waitHandle || 0 },
{ item: '已完成', count: result.complaintOver || 0 },
]
this.loading = !this.loading
},
async companyNotice() {
let { result } = await companyNoticeList({ pageNo: 1, pageSize: 5, order: 'desc', column: 'createTime' })
this.noticeList = result.records
},
toOperation(type) {
if (type == 1) {
this.$router.push({
path: '/information/owner',
})
} else if (type == 2) {
this.$router.push({
path: '/property/living',
})
} else if (type == 3) {
this.$router.push({
path: '/property/complaint',
})
} else if (type == 4) {
this.$router.push({
path: '/property/maintenance',
})
}
},
toQuick(type) {
if (type == 1) {
this.$router.push({
path: '/information/building',
})
} else if (type == 2) {
this.$router.push({
path: '/information/owner',
})
} else if (type == 3) {
this.$router.push({
path: '/information/house',
})
} else if (type == 4) {
this.$router.push({
path: '/information/worker',
})
} else if (type == 5) {
this.$router.push({
path: '/property/living',
})
} else if (type == 6) {
this.$router.push({
path: '/property/living',
})
} else if (type == 7) {
this.$router.push({
path: '/property/maintenance',
})
} else if (type == 8) {
this.$router.push({
path: '/property/complaint',
})
} else if (type == 9) {
this.$router.push({
path: '/property/advertisement',
})
}
},
toMore() {
this.$router.push({
path: '/property/advertisement',
})
},
toDetails(item) {
this.noticeTitle = item.noticeTitle
this.noticeContent = item.noticeContent
this.visible = true
},
handleCancel(e) {
this.visible = false
},
handleSizeChange(e) {
let that = this
this.typeCode = e.target.value
that.onDetail(this.typeCode)
},
},
}
</script>
<style lang="less" scoped>
.hone-content-box {
background-color: #fff;
padding: 16px;
padding: 10px;
.statistics {
// flex: none;
background: #fff;
width: 100%;
height: 90px;
box-sizing: border-box;
......@@ -174,9 +335,18 @@
align-items: center;
padding-left: 20px;
.icon {
width: 64px;
height: 64px;
width: 60px;
height: 60px;
border-radius: 60px;
margin-right: 12px;
display: flex;
text-align: center;
align-items: center;
justify-content: center;
.anticon {
font-size: 32px;
color: #ffffff;
}
}
}
......@@ -188,4 +358,98 @@
}
}
}
.t-box {
background: #fff;
padding: 15px;
border: 1px solid #e0dfdf;
}
.box-title {
font-weight: bold;
margin-bottom: 15px;
display: inline-block;
padding-left: 10px;
border-left: 3px solid #1890ff;
height: 20px;
line-height: 20px;
}
.pay-cost {
height: 380px;
}
.announcement {
height: 220px;
.title {
.ant-btn {
float: right;
margin-left: 10px;
}
}
ul {
padding-left: 5px;
li {
list-style-type: none;
height: 30px;
line-height: 30px;
display: flex;
justify-content: space-between;
a {
color: #666;
width: 80%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
}
}
.salesCard {
height: 380px;
}
.extra-type {
a {
margin-right: 20px;
}
}
.number {
width: 80%;
margin: 0 10%;
display: flex;
justify-content: space-evenly;
p {
font-size: 14px;
margin: 0;
}
}
.to-do {
height: 220px;
.todo-list {
padding: 0 10px;
margin-top: 15px;
.item {
display: flex;
justify-content: space-between;
}
}
}
.quick {
height: 165px;
.todo-list {
display: flex;
justify-content: space-evenly;
margin-top: 20px;
.item {
margin: 0 10px;
display: flex;
flex-direction: column;
text-align: center;
cursor: pointer;
.anticon {
font-size: 40px;
color: #007dff;
}
p {
margin-top: 8px;
}
}
}
}
</style>
\ No newline at end of file
......@@ -30,7 +30,7 @@
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('楼宇管理')">导出</a-button>
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
......@@ -162,7 +162,8 @@
url: {
list: "/property-community/building/communityBuilding/list",
delete: '/property-community/building/communityBuilding/delete',
deleteBatch: '/property-community/building/communityBuilding/deleteBatch'
deleteBatch: '/property-community/building/communityBuilding/deleteBatch',
exportXlsUrl: "/property-community/building/communityBuilding/exportXls",
}
}
},
......
......@@ -23,7 +23,7 @@
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button>
<!-- <a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button> -->
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
......
......@@ -36,7 +36,7 @@
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('房屋管理')">导出</a-button>
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
......@@ -177,7 +177,8 @@
url: {
list: "/property-community/building/communityRoom/list",
delete: '/property-community/building/communityRoom/delete',
deleteBatch: '/property-community/building/communityRoom/deleteBatch'
deleteBatch: '/property-community/building/communityRoom/deleteBatch',
exportXlsUrl: "/property-community/building/communityRoom/exportXls"
}
}
},
......
......@@ -12,14 +12,16 @@
<a-col :md="6" :sm="8">
<a-form-model-item label="房屋用途">
<a-select style="width: 100%" v-model="queryParam.chargeType" placeholder="请选择房屋用途">
<a-select-option v-for="item in useOptions" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
<a-select-option v-for="item in useOptions" :key="item.value"
:value="item.value">{{item.label}}</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :md="6" :sm="8">
<a-form-model-item label="认证状态">
<a-select style="width: 100%" v-model="queryParam.chargeType" placeholder="请选择认证状态">
<a-select-option v-for="item in certificationOptions" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
<a-select-option v-for="item in certificationOptions" :key="item.value"
:value="item.value">{{item.label}}</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
......@@ -36,17 +38,23 @@
<div style="display:flex">
<div style="flex: none;width:200px" v-if="treeData.length">
<a-tree v-if="treeDataFlag" :load-data="onLoadData" :tree-data="treeData" @select="onClickTree" style="max-height: 600px;overflow-y:auto" />
<a-tree v-if="treeDataFlag" :load-data="onLoadData" :tree-data="treeData" @select="onClickTree"
style="max-height: 600px;overflow-y:auto" />
</div>
<div style="flex:auto;padding-left:10px">
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button>
<a-button icon="download" @click="downloadExportXls()">模板下载</a-button>
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader"
:action="importExcelUrl" @change="handleImportExcel">
<a-button type="primary" icon="import">导入</a-button>
</a-upload>
<a-button type="primary" icon="download" @click="handleExportXls('业主管理')">导出</a-button>
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
<a-menu-item key="1" @click="batchDel"><a-icon type="delete" />删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
......@@ -60,20 +68,10 @@
<a style="margin-left: 24px" v-if="selectedRowKeys.length > 0" @click="onClearSelected">清空</a>
</div>
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange"
>
<a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="columns"
:dataSource="dataSource" :pagination="ipagination" :loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" class="j-table-force-nowrap"
@change="handleTableChange">
<span slot="ownerName" slot-scope="text, record">
<span>{{record.ownerName}}{{record.ownerPhone}}</span>
</span>
......@@ -89,7 +87,7 @@
</template>
<template v-else-if="record.auditStatus === 'refuse'">
<a @click="handleEdit(record)">详情</a>
<a-divider type="vertical"/>
<a-divider type="vertical" />
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)" placement="topLeft">
<a>删除</a>
</a-popconfirm>
......@@ -97,10 +95,10 @@
<template v-else>
<a @click="handleEdit(record)">编辑</a>
<a-divider type="vertical"/>
<a-divider type="vertical" />
<a-dropdown>
<a class="ant-dropdown-link">
更多 <a-icon type="down"/>
更多 <a-icon type="down" />
</a>
<a-menu slot="overlay">
<a-menu-item>
......@@ -128,91 +126,92 @@
</template>
<script>
import { getBuildingListApi, getUnitListApi, getRoomListApi } from '@/api/api'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import NoticeModal from './modules/NoticeModal'
import {filterDictTextByCache} from '@/components/dict/JDictSelectUtil'
import {RELATION_SHIP, filterDictTextByStatic} from '@/assets/static.js'
import {ajaxGetDictItems,getDictItemsFromCache} from '@/api/api'
import { getBuildingListApi, getUnitListApi, getRoomListApi, downloadOwnerTemplate } from '@/api/api'
import { downFile } from '@/api/manage'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import NoticeModal from './modules/NoticeModal'
import { filterDictTextByCache } from '@/components/dict/JDictSelectUtil'
import { RELATION_SHIP, filterDictTextByStatic } from '@/assets/static.js'
import { ajaxGetDictItems, getDictItemsFromCache } from '@/api/api'
const columns = [
const columns = [
{
title: '业主',
dataIndex: 'ownerName',
scopedSlots: { customRender: 'ownerName' },
key: 'ownerName',
align: 'center'
align: 'center',
},
{
title: '与业主关系',
dataIndex: 'relationShip',
key: 'relationShip',
align: 'center',
customRender: function(text) {
return filterDictTextByStatic(RELATION_SHIP, text);
}
customRender: function (text) {
return filterDictTextByStatic(RELATION_SHIP, text)
},
},
{
title: '住户',
dataIndex: 'residentName',
key: 'residentName',
scopedSlots: { customRender: 'residentName' },
align: 'center'
align: 'center',
},
{
title: '房屋用途',
dataIndex: 'useTo',
key: 'useTo',
align: 'center',
customRender: function(text) {
return filterDictTextByCache('house_purpose', text);
}
customRender: function (text) {
return filterDictTextByCache('house_purpose', text)
},
},
{
title: '房屋编号',
dataIndex: 'buildingName',
key: 'buildingName',
scopedSlots: { customRender: 'buildingName' },
align: 'center'
align: 'center',
},
{
title: '建筑面积(m2)',
dataIndex: 'floorSpace',
key: 'floorSpace',
align: 'center'
align: 'center',
},
{
title: '是否认证',
dataIndex: 'isAuth',
key: 'isAuth',
align: 'center',
customRender: function(text) {
return filterDictTextByCache('yn', text);
}
customRender: function (text) {
return filterDictTextByCache('yn', text)
},
},
{
title: '审核状态',
dataIndex: 'auditStatus',
key: 'auditStatus',
align: 'center',
customRender: function(text) {
return filterDictTextByCache('auditStatus', text);
}
customRender: function (text) {
return filterDictTextByCache('auditStatus', text)
},
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' },
align: 'center',
width: 150
}
]
width: 150,
},
]
export default {
export default {
name: 'PermissionListAsync',
mixins: [JeecgListMixin],
components: {
NoticeModal
NoticeModal,
},
data() {
return {
......@@ -222,60 +221,68 @@
// 表头
columns: columns,
url: {
list: "/property-community/info/communityOwner/list",
list: '/property-community/info/communityOwner/list',
delete: '/property-community/info/communityOwner/delete',
deleteBatch: '/property-community/info/communityOwner/deleteBatch'
deleteBatch: '/property-community/info/communityOwner/deleteBatch',
exportXlsUrl: '/property-community/info/communityOwner/exportXls',
importExcelUrl: 'property-community/info/communityOwner/importExcel',
downloadExcelUrl: 'property-community/info/communityOwner/downloadOwnerTemplate',
},
treeData: []
treeData: [],
}
},
created () {
created() {
this.getBuildingList()
this.initDictData()
},
computed: {
importExcelUrl: function () {
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
},
},
methods: {
initDictData() {
//优先从缓存中读取字典配置
if(getDictItemsFromCache('owner_certification_status')){
this.useOptions = getDictItemsFromCache('house_purpose');
this.certificationOptions = getDictItemsFromCache('owner_certification_status');
if (getDictItemsFromCache('owner_certification_status')) {
this.useOptions = getDictItemsFromCache('house_purpose')
this.certificationOptions = getDictItemsFromCache('owner_certification_status')
return
}
// //根据字典Code, 初始化字典数组
ajaxGetDictItems('house_purpose', null).then((res) => {
if (res.success) {
this.useOptions = res.result;
this.useOptions = res.result
}
})
ajaxGetDictItems('owner_certification_status', null).then((res) => {
if (res.success) {
this.certificationOptions = res.result;
this.certificationOptions = res.result
}
})
},
async getBuildingList() {
let {result} = await getBuildingListApi()
this.treeData = result.map(item=> {
let { result } = await getBuildingListApi()
this.treeData = result.map((item) => {
return {
title: item.buildingName,
key: item.id
key: item.id,
}
})
},
onClickTree(value, option) {
let level = option.node.pos.split('-').length
if(level === 2) {
if (level === 2) {
this.queryParam['buildingId'] = value[0]
this.queryParam['unitId'] = undefined
this.queryParam['roomId'] = undefined
}
if(level === 3) {
if (level === 3) {
this.queryParam['buildingId'] = undefined
this.queryParam['unitId'] = value[0]
this.queryParam['roomId'] = undefined
}
if(level === 4) {
if (level === 4) {
this.queryParam['buildingId'] = undefined
this.queryParam['unitId'] = undefined
this.queryParam['roomId'] = value[0]
......@@ -284,49 +291,71 @@
},
onSearchReset() {
this.treeDataFlag = false
setTimeout(()=> {
setTimeout(() => {
this.treeDataFlag = true
}, 30)
this.searchReset()
},
onLoadData(treeNode) {
return new Promise(async resolve => {
return new Promise(async (resolve) => {
if (treeNode.dataRef.children) {
resolve();
return;
resolve()
return
}
if(treeNode.pos.split('-').length === 2) {
let {result} = await getUnitListApi({id: treeNode.eventKey})
treeNode.dataRef.children = result.map(item=> {
if (treeNode.pos.split('-').length === 2) {
let { result } = await getUnitListApi({ id: treeNode.eventKey })
treeNode.dataRef.children = result.map((item) => {
return {
title: item.unitName,
key: item.id
key: item.id,
}
})
this.treeData = [...this.treeData];
resolve();
this.treeData = [...this.treeData]
resolve()
} else {
let {result} = await getRoomListApi({id: treeNode.eventKey})
treeNode.dataRef.children = result.map(item=> {
let { result } = await getRoomListApi({ id: treeNode.eventKey })
treeNode.dataRef.children = result.map((item) => {
return {
title: item.roomNum,
key: item.id,
isLeaf: true
isLeaf: true,
}
})
this.treeData = [...this.treeData];
resolve();
this.treeData = [...this.treeData]
resolve()
}
});
})
},
onRoutetAdd(id) {
this.$router.push({
path: '/information/owner-add?id=' + id
});
}
path: '/information/owner-add?id=' + id,
})
},
downloadExportXls() {
let fileName ='业主管理模板';
downFile(this.url.downloadExcelUrl, '').then((data) => {
if (!data) {
this.$message.warning('文件下载失败')
return
}
if (typeof window.navigator.msSaveBlob !== 'undefined') {
window.navigator.msSaveBlob(new Blob([data], { type: 'application/vnd.ms-excel' }), fileName + '.xlsx')
} else {
let url = window.URL.createObjectURL(new Blob([data], { type: 'application/vnd.ms-excel' }))
let link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', fileName + '.xlsx')
document.body.appendChild(link)
link.click()
document.body.removeChild(link) //下载完成移除元素
window.URL.revokeObjectURL(url) //释放掉blob对象
}
})
},
},
}
</script>
<style scoped>
@import '~@assets/less/common.less';
@import '~@assets/less/common.less';
</style>
\ No newline at end of file
......@@ -23,7 +23,7 @@
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button>
<!-- <a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button> -->
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
......
......@@ -23,7 +23,7 @@
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button>
<!-- <a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button> -->
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
......
......@@ -30,7 +30,7 @@
<!-- 操作按钮区域 -->
<div class="table-operator">
<!-- <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button> -->
<a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button>
<!-- <a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button> -->
<!-- <a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
......
......@@ -30,7 +30,7 @@
<!-- 操作按钮区域 -->
<div class="table-operator">
<!-- <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button> -->
<a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button>
<!-- <a-button type="primary" icon="download" @click="handleExportXls('t_property_settled')">导出</a-button> -->
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论