wxz 3 years ago
parent
commit
335c31e439
  1. 2
      .env.development
  2. 1
      .env.production
  3. 1
      .env.production.sit
  4. 1
      .env.shibei_production
  5. BIN
      src/assets/images/shuju/main/back-on.png
  6. BIN
      src/assets/images/shuju/main/back.png
  7. BIN
      src/assets/images/shuju/main/close.png
  8. BIN
      src/assets/images/shuju/renfang/index/per/dy.png
  9. BIN
      src/assets/images/shuju/renfang/index/per/lnr.png
  10. BIN
      src/assets/images/shuju/renfang/index/per/qsn.png
  11. BIN
      src/assets/images/shuju/renfang/index/per/syry.png
  12. BIN
      src/assets/images/shuju/renfang/index/per/ygxl.png
  13. BIN
      src/assets/images/shuju/renfang/index/per/zyz.png
  14. 54
      src/assets/scss/dataBoard/listBox.scss
  15. 66
      src/assets/scss/dataBoard/popup-info.scss
  16. 27
      src/assets/scss/dataBoard/renfang/index.scss
  17. 38
      src/assets/scss/dataBoardMain.scss
  18. 10
      src/assets/scss/modules/index.scss
  19. 114
      src/js/dai/request-bipass.js
  20. 1027
      src/router/index.js
  21. 2
      src/views/components/blackSearch.vue
  22. 2
      src/views/components/deathSearch copy.vue
  23. 2
      src/views/components/deathSearch.vue
  24. 2
      src/views/components/foldText.vue
  25. 47
      src/views/components/resiForm.vue
  26. 3
      src/views/components/resiInfo.vue
  27. 2
      src/views/components/resiSearch copy.vue
  28. 207
      src/views/dataBoard/cpts/bread.vue
  29. 135
      src/views/dataBoard/cpts/house-details.vue
  30. 1635
      src/views/dataBoard/cpts/map/index.vue
  31. 398
      src/views/dataBoard/cpts/map/popup.vue
  32. 155
      src/views/dataBoard/cpts/popup.vue
  33. 378
      src/views/dataBoard/cpts/resi-details.vue
  34. 819
      src/views/dataBoard/cpts/tb.vue
  35. 149
      src/views/dataBoard/renfang/cpts/bread.vue
  36. 862
      src/views/dataBoard/renfang/cpts/fwgl.vue
  37. 785
      src/views/dataBoard/renfang/cpts/jmgl.vue
  38. 603
      src/views/dataBoard/renfang/cpts/rkfx.vue
  39. 82
      src/views/dataBoard/renfang/cpts/rkfxPieOption.js
  40. 282
      src/views/dataBoard/renfang/cpts/rkyj.vue
  41. 284
      src/views/dataBoard/renfang/cpts/szsq.vue
  42. 241
      src/views/dataBoard/renfang/house/list.vue
  43. 1112
      src/views/dataBoard/renfang/index.vue
  44. 284
      src/views/dataBoard/renfang/resi/class.vue
  45. 225
      src/views/dataBoard/renfang/resi/list.vue
  46. 223
      src/views/dataBoard/renfang/warn/building.vue
  47. 199
      src/views/dataBoard/renfang/warn/resi.vue
  48. 604
      src/views/dataBoardMain/main-navbar.vue
  49. 544
      src/views/modules/base/community/communityExportInfo.vue
  50. 116
      src/views/modules/base/community/communityTable.vue
  51. 32
      src/views/modules/base/diyInfo.vue
  52. 4
      src/views/modules/base/resi copy.vue
  53. 80
      src/views/modules/base/resi.vue
  54. 2
      src/views/modules/customer/feedback/DetailForm.vue
  55. 879
      src/views/modules/home/index.vue
  56. 420
      src/views/modules/home/notice.vue
  57. 2
      src/views/modules/productConfig/autoTest/autoTestList copy.vue
  58. 2
      src/views/modules/productConfig/subscribe/TempDetail.vue
  59. 2
      src/views/modules/productConfig/subscribe/TempEdit.vue

2
.env.development

@ -9,6 +9,8 @@ VUE_APP_API_SERVER = http://192.168.1.144/api
# VUE_APP_API_SERVER = https://epmet-dev.elinkservice.cn:41080/api
# VUE_APP_API_SERVER = https://epmet-dev.elinkservice.cn/api
VUE_APP_BIPASS_API_SERVER = http://bipaas.elinkservice.cn/linkdata/linkdata-gateway/route
# VUE_APP_NODE_ENV=dev_sdtdt
VUE_APP_NODE_ENV=dev
#项目根路径

1
.env.production

@ -1,4 +1,5 @@
NODE_ENV=production
VUE_APP_API_SERVER = https://epmet-cloud.elinkservice.cn/api
VUE_APP_BIPASS_API_SERVER = http://bipaas.elinkservice.cn/linkdata/linkdata-gateway/route
VUE_APP_NODE_ENV=prod
VUE_APP_PUBLIC_PATH=epmet-oper

1
.env.production.sit

@ -2,5 +2,6 @@ NODE_ENV=production
# VUE_APP_API_SERVER = https://epmet-test.elinkservice.cn/api
# VUE_APP_API_SERVER = http://192.168.1.140/api
VUE_APP_API_SERVER = http://192.168.1.144/api
VUE_APP_BIPASS_API_SERVER = http://bipaas.elinkservice.cn/linkdata/linkdata-gateway/route
VUE_APP_NODE_ENV=prod:sit
VUE_APP_PUBLIC_PATH=epmet-oper

1
.env.shibei_production

@ -1,4 +1,5 @@
NODE_ENV=production
VUE_APP_API_SERVER = https://epdc-shibei.elinkservice.cn/api
# VUE_APP_BIPASS_API_SERVER = http://bipaas.elinkservice.cn/linkdata/linkdata-gateway/route
VUE_APP_NODE_ENV=shibei_prod
VUE_APP_PUBLIC_PATH=epmet-oper

BIN
src/assets/images/shuju/main/back-on.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 689 B

BIN
src/assets/images/shuju/main/back.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 868 B

BIN
src/assets/images/shuju/main/close.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

BIN
src/assets/images/shuju/renfang/index/per/dy.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
src/assets/images/shuju/renfang/index/per/lnr.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/assets/images/shuju/renfang/index/per/qsn.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
src/assets/images/shuju/renfang/index/per/syry.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
src/assets/images/shuju/renfang/index/per/ygxl.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/assets/images/shuju/renfang/index/per/zyz.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

54
src/assets/scss/dataBoard/listBox.scss

@ -1,15 +1,55 @@
.m-listbox-main{
.g-pgi {
min-height: 100%;
box-sizing: border-box;
margin-left:16px;
.g-listbox{
}
padding: 0 25px 50px;
}
.m-title {
display: flex;
align-items: center;
margin-top: 15px;
}
.title_img {
width: 17px;
height: 17px;
}
.tip_title {
margin-left: 8px;
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 22px;
}
.title_line {
margin-left: 8px;
width: 244px;
height: 1px;
background: linear-gradient(270deg, rgba(55, 198, 255, 0.1) 0%, #1995ff 100%);
}
.second-select {
margin: 0 10px 0 10px;
::v-deep .el-input {
width: 180px;
height: 36px;
.el-input__inner {
height: 100%;
padding: 0 10px;
color: #fff;
line-height: 36px;
background: #06186d;
border: 1px solid #1a64cc;
}
.el-icon-arrow-up:before {
content: "\e78f";
}
// .el-select__caret:before {
// content: '\E790'
// }
}
}
}

66
src/assets/scss/dataBoard/popup-info.scss

@ -0,0 +1,66 @@
@import "../c/config";
@import "../c/function";
@import "./c/common";
.m-info {
padding: 20px 50px 10px;
.subtitle {
display: flex;
margin-left: -10px;
padding: 10px;
align-items: center;
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: rgba(255, 255, 255, 0.85);
line-height: 22px;
.i-chunk {
margin-right: 5px;
width: 4px;
height: 12px;
background: #1a95ff;
border-radius: 1px;
}
.i-line {
margin-left: 8px;
flex: 1;
width: 100%;
height: 1px;
border: 1px dashed rgba(26, 149, 255, 0.45);
}
}
.row {
display: flex;
flex-wrap: wrap;
.item {
display: flex;
padding: 15px 0;
min-width: 50%;
line-height: 24px;
.field {
width: 80px;
font-size: 14px;
text-align: right;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(#ffffff, 0.5);
}
.value {
flex: 1;
width: 100%;
margin-left: 10px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(#ffffff, 0.85);
}
}
}
}

27
src/assets/scss/dataBoard/renfang/index.scss

@ -32,6 +32,7 @@
top: 560px;
left: 0;
width: 100%;
background-color: transparent;
.btn {
position: relative;
width: 213px;
@ -266,7 +267,10 @@
height: 115px;
}
.m-rkyj {
height: 253px;
height: 423px;
&.z-shrink {
height: 253px;
}
}
.m-per {
@ -277,27 +281,32 @@
right: 0;
display: flex;
align-items: center;
justify-content: space-around;
padding-left: 10px;
.item {
display: flex;
width: 160px;
width: 120px;
img {
display: block;
margin-right: 16px;
width: 48px;
height: 48px;
}
.item-info {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
line-height: 20px;
line-height: 40px;
vertical-align: bottom;
div {
margin-bottom: 6px;
&:first-child {
line-height: 20px;
}
}
img {
display: inline-block;
margin-right: 5px;
width: 20px;
height: 20px;
vertical-align: bottom;
}
b {
font-weight: 500;

38
src/assets/scss/dataBoardMain.scss

@ -54,16 +54,50 @@
color: #ffffff;
}
.btn-back {
position: absolute;
top: 52px;
left: 40px;
display: flex;
width: 60px;
align-items: center;
line-height: 22px;
font-size: 16px;
color: #1a95ff;
cursor: pointer;
img {
width: 16px;
margin-right: 5px;
}
.z-default {
display: block;
}
.z-on {
display: none;
}
&:hover {
color: #fff;
.z-default {
display: none;
}
.z-on {
display: block;
}
}
}
.nav-list {
position: absolute;
top: 40px;
left: 40px;
left: 120px;
display: flex;
width: 500px;
&.z-right {
left: auto;
right: 40px;
right: 120px;
.nav-item {
background-image: url(../images/shuju/main/nav-right.png);
&.z-on {

10
src/assets/scss/modules/index.scss

@ -323,6 +323,16 @@
border-radius: 2px;
overflow: hidden;
.empty {
text-align: center;
color: #999;
img {
display: block;
width: 120px;
margin: 100px auto 20px;
}
}
.item {
padding: 16px 0 12px;
border-bottom: 1px dashed #f0f5fa;

114
src/js/dai/request-bipass.js

@ -0,0 +1,114 @@
/*---------------------------------------------------------------
| 数据中台专用请求接口封装 |
---------------------------------------------------------------*/
import axios from "axios";
import curry from "dai-js/tools/curry";
import { Message } from "element-ui";
import { clearLoginInfo } from "@/utils";
axios.defaults.withCredentials = true;
axios.defaults.crossDomain = true;
const request = curry((method, uri, data = {}, params = {}) => {
return new Promise((reslove) => {
let returnIniData = {
httpCode: "",
data: {},
msg: "",
code: "",
};
const { headers, mockId } = params;
// env文件配置接口
let url = process.env.VUE_APP_BIPASS_API_SERVER;
// mock 开发临时用接口
if (mockId) {
url = "https://mock.apifox.cn/m2/2242395-0-default/" + mockId;
}
const succFn = (res) => {
// log(`[request成功] ${url}`, data, res);
let retData = {
...returnIniData,
...res.data,
httpCode: res.statusCode,
};
// if(typeof Vue.$afterRequestHook == 'function'){
// retData = Vue.$afterRequestHook(retData);
// }
if (res.data.code > 8000 && res.data.code < 10000) {
// Message.error(res.data.msg);
}
if (res.code == 1007 || res.code == 1024 || res.code == 2003) {
// 10005 token为空 10006登陆超时 10007别处登录
console.log("登录失效");
Message.error(res.data.msg);
clearLoginInfo();
return next({
name: "login",
});
}
reslove(retData);
};
const failFn = (err) => {
// log(`[request失败] ${url}`, data, err);
reslove(
Object.assign({}, returnIniData, {
httpCode: "9999", //访问出现意外
msg: "网络错误",
})
);
};
if (method.toUpperCase() == "POST") {
axios
.post(
url,
{
apiCode: "/api/post",
dispatcherSystem: "dataservice",
param: {
ds_code: uri,
app_code: "empet",
orderby: "[]",
...data,
},
},
{
headers,
responseType: "json",
}
)
.then(succFn)
.catch(failFn);
} else {
axios
.post(
url,
{
apiCode: "/api/get",
dispatcherSystem: "dataservice",
param: {
ds_code: uri,
app_code: "empet",
orderby: "[]",
...data,
},
},
{
headers,
responseType: "json",
}
)
.then(succFn)
.catch(failFn);
}
});
});
export const requestPostBi = request("post");

1027
src/router/index.js

File diff suppressed because it is too large

2
src/views/components/blackSearch.vue

@ -568,7 +568,7 @@ export default {
}
</script>
<style lang="scss" scope>
<style lang="scss" scoped>
.resi-container .resi-card {
position: relative;
overflow: visible;

2
src/views/components/deathSearch copy.vue

@ -542,7 +542,7 @@ export default {
}
</script>
<style lang="scss" scope>
<style lang="scss" scoped>
.resi-container .resi-card {
position: relative;
overflow: visible;

2
src/views/components/deathSearch.vue

@ -522,7 +522,7 @@ export default {
}
</script>
<style lang="scss" scope>
<style lang="scss" scoped>
@import "@/assets/scss/modules/management/list-main.scss";
.m-search {

2
src/views/components/foldText.vue

@ -65,7 +65,7 @@ export default {
};
</script>
<style lang="scss" scope>
<style lang="scss" scoped>
//
@mixin cs {
&::after {

47
src/views/components/resiForm.vue

@ -1183,7 +1183,8 @@ export default {
oldSubsidy:''//
},
specialDto:{//
specialCategoryCode:[]//,
id:'',//,
specialCategoryCode:[]
},
birthRecordDTO:{
birthplace: '',
@ -1428,7 +1429,7 @@ export default {
},
async getResidentNation(){
try {
const { data } = await this.$http.post('sys/dict/data/dictlist', {'dictType':'resident_category'})
const { data } = await this.$http.post('sys/dict/data/dictlist', {'dictType':'special_resident_category'})
this.footerInputList.forEach(c => {
for(let i of c.children){
if(i.formName == 'specialCategoryCode'){
@ -1617,103 +1618,106 @@ export default {
this.getHouseList()
},
async handleClick (tab, event) {
if (event.toElement.innerText == '教育') {
console.log(tab);
console.log(event);
console.log(tab._props.label );
if (tab._props.label == '教育') {
if (!this.form.resiId) {
this.newForm.eduInfoDto = this.form.eduInfoDto
} else {
await this.residentEduInfo(this.form.resiId)
}
} else if (event.toElement.innerText == '兴趣爱好') {
} else if (tab._props.label == '兴趣爱好') {
if (!this.form.resiId) {
this.newForm.hobbyInfoDto = this.form.hobbyInfoDto
} else {
await this.residentHobbyInfo(this.form.resiId)
}
} else if (event.toElement.innerText == '宗教信仰') {
} else if (tab._props.label == '宗教信仰') {
if (!this.form.resiId) {
this.newForm.religionDto = this.form.religionDto
} else {
await this.residentReligion(this.form.resiId)
}
} else if (event.toElement.innerText == '健康') {
} else if (tab._props.label == '健康') {
if (!this.form.resiId) {
this.newForm.healthDto = this.form.healthDto
} else {
await this.getHealthInfoDetailById(this.form.resiId)
}
} else if (event.toElement.innerText == '工作') {
} else if (tab._props.label == '工作') {
if (!this.form.resiId) {
this.newForm.workInfoDto = this.form.workInfoDto
} else {
await this.residentWorkInfo(this.form.resiId)
}
} else if (event.toElement.innerText == '经济情况') {
} else if (tab._props.label == '经济情况') {
if (!this.form.resiId) {
this.newForm.economyDto = this.form.economyDto
} else {
await this.getEconomyDetailById(this.form.resiId)
}
} else if (event.toElement.innerText == '居住') {
} else if (tab._props.label == '居住') {
if (!this.form.resiId) {
this.newForm.resideInfoDto = this.form.resideInfoDto
} else {
await this.getResideInfoDetailById(this.form.resiId)
}
} else if (event.toElement.innerText == '家庭') {
} else if (tab._props.label == '家庭') {
if (!this.form.resiId) {
this.newForm.familyInfoDto = this.form.familyInfoDto
} else {
await this.getFamilyInfoDetailById(this.form.resiId)
}
} else if (event.toElement.innerText == '出生人员') {
} else if (tab._props.label == '出生人员') {
if (!this.form.resiId) {
this.newForm.birthRecordDTO = this.form.birthRecordDTO
} else {
await this.residentBirthRecord(this.form.resiId)
}
} else if (event.toElement.innerText == '党员信息') {
} else if (tab._props.label == '党员信息') {
if (!this.form.resiId) {
this.newForm.parymemberInfoDto = this.form.parymemberInfoDto
} else {
await this.residentPartyMemberInfo(this.form.resiId)
}
} else if (event.toElement.innerText == '保障房信息') {
} else if (tab._props.label == '保障房信息') {
if (!this.form.resiId) {
this.newForm.ensureHouseDto = this.form.ensureHouseDto
} else {
await this.residentEnsureHouse(this.form.resiId)
}
} else if (event.toElement.innerText == '失业') {
} else if (tab._props.label == '失业') {
if (!this.form.resiId) {
this.newForm.unemployedDto = this.form.unemployedDto
} else {
await this.residentUnemployed(this.form.resiId)
}
} else if (event.toElement.innerText == '退役军人') {
} else if (tab._props.label == '退役军人') {
if (!this.form.resiId) {
this.newForm.veteranDto = this.form.veteranDto
} else {
await this.getVeteranDetailById(this.form.resiId)
}
} else if (event.toElement.innerText == '统战') {
} else if (tab._props.label == '统战') {
if (!this.form.resiId) {
this.newForm.unitedFrontDto = this.form.unitedFrontDto
} else {
await this.residentUnitedFront(this.form.resiId)
}
} else if (event.toElement.innerText == '志愿者信息') {
} else if (tab._props.label == '志愿者信息') {
if (!this.form.resiId) {
this.newForm.volunteerDto = this.form.volunteerDto
} else {
await this.getVolunteerDetailById(this.form.resiId)
}
} else if (event.toElement.innerText == '特殊人群') {
} else if (tab._props.label == '特殊人群') {
if (!this.form.resiId) {
this.newForm.specialDto = this.form.specialDto
} else {
await this.residentSpecial(this.form.resiId)
}
} else if (event.toElement.innerText == '老年人') {
} else if (tab._props.label == '老年人') {
if (!this.form.resiId) {
this.newForm.oldPeopleDto = this.form.oldPeopleDto
} else {
@ -2311,6 +2315,8 @@ export default {
}
this.newForm.eduInfoDto = this.form.eduInfoDto
this.newForm.specialDto = this.form.specialDto
console.log(this.newForm.specialDto);
},
setJSON() {
this.newForm.agencyName = this.form.agencyName,
@ -2408,8 +2414,7 @@ export default {
if(this.newForm.oldPeopleDto) {
this.newForm.oldPeopleDto = this.form.oldPeopleDto
}
if(this.newForm.specialDto) {
if(this.newForm.specialDto){
this.newForm.specialDto = this.form.specialDto
}
}

3
src/views/components/resiInfo.vue

@ -1201,6 +1201,7 @@ export default {
}else if(tab.index == 14){
this.getOldPeopleDetailById()
}else if(tab.index == 15){
console.log(1);
this.getResidentNation()
this.getresidentSpecial()
}else if(tab.index == 16){
@ -1424,7 +1425,7 @@ export default {
}},
async getResidentNation(){
try {
const { data } = await this.$http.post('sys/dict/data/dictlist', {'dictType':'resident_category'})
const { data } = await this.$http.post('sys/dict/data/dictlist', {'dictType':'special_resident_category'})
this.specialDtoArr=data.data
} catch (error) {
console.log(error,'获取特殊人群字典');

2
src/views/components/resiSearch copy.vue

@ -725,7 +725,7 @@ export default {
}
</script>
<style lang="scss" scope>
<style lang="scss" scoped>
// .resi-container {
// position: relative;
// overflow: visible;

207
src/views/dataBoard/cpts/bread.vue

@ -1,84 +1,147 @@
<template>
<div>
<div class="m-bread">
<div class="g-line">
<div class="line-left"></div>
<div class="line-right"></div>
</div>
<div class="g-bread">
<el-breadcrumb :separator="separator">
<el-breadcrumb-item v-for="item in breadList"
:key="item.path"
:to="{ path: item.path }">
{{ item.meta.title }}
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="g-line">
<div class="line-left"></div>
<div class="line-right"></div>
</div>
</div>
</div>
<div>
<div class="m-bread">
<div class="line">
<div class="line-left"></div>
<div class="line-right"></div>
</div>
<div class="bread">
<el-breadcrumb :separator="separator">
<el-breadcrumb-item
v-for="item in breadList"
:key="item.path"
:to="{ path: item.path }"
>
<span @click="handleClickItem(item)">{{
item.meta.title
}}</span>
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="line">
<div class="line-left"></div>
<div class="line-right"></div>
</div>
</div>
</div>
</template>
<script>
import ScreenLoading from "./loading";
import { mapGetters } from 'vuex'
import { mapGetters } from "vuex";
export default {
name: "table",
components: {
ScreenLoading,
},
props: {
//
separator: {
type: String,
default: '/'
},
//
breadList: {
type: Array,
default: () => {
return [];
},
},
},
data () {
return {
pageSize: 10,
pageNo: 1,
};
},
watch: {},
computed: {
...mapGetters(['clientHeight', 'iframeHeight'])
},
mounted () { },
created () { },
methods: {
},
name: "bread",
components: {
ScreenLoading,
},
props: {
//
separator: {
type: String,
default: "/",
},
//
breadList: {
type: Array,
default: () => {
return [];
},
},
},
data() {
return {
pageSize: 10,
pageNo: 1,
};
},
watch: {},
computed: {
...mapGetters(["clientHeight", "iframeHeight"]),
},
mounted() {},
created() {},
methods: {
handleClickItem(item) {
this.$emit("tap", { item });
},
},
};
</script>
<style
lang="scss"
src="@/assets/scss/dataBoard/bread.scss"
scoped
></style>
<style lang="scss" scoped>
.m-bread {
padding: 0 0 15px 0;
.bread {
margin: 4px 0;
padding: 8px 16px;
height: 40px;
background: rgba(26, 149, 255, 0.15);
width: 100%;
/deep/ .el-breadcrumb__item {
line-height: 25px;
font-size: 14px;
}
/deep/ .el-breadcrumb__item .el-breadcrumb__inner {
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ffffff;
}
/deep/ .el-breadcrumb__item:first-child .el-breadcrumb__inner {
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
}
.router_parents {
line-height: 25px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
.arrow {
padding: 0 5px;
}
}
.router_parents:hover {
cursor: pointer;
}
.router_child {
line-height: 25px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ffffff;
}
}
.line {
display: flex;
width: 100%;
.line-left {
flex-grow: 0;
flex-shrink: 0;
flex-basis: 16px;
height: 1px;
background: #1a95ff;
}
.line-right {
flex-grow: 1;
flex-shrink: 1;
flex-basis: 0px;
height: 1px;
background: rgba(26, 149, 255, 0.45);
}
}
}
</style>

135
src/views/dataBoard/cpts/house-details.vue

@ -0,0 +1,135 @@
<template>
<popup title="房屋详情" @close="handleClose">
<template v-slot:cnt>
<div class="m-info">
<div class="row">
<div class="item">
<div class="field">所属小区</div>
<div class="value">{{ info.village }}</div>
</div>
<div class="item">
<div class="field">所属楼栋</div>
<div class="value">{{ info.building }}</div>
</div>
<div class="item">
<div class="field">单元号</div>
<div class="value">{{ info.unit }}</div>
</div>
<div class="item">
<div class="field">门牌号</div>
<div class="value">{{ info.door }}</div>
</div>
<div class="item">
<div class="field">房屋类型</div>
<div class="value">{{ info.house_type }}</div>
</div>
<div class="item">
<div class="field">房屋用途</div>
<div class="value">{{ info.house_usage }}</div>
</div>
<div class="item">
<div class="field">房屋状态</div>
<div class="value">{{ info.house_state }}</div>
</div>
</div>
<div class="row">
<div class="item">
<div class="field">房主姓名</div>
<div class="value">{{ info.holder_name }}</div>
</div>
</div>
<div class="row">
<div class="item">
<div class="field">联系电话</div>
<div class="value">{{ info.holder_phone }}</div>
</div>
<div class="item">
<div class="field">证件号</div>
<div class="value">{{ info.holder_idcard }}</div>
</div>
<div class="item">
<div class="field">备注</div>
<div class="value">{{ info.remark }}</div>
</div>
</div>
</div>
</template>
</popup>
</template>
<script>
import popup from "@/views/dataBoard/cpts/popup";
import { requestPostBi } from "@/js/dai/request-bipass";
export default {
name: "houseDetails",
props: {
houseId: {
type: String,
default: "",
},
},
components: { popup },
data() {
return {
info: {
village: "--",
building: "--",
unit: "--",
door: "--",
house_type: "--",
house_usage: "--",
house_state: "--",
holder_name: "--",
holder_phone: "--",
holder_idcard: "--",
remark: "--",
house_id: "--",
},
};
},
mounted() {
this.getApiData();
},
methods: {
handleClose() {
this.$emit("close");
},
async getApiData() {
this.getInfo();
},
// id
async getInfo() {
const url = "house_info";
const { data, code, msg } = await requestPostBi(
url,
{
queryParam: {
house_id: this.houseId,
},
},
{
mockId: 60235478,
}
);
if (code === 0) {
this.info = { ...this.info, ...data[0] };
} else {
this.$message.error(msg);
}
},
},
};
</script>
<style lang="scss" src="@/assets/scss/dataBoard/popup-info.scss" scoped></style>

1635
src/views/dataBoard/cpts/map/index.vue

File diff suppressed because it is too large

398
src/views/dataBoard/cpts/map/popup.vue

@ -0,0 +1,398 @@
<template>
<div class="m-pop" ref="pop" @mousewheel="handleWheel" v-show="!hidden">
<div class="info">
<div v-if="type === '1'">
<div class="u-info-title">
<img
class="img"
src="@/assets/images/shuju/renfang/jm-logo.png"
alt
/>
<span>居民信息</span>
</div>
<div @click="handleClickBtn('watch-resi')" class="more-btn">
查看更多 >
</div>
<div class="item">
<span class="field">姓名</span>
<span>{{ info.user_name || "--" }}</span>
</div>
<div class="item">
<span class="field">所属网格</span>
<span>{{ info.grid || "--" }}</span>
</div>
<div class="item">
<span class="field">所属小区</span>
<span>{{ info.house || "--" }}</span>
</div>
<div class="item">
<span class="field">手机号</span>
<span>{{ info.telephone || "--" }}</span>
</div>
<div class="item">
<span class="field">性别</span>
<span>{{ info.genderShow || "--" }}</span>
</div>
<div class="item">
<span class="field">身份证号</span>
<span>{{ info.idcard || "--" }}</span>
</div>
<div class="item">
<span class="field">工作单位</span>
<span>{{ info.workunit || "--" }}</span>
</div>
<div class="item">
<span class="field">人户状况</span>
<span>{{ info.household || "--" }}</span>
</div>
<div class="item">
<span class="field">人员类别</span>
<span>{{ info.classtype || "--" }}</span>
</div>
<div class="operate">
<div
@click="handleClickBtn('create-demand')"
v-if="info.agencyId == $store.state.user.agencyId"
class="btn z-blue"
>
发布需求
</div>
<div
v-if="
info.agencyId == $store.state.user.agencyId &&
type === 'volunteer'
"
@click="handleClickBtn('create-service')"
class="btn z-yellow"
>
发起服务
</div>
</div>
</div>
<div v-if="type === '2'">
<div class="u-info-title">
<img
class="img"
src="@/assets/images/shuju/renfang/house-logo.png"
alt
/>
<span>小区信息</span>
</div>
<div class="item">
<span class="field">所属组织</span>
<span>{{ info.community || "--" }}</span>
</div>
<div class="item">
<span class="field">所属网格</span>
<span>{{ info.grid || "--" }}</span>
</div>
<div class="item">
<span class="field">小区名称</span>
<span>{{ info.village_name || "--" }}</span>
</div>
<div class="item">
<span class="field">关联物业</span>
<span>{{ info.property || "--" }}</span>
</div>
<div class="item">
<span class="field">实有楼栋</span>
<span>{{ info.building || "--" }}</span>
</div>
</div>
<div v-if="type === '3'">
<div class="u-info-title">
<img
class="img"
src="@/assets/images/shuju/renfang/house-logo.png"
alt
/>
<span>楼栋信息</span>
</div>
<div class="item">
<span class="field">所属小区</span>
<span>{{ info.village_name || "--" }}</span>
</div>
<div class="item">
<span class="field">楼栋名称</span>
<span>{{ info.village_name || "--" }}</span>
</div>
<div class="item">
<span class="field">楼栋类型</span>
<span>{{ info.building_type || "--" }}</span>
</div>
<div class="item">
<span class="field">单元数</span>
<span>{{ info.unit_count || "--" }}</span>
</div>
<div class="item">
<span class="field">层数</span>
<span>{{ info.levels_count || "--" }}</span>
</div>
<div class="item">
<span class="field">总户数</span>
<span>{{ info.households || "--" }}</span>
</div>
<div class="item">
<span class="field">人口数</span>
<span>{{ info.resident_count || "--" }}</span>
</div>
<div class="item">
<span class="field">楼长姓名</span>
<span>{{ info.hm_name || "--" }}</span>
</div>
<div class="item">
<span class="field">楼长电话</span>
<span>{{ info.hm_phone || "--" }}</span>
</div>
</div>
<div v-if="type === '4'">
<div class="u-info-title">
<img
class="img"
src="@/assets/images/shuju/renfang/house-logo.png"
alt
/>
<span>房屋信息</span>
</div>
<div @click="handleClickBtn('watch-house')" class="more-btn">
查看更多 >
</div>
<div class="item">
<span class="field">房屋名称</span>
<span>{{ info.title || "--" }}</span>
</div>
<div class="item">
<span class="field">房屋类型</span>
<span>{{ info.house_type || "--" }}</span>
</div>
<div class="item">
<span class="field">房屋用途</span>
<span>{{ info.house_usage || "--" }}</span>
</div>
<div class="item">
<span class="field">房屋状态</span>
<span>{{ info.house_state || "--" }}</span>
</div>
<div class="item">
<span class="field">房主姓名</span>
<span>{{ info.holder_name || "--" }}</span>
</div>
<div class="item">
<span class="field">联系方式</span>
<span>{{ info.holder_phone || "--" }}</span>
</div>
<div class="item">
<span class="field">房主身份证</span>
<span>{{ info.holder_idcard || "--" }}</span>
</div>
</div>
</div>
</div>
</template>
<script>
import { requestPost, requestGet } from "@/js/dai/request";
export default {
name: "popup",
props: {
item: {
type: Object,
default: () => ({}),
},
},
data() {
return {
hidden: true,
type: "",
srcItem: {},
info: {},
list: [],
};
},
computed: {},
watch: {},
mounted() {},
methods: {
handleWheel(e) {
if (this.$refs.pop.clientHeight >= 321) {
e.stopPropagation();
}
},
handleClickBtn(type) {
this.$emit("operate", type, {
type: this.type,
id: this.srcItem.id,
...this.info,
});
},
handleClickListItem(item) {
console.log("handleClickListItem", item);
this.$emit("clickListItem", item);
},
async show(item) {
console.log("-----------------show:", item);
const { type, latitude, longitude } = item;
if (!type) {
return false;
}
if (!latitude || !longitude) {
this.$message.warning("请先完善坐标位置");
return false;
}
this.type = item.type;
this.srcItem = item;
this.info = item;
this.hidden = false;
return true;
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/scss/c/config.scss";
@import "@/assets/scss/c/function.scss";
@import "@/assets/scss/modules/visual/c/common.scss";
.m-pop {
@include scrollBar2;
box-sizing: border-box;
padding: 10px 0;
width: 350px;
color: #fff;
font-size: 14px;
line-height: 20px;
max-height: 500px;
overflow-y: auto;
.info {
padding: 10px;
.u-info-title {
margin-bottom: 10px;
line-height: 20px;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
img {
position: relative;
top: 2px;
margin-right: 6px;
width: 16px;
vertical-align: top;
}
}
.item-pics {
display: flex;
margin: 20px 0;
img {
display: block;
width: 32%;
height: 90px;
margin-right: 9px;
object-fit: cover;
}
}
}
.item {
@include toe;
font-size: 14px;
font-family: PingFang SC;
font-weight: 400;
color: rgba(#ffffff, 0.85);
line-height: 28px;
.field {
display: inline-block;
margin-right: 5px;
min-width: 90px;
text-align: right;
color: rgba(#ffffff, 0.65);
}
}
.list {
.item {
display: flex;
align-items: center;
margin-bottom: 5px;
padding: 5px;
border-bottom: 1px dashed #124584;
&:last-child {
border-bottom: none;
}
.item-cnt {
@include toe;
width: 90%;
}
.i-arrow {
margin-left: auto;
}
}
}
.operate {
display: flex;
justify-content: center;
}
.more-btn {
position: absolute;
right: 20px;
top: 28px;
width: 80px;
height: 24px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #1a95ff;
line-height: 20px;
font-size: 14px;
text-align: right;
cursor: pointer;
}
.btn {
margin-top: 20px;
margin-right: 20px;
width: 110px;
line-height: 30px;
border: 1px solid #eee;
text-align: center;
font-size: 18px;
border-radius: 2px;
cursor: pointer;
&.z-blue {
background: #09a5ff;
border-color: #09a5ff;
}
&.z-yellow {
background: #fe6b53;
border-color: #fe6b53;
}
}
}
</style>

155
src/views/dataBoard/cpts/popup.vue

@ -0,0 +1,155 @@
<template>
<div class="m-pop">
<div class="wrap">
<div>
<div class="title">
<img
src="@/assets/images/shuju/main/card-subtitle-icon.png"
/>
<span>{{ title }}</span>
<i class="i-lin"></i>
</div>
<div class="btn-close" @click="handleClose">
<img src="@/assets/images/shuju/main/close.png" />
</div>
<div
class="cnt"
:style="{
maxHeight: $store.state.fixed1920.height - 280 + 'px',
}"
>
<slot name="cnt"></slot>
</div>
<div class="operate">
<div class="btn" @click="handleClose">关闭</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: "popup",
props: {
title: {
type: String,
default: "详情",
},
},
components: {},
data() {
return {};
},
mounted() {},
methods: {
handleClose() {
this.$emit("close");
},
},
};
</script>
<style lang="scss" scoped>
@import "~@/assets/scss/c/config.scss";
@import "~@/assets/scss/c/function.scss";
@import "~@/assets/scss/dataBoard/c/common.scss";
.m-pop {
@include shield;
position: absolute;
height: auto;
background-color: rgba(#000, 0.65);
.wrap {
position: relative;
box-sizing: border-box;
margin: 80px auto 0;
padding: 24px 16px;
width: 820px;
background: #00023a;
box-shadow: inset 0px 0px 40px 0px rgba(26, 149, 255, 0.45);
border-radius: 4px;
border: 1px solid #1a95ff;
.cnt {
overflow-y: auto;
@include scrollBar;
}
.title {
margin-bottom: 10px;
padding: 4px 2px;
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: rgba(#ffffff, 0.85);
line-height: 22px;
display: flex;
align-items: center;
img {
display: block;
margin-right: 5px;
width: 17px;
}
span {
display: block;
}
.i-line {
position: relative;
display: block;
width: 160px;
height: 1px;
background: linear-gradient(
270deg,
rgba(55, 198, 255, 0.1) 0%,
#1995ff 100%
);
}
}
.btn-close {
position: absolute;
top: 24px;
right: 16px;
cursor: pointer;
img {
width: 16px;
}
}
.operate {
display: flex;
.btn {
margin-left: auto;
display: block;
width: 60px;
height: 32px;
border-radius: 2px;
border: 1px solid rgba(255, 255, 255, 0.45);
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ffffff;
line-height: 32px;
text-align: center;
cursor: pointer;
opacity: 0.85;
&:hover {
opacity: 1;
}
}
}
}
}
</style>

378
src/views/dataBoard/cpts/resi-details.vue

@ -0,0 +1,378 @@
<template>
<popup title="居民详情" @close="handleClose">
<template v-slot:cnt>
<div class="m-info">
<div class="subtitle">
<i class="i-chunk"></i>
<span>基本信息</span>
<i class="i-line"></i>
</div>
<div class="row">
<div class="item">
<div class="field">所属网格</div>
<div class="value">
{{ info.community + " - " + info.grid }}
</div>
</div>
<div class="item">
<div class="field">所属房屋</div>
<div class="value">
{{
info.village +
" - " +
info.building +
" - " +
info.unit +
" - " +
info.room
}}
</div>
</div>
<div class="item">
<div class="field">本地户籍</div>
<div class="value">{{ info.census_type }}</div>
</div>
</div>
<div class="row">
<div class="item">
<div class="field">居民姓名</div>
<div class="value">{{ info.name }}</div>
</div>
<div class="item">
<div class="field">出生日期</div>
<div class="value">{{ info.birthday }}</div>
</div>
<div class="item">
<div class="field">性别</div>
<div class="value">{{ info.gender }}</div>
</div>
<div class="item">
<div class="field">民族</div>
<div class="value">{{ info.ethnic }}</div>
</div>
<div class="item">
<div class="field">联系电话</div>
<div class="value">{{ info.telephone }}</div>
</div>
<div class="item">
<div class="field">证件号</div>
<div class="value">{{ info.idcard }}</div>
</div>
<div class="item">
<div class="field">备注</div>
<div class="value">{{ info.resident_remark }}</div>
</div>
</div>
<div class="subtitle">
<i class="i-chunk"></i>
<span>分类信息</span>
<i class="i-line"></i>
</div>
<div class="row">
<div class="item">
<div class="field">居民分类</div>
<div class="value">
<div class="u-categorys">
<span v-if="info.crowd">党员</span>
<span v-if="info.mlsp">低保人员</span>
<span v-if="info.srs">保障房人员</span>
<span v-if="info.unemployed">失业人员</span>
<span v-if="info.woca">育龄妇女</span>
<span v-if="info.exs">退役军人</span>
<span v-if="info.ufs">统战人员</span>
<span v-if="info.petitioner">信访人员</span>
<span v-if="info.volunteer">志愿者</span>
<span v-if="info.in_person">失独人员</span>
<span v-if="info.tenant">租户</span>
<span v-if="info.float_popu">流动人口</span>
<span v-if="info.special_popu">特殊人群</span>
<span v-if="info.aaaa">独居老人</span>
<span v-if="info.empty_nest">空巢老人</span>
<span v-if="info.disability">失能老人</span>
<span v-if="info.dementia">失智老人</span>
<span v-if="info.adisability">残疾</span>
<span v-if="info.ser_ill">大病</span>
<span v-if="info.ncd">慢病</span>
</div>
</div>
</div>
</div>
<div class="subtitle">
<i class="i-chunk"></i>
<span>其他信息</span>
<i class="i-line"></i>
</div>
<div class="m-tabs">
<div
class="tab-btn"
@click="subStartTabIndex"
v-if="tabList.length > 7"
>
<img
src="@/assets/img/shuju/people/arrow-double-left.png"
/>
</div>
<div
v-show="
index >= startTabIndex && index < startTabIndex + 7
"
class="tab"
:class="
currentTabIndex % tabList.length == index
? 'z-on'
: ''
"
:key="'tab' + index"
@click="currentTabIndex = index"
v-for="(item, index) in tabList"
>
{{ item }}
</div>
<div
class="tab-btn"
@click="addStartTabIndex"
v-if="tabList.length > 7"
>
<img
src="@/assets/img/shuju/people/arrow-double-right.png"
/>
</div>
</div>
<div v-if="currentTab == '教育信息'">
<div class="row">
<div class="item">
<div class="field">文化程度</div>
<div class="value">{{ info.education }}</div>
</div>
<div class="item">
<div class="field">备注</div>
<div class="value">{{ info.education_remark }}</div>
</div>
</div>
</div>
</div>
</template>
</popup>
</template>
<script>
import popup from "@/views/dataBoard/cpts/popup";
import { requestPostBi } from "@/js/dai/request-bipass";
export default {
name: "residentDetails",
props: {
resiId: {
type: String,
default: "",
},
},
components: { popup },
data() {
return {
info: {
woca: true,
exs: false,
srs: true,
household: "--",
holdingrel: "--",
ethnic: "--",
community: "--",
user_id: "--",
census_type: "--",
aged: true,
spouse: "--",
mlsp: false,
ncp: true,
disable_idcard: "--",
volunteer: false,
village: "--",
disable_degree: "--",
marital: "--",
native_place: "--",
disable_type: "--",
building: "--",
disable_remark: "--",
skill: "--",
petitioner: true,
unemployed: true,
needs_group: "--",
hobby: "--",
unit: "--",
gender: "--",
retire_income: "--",
workunit: "--",
ufs: false,
birthday: "--",
in_person: false,
adisability: false,
household_remark: "--",
belief: "--",
education_remark: "--",
education: "--",
residence_current: "--",
career: "--",
empty_nest: false,
idcard: "--",
room: "--",
guardian: "--",
tenant: true,
residence: "--",
supporters: "--",
ser_ill: false,
ncd: true,
belief_remark: "--",
dementia: false,
disability: true,
telephone: "--",
income: "--",
native: "--",
crowd: false,
resident_remark: "--",
hobby_remark: "--",
retire_remark: "--",
special_popu: true,
street: "--",
float_popu: true,
supporters_relation: "--",
name: "--",
grid: "--",
retire_date: "--",
},
currentTabIndex: 0,
startTabIndex: 0,
tabList: [
"教育信息",
"兴趣爱好",
"宗教信仰",
"健康信息",
"工作信息",
"经济状况",
"居住信息",
"家庭信息",
],
};
},
computed: {
currentTab() {
return this.tabList[this.currentTabIndex];
},
},
mounted() {
this.getApiData();
},
methods: {
addStartTabIndex() {
const { startTabIndex, tabList } = this;
if (startTabIndex < tabList.length - 7) {
this.startTabIndex = startTabIndex + 1;
} else {
this.startTabIndex = tabList.length - 7;
}
},
subStartTabIndex() {
const { startTabIndex, tabList } = this;
if (startTabIndex > 0) {
this.startTabIndex = startTabIndex - 1;
} else {
this.startTabIndex = 0;
}
},
handleClose() {
this.$emit("close");
},
async getApiData() {
this.getInfo();
},
// id
async getInfo() {
const url = "resident_info";
const { data, code, msg } = await requestPostBi(
url,
{
queryParam: {
resident_id: this.resiId,
},
},
{
mockId: 60069644,
}
);
if (code === 0) {
this.info = { ...this.info, ...data[0] };
} else {
this.$message.error(msg);
}
},
},
};
</script>
<style lang="scss" src="@/assets/scss/dataBoard/popup-info.scss" scoped></style>
<style lang="scss" scoped>
@import "~@/assets/scss/c/config.scss";
@import "~@/assets/scss/c/function.scss";
.u-categorys {
display: flex;
flex-wrap: wrap;
span {
display: block;
width: 90px;
}
}
.m-tabs {
margin-top: 30px;
display: flex;
align-items: center;
padding-left: 20px;
.tab-btn {
width: 30px;
text-align: center;
cursor: pointer;
}
.tab {
@include toe;
margin: 0 5px;
min-width: 72px;
padding: 0 8px;
height: 24px;
box-shadow: inset 0px 0px 12px 0px rgba(26, 149, 255, 0.45);
border-radius: 2px;
border: 1px solid #1a95ff;
border-radius: 2px;
text-align: center;
font-size: 14px;
font-family: PingFang SC;
font-weight: 400;
color: #ffffff;
line-height: 23px;
cursor: pointer;
transition: all ease 0.5s;
&.z-on {
background: linear-gradient(90deg, #1a5afd, #009cff);
box-shadow: none;
}
}
}
</style>

819
src/views/dataBoard/cpts/tb.vue

@ -1,431 +1,424 @@
<template>
<div>
<div v-if="showTitle"
class="m-title">
<img class="title_img"
src="@/assets/images/index/list-logo.png"
alt />
<div class="tip_title">{{titleName}}</div>
<div class="title_line"></div>
</div>
<div class="m-table">
<table class="g-table"
border="0"
cellspacing="0"
cellpadding="0">
<col :align="item.align"
:width="item.width"
:key="'col' + index"
v-for="(item, index) in colList" />
<thead>
<tr class="g-table-header">
<th class="g-table-header-th"
v-for="item in header"
:key="item">
{{ item }}
</th>
</tr>
</thead>
<!-- <el-scrollbar :style="{height:treeHeight}"
<div>
<div class="m-table">
<table class="table" border="0" cellspacing="0" cellpadding="0">
<col
:align="item.align"
:width="item.width"
:key="'col' + index"
v-for="(item, index) in colList"
/>
<thead>
<tr class="table-header">
<th
class="table-header-th"
v-for="item in header"
:key="item"
>
{{ item }}
</th>
</tr>
</thead>
<!-- <el-scrollbar :style="{height:treeHeight}"
class="g-scrollar"> -->
<tbody v-if="!loading"
class="g-table-body">
<tr class="g-table-body-tr"
v-for="(value, index) in list"
:key="index"
@click="handleClickRow(index)">
<td class="td"
v-for="(item, indexs) in value"
:key="indexs">
<div v-if="typeof item === 'string' || typeof item === 'number'"
:title="item">
{{ item }}
</div>
<div v-if="typeof item === 'object' && item.type === 'img'">
<!-- <span>{{ item.type+ item.src}}</span> -->
<img style="width: 18px; height: 18px"
:src="item.src"
alt="" />
</div>
<div v-if="typeof item === 'object' && item && item.type == 'index'">
<img v-if="highlightTop3 && index == 0"
src="@/assets/img/shuju/top/1.png"
alt="" />
<img v-else-if="highlightTop3 && index == 1"
src="@/assets/img/shuju/top/2.png"
alt="" />
<img v-else-if="highlightTop3 && index == 2"
src="@/assets/img/shuju/top/3.png"
alt="" />
<span v-else>{{ index + 1 }}</span>
</div>
<a v-else-if="
typeof item === 'object' && item && item.type == 'operate'
"
v-for="btn in item.list"
:key="'operate' + index + btn"
@click.stop="handleClickBtn(index, btn)">{{ btn }}</a>
<a v-else-if="
typeof item === 'object' && item && item.type == 'people'
"
@click="handleClickPeople(item)">{{ item.name }}</a>
</td>
</tr>
</tbody>
<!-- </el-scrollbar> -->
</table>
<div class="table-status"
v-if="loading">
<screen-loading>加载中</screen-loading>
</div>
<div class="table-status"
v-if="list.length == 0 && !loading">
<div class="no-data">
<img src="@/assets/img/modules/visual/noData.png"
class="no-data-img" />
</div>
</div>
</div>
<div class="m-pagination">
<el-pagination :current-page="pageNo"
:page-size="pageSize"
background
:total="total"
layout="total">
</el-pagination>
<el-pagination :current-page="pageNo"
:page-size="pageSize"
background
:total="total"
layout="prev, pager, next, jumper, sizes"
@current-change="handlePageNoChange"
@size-change="handleSizeChange">
</el-pagination>
</div>
</div>
<tbody v-if="!loading" class="table-body">
<tr
class="table-body-tr"
v-for="(value, index) in list"
:key="index"
@click="handleClickRow(index)"
>
<td
class="td"
v-for="(item, indexs) in value"
:key="indexs"
>
<div
v-if="
typeof item === 'string' ||
typeof item === 'number'
"
:title="item"
>
{{ item }}
</div>
<div
v-if="
typeof item === 'object' &&
item.type === 'img'
"
>
<!-- <span>{{ item.type+ item.src}}</span> -->
<img
style="width: 18px; height: 18px"
:src="item.src"
alt=""
/>
</div>
<div
v-if="
typeof item === 'object' &&
item &&
item.type == 'index'
"
>
<img
v-if="highlightTop3 && index == 0"
src="@/assets/img/shuju/top/1.png"
alt=""
/>
<img
v-else-if="highlightTop3 && index == 1"
src="@/assets/img/shuju/top/2.png"
alt=""
/>
<img
v-else-if="highlightTop3 && index == 2"
src="@/assets/img/shuju/top/3.png"
alt=""
/>
<span v-else>{{ index + 1 }}</span>
</div>
<a
v-else-if="
typeof item === 'object' &&
item &&
item.type == 'operate'
"
fixed
v-for="btn in item.list"
:key="'operate' + index + btn"
@click.stop="handleClickBtn(index, btn)"
>{{ btn }}</a
>
<a
v-else-if="
typeof item === 'object' &&
item &&
item.type == 'people'
"
@click="handleClickPeople(item)"
>{{ item.name }}</a
>
</td>
</tr>
</tbody>
<!-- </el-scrollbar> -->
</table>
<div class="table-status" v-if="loading">
<screen-loading>加载中</screen-loading>
</div>
<div class="table-status" v-if="list.length == 0 && !loading">
<div class="no-data">
<img
src="@/assets/img/modules/visual/noData.png"
class="no-data-img"
/>
</div>
</div>
</div>
<div class="m-pagination">
<el-pagination
:current-page="pageNo"
:page-size="pageSize"
background
:total="total"
layout="total"
>
</el-pagination>
<el-pagination
:current-page="pageNo"
:page-size="pageSize"
background
:total="total"
layout="prev, pager, next, jumper, sizes"
@current-change="handlePageNoChange"
@size-change="handleSizeChange"
>
</el-pagination>
</div>
</div>
</template>
<script>
import ScreenLoading from "./loading";
import { mapGetters } from 'vuex'
import { mapGetters } from "vuex";
export default {
name: "table",
components: {
ScreenLoading,
},
props: {
//true
showTitle: {
type: Boolean,
default: true
},
//
titleName: {
type: String,
default: "列表"
},
//
colList: {
type: Array,
default: () => {
return [
// {
// align: "center",
// width: "50%",
// },
];
},
},
//
header: {
type: Array,
required: false,
default: () => {
return [];
},
},
//
list: {
type: Array,
required: false,
default: () => {
return [];
},
},
//
total: {
type: Number,
default: 0
},
loading: {
type: Boolean,
default: true,
},
highlightTop3: {
type: Boolean,
default: false,
},
},
data () {
return {
pageSize: 10,
pageNo: 1,
};
},
watch: {},
computed: {
treeHeight () {
return this.$store.state.inIframe ? this.clientHeight - 300 + this.iframeHeight + 'px' : this.clientHeight - 300 + 'px'
},
treeWidth () {
return document.documentElement.clientWidth
},
...mapGetters(['clientHeight', 'iframeHeight'])
},
mounted () { },
created () { },
methods: {
//
handleClickRow (index) {
this.$emit("handleClickRow", index);
},
handleClickBtn (index, type) {
this.$emit("operate", index, type);
},
handleClickPeople (item) {
this.$router.push({
path: `/main-shuju/visual-basicinfo-people/${item.uid}`,
});
},
handlePageNoChange (val) {
this.$emit("handlePageNoChange", val);
},
handleSizeChange (val) {
this.$emit("handleSizeChange", val);
},
},
name: "list",
components: {
ScreenLoading,
},
props: {
//
colList: {
type: Array,
default: () => {
return [
// {
// align: "center",
// width: "50%",
// },
];
},
},
//
header: {
type: Array,
required: false,
default: () => {
return [];
},
},
//
list: {
type: Array,
required: false,
default: () => {
return [];
},
},
//
total: {
type: Number,
default: 0,
},
loading: {
type: Boolean,
default: true,
},
highlightTop3: {
type: Boolean,
default: false,
},
},
data() {
return {
pageSize: 10,
pageNo: 1,
};
},
watch: {},
computed: {
treeHeight() {
return this.$store.state.inIframe
? this.clientHeight - 300 + this.iframeHeight + "px"
: this.clientHeight - 300 + "px";
},
treeWidth() {
return document.documentElement.clientWidth;
},
...mapGetters(["clientHeight", "iframeHeight"]),
},
mounted() {},
created() {},
methods: {
//
handleClickRow(index) {
this.$emit("handleClickRow", index);
},
handleClickBtn(index, type) {
this.$emit("operate", index, type);
},
handleClickPeople(item) {
this.$router.push({
path: `/main-shuju/visual-basicinfo-people/${item.uid}`,
});
},
handlePageNoChange(val) {
this.$emit("handlePageNoChange", val);
},
handleSizeChange(val) {
this.$emit("handleSizeChange", val);
},
},
};
</script>
<style lang="scss" scoped>
.m-title {
display: flex;
align-items: center;
// margin-left: 24px;
.title_img {
width: 17px;
height: 17px;
}
.tip_title {
margin-left: 8px;
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 22px;
}
.title_line {
margin-left: 8px;
width: 244px;
height: 1px;
background: linear-gradient(
270deg,
rgba(55, 198, 255, 0.1) 0%,
#1995ff 100%
);
}
}
.m-table {
margin-top: 9px;
width: 100%;
.g-table {
box-sizing: border-box;
width: 100%;
height: 100%;
border: none;
table-layout: fixed;
&-header {
width: 100%;
height: 56px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
line-height: 20px;
&-th {
text-align: left;
border: none;
padding: 18px 5px 18px 24px;
// width: calc(100% / 5);
}
}
&-body {
box-sizing: border-box;
width: 100%;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ffffff;
line-height: 20px;
&-tr {
box-sizing: border-box;
width: 100%;
min-height: 56px;
.td {
box-sizing: border-box;
text-align: left;
border: none;
padding: 18px 5px 18px 24px;
> div {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
word-wrap: normal;
}
a {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #1a95ff;
line-height: 20px;
cursor: pointer;
}
}
}
&-tr:nth-child(2n-1) {
background: rgba(26, 149, 255, 0.15);
}
// &-tr:hover {
// background: url("../../../../assets/img/modules/visual/hover-bac.png")
// no-repeat center;
// background-size: 100% 100%;
// }
}
/deep/ .el-scrollbar__wrap {
width: 100% !important;
overflow-x: hidden !important;
}
}
.g-scrollar {
width: 100%;
}
.table-status {
position: relative;
height: 300px;
//
.no-data {
&-img {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
}
}
}
margin-top: 9px;
// width: 100%;
overflow: hidden;
min-height: 300px;
.table {
box-sizing: border-box;
width: 100%;
border: none;
table-layout: fixed;
&-header {
width: 100%;
height: 56px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
line-height: 20px;
&-th {
text-align: left;
border: none;
padding: 18px 5px 18px 24px;
// width: calc(100% / 5);
}
}
&-body {
box-sizing: border-box;
width: 100%;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ffffff;
line-height: 20px;
&-tr {
box-sizing: border-box;
width: 100%;
min-height: 56px;
.td {
box-sizing: border-box;
text-align: left;
border: none;
padding: 18px 5px 18px 24px;
> div {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
word-wrap: normal;
}
a {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #1a95ff;
line-height: 20px;
cursor: pointer;
}
}
}
&-tr:nth-child(2n-1) {
background: rgba(26, 149, 255, 0.15);
}
// &-tr:hover {
// background: url("../../../../assets/img/modules/visual/hover-bac.png")
// no-repeat center;
// background-size: 100% 100%;
// }
}
/deep/ .el-scrollbar__wrap {
width: 100% !important;
overflow-x: hidden !important;
}
}
.g-scrollar {
width: 100%;
}
.table-status {
position: relative;
height: 300px;
//
.no-data {
&-img {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
}
}
}
}
.m-pagination {
box-sizing: border-box;
margin-top: 24px;
width: 100%;
height: 40px;
display: flex;
justify-content: space-between;
/deep/ .el-pagination.is-background .el-pager li:not(.disabled).active {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ffffff;
border-radius: 2px;
border: 1px solid rgba(26, 149, 255, 0.45);
background: #1a95ff;
}
/deep/ .el-pagination .el-pager li {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
border-radius: 2px;
border: 1px solid rgba(26, 149, 255, 0.45);
background: #00023a;
}
/deep/ .el-pagination .btn-prev {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
border-radius: 2px;
border: 1px solid rgba(26, 149, 255, 0.45);
background: #00023a;
}
/deep/ .el-pagination .btn-next {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
border-radius: 2px;
border: 1px solid rgba(26, 149, 255, 0.45);
background: #00023a;
}
/deep/ .el-pagination__editor.el-input .el-input__inner {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
border-radius: 2px;
border: 1px solid rgba(26, 149, 255, 0.45);
background: #00023a;
}
/deep/ .el-pagination .el-select .el-input .el-input__inner {
margin-left: 14px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
border-radius: 2px;
border: 1px solid rgba(26, 149, 255, 0.45);
background: #00023a;
}
box-sizing: border-box;
margin-top: 24px;
width: 100%;
height: 40px;
display: flex;
justify-content: space-between;
/deep/ .el-pagination.is-background .el-pager li:not(.disabled).active {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ffffff;
border-radius: 2px;
border: 1px solid rgba(26, 149, 255, 0.45);
background: #1a95ff;
}
/deep/ .el-pagination .el-pager li {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
border-radius: 2px;
border: 1px solid rgba(26, 149, 255, 0.45);
background: #00023a;
}
/deep/ .el-pagination .btn-prev {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
border-radius: 2px;
border: 1px solid rgba(26, 149, 255, 0.45);
background: #00023a;
}
/deep/ .el-pagination .btn-next {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
border-radius: 2px;
border: 1px solid rgba(26, 149, 255, 0.45);
background: #00023a;
}
/deep/ .el-pagination__editor.el-input .el-input__inner {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
border-radius: 2px;
border: 1px solid rgba(26, 149, 255, 0.45);
background: #00023a;
}
/deep/ .el-pagination .el-select .el-input .el-input__inner {
margin-left: 14px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
border-radius: 2px;
border: 1px solid rgba(26, 149, 255, 0.45);
background: #00023a;
}
}
</style>

149
src/views/dataBoard/renfang/cpts/bread.vue

@ -0,0 +1,149 @@
<template>
<div>
<div class="m-bread">
<div class="line">
<div class="line-left"></div>
<div class="line-right"></div>
</div>
<div class="bread">
<el-breadcrumb :separator="separator">
<el-breadcrumb-item
v-for="(item, index) in breadList"
:key="'b' + index"
>
<span
class="bread-span"
@click="handleClickItem(item)"
>{{ item.meta.title }}</span
>
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="line">
<div class="line-left"></div>
<div class="line-right"></div>
</div>
</div>
</div>
</template>
<script>
import { mapGetters } from "vuex";
export default {
name: "bread",
components: {},
props: {
//
separator: {
type: String,
default: "/",
},
//
breadList: {
type: Array,
default: () => {
return [];
},
},
},
data() {
return {
pageSize: 10,
pageNo: 1,
};
},
watch: {},
computed: {
...mapGetters(["clientHeight", "iframeHeight"]),
},
mounted() {},
created() {},
methods: {
handleClickItem(item) {
this.$emit("tap", { item });
},
},
};
</script>
<style lang="scss" scoped>
.m-bread {
padding: 0 0 15px 0;
.bread {
margin: 4px 0;
padding: 8px 16px;
height: 40px;
background: rgba(26, 149, 255, 0.15);
width: 100%;
/deep/ .el-breadcrumb__item {
line-height: 25px;
font-size: 14px;
}
/deep/ .el-breadcrumb__item .el-breadcrumb__inner {
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ffffff;
}
/deep/ .el-breadcrumb__item:first-child .el-breadcrumb__inner {
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
}
/deep/ .bread-span {
cursor: pointer;
}
.router_parents {
line-height: 25px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
.arrow {
padding: 0 5px;
}
}
.router_parents:hover {
cursor: pointer;
}
.router_child {
line-height: 25px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ffffff;
}
}
.line {
display: flex;
width: 100%;
.line-left {
flex-grow: 0;
flex-shrink: 0;
flex-basis: 16px;
height: 1px;
background: #1a95ff;
}
.line-right {
flex-grow: 1;
flex-shrink: 1;
flex-basis: 0px;
height: 1px;
background: rgba(26, 149, 255, 0.45);
}
}
}
</style>

862
src/views/dataBoard/renfang/cpts/fwgl.vue

@ -1,404 +1,522 @@
<template>
<div>
<div class="fwgl-main">
<div class="g-pie">
<div class="pie-left">
<screen-echarts-frame class=""
@myChartMethod="pieInitOk"
ref="pieChart"></screen-echarts-frame>
</div>
<div class="pie-legend">
<div class="item">
<div class="item-logo logo1"></div>
<div class="item-name">自住房屋</div>
</div>
<div class="item">
<div class="item-logo logo2"></div>
<div class="item-name">出租房屋</div>
</div>
<div class="item">
<div class="item-logo logo3"></div>
<div class="item-name">闲置房屋</div>
</div>
</div>
<div class="pie-right">
<div class="right-row">
<div class="row-item">
<div class="item-one">
<img class="img"
src="@/assets/images/shuju/renfang/house-logo.png"
alt />
<div class="title">房屋总数</div>
</div>
<div class="item-two">
<div class="num">2818</div>
<div class="unit"></div>
</div>
</div>
<div class="row-item marginleft10">
<div class="item-one">
<img class="img"
src="@/assets/images/shuju/renfang/house-logo.png"
alt />
<div class="title">自住房屋</div>
</div>
<div class="item-two">
<div class="num">2642</div>
<div class="unit"></div>
</div>
</div>
</div>
<div class="right-row margintop18">
<div class="row-item">
<div class="item-one">
<img class="img"
src="@/assets/images/shuju/renfang/house-logo.png"
alt />
<div class="title">出租房屋</div>
</div>
<div class="item-two">
<div class="num">818</div>
<div class="unit"></div>
</div>
</div>
<div class="row-item marginleft10">
<div class="item-one">
<img class="img"
src="@/assets/images/shuju/renfang/house-logo.png"
alt />
<div class="title">闲置房屋</div>
</div>
<div class="item-two">
<div class="num">316</div>
<div class="unit"></div>
</div>
</div>
</div>
</div>
</div>
<div class="g-bar">
<div class="bar-title">
<img class="title_img"
src="@/assets/images/index/list-logo.png"
alt />
<div class="tip_title">近一年房屋状态变化趋势图</div>
<div class="title_line"></div>
</div>
<div class="bar-legend">
<div class="item-logo logo1"></div>
<div class="item-name">自住房屋</div>
<div class="item-logo logo2 marginleft10"></div>
<div class="item-name">出租房屋</div>
<div class="item-logo logo3 marginleft10"></div>
<div class="item-name">闲置房屋</div>
</div>
<div class="bar-main">
<screen-echarts-frame class=""
@myChartMethod="barInitOk"
ref="barChart"></screen-echarts-frame>
</div>
</div>
<!-- <screen-nodata class="nodata"
<div>
<div class="m-fwgl">
<div class="m-pie">
<div class="pie-left">
<screen-echarts-frame
class=""
@myChartMethod="pieInitOk"
ref="pieChart"
></screen-echarts-frame>
</div>
<div class="pie-legend">
<div class="item">
<div class="item-logo logo1"></div>
<div class="item-name">自住房屋</div>
</div>
<div class="item">
<div class="item-logo logo2"></div>
<div class="item-name">出租房屋</div>
</div>
<div class="item">
<div class="item-logo logo3"></div>
<div class="item-name">闲置房屋</div>
</div>
</div>
<div class="pie-right">
<div class="right-row">
<div class="row-item" @click="toListPage">
<div class="item-one">
<img
class="img"
src="@/assets/images/shuju/renfang/house-logo.png"
alt
/>
<div class="title">房屋总数</div>
</div>
<div class="item-two">
<div class="num">{{ info.house_count }}</div>
<div class="unit"></div>
</div>
</div>
<div
class="row-item marginleft10"
@click="toListPage('self_dwelling')"
>
<div class="item-one">
<img
class="img"
src="@/assets/images/shuju/renfang/house-logo.png"
alt
/>
<div class="title">自住房屋</div>
</div>
<div class="item-two">
<div class="num">
{{ info.self_dwelling_count }}
</div>
<div class="unit"></div>
</div>
</div>
</div>
<div
class="right-row margintop18"
@click="toListPage('lease')"
>
<div class="row-item">
<div class="item-one">
<img
class="img"
src="@/assets/images/shuju/renfang/house-logo.png"
alt
/>
<div class="title">出租房屋</div>
</div>
<div class="item-two">
<div class="num">{{ info.lease_count }}</div>
<div class="unit"></div>
</div>
</div>
<div
class="row-item marginleft10"
@click="toListPage('unused')"
>
<div class="item-one">
<img
class="img"
src="@/assets/images/shuju/renfang/house-logo.png"
alt
/>
<div class="title">闲置房屋</div>
</div>
<div class="item-two">
<div class="num">{{ info.unused_count }}</div>
<div class="unit"></div>
</div>
</div>
</div>
</div>
</div>
<div class="m-bar">
<div class="bar-title">
<img
class="title_img"
src="@/assets/images/index/list-logo.png"
alt
/>
<div class="tip_title">近一年房屋状态变化趋势图</div>
<div class="title_line"></div>
</div>
<div class="bar-legend">
<div class="item-logo logo1"></div>
<div class="item-name">自住房屋</div>
<div class="item-logo logo2 marginleft10"></div>
<div class="item-name">出租房屋</div>
<div class="item-logo logo3 marginleft10"></div>
<div class="item-name">闲置房屋</div>
</div>
<div class="bar-main">
<screen-echarts-frame
class=""
@myChartMethod="barInitOk"
ref="barChart"
></screen-echarts-frame>
</div>
</div>
<!-- <screen-nodata class="nodata"
v-if="showNoData"></screen-nodata> -->
</div>
</div>
</div>
</div>
</template>
<script>
import { requestPost } from "@/js/dai/request";
import screenEchartsFrame from "@/views/dataBoard/cpts/screen-echarts-frame/index";
import { pieOption } from './fwPieOption.js'
import { barOption } from './fwBarOption.js'
import { pieOption } from "./fwPieOption.js";
import { barOption } from "./fwBarOption.js";
import { requestPostBi } from "@/js/dai/request-bipass";
export default {
props: {
orgId: {
type: String,
default: "",
},
},
components: {
screenEchartsFrame
},
// mixins: [animate]
beforeDestroy () {
this.timer && clearInterval(this.timer)
},
data () {
return {
showNoData: false,
timer: null,
barChart: '',
pieChart: '',
pieOption: {},
barOption: {},
pieInitState: false,
barInitState: false,
pieData: []
}
},
mounted () {
this.getData()
},
methods: {
pieInitOk () {
this.pieInitState = true
},
barInitOk () {
this.barInitState = true
},
getData () {
this.getBar()
this.getPie()
},
getBar () {
if (this.barInitState) {
this.getBarChart()
} else {
setTimeout(() => {
this.getBar()
}, 500)
}
},
getPie () {
if (this.pieInitState) {
this.getPieChart()
} else {
setTimeout(() => {
this.getPie()
}, 500)
}
},
//
async getPieChart () {
this.$refs.pieChart.clear()
// this.$refs.pieChart.showLoading()
// pieChart
this.pieOption = pieOption()
//
this.pieOption.title.text = '73%'
this.pieData = [
{ value: 1048, name: 'Search Engine' },
{ value: 735, name: 'Direct' },
{ value: 580, name: 'Email' }
]
this.pieOption.series[0].data = this.pieData;
// this.$refs.pieChart.hideLoading()
this.$refs.pieChart.setOption(this.pieOption)
},
//
async getBarChart () {
this.showNoData = false
this.$refs.barChart.clear()
// this.$refs.barChart.showLoading()
// this.$refs.barChart.hideLoading()
let xaxis = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
let series = [
{ data: [120, 132, 101, 134, 90, 230, 210, 120, 132, 101, 134, 90] },
{ data: [120, 132, 101, 134, 90, 230, 210, 120, 132, 101, 134, 90] },
{ data: [120, 132, 101, 134, 90, 230, 210, 120, 132, 101, 134, 90] }
]
// if (res.data.xaxis && res.data.xaxis.length > 0) {
// const {
// xaxis,
// totalIndexData,
// serviceAbilityData,
// partyDevAbilityData,
// governAbilityData
// } = res.data
// this.barOption = barOption()
// this.$refs.barChart.hideLoading()
// this.$refs.barChart.setOption(this.barOption, true)
// this.$refs.barChart.setOption({
// xAxis: { data: xaxis },
// series: [
// { data: totalIndexData },
// { data: partyDevAbilityData },
// { data: governAbilityData },
// { data: serviceAbilityData }
// ]
// }, true)
// } else {
// this.showNoData = true
// }
this.barOption = barOption()
// this.$refs.barChart.hideLoading()
this.$refs.barChart.setOption(this.barOption, true)
this.$refs.barChart.setOption({
xAxis: { data: xaxis },
series: series
}, true)
}
}
props: {
orgId: {
type: String,
default: "",
},
},
components: {
screenEchartsFrame,
},
data() {
return {
showNoData: false,
barChart: "",
pieChart: "",
pieOption: {},
barOption: {},
pieInitState: false,
barInitState: false,
pieData: [],
info: {
house_count: "--",
self_dwelling_count: "--",
lease_count: "--",
unused_count: "--",
},
};
},
mounted() {
this.getData();
},
watch: {
orgId() {
this.getData();
},
},
methods: {
toListPage(type = "") {
this.$router.push({
path: "/dataBoard/renfang/house-list",
query: {
org_id: this.orgId,
type,
},
});
},
pieInitOk() {
this.pieInitState = true;
},
barInitOk() {
this.barInitState = true;
},
async getData() {
await this.getInfo();
this.getBar();
this.getPie();
},
getBar() {
if (this.barInitState) {
this.getBarData();
} else {
setTimeout(() => {
this.getBar();
}, 500);
}
},
getPie() {
if (this.pieInitState) {
this.iniPieChart();
} else {
setTimeout(() => {
this.getPie();
}, 500);
}
},
//
async getInfo() {
const url = "house_view";
const { data, code, msg } = await requestPostBi(
url,
{
queryParam: {
org_id: this.orgId,
},
},
{
mockId: 60007107,
}
);
if (code === 0 && data && Array.isArray(data) && data.length > 0) {
let info = data[0];
this.info = { ...this.info, ...info };
} else {
this.$message.error(msg);
}
},
//
async iniPieChart() {
this.$refs.pieChart.clear();
// this.$refs.pieChart.showLoading()
// pieChart
this.pieOption = pieOption();
const { info } = this;
//
this.pieOption.title.text =
parseInt((100 * info.self_dwelling_count) / info.house_count) +
"%";
this.pieData = [
{ value: info.self_dwelling_count, name: "自住房屋" },
{ value: info.lease_count, name: "出租房屋" },
{ value: info.unused_count, name: "闲置房屋" },
];
this.pieOption.series[0].data = this.pieData;
this.$refs.pieChart.setOption(this.pieOption);
// this.$refs.pieChart.hideLoading()
//
this.$refs.pieChart.myChart.on("selectchanged", (params) => {
console.log(params);
const {
fromActionPayload: { dataIndexInside },
} = params;
this.pieOption.title.text =
parseInt(
(100 *
[
info.self_dwelling_count,
info.lease_count,
info.unused_count,
][dataIndexInside]) /
info.house_count
) + "%";
this.$refs.pieChart.myChart.setOption(this.pieOption);
});
},
//
async getBarData() {
const url = "house_trend";
this.$refs.barChart.showLoading();
const { data, code, msg } = await requestPostBi(
url,
{
queryParam: {
org_id: this.org_id,
},
},
{
mockId: 60388110,
}
);
if (code === 0 && data && Array.isArray(data) && data.length > 0) {
let xaxis = [];
let series = [{ data: [] }, { data: [] }, { data: [] }];
for (const {
month,
self_dwelling_count,
lease_count,
unused_count,
} of data) {
xaxis.push(month);
series[0].data.push(self_dwelling_count);
series[1].data.push(lease_count);
series[2].data.push(unused_count);
}
this.iniBarChart(xaxis, series);
this.$refs.barChart.hideLoading();
} else {
this.$message.error(msg);
}
},
//
async iniBarChart(xaxis, series) {
this.showNoData = false;
this.$refs.barChart.clear();
// let xaxis = [
// "1",
// "2",
// "3",
// "4",
// "5",
// "6",
// "7",
// "8",
// "9",
// "10",
// "11",
// "12",
// ];
// let series = [
// {
// data: [
// 120, 132, 101, 134, 90, 230, 210, 120, 132, 101, 134,
// 90,
// ],
// },
// {
// data: [
// 120, 132, 101, 134, 90, 230, 210, 120, 132, 101, 134,
// 90,
// ],
// },
// {
// data: [
// 120, 132, 101, 134, 90, 230, 210, 120, 132, 101, 134,
// 90,
// ],
// },
// ];
this.barOption = barOption();
this.$refs.barChart.setOption(this.barOption, true);
this.$refs.barChart.setOption(
{
xAxis: { data: xaxis },
series: series,
},
true
);
},
},
};
</script>
<style lang="scss" scoped>
.fwgl-main {
height: 100%;
width: 100%;
.g-pie {
margin-top: 24px;
display: flex;
justify-content: space-around;
.pie-left {
height: 120px;
flex: 0 0 120px;
}
.pie-legend {
.item {
display: flex;
margin-bottom: 12px;
}
}
.pie-right {
.right-row {
display: flex;
// justify-content: space-between;
.row-item {
flex: 0 0 100px;
.item-one {
display: flex;
.img {
width: 15px;
height: 15px;
}
.title {
margin-left: 9px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
}
}
.item-two {
margin-top: 8px;
display: flex;
align-items: flex-end;
margin-left: 23px;
.num {
font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
}
.unit {
margin-left: 9px;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
}
}
}
}
}
}
.g-bar {
position: relative;
margin-top: 14px;
.bar-title {
display: flex;
align-items: center;
// margin-left: 24px;
.title_img {
width: 17px;
height: 17px;
}
.tip_title {
margin-left: 8px;
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 22px;
}
.title_line {
margin-left: 8px;
width: 244px;
height: 1px;
background: linear-gradient(
270deg,
rgba(55, 198, 255, 0.1) 0%,
#1995ff 100%
);
}
}
.bar-legend {
position: absolute;
top: 37px;
right: 20px;
display: flex;
}
.bar-main {
margin-top: 10px;
height: 225px;
}
}
.m-fwgl {
height: 100%;
width: 100%;
.m-pie {
margin-top: 24px;
display: flex;
justify-content: space-around;
.pie-left {
height: 120px;
flex: 0 0 120px;
}
.pie-legend {
.item {
display: flex;
margin-bottom: 12px;
}
}
.pie-right {
.right-row {
display: flex;
// justify-content: space-between;
.row-item {
flex: 0 0 100px;
.item-one {
display: flex;
.img {
width: 15px;
height: 15px;
}
.title {
margin-left: 9px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
}
}
.item-two {
margin-top: 8px;
display: flex;
align-items: flex-end;
margin-left: 23px;
.num {
font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
}
.unit {
margin-left: 9px;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
}
}
}
}
}
}
.m-bar {
position: relative;
margin-top: 14px;
.bar-title {
display: flex;
align-items: center;
// margin-left: 24px;
.title_img {
width: 17px;
height: 17px;
}
.tip_title {
margin-left: 8px;
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 22px;
}
.title_line {
margin-left: 8px;
width: 244px;
height: 1px;
background: linear-gradient(
270deg,
rgba(55, 198, 255, 0.1) 0%,
#1995ff 100%
);
}
}
.bar-legend {
position: absolute;
top: 37px;
right: 20px;
display: flex;
}
.bar-main {
margin-top: 10px;
height: 225px;
}
}
}
.item-name {
margin-left: 8px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #8c8c8c;
margin-left: 8px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #8c8c8c;
}
.item-logo {
margin-top: 2px;
width: 8px;
height: 8px;
margin-top: 2px;
width: 8px;
height: 8px;
}
.logo1 {
background: #6fdeff;
background: #6fdeff;
}
.logo2 {
background: #ffaa00;
background: #ffaa00;
}
.logo3 {
background: #1a95ff;
background: #1a95ff;
}
.marginleft10 {
margin-left: 10px;
margin-left: 10px;
}
.margintop18 {
margin-top: 18px;
margin-top: 18px;
}
</style>

785
src/views/dataBoard/renfang/cpts/jmgl.vue

@ -1,387 +1,462 @@
<template>
<div>
<div class="jmgl-main">
<div class="g-pie">
<div class="pie-left">
<screen-echarts-frame class=""
@myChartMethod="pieInitOk"
ref="pieChart"></screen-echarts-frame>
</div>
<div class="pie-legend">
<div class="item">
<div class="item-logo logo1"></div>
<div class="item-name">常住人口</div>
</div>
<div class="item">
<div class="item-logo logo2"></div>
<div class="item-name">流动人口</div>
</div>
</div>
<div class="pie-right">
<div class="right-row">
<div class="row-item">
<div class="item-one">
<img class="img"
src="@/assets/images/shuju/renfang/jm-logo.png"
alt />
<div class="title">居民总数</div>
</div>
<div class="item-two">
<div class="num">2818</div>
<div class="unit"></div>
</div>
</div>
<div class="row-item marginleft10">
<div class="item-one">
<img class="img"
src="@/assets/images/shuju/renfang/jm-logo.png"
alt />
<div class="title">常住人口</div>
</div>
<div class="item-two">
<div class="num">2642</div>
<div class="unit"></div>
</div>
</div>
</div>
<div class="right-row margintop18">
<div class="row-item">
<div class="item-one">
<img class="img"
src="@/assets/images/shuju/renfang/jm-logo.png"
alt />
<div class="title">流动人口</div>
</div>
<div class="item-two">
<div class="num">818</div>
<div class="unit"></div>
</div>
</div>
</div>
</div>
</div>
<div class="g-bar">
<div class="bar-title">
<img class="title_img"
src="@/assets/images/index/list-logo.png"
alt />
<div class="tip_title">近一年人口流动变化趋势图</div>
<div class="title_line"></div>
</div>
<div class="bar-legend">
<div class="item-logo logo1"></div>
<div class="item-name">常住人口</div>
<div class="item-logo logo2 marginleft10"></div>
<div class="item-name">流动人口</div>
</div>
<div class="bar-main">
<screen-echarts-frame class=""
@myChartMethod="barInitOk"
ref="barChart"></screen-echarts-frame>
</div>
</div>
<!-- <screen-nodata class="nodata"
<div>
<div class="m-jmgl">
<div class="m-pie">
<div class="pie-left">
<screen-echarts-frame
class=""
@myChartMethod="pieInitOk"
ref="pieChart"
></screen-echarts-frame>
</div>
<div class="pie-legend">
<div class="item">
<div class="item-logo logo1"></div>
<div class="item-name">常住人口</div>
</div>
<div class="item">
<div class="item-logo logo2"></div>
<div class="item-name">流动人口</div>
</div>
</div>
<div class="pie-right">
<div class="right-row">
<div class="row-item" @click="toResiListPage">
<div class="item-one">
<img
class="img"
src="@/assets/images/shuju/renfang/jm-logo.png"
alt
/>
<div class="title">居民总数</div>
</div>
<div class="item-two">
<div class="num">{{ info.resident_count }}</div>
<div class="unit"></div>
</div>
</div>
<div
class="row-item marginleft10"
@click="toResiListPage('inhabitant')"
>
<div class="item-one">
<img
class="img"
src="@/assets/images/shuju/renfang/jm-logo.png"
alt
/>
<div class="title">常住人口</div>
</div>
<div class="item-two">
<div class="num">
{{ info.inhabitant_count }}
</div>
<div class="unit"></div>
</div>
</div>
</div>
<div class="right-row margintop18">
<div
class="row-item"
@click="toResiListPage('floating')"
>
<div class="item-one">
<img
class="img"
src="@/assets/images/shuju/renfang/jm-logo.png"
alt
/>
<div class="title">流动人口</div>
</div>
<div class="item-two">
<div class="num">{{ info.floating_count }}</div>
<div class="unit"></div>
</div>
</div>
</div>
</div>
</div>
<div class="m-bar">
<div class="bar-title">
<img
class="title_img"
src="@/assets/images/index/list-logo.png"
alt
/>
<div class="tip_title">近一年人口流动变化趋势图</div>
<div class="title_line"></div>
</div>
<div class="bar-legend">
<div class="item-logo logo1"></div>
<div class="item-name">常住人口</div>
<div class="item-logo logo2 marginleft10"></div>
<div class="item-name">流动人口</div>
</div>
<div class="bar-main">
<screen-echarts-frame
class=""
@myChartMethod="barInitOk"
ref="barChart"
></screen-echarts-frame>
</div>
</div>
<!-- <screen-nodata class="nodata"
v-if="showNoData"></screen-nodata> -->
</div>
</div>
</div>
</div>
</template>
<script>
import { requestPost } from "@/js/dai/request";
import screenEchartsFrame from "@/views/dataBoard/cpts/screen-echarts-frame/index";
import { pieOption } from './jmPieOption.js'
import { barOption } from './jmBarOption.js'
import { pieOption } from "./jmPieOption.js";
import { barOption } from "./jmBarOption.js";
import { requestPostBi } from "@/js/dai/request-bipass";
export default {
props: {
orgId: {
type: String,
default: "",
},
},
components: {
screenEchartsFrame
},
// mixins: [animate]
beforeDestroy () {
this.timer && clearInterval(this.timer)
},
data () {
return {
showNoData: false,
timer: null,
barChart: '',
pieChart: '',
pieOption: {},
barOption: {},
pieInitState: false,
barInitState: false,
pieData: []
}
},
mounted () {
this.getData()
},
methods: {
pieInitOk () {
this.pieInitState = true
},
barInitOk () {
this.barInitState = true
},
getData () {
this.getBar()
this.getPie()
},
getBar () {
if (this.barInitState) {
this.getBarChart()
} else {
setTimeout(() => {
this.getBar()
}, 500)
}
},
getPie () {
if (this.pieInitState) {
this.getPieChart()
} else {
setTimeout(() => {
this.getPie()
}, 500)
}
},
//
async getPieChart () {
this.$refs.pieChart.clear()
// this.$refs.pieChart.showLoading()
// pieChart
this.pieOption = pieOption()
//
this.pieOption.title.text = '73%'
this.pieData = [
{ value: 1048, name: 'Search Engine' },
{ value: 735, name: 'Direct' },
]
this.pieOption.series[0].data = this.pieData;
// this.$refs.pieChart.hideLoading()
this.$refs.pieChart.setOption(this.pieOption)
},
//
async getBarChart () {
this.showNoData = false
this.$refs.barChart.clear()
// this.$refs.barChart.showLoading()
// this.$refs.barChart.hideLoading()
let xaxis = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
let series = [
{ data: [120, 132, 101, 134, 90, 230, 210, 120, 132, 101, 134, 90] },
{ data: [120, 132, 101, 134, 90, 230, 210, 120, 132, 101, 134, 90] },
]
// if (res.data.xaxis && res.data.xaxis.length > 0) {
// const {
// xaxis,
// totalIndexData,
// serviceAbilityData,
// partyDevAbilityData,
// governAbilityData
// } = res.data
// this.barOption = barOption()
// this.$refs.barChart.hideLoading()
// this.$refs.barChart.setOption(this.barOption, true)
// this.$refs.barChart.setOption({
// xAxis: { data: xaxis },
// series: [
// { data: totalIndexData },
// { data: partyDevAbilityData },
// { data: governAbilityData },
// { data: serviceAbilityData }
// ]
// }, true)
// } else {
// this.showNoData = true
// }
this.barOption = barOption()
// this.$refs.barChart.hideLoading()
this.$refs.barChart.setOption(this.barOption, true)
this.$refs.barChart.setOption({
xAxis: { data: xaxis },
series: series
}, true)
}
}
props: {
orgId: {
type: String,
default: "",
},
},
components: {
screenEchartsFrame,
},
// mixins: [animate]
beforeDestroy() {
this.timer && clearInterval(this.timer);
},
data() {
return {
showNoData: false,
timer: null,
barChart: "",
pieChart: "",
pieOption: {},
barOption: {},
pieInitState: false,
barInitState: false,
pieData: [],
info: {
resident_count: "--",
inhabitant_count: "--",
floating_count: "--",
},
};
},
watch: {
orgId() {
this.getData();
},
},
mounted() {
this.getData();
},
methods: {
toResiListPage(type = "") {
this.$router.push({
path: "/dataBoard/renfang/resi-list",
query: {
org_id: this.orgId,
type,
},
});
},
pieInitOk() {
this.pieInitState = true;
},
barInitOk() {
this.barInitState = true;
},
async getData() {
await this.getInfo();
this.getBar();
this.getPie();
},
getBar() {
if (this.barInitState) {
this.getBarData();
} else {
setTimeout(() => {
this.getBar();
}, 500);
}
},
getPie() {
if (this.pieInitState) {
this.iniPieChart();
} else {
setTimeout(() => {
this.getPie();
}, 500);
}
},
//
async getInfo() {
const url = "resident_view";
const { data, code, msg } = await requestPostBi(
url,
{
queryParam: {
org_id: this.orgId,
},
},
{
mockId: 60029804,
}
);
if (code === 0 && data && Array.isArray(data) && data.length > 0) {
let info = data[0];
this.info = { ...this.info, ...info };
} else {
this.$message.error(msg);
}
},
//
async iniPieChart() {
this.$refs.pieChart.clear();
// this.$refs.pieChart.showLoading()
// pieChart
this.pieOption = pieOption();
const { info } = this;
//
this.pieOption.title.text =
parseInt((100 * info.inhabitant_count) / info.resident_count) +
"%";
this.pieData = [
{ value: info.inhabitant_count, name: "常住人口" },
{ value: info.floating_count, name: "流动人口" },
];
this.pieOption.series[0].data = this.pieData;
this.$refs.pieChart.setOption(this.pieOption);
// this.$refs.pieChart.hideLoading()
//
this.$refs.pieChart.myChart.on("selectchanged", (params) => {
console.log(params);
const {
fromActionPayload: { dataIndexInside },
} = params;
this.pieOption.title.text =
parseInt(
(100 *
[info.inhabitant_count, info.floating_count][
dataIndexInside
]) /
info.resident_count
) + "%";
this.$refs.pieChart.myChart.setOption(this.pieOption);
});
},
//
async getBarData() {
const url = "resident_trend";
this.$refs.barChart.showLoading();
const { data, code, msg } = await requestPostBi(
url,
{
queryParam: {
org_id: this.org_id,
},
},
{
mockId: 60389779,
}
);
if (code === 0 && data && Array.isArray(data) && data.length > 0) {
let xaxis = [];
let series = [{ data: [] }, { data: [] }];
for (const {
month,
inhabitant_count,
floating_count,
} of data) {
xaxis.push(month);
series[0].data.push(inhabitant_count);
series[1].data.push(floating_count);
}
this.iniBarChart(xaxis, series);
this.$refs.barChart.hideLoading();
} else {
this.$message.error(msg);
}
},
//
async iniBarChart(xaxis, series) {
this.showNoData = false;
this.$refs.barChart.clear();
this.barOption = barOption();
this.$refs.barChart.setOption(this.barOption, true);
this.$refs.barChart.setOption(
{
xAxis: { data: xaxis },
series,
},
true
);
},
},
};
</script>
<style lang="scss" scoped>
.jmgl-main {
height: 100%;
width: 100%;
.g-pie {
margin-top: 24px;
display: flex;
justify-content: space-around;
.pie-left {
height: 120px;
flex: 0 0 120px;
}
.pie-legend {
.item {
display: flex;
margin-bottom: 12px;
}
}
.pie-right {
.right-row {
display: flex;
// justify-content: space-between;
.row-item {
flex: 0 0 100px;
.item-one {
display: flex;
.img {
width: 15px;
height: 15px;
}
.title {
margin-left: 9px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
}
}
.item-two {
margin-top: 8px;
display: flex;
align-items: flex-end;
margin-left: 23px;
.num {
font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
}
.unit {
margin-left: 9px;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
}
}
}
}
}
}
.g-bar {
position: relative;
margin-top: 14px;
.bar-title {
display: flex;
align-items: center;
// margin-left: 24px;
.title_img {
width: 17px;
height: 17px;
}
.tip_title {
margin-left: 8px;
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 22px;
}
.title_line {
margin-left: 8px;
width: 244px;
height: 1px;
background: linear-gradient(
270deg,
rgba(55, 198, 255, 0.1) 0%,
#1995ff 100%
);
}
}
.bar-legend {
position: absolute;
top: 37px;
right: 20px;
display: flex;
}
.bar-main {
margin-top: 10px;
height: 225px;
}
}
.m-jmgl {
height: 100%;
width: 100%;
.m-pie {
margin-top: 24px;
display: flex;
justify-content: space-around;
.pie-left {
height: 120px;
flex: 0 0 120px;
}
.pie-legend {
.item {
display: flex;
margin-bottom: 12px;
}
}
.pie-right {
.right-row {
display: flex;
// justify-content: space-between;
.row-item {
flex: 0 0 100px;
.item-one {
display: flex;
.img {
width: 15px;
height: 15px;
}
.title {
margin-left: 9px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
}
}
.item-two {
margin-top: 8px;
display: flex;
align-items: flex-end;
margin-left: 23px;
.num {
font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
}
.unit {
margin-left: 9px;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
}
}
}
}
}
}
.m-bar {
position: relative;
margin-top: 14px;
.bar-title {
display: flex;
align-items: center;
// margin-left: 24px;
.title_img {
width: 17px;
height: 17px;
}
.tip_title {
margin-left: 8px;
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 22px;
}
.title_line {
margin-left: 8px;
width: 244px;
height: 1px;
background: linear-gradient(
270deg,
rgba(55, 198, 255, 0.1) 0%,
#1995ff 100%
);
}
}
.bar-legend {
position: absolute;
top: 37px;
right: 20px;
display: flex;
}
.bar-main {
margin-top: 10px;
height: 225px;
}
}
}
.item-name {
margin-left: 8px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #8c8c8c;
margin-left: 8px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #8c8c8c;
}
.item-logo {
margin-top: 2px;
width: 8px;
height: 8px;
margin-top: 2px;
width: 8px;
height: 8px;
}
.logo1 {
background: #6fdeff;
background: #6fdeff;
}
.logo2 {
background: #ffaa00;
background: #ffaa00;
}
.logo3 {
background: #1a95ff;
background: #1a95ff;
}
.marginleft10 {
margin-left: 10px;
margin-left: 10px;
}
.margintop18 {
margin-top: 18px;
margin-top: 18px;
}
</style>

603
src/views/dataBoard/renfang/cpts/rkfx.vue

@ -1,263 +1,366 @@
<template>
<div class="rkyj-main">
<div class="list">
<div v-for="(dataitem,index) in listData"
:key="index"
:class="['item',{'item-sel':dataitem.sel}]"
@click="selItem(dataitem,index)">
{{dataitem.name}}
</div>
</div>
<div class="pie-main">
<div class="legend">
<div class="legend-row">
<div class="sexblue">男性</div>
<div class="content">
<div class="num">15632</div>
<div class="unit"></div>
</div>
</div>
<div class="legend-row">
<div class="sexyellow">女性</div>
<div class="content">
<div class="num">142632</div>
<div class="unit"></div>
</div>
</div>
</div>
<div class="pie">
<screen-echarts-frame @myChartMethod="pieInitOk"
ref="pieChart"></screen-echarts-frame>
</div>
</div>
</div>
<div class="m-rkyj">
<div class="list">
<div
v-for="item in tabList"
:key="item"
:class="['item', { 'item-sel': currentTab == item }]"
@click="currentTab = item"
>
{{ item }}
</div>
</div>
<div class="pie-main">
<div class="legend">
<div
class="legend-row"
:key="'pie' + item.name"
v-for="item in pieData"
>
<div class="name">{{ item.name }}</div>
<div class="content">
<div class="num">{{ item.value }}</div>
<div class="unit"></div>
</div>
</div>
</div>
<div class="pie">
<screen-echarts-frame
@myChartMethod="pieInitOk"
ref="pieChart"
></screen-echarts-frame>
</div>
</div>
</div>
</template>
<script>
import { requestPost } from "@/js/dai/request";
import screenEchartsFrame from "@/views/dataBoard/cpts/screen-echarts-frame/index";
import { pieOption } from './rkfxPieOption.js'
import { pieOption } from "./rkfxPieOption.js";
import { requestPostBi } from "@/js/dai/request-bipass";
export default {
props: {
orgId: {
type: String,
default: "",
},
},
data () {
return {
showNoData: false,
timer: null,
pieChart: '',
pieOption: {},
pieInitState: false,
pieData: [],
listData: [
{
name: '性别',
sel: true
},
{
name: '户籍',
sel: false
},
{
name: '入户状况',
sel: false
},
{
name: '年龄',
sel: false
},
{
name: '志愿者类别',
sel: false
},
{
name: '党员文化程度',
sel: false
},
{
name: '下级人口分布',
sel: false
},
]
}
},
components: {
screenEchartsFrame
},
mounted () {
this.getPie()
},
methods: {
selItem (selItem, selIndex) {
this.listData.forEach((element, index) => {
if (index === selIndex) {
element.sel = true
} else {
element.sel = false
}
});
},
pieInitOk () {
this.pieInitState = true
},
getPie () {
if (this.pieInitState) {
this.getPieChart()
} else {
setTimeout(() => {
this.getPie()
}, 500)
}
},
//
async getPieChart () {
this.$refs.pieChart.clear()
// this.$refs.pieChart.showLoading()
// pieChart
this.pieOption = pieOption()
//
this.pieData = [
{ value: 40, name: 'rose 1' },
{ value: 38, name: 'rose 2' },
]
this.pieOption.series[0].data = this.pieData;
// this.$refs.pieChart.hideLoading()
this.$refs.pieChart.setOption(this.pieOption)
},
},
props: {
orgId: {
type: String,
default: "",
},
},
data() {
return {
showNoData: false,
timer: null,
pieChart: "",
pieOption: {},
pieInitState: false,
pieData: [],
tabList: [
"性别",
"户籍",
"人户状况",
"年龄",
"志愿者类别",
"党员文化程度",
// "",
],
currentTab: "性别",
info: {
male_count: 0,
female_count: 0,
resi_y_house_y_count: 0,
resi_y_house_n_count: 0,
resi_n_house_y_count: 0,
primary_count: 0,
junior_high_count: 0,
second_speci_count: 0,
high_school_count: 0,
junior_college_count: 0,
undergrad_count: 0,
master_count: 0,
doctor_count: 0,
local_count: 0,
field_count: 0,
age50_count: 0,
age5059_count: 0,
age6069_count: 0,
age7079_count: 0,
age80_count: 0,
culture_count: 0,
committee_count: 0,
capable_count: 0,
friend_count: 0,
agent_count: 0,
mediator_count: 0,
collector_count: 0,
security_count: 0,
party_mem_count: 0,
},
};
},
components: {
screenEchartsFrame,
},
mounted() {
this.init();
},
watch: {
currentTab() {
this.setPieData();
},
orgId() {
this.init();
},
},
methods: {
async init() {
await this.getInfo();
this.getPie();
},
//
async getInfo() {
const url = "resident_analyze";
this.$refs.pieChart.showLoading();
const { data, code, msg } = await requestPostBi(
url,
{
queryParam: {
org_id: this.orgId,
},
},
{
mockId: 60041615,
}
);
this.$refs.pieChart.hideLoading();
if (code === 0 && data && Array.isArray(data) && data.length > 0) {
let info = data[0];
this.info = { ...this.info, ...info };
} else {
this.$message.error(msg);
}
},
selItem(selItem, selIndex) {
this.tabList.forEach((element, index) => {
if (index === selIndex) {
element.sel = true;
} else {
element.sel = false;
}
});
},
pieInitOk() {
this.pieInitState = true;
},
getPie() {
if (this.pieInitState) {
this.setPieData();
} else {
setTimeout(() => {
this.getPie();
}, 500);
}
},
setPieData() {
const { currentTab, info } = this;
if (currentTab == "性别") {
this.pieData = [
{ value: info.male_count, name: "男" },
{ value: info.female_count, name: "女" },
];
} else if (currentTab == "户籍") {
this.pieData = [
{ value: info.local_count, name: "本地户籍" },
{ value: info.field_count, name: "外地户籍" },
];
} else if (currentTab == "人户状况") {
this.pieData = [
{ value: info.resi_y_house_y_count, name: "人户一致" },
{ value: info.resi_y_house_n_count, name: "人在户不在" },
{ value: info.resi_n_house_y_count, name: "户在人不在" },
];
} else if (currentTab == "年龄") {
this.pieData = [
{ value: info.age50_count, name: "50岁以下" },
{ value: info.age5059_count, name: "50-59岁" },
{ value: info.age6069_count, name: "60-69岁" },
{ value: info.age7079_count, name: "70-79岁" },
{ value: info.age80_count, name: "80岁以上" },
];
} else if (currentTab == "志愿者类别") {
this.pieData = [
{ value: info.culture_count, name: "文化队伍" },
{ value: info.committee_count, name: "楼委会" },
{ value: info.capable_count, name: "能人达人" },
{ value: info.friend_count, name: "老友俱乐部" },
{ value: info.agent_count, name: "代办员" },
{ value: info.mediator_count, name: "调解员" },
{ value: info.collector_count, name: "采集员" },
{ value: info.security_count, name: "治安巡逻员" },
{ value: info.party_mem_count, name: "党员中心户" },
];
} else if (currentTab == "党员文化程度") {
this.pieData = [
{ value: info.primary_count, name: "小学及文盲" },
{ value: info.junior_high_count, name: "初中" },
{ value: info.second_speci_count, name: "中专" },
{ value: info.high_school_count, name: "高中" },
{ value: info.junior_college_count, name: "大专" },
{ value: info.undergrad_count, name: "本科" },
{ value: info.master_count, name: "硕士" },
{ value: info.doctor_count, name: "博士" },
];
} else if (currentTab == "下级人口分布") {
this.pieData = [];
}
this.iniPieChart();
},
//
async iniPieChart() {
this.$refs.pieChart.clear();
// pieChart
this.pieOption = pieOption();
this.pieOption.series[0].name = this.currentTab;
this.pieOption.series[0].data = this.pieData;
this.$refs.pieChart.setOption(this.pieOption);
},
},
};
</script>
<style lang="scss" scoped>
.rkyj-main {
.list {
margin-top: 8px;
display: flex;
flex-wrap: wrap;
.item {
margin-top: 8px;
background-image: url(../../../../assets/images/shuju/renfang/rkfx-bg.png);
background-size: cover;
flex: 0 0 117px;
height: 32px;
margin-right: 2px;
text-align: center;
align-items: center;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 32px;
cursor: pointer;
}
.item-sel {
background-image: url(../../../../assets/images/shuju/renfang/rkfx-bg-sel.png);
background-size: cover;
}
}
.pie-main {
display: flex;
justify-content: space-between;
margin-left: 25px;
.legend {
// flex: 0 0 140px;
margin-top: 40px;
.legend-row {
margin-top: 15px;
display: flex;
justify-content: space-between;
align-items: center;
.sexblue {
position: relative;
margin-left: 5px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
line-height: 17px;
&::before {
content: "";
position: absolute;
top: 4px;
left: -15px;
width: 8px;
height: 8px;
background: #1a95ff;
}
}
.sexyellow {
position: relative;
margin-left: 5px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
line-height: 17px;
&::before {
content: "";
position: absolute;
top: 4px;
left: -15px;
width: 8px;
height: 8px;
background: #ff6138;
}
}
.content {
margin-left: 24px;
display: flex;
align-items: flex-end;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
}
.num {
font-size: 20px;
}
.unit {
margin-left: 5px;
font-size: 14px;
}
}
}
.pie {
margin-top: 32px;
flex: 0 0 280px;
height: 270px;
}
}
.m-rkyj {
.list {
margin-top: 8px;
display: flex;
flex-wrap: wrap;
.item {
margin-top: 8px;
background-image: url(../../../../assets/images/shuju/renfang/rkfx-bg.png);
background-size: cover;
flex: 0 0 117px;
height: 32px;
margin-right: 2px;
text-align: center;
align-items: center;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 32px;
cursor: pointer;
}
.item-sel {
background-image: url(../../../../assets/images/shuju/renfang/rkfx-bg-sel.png);
background-size: cover;
}
}
.pie-main {
display: flex;
justify-content: space-between;
margin-left: 25px;
.legend {
// flex: 0 0 140px;
margin-top: 40px;
.legend-row {
margin-top: 15px;
display: flex;
justify-content: space-between;
align-items: center;
&:nth-child(1) .name::before {
background: #1a95ff;
}
&:nth-child(2) .name::before {
background: #ff6138;
}
&:nth-child(3) .name::before {
background: #2adcea;
}
&:nth-child(4) .name::before {
background: #2cc4ad;
}
&:nth-child(5) .name::before {
background: #7377f5;
}
&:nth-child(6) .name::before {
background: #32de66;
}
&:nth-child(7) .name::before {
background: #8155d4;
}
&:nth-child(8) .name::before {
background: #c7ea48;
}
&:nth-child(9) .name::before {
background: #ef47c2;
}
&:nth-child(10) .name::before {
background: #d43349;
}
.name {
position: relative;
margin-left: 5px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
line-height: 17px;
&::before {
content: "";
position: absolute;
top: 4px;
left: -15px;
width: 8px;
height: 8px;
}
}
.content {
margin-left: 24px;
display: flex;
align-items: flex-end;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
}
.num {
font-size: 20px;
}
.unit {
margin-left: 5px;
font-size: 14px;
}
}
}
.pie {
margin-top: 32px;
flex: 0 0 280px;
height: 270px;
}
}
}
</style>

82
src/views/dataBoard/renfang/cpts/rkfxPieOption.js

@ -1,32 +1,54 @@
import * as echarts from 'echarts'
import * as echarts from "echarts";
export function pieOption() {
const center = ["50%", "170px"];
return {
color: ['#1A95FF', '#FF6138'],
series: [
{
name: 'Nightingale Chart',
type: 'pie',
radius: [40, 130],
center: ['50%', '50%'],
roseType: 'area',
itemStyle: {
borderRadius: 1
},
label:{
normal:{
position:'inner',
show:true,
formatter:'{d}%',
fontSize:24,
color: "#FFFFFF",
}
},
data: [
]
}
]
};
const center = ["50%", "170px"];
return {
color: [
"#1A95FF",
"#FF6138",
"#2adcea",
"#2cc4ad",
"#7377f5",
"#32de66",
"#8155d4",
"#c7ea48",
"#ef47c2",
"d43349",
],
tooltip: {
trigger: "item",
},
series: [
{
name: "",
type: "pie",
radius: [40, 130],
center: ["50%", "50%"],
roseType: "area",
itemStyle: {
borderRadius: 1,
},
avoidLabelOverlap: false,
labelLine: {
show: false,
},
label: {
normal: {
position: "inner",
show: true,
formatter: "{d}%",
fontSize: 24,
color: "#FFFFFF",
},
},
emphasis: {
label: {
show: true,
fontSize: 36,
fontWeight: "bold",
},
},
data: [],
},
],
};
}

282
src/views/dataBoard/renfang/cpts/rkyj.vue

@ -1,142 +1,176 @@
<template>
<div class="rkyj-main">
<div class="title">
<div>预警居民类别</div>
<div>黄色预警(5-10)<img class="img"
src="@/assets/images/shuju/renfang/remark.png"
alt /></div>
<div>红色预警(10人以上)<img class="img"
src="@/assets/images/shuju/renfang/remark.png"
alt /></div>
</div>
<div class="list">
<el-scrollbar :style="{height:treeHeight}"
class="g-scrollar">
<div v-for="(dataitem,index) in listData"
:key="index"
class="item">
<div class="item-title">{{dataitem.type}}</div>
<div class="item-num"><img class="img"
src="@/assets/images/shuju/renfang/warning-yellow.png"
alt />{{dataitem.yellow}}</div>
<div class="item-num"><img class="img"
src="@/assets/images/shuju/renfang/warning-red.png"
alt />{{dataitem.red}}</div>
</div>
</el-scrollbar>
</div>
</div>
<div class="m-list">
<div class="title">
<div>预警居民类别</div>
<div>
黄色预警<img
class="img"
src="@/assets/images/shuju/renfang/remark.png"
alt
/>
</div>
<div>
红色预警<img
class="img"
src="@/assets/images/shuju/renfang/remark.png"
alt
/>
</div>
</div>
<div class="list">
<div v-for="(dataitem, index) in list" :key="index" class="item">
<div class="item-title">{{ dataitem.type_name }}</div>
<div
class="item-num"
@click="
toListPage('yellow', dataitem.type, dataitem.type_name)
"
>
<img
class="img"
src="@/assets/images/shuju/renfang/warning-yellow.png"
alt
/>{{ dataitem.yellow_warn }} {{
dataitem.yellow_threshold
}}
</div>
<div
class="item-num"
@click="
toListPage('red', dataitem.type, dataitem.type_name)
"
>
<img
class="img"
src="@/assets/images/shuju/renfang/warning-red.png"
alt
/>{{ dataitem.red_warn }} {{ dataitem.red_threshold }}
</div>
</div>
</div>
</div>
</template>
<script>
import { requestPost } from "@/js/dai/request";
import { requestPostBi } from "@/js/dai/request-bipass";
export default {
props: {
orgId: {
type: String,
default: "",
},
},
data () {
return {
listData: [
{
type: '低保人员',
yellow: 200,
red: 5,
},
{
type: '失业人员',
yellow: 2,
red: 500,
},
{
type: '老年人',
yellow: 2000,
red: 5,
},
{
type: '空巢老人',
yellow: 2,
red: 5,
},
{
type: '大病',
yellow: 2,
red: 5,
},
{
type: '慢病',
yellow: 2,
red: 5,
},
]
}
},
mounted () { },
methods: {},
props: {
orgId: {
type: String,
default: "",
},
},
data() {
return {
list: [
{
type: "",
type_name: "--",
yellow_warn: "--",
red_warn: "--",
yellow_threshold: "--",
red_threshold: "--",
},
],
};
},
mounted() {
this.getList();
},
methods: {
toListPage(level, type_id = "", type_name) {
this.$router.push({
path: "/dataBoard/renfang/warn-building",
query: {
org_id: this.orgId,
type_id,
type_name,
level,
},
});
},
async getList() {
const url = "resident_class_warn";
const { data, code, msg } = await requestPostBi(
url,
{
queryParam: {
org_id: this.orgId,
},
},
{
mockId: 60040087,
}
);
if (code === 0 && data && Array.isArray(data) && data.length > 0) {
this.list = data;
} else {
this.$message.error(msg);
}
},
},
};
</script>
<style lang="scss" scoped>
.rkyj-main {
.title {
margin: 24px 0 24px 24px;
display: flex;
justify-content: space-between;
.m-list {
padding-bottom: 20px;
.title {
margin: 24px 0 24px 24px;
display: flex;
justify-content: space-between;
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
.img {
margin-left: 4px;
width: 15px;
height: 15px;
}
}
.img {
margin-left: 4px;
width: 15px;
height: 15px;
}
}
.list {
/deep/ .el-scrollbar__wrap {
// width: 100% !important;
overflow-x: hidden !important;
}
.g-scrollar {
// width: 100%;
height: 168px;
.list {
/deep/ .el-scrollbar__wrap {
// width: 100% !important;
overflow-x: hidden !important;
}
.item {
padding: 12px 20px 12px 24px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ffffff;
display: flex;
justify-content: space-between;
align-items: center;
.item {
padding: 12px 20px 12px 24px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ffffff;
display: flex;
justify-content: space-between;
align-items: center;
.item-title {
flex: 0 0 60px;
}
.item-title {
width: 33%;
}
.item-num {
flex: 0 0 100px;
// text-align: right;
.img {
width: 32px;
height: 32px;
margin-right: 8px;
}
}
}
.item:nth-child(2n-1) {
background: rgba(26, 149, 255, 0.15);
}
}
}
.item-num {
width: 33%;
text-align: center;
.img {
display: inline-block;
width: 32px;
height: 32px;
margin-right: 8px;
}
}
}
.item:nth-child(2n-1) {
background: rgba(26, 149, 255, 0.15);
}
}
}
</style>

284
src/views/dataBoard/renfang/cpts/szsq.vue

@ -1,115 +1,195 @@
<template>
<div class="szsq-main">
<div class="item">
<img class="img"
src="@/assets/images/shuju/renfang/szsq-logo.png"
alt />
<div class="content">
<div class="row1">
<div class="title">数字社区</div>
<div class="line"></div>
</div>
<div class="row2">
<span class="num">521</span>
<span class="unit"></span>
</div>
</div>
</div>
<div class="item">
<img class="img"
src="@/assets/images/shuju/renfang/szsq-logo.png"
alt />
<div class="content">
<div class="row1">
<div class="title">开通数量</div>
<div class="line"></div>
</div>
<div class="row2">
<span class="num">123</span>
<span class="unit"></span>
</div>
</div>
</div>
</div>
<div class="szsq-main">
<div class="item">
<img
class="img"
src="@/assets/images/shuju/renfang/szsq-logo.png"
alt
/>
<div class="content">
<div class="row1">
<div class="title">社区开通占比</div>
<div class="line"></div>
</div>
<div class="row2">
<span class="num">{{ info.per }}</span>
<span class="unit">%</span>
</div>
</div>
</div>
<div class="item">
<img
class="img"
src="@/assets/images/shuju/renfang/szsq-logo.png"
alt
/>
<div class="content">
<div class="row1">
<div class="title">社区总数</div>
<div class="line"></div>
</div>
<div class="row2">
<span class="num">{{ info.community_count }}</span>
<span class="unit"></span>
</div>
</div>
</div>
<div class="item">
<img
class="img"
src="@/assets/images/shuju/renfang/szsq-logo.png"
alt
/>
<div class="content">
<div class="row1">
<div class="title">开通数量</div>
<div class="line"></div>
</div>
<div class="row2">
<span class="num">{{ info.account_count }}</span>
<span class="unit"></span>
</div>
</div>
</div>
</div>
</template>
<script>
import { requestPost } from "@/js/dai/request";
import { requestPostBi } from "@/js/dai/request-bipass";
export default {
props: {
orgId: {
type: String,
default: "",
},
},
data () { },
mounted () { },
methods: {},
props: {
orgId: {
type: String,
default: "",
},
},
data() {
return {
info: {
per: "--",
community_count: "--",
account_count: "--",
},
};
},
mounted() {
this.getInfo();
},
watch: {
orgId() {
this.getInfo();
},
},
methods: {
//
async getInfo() {
const url = "account_view";
const { data, code, msg } = await requestPostBi(
url,
{
queryParam: {
org_id: this.orgId,
},
},
{
mockId: 61305622,
}
);
if (code === 0 && data && Array.isArray(data) && data.length > 0) {
let info = data[0];
this.info.community_count = info.community_count;
this.info.account_count = info.account_count;
this.info.per = parseInt(
(100 * info.account_count) / info.community_count
);
} else {
this.$message.error(msg);
}
},
},
};
</script>
<style lang="scss" scoped>
.szsq-main {
margin-top: 22px;
display: flex;
justify-content: space-around;
.item {
display: flex;
.img {
height: 64px;
width: 64px;
}
.content {
margin-left: 19px;
.row1 {
.title {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
padding-left: 8px;
}
.line {
margin-top: -6px;
width: 88px;
height: 8px;
background: linear-gradient(
270deg,
rgba(168, 241, 255, 0) 0%,
#6fdeff 100%
);
opacity: 0.25;
}
}
.row2 {
margin-top: 4px;
.num {
font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 33px;
}
.unit {
margin-left: 9px;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
}
}
}
}
margin-top: 22px;
display: flex;
justify-content: space-around;
.item {
display: flex;
.img {
width: 24px;
height: 24px;
}
&:first-child {
.img {
margin-top: -5px;
width: 64px;
height: 64px;
}
.content {
margin-top: 5px;
margin-left: 15px;
}
}
.content {
margin-top: 5px;
margin-left: 5px;
.row1 {
.title {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
padding-left: 8px;
}
.line {
margin-top: -6px;
width: 88px;
height: 8px;
background: linear-gradient(
270deg,
rgba(168, 241, 255, 0) 0%,
#6fdeff 100%
);
opacity: 0.25;
}
}
.row2 {
margin-top: 4px;
padding-left: 8px;
.num {
font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 33px;
}
.unit {
margin-left: 9px;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
}
}
}
}
}
</style>

241
src/views/dataBoard/renfang/house/list.vue

@ -0,0 +1,241 @@
<template>
<div class="g-pgi">
<!-- 组织路由 -->
<cpt-bread
:separator="'/'"
@tap="handleClickBreadItem"
:breadList="breadList"
></cpt-bread>
<div class="m-title">
<img
class="title_img"
src="@/assets/images/index/list-logo.png"
alt
/>
<div class="tip_title">{{ tableTitle }}</div>
<div class="title_line"></div>
</div>
<cpt-tb
:col-list="colList"
:loading="loading"
:header="header"
:list="list"
:total="total"
@handleSizeChange="handleSizeChange"
@handlePageNoChange="handlePageNoChange"
@operate="showInfo"
></cpt-tb>
<house-details
@close="displayedHouseId = ''"
:house-id="displayedHouseId"
v-if="displayedHouseId"
/>
</div>
</template>
<script>
import cptTb from "@/views/dataBoard/cpts/tb";
import cptBread from "@/views/dataBoard/renfang/cpts/bread";
import houseDetails from "@/views/dataBoard/cpts/house-details";
import { requestPostBi } from "@/js/dai/request-bipass";
import getQueryPara from "dai-js/modules/getQueryPara";
export default {
name: "house-list",
components: {
cptTb,
cptBread,
houseDetails,
},
data() {
return {
breadList: [
{
type: "back",
meta: {
title: "人房总览",
},
},
{
meta: {
title: "房屋列表",
},
},
],
tableTitle: "房屋列表",
searchName: "",
orgLevel: "",
org_id: "",
houseType: "", //
loading: true,
pageSize: 10,
pageNo: 1,
total: 0,
srcTableData: [],
list: [],
colList: [
{
align: "left",
width: "5%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "5%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "5%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "10%",
},
],
header: [
"序号",
"所属小区",
"所属楼栋",
"单元号",
"门牌号",
"房屋类型",
"房屋用途",
"房屋状态",
"房主姓名",
"联系电话",
"证件号",
"操作",
],
displayedHouseId: "",
};
},
mounted() {
this.org_id = getQueryPara("org_id");
this.houseType = getQueryPara("type");
this.getList();
},
methods: {
handleClickBreadItem({ item }) {
if (item.type == "back") {
this.$router.back();
}
},
handleSearch() {},
showInfo(index) {
let item = this.srcTableData[index];
this.displayedHouseId = item.house_id;
},
handlePageNoChange(pageNo) {
this.pageNo = pageNo;
this.getList();
},
handleSizeChange(pageSize) {
this.pageSize = pageSize;
this.getList();
},
async getList() {
const { org_id, houseType, pageNo, pageSize } = this;
this.loading = true;
const url = "house_list";
const { data, code, msg } = await requestPostBi(
url,
{
queryParam: {
org_id,
houseType,
pageNo,
pageSize,
},
},
{
mockId: 60068051,
}
);
this.loading = false;
if (code === 0) {
this.srcTableData = data;
// this.total = data.total;
this.list = data.map((item, index) => {
return [
index + 1,
item.village ? item.village : "--",
item.building ? item.building : "--",
item.unit ? item.unit : "--",
item.door ? item.door : "--",
item.house_type ? item.house_type : "--",
item.house_usage ? item.house_usage : "--",
item.house_state ? item.house_state : "--",
item.holder_name ? item.holder_name : "--",
item.holder_phone ? item.holder_phone : "--",
item.holder_idcard ? item.holder_idcard : "--",
{ type: "operate", list: ["查看"] },
];
});
} else {
this.$message.error(msg);
}
},
},
destroyed() {
console.log("我已经离开了!");
},
};
</script>
<style lang="scss" src="@/assets/scss/dataBoard/listBox.scss" scoped></style>

1112
src/views/dataBoard/renfang/index.vue

File diff suppressed because it is too large

284
src/views/dataBoard/renfang/resi/class.vue

@ -0,0 +1,284 @@
<template>
<div class="g-pgi">
<!-- 组织路由 -->
<cpt-bread
:separator="'/'"
@tap="handleClickBreadItem"
:breadList="breadList"
></cpt-bread>
<div class="m-title">
<img
class="title_img"
src="@/assets/images/index/list-logo.png"
alt
/>
<div class="tip_title">{{ tableTitle }}</div>
<div class="title_line"></div>
<div class="second-select">
<el-select
v-model="subclassId"
:popper-append-to-body="false"
placeholder="请选择"
>
<el-option
v-for="item in subclassList"
:key="item.value"
:label="item.label"
:value="item.value"
@click.native="handleChangeDate(item.value)"
>
</el-option>
</el-select>
</div>
</div>
<div class="g-listbox">
<cpt-tb
:col-list="colList"
:loading="loading"
:header="header"
:list="list"
:total="total"
@handleSizeChange="handleSizeChange"
@handlePageNoChange="handlePageNoChange"
@operate="showInfo"
></cpt-tb>
</div>
<resi-details
@close="displayedResiId = ''"
:resi-id="displayedResiId"
v-if="displayedResiId"
/>
</div>
</template>
<script>
import cptTb from "@/views/dataBoard/cpts/tb";
import cptBread from "@/views/dataBoard/renfang/cpts/bread";
import resiDetails from "@/views/dataBoard/cpts/resi-details";
import { requestPostBi } from "@/js/dai/request-bipass";
import getQueryPara from "dai-js/modules/getQueryPara";
export default {
name: "resi-list",
components: {
cptTb,
cptBread,
resiDetails,
},
data() {
return {
breadList: [
{
type: "back",
meta: {
title: "人房总览",
},
},
{
meta: {
title: "居民类别",
},
},
],
tableTitle: "居民类别",
searchName: "",
orgLevel: "",
org_id: "",
type_id: "", //
loading: true,
pageSize: 10,
pageNo: 1,
total: 0,
srcTableData: [],
list: [],
colList: [
{
align: "left",
width: "5%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "20%",
},
{
align: "left",
width: "20%",
},
{
align: "left",
width: "15%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "5%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "10%",
},
],
header: [
"序号",
"姓名",
"所属网格",
"所属房屋",
"手机",
"身份证",
"性别",
"出生日期",
"操作",
],
displayedResiId: "",
subclassList: [],
subclassId: "",
};
},
mounted() {
this.org_id = getQueryPara("org_id");
this.type_id = getQueryPara("type_id");
const type_name = getQueryPara("type_name");
this.getList();
this.breadList[1].meta.title = type_name;
if (this.type_id == "6") {
this.getSubclass();
}
},
methods: {
handleClickBreadItem({ item }) {
if (item.type == "back") {
this.$router.back();
}
},
handleSearch() {},
showInfo(index) {
let item = this.srcTableData[index];
this.displayedResiId = item.user_id;
},
handlePageNoChange(pageNo) {
this.pageNo = pageNo;
this.getList();
},
handleSizeChange(pageSize) {
this.pageSize = pageSize;
this.getList();
},
async getSubclass() {
const { org_id, type_id } = this;
this.loading = true;
const url = "resident_class_list";
const { data, code, msg } = await requestPostBi(
url,
{
queryParam: {
org_id,
type_id,
},
},
{
mockId: 60069169,
}
);
this.loading = false;
if (code === 0) {
this.subclassList = data.map((item, index) => {
return {
label: item.label,
value: item.value,
};
});
} else {
this.$message.error(msg);
}
},
async getList() {
const { org_id, type_id, pageNo, pageSize } = this;
this.loading = true;
const url = "resident_class_list";
const { data, code, msg } = await requestPostBi(
url,
{
queryParam: {
org_id,
type_id,
pageNo,
pageSize,
},
},
{
mockId: 60069169,
}
);
this.loading = false;
if (code === 0) {
this.srcTableData = data;
// this.total = data.total;
this.list = data.map((item, index) => {
return [
index + 1,
item.user_name ? item.user_name : "--",
item.grid ? item.grid : "--",
item.house ? item.house : "--",
item.telephone ? item.telephone : "--",
item.idcard ? item.idcard : "--",
item.gender ? item.gender : "--",
item.birthday ? item.birthday : "--",
{ type: "operate", list: ["查看"] },
];
});
} else {
this.$message.error(msg);
}
},
},
destroyed() {
console.log("我已经离开了!");
},
};
</script>
<style lang="scss" src="@/assets/scss/dataBoard/listBox.scss" scoped></style>

225
src/views/dataBoard/renfang/resi/list.vue

@ -0,0 +1,225 @@
<template>
<div class="g-pgi">
<!-- 组织路由 -->
<cpt-bread
:separator="'/'"
@tap="handleClickBreadItem"
:breadList="breadList"
></cpt-bread>
<div class="m-title">
<img
class="title_img"
src="@/assets/images/index/list-logo.png"
alt
/>
<div class="tip_title">{{ tableTitle }}</div>
<div class="title_line"></div>
</div>
<div class="g-listbox">
<cpt-tb
:col-list="colList"
:loading="loading"
:header="header"
:list="list"
:total="total"
@handleSizeChange="handleSizeChange"
@handlePageNoChange="handlePageNoChange"
@operate="showInfo"
></cpt-tb>
</div>
<resi-details
@close="displayedResiId = ''"
:resi-id="displayedResiId"
v-if="displayedResiId"
/>
</div>
</template>
<script>
import cptTb from "@/views/dataBoard/cpts/tb";
import cptBread from "@/views/dataBoard/renfang/cpts/bread";
import resiDetails from "@/views/dataBoard/cpts/resi-details";
import { requestPostBi } from "@/js/dai/request-bipass";
import getQueryPara from "dai-js/modules/getQueryPara";
export default {
name: "resi-list",
components: {
cptTb,
cptBread,
resiDetails,
},
data() {
return {
breadList: [
{
type: "back",
meta: {
title: "人房总览",
},
},
{
meta: {
title: "居民列表",
},
},
],
tableTitle: "居民列表",
searchName: "",
orgLevel: "",
org_id: "",
resiType: "", //
loading: true,
pageSize: 10,
pageNo: 1,
total: 0,
srcTableData: [],
list: [],
colList: [
{
align: "left",
width: "5%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "20%",
},
{
align: "left",
width: "20%",
},
{
align: "left",
width: "15%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "5%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "10%",
},
],
header: [
"序号",
"姓名",
"所属网格",
"所属房屋",
"手机",
"身份证",
"性别",
"出生日期",
"操作",
],
displayedResiId: "",
};
},
mounted() {
this.org_id = getQueryPara("org_id");
this.resiType = getQueryPara("type");
this.getList();
},
methods: {
handleClickBreadItem({ item }) {
if (item.type == "back") {
this.$router.back();
}
},
handleSearch() {},
showInfo(index) {
let item = this.srcTableData[index];
this.displayedResiId = item.user_id;
},
handlePageNoChange(pageNo) {
this.pageNo = pageNo;
this.getList();
},
handleSizeChange(pageSize) {
this.pageSize = pageSize;
this.getList();
},
async getList() {
const { org_id, resiType, pageNo, pageSize } = this;
this.loading = true;
const url = "resident_list";
const { data, code, msg } = await requestPostBi(
url,
{
queryParam: {
org_id,
resiType,
pageNo,
pageSize,
},
},
{
mockId: 60069169,
}
);
this.loading = false;
if (code === 0) {
this.srcTableData = data;
// this.total = data.total;
this.list = data.map((item, index) => {
return [
index + 1,
item.user_name ? item.user_name : "--",
item.grid ? item.grid : "--",
item.house ? item.house : "--",
item.telephone ? item.telephone : "--",
item.idcard ? item.idcard : "--",
item.gender ? item.gender : "--",
item.birthday ? item.birthday : "--",
{ type: "operate", list: ["查看"] },
];
});
} else {
this.$message.error(msg);
}
},
},
destroyed() {
console.log("我已经离开了!");
},
};
</script>
<style lang="scss" src="@/assets/scss/dataBoard/listBox.scss" scoped></style>

223
src/views/dataBoard/renfang/warn/building.vue

@ -0,0 +1,223 @@
<template>
<div class="g-pgi">
<!-- 组织路由 -->
<cpt-bread
:separator="'/'"
@tap="handleClickBreadItem"
:breadList="breadList"
></cpt-bread>
<div v-if="!displayedId">
<div class="m-title">
<img
class="title_img"
src="@/assets/images/index/list-logo.png"
alt
/>
<div class="tip_title">{{ tableTitle }}</div>
<div class="title_line"></div>
</div>
<cpt-tb
:col-list="colList"
:loading="loading"
:header="header"
:list="list"
:total="total"
@handleSizeChange="handleSizeChange"
@handlePageNoChange="handlePageNoChange"
@operate="showInfo"
></cpt-tb>
</div>
<resi-list :building_id="displayedId" v-if="displayedId" />
</div>
</template>
<script>
import cptTb from "@/views/dataBoard/cpts/tb";
import cptBread from "@/views/dataBoard/renfang/cpts/bread";
import resiList from "./resi";
import { requestPostBi } from "@/js/dai/request-bipass";
import getQueryPara from "dai-js/modules/getQueryPara";
export default {
name: "house-list",
components: {
cptTb,
cptBread,
resiList,
},
data() {
return {
breadList: [
{
type: "back",
meta: {
title: "人房总览",
},
},
{
type: "building",
meta: {
title: "预警楼栋列表",
},
},
],
tableTitle: "预警楼栋列表",
searchName: "",
orgLevel: "",
org_id: "",
type_id: "",
type_name: "",
level: "",
loading: true,
pageSize: 10,
pageNo: 1,
total: 0,
srcTableData: [],
list: [],
colList: [
{
align: "left",
width: "5%",
},
{
align: "left",
width: "15%",
},
{
align: "left",
width: "20%",
},
{
align: "left",
width: "20%",
},
{
align: "left",
width: "20%",
},
{
align: "left",
width: "20%",
},
],
header: [
"序号",
"所属网格",
"所属小区",
"楼号",
"预警人数",
"操作",
],
displayedId: "",
};
},
mounted() {
this.org_id = getQueryPara("org_id");
this.level = getQueryPara("level");
this.type_id = getQueryPara("type_id");
const type_name = getQueryPara("type_name");
this.breadList[1].meta.title = type_name + "预警楼栋";
this.getList();
},
methods: {
handleClickBreadItem({ item }) {
if (item.type == "back") {
this.$router.back();
} else if (item.type == "building") {
this.displayedId = "";
const { breadList } = this;
this.breadList = breadList.slice(0, 2);
}
},
handleSearch() {},
showInfo(index) {
let item = this.srcTableData[index];
this.displayedId = building_id;
this.breadList.push({
meta: {
title: "预警人员列表",
},
});
},
handlePageNoChange(pageNo) {
this.pageNo = pageNo;
this.getList();
},
handleSizeChange(pageSize) {
this.pageSize = pageSize;
this.getList();
},
async getList() {
const { org_id, type_id, level, pageNo, pageSize } = this;
this.loading = true;
const url =
level == "yellow"
? "resident_warn_building_y"
: "resident_warn_building_r";
const { data, code, msg } = await requestPostBi(
url,
{
queryParam: {
org_id,
type_id,
pageNo,
pageSize,
},
},
{
mockId: 60071540,
}
);
this.loading = false;
if (code === 0) {
this.srcTableData = data;
// this.total = data.total;
this.list = data.map((item, index) => {
return [
index + 1,
item.grid ? item.grid : "--",
item.building ? item.building : "--",
item.unit ? item.unit : "--",
item.door ? item.door : "--",
{ type: "operate", list: ["查看人员"] },
];
});
} else {
this.$message.error(msg);
}
},
},
destroyed() {
console.log("我已经离开了!");
},
};
</script>
<style lang="scss" src="@/assets/scss/dataBoard/listBox.scss" scoped></style>

199
src/views/dataBoard/renfang/warn/resi.vue

@ -0,0 +1,199 @@
<template>
<div class="g-pgi">
<div class="m-title">
<img
class="title_img"
src="@/assets/images/index/list-logo.png"
alt
/>
<div class="tip_title">{{ tableTitle }}</div>
<div class="title_line"></div>
</div>
<cpt-tb
:col-list="colList"
:loading="loading"
:header="header"
:list="list"
:total="total"
@handleSizeChange="handleSizeChange"
@handlePageNoChange="handlePageNoChange"
@operate="showInfo"
></cpt-tb>
<resi-details
@close="displayedResiId = ''"
:resi-id="displayedResiId"
v-if="displayedResiId"
/>
</div>
</template>
<script>
import cptTb from "@/views/dataBoard/cpts/tb";
import cptBread from "@/views/dataBoard/renfang/cpts/bread";
import resiDetails from "@/views/dataBoard/cpts/resi-details";
import { requestPostBi } from "@/js/dai/request-bipass";
import getQueryPara from "dai-js/modules/getQueryPara";
export default {
name: "resi-list",
props: {
building_id: {
type: String,
default: "",
},
},
components: {
cptTb,
cptBread,
resiDetails,
},
data() {
return {
tableTitle: "预警人员列表",
searchName: "",
orgLevel: "",
org_id: "",
type_id: "", //
loading: true,
pageSize: 10,
pageNo: 1,
total: 0,
srcTableData: [],
list: [],
colList: [
{
align: "left",
width: "5%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "20%",
},
{
align: "left",
width: "20%",
},
{
align: "left",
width: "15%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "5%",
},
{
align: "left",
width: "10%",
},
{
align: "left",
width: "10%",
},
],
header: [
"序号",
"姓名",
"所属网格",
"所属房屋",
"手机",
"身份证",
"性别",
"出生日期",
"操作",
],
displayedResiId: "",
};
},
mounted() {
this.getList();
},
methods: {
showInfo(index) {
let item = this.srcTableData[index];
this.displayedResiId = item.user_id;
},
handlePageNoChange(pageNo) {
this.pageNo = pageNo;
this.getList();
},
handleSizeChange(pageSize) {
this.pageSize = pageSize;
this.getList();
},
async getList() {
const { org_id, type_id, pageNo, pageSize } = this;
this.loading = true;
const url = "resident_class_list";
const { data, code, msg } = await requestPostBi(
url,
{
queryParam: {
org_id,
type_id,
pageNo,
pageSize,
},
},
{
mockId: 60069169,
}
);
this.loading = false;
if (code === 0) {
this.srcTableData = data;
// this.total = data.total;
this.list = data.map((item, index) => {
return [
index + 1,
item.user_name ? item.user_name : "--",
item.grid ? item.grid : "--",
item.house ? item.house : "--",
item.telephone ? item.telephone : "--",
item.idcard ? item.idcard : "--",
item.gender ? item.gender : "--",
item.birthday ? item.birthday : "--",
{ type: "operate", list: ["查看"] },
];
});
} else {
this.$message.error(msg);
}
},
},
destroyed() {
console.log("我已经离开了!");
},
};
</script>
<style lang="scss" src="@/assets/scss/dataBoard/listBox.scss" scoped></style>

604
src/views/dataBoardMain/main-navbar.vue

@ -1,171 +1,196 @@
<template>
<div class="m-topnav">
<div class="title">{{ customerName }}综合服务平台数据看板</div>
<div class="nav-list z-left">
<div
class="nav-item"
:class="{ 'z-on': $route.path == '/dataBoard/renfang/index' }"
@click="toPage('/board')"
>
<span>人房总览</span>
</div>
<div class="nav-item" @click="toPage('/')">
<span>人口分析</span>
</div>
<div class="nav-item" @click="toPage('/')">
<span>人口变化</span>
</div>
<div class="nav-item" @click="toPage('/')">
<span>人口预警</span>
</div>
</div>
<div class="m-topnav">
<div class="title">{{ customerName }}综合服务平台数据看板</div>
<div class="btn-back" @click="toPage('/')">
<img class="z-default" src="~@/assets/images/shuju/main/back.png" />
<img class="z-on" src="~@/assets/images/shuju/main/back-on.png" />
<span>返回</span>
</div>
<div class="nav-list z-left">
<div
class="nav-item"
:class="{ 'z-on': $route.path == '/dataBoard/renfang/index' }"
@click="toPage('/dataBoard/renfang/index')"
>
<span>人房总览</span>
</div>
<div class="nav-item" @click="toPage('/')">
<span>问题清单</span>
</div>
<div class="nav-item" @click="toPage('/')">
<span>需求清单</span>
</div>
<div class="nav-item" @click="toPage('/')">
<span>资源清单</span>
</div>
</div>
<div class="nav-list z-right">
<div class="nav-item" @click="toPage('/')">
<span>回首页</span>
</div>
</div>
<div class="nav-list z-right">
<div class="nav-item">
<span>15分钟生活圈</span>
</div>
</div>
<div class="msg">
<div class="weather">
<img
v-if="weather.weather == '小雨'"
src="~@/assets/images/shuju/main/weather/xiaoyu.png"
/>
<img
v-if="weather.weather == '中雨'"
src="~@/assets/images/shuju/main/weather/zhongyu.png"
/>
<img
v-if="weather.weather == '大雨'"
src="~@/assets/images/shuju/main/weather/dayu.png"
/>
<img
v-if="weather.weather == '雷雨'"
src="~@/assets/images/shuju/main/weather/leiyu.png"
/>
<img
v-if="weather.weather == '雷暴'"
src="~@/assets/images/shuju/main/weather/leibao.png"
/>
<img
v-if="weather.weather == '雨雪'"
src="~@/assets/images/shuju/main/weather/yuxue.png"
/>
<img
v-if="weather.weather == '阴'"
src="~@/assets/images/shuju/main/weather/yin.png"
/>
<img
v-if="weather.weather == '雾'"
src="~@/assets/images/shuju/main/weather/wu.png"
/>
<img
v-if="weather.weather == '风'"
src="~@/assets/images/shuju/main/weather/feng.png"
/>
<img
v-else-if="weather.weather == '雪'"
src="~@/assets/images/shuju/main/weather/xue.png"
/>
<img
v-else-if="weather.weather == '多云'"
src="~@/assets/images/shuju/main/weather/duoyun.png"
/>
<img v-else src="~@/assets/images/shuju/main/weather/qing.png" />
<div class="msg">
<div class="weather">
<img
v-if="weather.weather == '小雨'"
src="~@/assets/images/shuju/main/weather/xiaoyu.png"
/>
<img
v-if="weather.weather == '中雨'"
src="~@/assets/images/shuju/main/weather/zhongyu.png"
/>
<img
v-if="weather.weather == '大雨'"
src="~@/assets/images/shuju/main/weather/dayu.png"
/>
<img
v-if="weather.weather == '雷雨'"
src="~@/assets/images/shuju/main/weather/leiyu.png"
/>
<img
v-if="weather.weather == '雷暴'"
src="~@/assets/images/shuju/main/weather/leibao.png"
/>
<img
v-if="weather.weather == '雨雪'"
src="~@/assets/images/shuju/main/weather/yuxue.png"
/>
<img
v-if="weather.weather == '阴'"
src="~@/assets/images/shuju/main/weather/yin.png"
/>
<img
v-if="weather.weather == '雾'"
src="~@/assets/images/shuju/main/weather/wu.png"
/>
<img
v-if="weather.weather == '风'"
src="~@/assets/images/shuju/main/weather/feng.png"
/>
<img
v-else-if="weather.weather == '雪'"
src="~@/assets/images/shuju/main/weather/xue.png"
/>
<img
v-else-if="weather.weather == '多云'"
src="~@/assets/images/shuju/main/weather/duoyun.png"
/>
<img
v-else
src="~@/assets/images/shuju/main/weather/qing.png"
/>
<div>{{ weather.temperature }}</div>
<div>{{ weather.weather }}</div>
</div>
<div>{{ weather.temperature }}</div>
<div>{{ weather.weather }}</div>
</div>
<div class="date">
<div class="date-time">{{ showTime }}</div>
<div class="date-div"></div>
<div class="date-week">{{ showWeek }}</div>
</div>
</div>
<div class="date">
<div class="date-time">{{ showTime }}</div>
<div class="date-div"></div>
<div class="date-week">{{ showWeek }}</div>
</div>
</div>
<nav v-if="false" class="m-navbar">
<div class="navbar__header">
<h1 class="navbar__brand" @click="$router.push({ name: 'home' })">
<a class="navbar__brand-lg" href="javascript:;">{{ customerName }}</a>
<a class="navbar__brand-mini" href="javascript:;">{{
customerName.slice(0, 2)
}}</a>
</h1>
</div>
<div class="navbar__body">
<el-menu class="navbar__menu mr-auto" mode="horizontal">
<el-menu-item
index="1"
@click="$store.state.sidebarFold = !$store.state.sidebarFold"
>
<svg
class="icon-svg navbar__icon-menu navbar__icon-menu--switch"
aria-hidden="true"
>
<use xlink:href="#icon-outdent"></use>
</svg>
</el-menu-item>
<nav v-if="false" class="m-navbar">
<div class="navbar__header">
<h1
class="navbar__brand"
@click="$router.push({ name: 'home' })"
>
<a class="navbar__brand-lg" href="javascript:;">{{
customerName
}}</a>
<a class="navbar__brand-mini" href="javascript:;">{{
customerName.slice(0, 2)
}}</a>
</h1>
</div>
<div class="navbar__body">
<el-menu class="navbar__menu mr-auto" mode="horizontal">
<el-menu-item
index="1"
@click="
$store.state.sidebarFold = !$store.state.sidebarFold
"
>
<svg
class="icon-svg navbar__icon-menu navbar__icon-menu--switch"
aria-hidden="true"
>
<use xlink:href="#icon-outdent"></use>
</svg>
</el-menu-item>
<el-menu-item index="2" @click="refresh()">
<svg class="icon-svg navbar__icon-menu" aria-hidden="true">
<use xlink:href="#icon-sync"></use>
</svg>
</el-menu-item>
</el-menu>
<el-menu-item index="2" @click="refresh()">
<svg
class="icon-svg navbar__icon-menu"
aria-hidden="true"
>
<use xlink:href="#icon-sync"></use>
</svg>
</el-menu-item>
</el-menu>
<el-menu
:default-active="$store.state.mainShuju.activeName"
:unique-opened="true"
:collapseTransition="false"
mode="horizontal"
class="navbar__menu mr-auto z-div"
>
<el-menu-item index="index" @click="toIndexPage">
<span>首页</span>
</el-menu-item>
<el-menu
:default-active="$store.state.mainShuju.activeName"
:unique-opened="true"
:collapseTransition="false"
mode="horizontal"
class="navbar__menu mr-auto z-div"
>
<el-menu-item index="index" @click="toIndexPage">
<span>首页</span>
</el-menu-item>
<template v-for="(menu, idx) in $store.state.mainShuju.menuList">
<li
class="sub-menu"
:class="
$store.state.mainShuju.activeName == menu.id ? 'z-on' : ''
"
v-if="menu.children"
:key="menu.id"
@click="gotoRouteHandle(menu.id, idx)"
>
<span>{{ menu.name }}</span>
<div class="sub-menu-list">
<div
:class="
$store.state.mainShuju.activeName == subMenu.id
? 'z-on'
: ''
"
:key="subMenu.id"
@click="gotoRouteHandle(subMenu.id, subIndex)"
v-for="(subMenu, subIndex) in menu.children"
>
{{ subMenu.name }}
</div>
</div>
</li>
<el-menu-item
v-else
:key="menu.id"
:menu="menu"
:index="menu.id"
@click="gotoRouteHandle(menu.id, idx)"
>
<span>{{ menu.name }}</span>
</el-menu-item>
</template>
</el-menu>
<template
v-for="(menu, idx) in $store.state.mainShuju.menuList"
>
<li
class="sub-menu"
:class="
$store.state.mainShuju.activeName == menu.id
? 'z-on'
: ''
"
v-if="menu.children"
:key="menu.id"
@click="gotoRouteHandle(menu.id, idx)"
>
<span>{{ menu.name }}</span>
<div class="sub-menu-list">
<div
:class="
$store.state.mainShuju.activeName ==
subMenu.id
? 'z-on'
: ''
"
:key="subMenu.id"
@click="
gotoRouteHandle(subMenu.id, subIndex)
"
v-for="(subMenu, subIndex) in menu.children"
>
{{ subMenu.name }}
</div>
</div>
</li>
<el-menu-item
v-else
:key="menu.id"
:menu="menu"
:index="menu.id"
@click="gotoRouteHandle(menu.id, idx)"
>
<span>{{ menu.name }}</span>
</el-menu-item>
</template>
</el-menu>
<el-menu class="navbar__menu" mode="horizontal">
<!-- <el-menu-item index="1">
<el-menu class="navbar__menu" mode="horizontal">
<!-- <el-menu-item index="1">
<el-dropdown placement="bottom"
:show-timeout="0">
<el-button size="mini">{{ $t('_lang') }}</el-button>
@ -176,7 +201,7 @@
</el-dropdown-menu>
</el-dropdown>
</el-menu-item> -->
<!-- <el-menu-item index="2">
<!-- <el-menu-item index="2">
<a href="//www.renren.io/"
target="_blank">
<svg class="icon-svg navbar__icon-menu"
@ -185,38 +210,47 @@
</svg>
</a>
</el-menu-item> -->
<el-menu-item index="3" @click="fullscreenHandle()">
<svg class="icon-svg navbar__icon-menu" aria-hidden="true">
<use xlink:href="#icon-fullscreen"></use>
</svg>
</el-menu-item>
<el-menu-item index="3" @click="fullscreenHandle()">
<svg
class="icon-svg navbar__icon-menu"
aria-hidden="true"
>
<use xlink:href="#icon-fullscreen"></use>
</svg>
</el-menu-item>
<el-menu-item index="4" class="navbar__avatar">
<el-dropdown placement="bottom" :show-timeout="0">
<span class="el-dropdown-link">
<img src="~@/assets/img/staff-default-avatar.png" />
<span>{{ $store.state.user.realName }}</span>
<i class="el-icon-arrow-down"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="updatePasswordHandle()">{{
$t("updatePassword.title")
}}</el-dropdown-item>
<el-dropdown-item @click.native="logoutHandle()">{{
$t("logout")
}}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-menu-item>
</el-menu>
</div>
<!-- 弹窗, 修改密码 -->
<update-password-work
v-if="updatePassowrdVisible"
ref="updatePassowrd"
></update-password-work>
</nav>
</div>
<el-menu-item index="4" class="navbar__avatar">
<el-dropdown placement="bottom" :show-timeout="0">
<span class="el-dropdown-link">
<img
src="~@/assets/img/staff-default-avatar.png"
/>
<span>{{ $store.state.user.realName }}</span>
<i class="el-icon-arrow-down"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item
@click.native="updatePasswordHandle()"
>{{
$t("updatePassword.title")
}}</el-dropdown-item
>
<el-dropdown-item
@click.native="logoutHandle()"
>{{ $t("logout") }}</el-dropdown-item
>
</el-dropdown-menu>
</el-dropdown>
</el-menu-item>
</el-menu>
</div>
<!-- 弹窗, 修改密码 -->
<update-password-work
v-if="updatePassowrdVisible"
ref="updatePassowrd"
></update-password-work>
</nav>
</div>
</template>
<script>
@ -227,109 +261,109 @@ import nextTick from "dai-js/tools/nextTick";
import { requestGet } from "@/js/dai/request";
export default {
inject: ["refresh"],
data() {
return {
showHeader: true,
i18nMessages: messages,
updatePassowrdVisible: false,
customerName: "",
inject: ["refresh"],
data() {
return {
showHeader: true,
i18nMessages: messages,
updatePassowrdVisible: false,
customerName: "",
showWeek: "",
showTime: "",
showWeek: "",
showTime: "",
weather: {
weather: "晴",
temperature: "--",
},
};
},
components: {
UpdatePasswordWork,
},
created() {
this.changeCustomerName();
const customerId = localStorage.getItem("customerId");
let siteconfigElement = window.SITE_CONFIG["menuShujuList"];
// 亿 -
if (
"04c0d396e298f13e57aa5904a657eaa6" != customerId &&
"3fdd0380deff5b30f45376cdf995d1c1" != customerId
) {
for (let index in siteconfigElement) {
if (siteconfigElement[index].id == "6") {
let newMenuArr = siteconfigElement[index].children.filter(
(item) => item.id !== "duoyuanfuwufenxi"
);
siteconfigElement[index].children = newMenuArr;
}
}
}
this.$store.state.mainShuju.menuList = siteconfigElement;
weather: {
weather: "晴",
temperature: "--",
},
};
},
components: {
UpdatePasswordWork,
},
created() {
this.changeCustomerName();
const customerId = localStorage.getItem("customerId");
let siteconfigElement = window.SITE_CONFIG["menuShujuList"];
// 亿 -
if (
"04c0d396e298f13e57aa5904a657eaa6" != customerId &&
"3fdd0380deff5b30f45376cdf995d1c1" != customerId
) {
for (let index in siteconfigElement) {
if (siteconfigElement[index].id == "6") {
let newMenuArr = siteconfigElement[index].children.filter(
(item) => item.id !== "duoyuanfuwufenxi"
);
siteconfigElement[index].children = newMenuArr;
}
}
}
this.$store.state.mainShuju.menuList = siteconfigElement;
const pollTime = async () => {
this.computeCurrentTime();
await nextTick(1000);
pollTime();
};
pollTime();
const pollTime = async () => {
this.computeCurrentTime();
await nextTick(1000);
pollTime();
};
pollTime();
this.getWeatherData();
},
computed: {},
methods: {
computeCurrentTime() {
let now = new Date();
let wk = now.getDay();
this.showWeek = [
"星期日",
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六",
][wk];
this.showTime = dateFormat(now, "yyyy-MM-dd hh:mm:ss");
},
this.getWeatherData();
},
computed: {},
methods: {
computeCurrentTime() {
let now = new Date();
let wk = now.getDay();
this.showWeek = [
"星期日",
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六",
][wk];
this.showTime = dateFormat(now, "yyyy-MM-dd hh:mm:ss");
},
toPage(path) {
this.$router.push({ path });
},
toPage(path) {
this.$router.push({ path });
},
toIndexPage() {
this.$router.replace("/");
},
// menuId()
gotoRouteHandle(menuId, idx) {
var route = window.SITE_CONFIG["dynamicMenuRoutesShuju"].filter(
(item) => item.meta.menuId === menuId
)[0];
if (route) {
this.$router.push({ name: route.name });
this.$store.state.mainShuju.activeName = menuId;
}
},
toIndexPage() {
this.$router.replace("/");
},
// menuId()
gotoRouteHandle(menuId, idx) {
var route = window.SITE_CONFIG["dynamicMenuRoutesShuju"].filter(
(item) => item.meta.menuId === menuId
)[0];
if (route) {
this.$router.push({ name: route.name });
this.$store.state.mainShuju.activeName = menuId;
}
},
changeCustomerName() {
this.customerName =
localStorage.getItem("customerName") || "数据分析可视化平台";
},
changeCustomerName() {
this.customerName =
localStorage.getItem("customerName") || "数据分析可视化平台";
},
async getWeatherData() {
const url =
"https://restapi.amap.com/v3/weather/weatherInfo?key=8c87678f34ce9e8e23245c5161991c4e";
const { data, code, msg } = await requestGet(url, {
city: this.$store.state.user.areaCode,
});
if (code === 0) {
console.log("---------------weather", data);
this.weather = data.lives[0];
} else {
// return this.$message.error("");
}
},
},
async getWeatherData() {
const url =
"https://restapi.amap.com/v3/weather/weatherInfo?key=8c87678f34ce9e8e23245c5161991c4e";
const { data, code, msg } = await requestGet(url, {
city: this.$store.state.user.areaCode,
});
if (code === 0) {
console.log("---------------weather", data);
this.weather = data.lives[0];
} else {
// return this.$message.error("");
}
},
},
};
</script>

544
src/views/modules/base/community/communityExportInfo.vue

@ -104,6 +104,8 @@
<el-input v-model="form.name"
maxlength="20"
class="wd200 mr10" />
<div>自定义表头</div>
<el-input v-model="form.title" maxlength="20" class="wd200 mr10" />
<el-checkbox v-model="form.isSaveTemp">保存为常用模板</el-checkbox>
</div>
</div>
@ -333,7 +335,7 @@ export default {
searchForm: { ...this.search },
exportConfig: {
...this.form,
formCode: 'resi_base_info',
formCode: 'community_info',
itemList: this.rightList.map(item => {
return {
itemId: item.id,
@ -371,7 +373,7 @@ export default {
},
async getTemplateList () {
let params = {
formCode: 'resi_base_info'
formCode: 'community_info'
}
await this.$http
.post('/oper/customize/icExportTemplate/templateList', params)
@ -427,277 +429,283 @@ export default {
let params = {}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
let dataTemp = []
if (groupId === '45687aa479955f9d06204d415238f7cc_0') {
dataTemp = [
{
columnName: "GRID_ID",
customerId: "45687aa479955f9d06204d415238f7cc",
itemGroupId: "45687aa479955f9d06204d415238f7cc_0",
itemId: "20220422102809_1001",
itemType: null,
label: "所属组织",
optionSourceType: "remote",
optionSourceValue: "/gov/org/customergrid/gridoption",
options: null,
sort: 0,
supportAdd: false,
tableName: "ic_resi_user",
},
{
columnName: "VILLAGE_ID",
customerId: "45687aa479955f9d06204d415238f7cc",
itemGroupId: "45687aa479955f9d06204d415238f7cc_0",
itemId: "20220422102809_1002",
itemType: null,
label: "所属网格",
optionSourceType: "remote",
optionSourceValue: "/actual/base/communityQuarters/listQuartersOptions?20220422102809_1001",
options: null,
sort: 1,
supportAdd: false,
tableName: "ic_resi_user",
},
{
columnName: "BUILD_ID",
customerId: "45687aa479955f9d06204d415238f7cc",
itemGroupId: "45687aa479955f9d06204d415238f7cc_0",
itemId: "20220422102809_1003",
itemType: null,
label: "小区名称",
optionSourceType: "remote",
optionSourceValue: "/actual/base/communityBuilding/buildingoption?20220422102809_1002",
options: null,
sort: 2,
supportAdd: false,
tableName: "ic_resi_user",
},
{
columnName: "UNIT_ID",
customerId: "45687aa479955f9d06204d415238f7cc",
itemGroupId: "45687aa479955f9d06204d415238f7cc_0",
itemId: "20220422102809_10031",
itemType: null,
label: "关联物业",
optionSourceType: "remote",
optionSourceValue: "/actual/base/communityBuildingUnit/unitoption?20220422102809_1003",
options: null,
sort: 3,
supportAdd: false,
tableName: "ic_resi_user",
},
{
columnName: "HOME_ID",
customerId: "45687aa479955f9d06204d415238f7cc",
itemGroupId: "45687aa479955f9d06204d415238f7cc_0",
itemId: "20220422102809_1004",
itemType: null,
label: "详细地址",
optionSourceType: "remote",
optionSourceValue: "/actual/base/communityHouse/houseoption?20220422102809_10031",
options: null,
sort: 4,
supportAdd: false,
tableName: "ic_resi_user",
},
{
columnName: "IS_BDHJ",
customerId: "45687aa479955f9d06204d415238f7cc",
itemGroupId: "45687aa479955f9d06204d415238f7cc_0",
itemId: "20220422102809_1005",
itemType: null,
label: "备注",
optionSourceType: "local",
optionSourceValue: "options表取",
options: null,
sort: 5,
supportAdd: false,
tableName: "ic_resi_user",
},
]
}
if (groupId === '20220422102809_101') {
dataTemp = [
{
columnName: "GRID_ID",
customerId: "45687aa479955f9d06204d415238f7cc",
itemGroupId: "20220422102809_101",
itemId: "20220422102809_1001",
itemType: null,
label: "所属小区",
optionSourceType: "remote",
optionSourceValue: "/gov/org/customergrid/gridoption",
options: null,
sort: 0,
supportAdd: false,
tableName: "ic_resi_user",
},
{
columnName: "VILLAGE_ID",
customerId: "45687aa479955f9d06204d415238f7cc",
itemGroupId: "20220422102809_101",
itemId: "20220422102809_1002",
itemType: null,
label: "楼栋名称",
optionSourceType: "remote",
optionSourceValue: "/actual/base/communityQuarters/listQuartersOptions?20220422102809_1001",
options: null,
sort: 1,
supportAdd: false,
tableName: "ic_resi_user",
},
{
columnName: "BUILD_ID",
customerId: "45687aa479955f9d06204d415238f7cc",
itemGroupId: "20220422102809_101",
itemId: "20220422102809_1003",
itemType: null,
label: "楼栋类型",
optionSourceType: "remote",
optionSourceValue: "/actual/base/communityBuilding/buildingoption?20220422102809_1002",
options: null,
sort: 2,
supportAdd: false,
tableName: "ic_resi_user",
},
{
columnName: "UNIT_ID",
customerId: "45687aa479955f9d06204d415238f7cc",
itemGroupId: "20220422102809_101",
itemId: "20220422102809_10031",
itemType: null,
label: "单元数",
optionSourceType: "remote",
optionSourceValue: "/actual/base/communityBuildingUnit/unitoption?20220422102809_1003",
options: null,
sort: 3,
supportAdd: false,
tableName: "ic_resi_user",
},
{
columnName: "HOME_ID",
customerId: "45687aa479955f9d06204d415238f7cc",
itemGroupId: "20220422102809_101",
itemId: "20220422102809_1004",
itemType: null,
label: "楼栋地址",
optionSourceType: "remote",
optionSourceValue: "/actual/base/communityHouse/houseoption?20220422102809_10031",
options: null,
sort: 4,
supportAdd: false,
tableName: "ic_resi_user",
},
]
}
if (groupId === '20220422102809_102') {
dataTemp = [
{
columnName: "GRID_ID",
customerId: "45687aa479955f9d06204d415238f7cc",
itemGroupId: "20220422102809_102",
itemId: "20220422102809_1001",
itemType: null,
label: "所属楼栋",
optionSourceType: "remote",
optionSourceValue: "/gov/org/customergrid/gridoption",
options: null,
sort: 0,
supportAdd: false,
tableName: "ic_resi_user",
},
{
columnName: "VILLAGE_ID",
customerId: "45687aa479955f9d06204d415238f7cc",
itemGroupId: "20220422102809_102",
itemId: "20220422102809_1002",
itemType: null,
label: "单元号",
optionSourceType: "remote",
optionSourceValue: "/actual/base/communityQuarters/listQuartersOptions?20220422102809_1001",
options: null,
sort: 1,
supportAdd: false,
tableName: "ic_resi_user",
},
{
columnName: "BUILD_ID",
customerId: "45687aa479955f9d06204d415238f7cc",
itemGroupId: "20220422102809_102",
itemId: "20220422102809_1003",
itemType: null,
label: "门牌号",
optionSourceType: "remote",
optionSourceValue: "/actual/base/communityBuilding/buildingoption?20220422102809_1002",
options: null,
sort: 2,
supportAdd: false,
tableName: "ic_resi_user",
},
{
columnName: "UNIT_ID",
customerId: "45687aa479955f9d06204d415238f7cc",
itemGroupId: "20220422102809_102",
itemId: "20220422102809_10031",
itemType: null,
label: "房屋类型",
optionSourceType: "remote",
optionSourceValue: "/actual/base/communityBuildingUnit/unitoption?20220422102809_1003",
options: null,
sort: 3,
supportAdd: false,
tableName: "ic_resi_user",
},
{
columnName: "HOME_ID",
customerId: "45687aa479955f9d06204d415238f7cc",
itemGroupId: "20220422102809_102",
itemId: "20220422102809_1004",
itemType: null,
label: "房屋用途",
optionSourceType: "remote",
optionSourceValue: "/actual/base/communityHouse/houseoption?20220422102809_10031",
options: null,
sort: 4,
supportAdd: false,
tableName: "ic_resi_user",
},
{
columnName: "IS_BDHJ",
customerId: "45687aa479955f9d06204d415238f7cc",
itemGroupId: "20220422102809_102",
itemId: "20220422102809_1005",
itemType: null,
label: "房屋状态",
optionSourceType: "local",
optionSourceValue: "options表取",
options: null,
sort: 5,
supportAdd: false,
tableName: "ic_resi_user",
},
]
}
return dataTemp
return data
} else {
this.$message.error(msg)
}
// if (code === 0) {
// let dataTemp = []
//
// if (groupId === '45687aa479955f9d06204d415238f7cc_0') {
// dataTemp = [
// {
// columnName: "GRID_ID",
// customerId: "45687aa479955f9d06204d415238f7cc",
// itemGroupId: "45687aa479955f9d06204d415238f7cc_0",
// itemId: "20220422102809_1001",
// itemType: null,
// label: "",
// optionSourceType: "remote",
// optionSourceValue: "/gov/org/customergrid/gridoption",
// options: null,
// sort: 0,
// supportAdd: false,
// tableName: "ic_resi_user",
// },
// {
// columnName: "VILLAGE_ID",
// customerId: "45687aa479955f9d06204d415238f7cc",
// itemGroupId: "45687aa479955f9d06204d415238f7cc_0",
// itemId: "20220422102809_1002",
// itemType: null,
// label: "",
// optionSourceType: "remote",
// optionSourceValue: "/actual/base/communityQuarters/listQuartersOptions?20220422102809_1001",
// options: null,
// sort: 1,
// supportAdd: false,
// tableName: "ic_resi_user",
// },
// {
// columnName: "BUILD_ID",
// customerId: "45687aa479955f9d06204d415238f7cc",
// itemGroupId: "45687aa479955f9d06204d415238f7cc_0",
// itemId: "20220422102809_1003",
// itemType: null,
// label: "",
// optionSourceType: "remote",
// optionSourceValue: "/actual/base/communityBuilding/buildingoption?20220422102809_1002",
// options: null,
// sort: 2,
// supportAdd: false,
// tableName: "ic_resi_user",
// },
// {
// columnName: "UNIT_ID",
// customerId: "45687aa479955f9d06204d415238f7cc",
// itemGroupId: "45687aa479955f9d06204d415238f7cc_0",
// itemId: "20220422102809_10031",
// itemType: null,
// label: "",
// optionSourceType: "remote",
// optionSourceValue: "/actual/base/communityBuildingUnit/unitoption?20220422102809_1003",
// options: null,
// sort: 3,
// supportAdd: false,
// tableName: "ic_resi_user",
// },
// {
// columnName: "HOME_ID",
// customerId: "45687aa479955f9d06204d415238f7cc",
// itemGroupId: "45687aa479955f9d06204d415238f7cc_0",
// itemId: "20220422102809_1004",
// itemType: null,
// label: "",
// optionSourceType: "remote",
// optionSourceValue: "/actual/base/communityHouse/houseoption?20220422102809_10031",
// options: null,
// sort: 4,
// supportAdd: false,
// tableName: "ic_resi_user",
// },
// {
// columnName: "IS_BDHJ",
// customerId: "45687aa479955f9d06204d415238f7cc",
// itemGroupId: "45687aa479955f9d06204d415238f7cc_0",
// itemId: "20220422102809_1005",
// itemType: null,
// label: "",
// optionSourceType: "local",
// optionSourceValue: "options",
// options: null,
// sort: 5,
// supportAdd: false,
// tableName: "ic_resi_user",
// },
//
// ]
// }
//
// if (groupId === '20220422102809_101') {
// dataTemp = [
// {
// columnName: "GRID_ID",
// customerId: "45687aa479955f9d06204d415238f7cc",
// itemGroupId: "20220422102809_101",
// itemId: "20220422102809_1001",
// itemType: null,
// label: "",
// optionSourceType: "remote",
// optionSourceValue: "/gov/org/customergrid/gridoption",
// options: null,
// sort: 0,
// supportAdd: false,
// tableName: "ic_resi_user",
// },
//
// {
// columnName: "VILLAGE_ID",
// customerId: "45687aa479955f9d06204d415238f7cc",
// itemGroupId: "20220422102809_101",
// itemId: "20220422102809_1002",
// itemType: null,
// label: "",
// optionSourceType: "remote",
// optionSourceValue: "/actual/base/communityQuarters/listQuartersOptions?20220422102809_1001",
// options: null,
// sort: 1,
// supportAdd: false,
// tableName: "ic_resi_user",
// },
//
// {
// columnName: "BUILD_ID",
// customerId: "45687aa479955f9d06204d415238f7cc",
// itemGroupId: "20220422102809_101",
// itemId: "20220422102809_1003",
// itemType: null,
// label: "",
// optionSourceType: "remote",
// optionSourceValue: "/actual/base/communityBuilding/buildingoption?20220422102809_1002",
// options: null,
// sort: 2,
// supportAdd: false,
// tableName: "ic_resi_user",
// },
//
// {
// columnName: "UNIT_ID",
// customerId: "45687aa479955f9d06204d415238f7cc",
// itemGroupId: "20220422102809_101",
// itemId: "20220422102809_10031",
// itemType: null,
// label: "",
// optionSourceType: "remote",
// optionSourceValue: "/actual/base/communityBuildingUnit/unitoption?20220422102809_1003",
// options: null,
// sort: 3,
// supportAdd: false,
// tableName: "ic_resi_user",
// },
//
// {
// columnName: "HOME_ID",
// customerId: "45687aa479955f9d06204d415238f7cc",
// itemGroupId: "20220422102809_101",
// itemId: "20220422102809_1004",
// itemType: null,
// label: "",
// optionSourceType: "remote",
// optionSourceValue: "/actual/base/communityHouse/houseoption?20220422102809_10031",
// options: null,
// sort: 4,
// supportAdd: false,
// tableName: "ic_resi_user",
// },
// ]
// }
//
// if (groupId === '20220422102809_102') {
// dataTemp = [
// {
// columnName: "GRID_ID",
// customerId: "45687aa479955f9d06204d415238f7cc",
// itemGroupId: "20220422102809_102",
// itemId: "20220422102809_1001",
// itemType: null,
// label: "",
// optionSourceType: "remote",
// optionSourceValue: "/gov/org/customergrid/gridoption",
// options: null,
// sort: 0,
// supportAdd: false,
// tableName: "ic_resi_user",
// },
//
// {
// columnName: "VILLAGE_ID",
// customerId: "45687aa479955f9d06204d415238f7cc",
// itemGroupId: "20220422102809_102",
// itemId: "20220422102809_1002",
// itemType: null,
// label: "",
// optionSourceType: "remote",
// optionSourceValue: "/actual/base/communityQuarters/listQuartersOptions?20220422102809_1001",
// options: null,
// sort: 1,
// supportAdd: false,
// tableName: "ic_resi_user",
// },
//
// {
// columnName: "BUILD_ID",
// customerId: "45687aa479955f9d06204d415238f7cc",
// itemGroupId: "20220422102809_102",
// itemId: "20220422102809_1003",
// itemType: null,
// label: "",
// optionSourceType: "remote",
// optionSourceValue: "/actual/base/communityBuilding/buildingoption?20220422102809_1002",
// options: null,
// sort: 2,
// supportAdd: false,
// tableName: "ic_resi_user",
// },
//
// {
// columnName: "UNIT_ID",
// customerId: "45687aa479955f9d06204d415238f7cc",
// itemGroupId: "20220422102809_102",
// itemId: "20220422102809_10031",
// itemType: null,
// label: "",
// optionSourceType: "remote",
// optionSourceValue: "/actual/base/communityBuildingUnit/unitoption?20220422102809_1003",
// options: null,
// sort: 3,
// supportAdd: false,
// tableName: "ic_resi_user",
// },
//
// {
// columnName: "HOME_ID",
// customerId: "45687aa479955f9d06204d415238f7cc",
// itemGroupId: "20220422102809_102",
// itemId: "20220422102809_1004",
// itemType: null,
// label: "",
// optionSourceType: "remote",
// optionSourceValue: "/actual/base/communityHouse/houseoption?20220422102809_10031",
// options: null,
// sort: 4,
// supportAdd: false,
// tableName: "ic_resi_user",
// },
// {
// columnName: "IS_BDHJ",
// customerId: "45687aa479955f9d06204d415238f7cc",
// itemGroupId: "20220422102809_102",
// itemId: "20220422102809_1005",
// itemType: null,
// label: "",
// optionSourceType: "local",
// optionSourceValue: "options",
// options: null,
// sort: 5,
// supportAdd: false,
// tableName: "ic_resi_user",
// },
// ]
// }
//
// return dataTemp
//
// } else {
// this.$message.error(msg)
// }
},
formatData (res) {
const fileReader = new FileReader()
@ -815,4 +823,4 @@ export default {
.wd200 {
width: 200px;
}
</style>
</style>

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

@ -310,7 +310,7 @@
ref="ref_diy"
:list="exportList"
:search="{
formCode: 'resi_base_info',
formCode: 'community_info',
pageNo: pageNo,
pageSize: pageSize,
conditions: conditions,
@ -756,66 +756,21 @@ export default {
},
async getExportList (type) {
const url = "/oper/customize//icformitemgroup/list";
const url = "/oper/customize/icformitemgroup/list";
let params = {
formCode: "resi_base_info",
formCode: "community_info",
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
//
let dataTemp = [
{
childShowFlag: "0",
customerId: "45687aa479955f9d06204d415238f7cc",
display: false,
formCode: "resi_base_info",
formId: "20220422102809_1",
groupCode: "jcxx",
id: "45687aa479955f9d06204d415238f7cc_0",
label: "小区信息",
policyFlag: "1",
sort: 0,
supportAdd: false,
tableName: "ic_resi_user"
},
{
childShowFlag: "0",
customerId: "45687aa479955f9d06204d415238f7cc",
display: true,
formCode: "resi_base_info",
formId: "20220422102809_1",
groupCode: "jyxx",
id: "20220422102809_101",
label: "楼栋信息",
policyFlag: "1",
sort: 1,
supportAdd: false,
tableName: "ic_resi_user",
},
{
childShowFlag: "0",
customerId: "45687aa479955f9d06204d415238f7cc",
display: true,
formCode: "resi_base_info",
formId: "20220422102809_1",
groupCode: "xqah",
id: "20220422102809_102",
label: "房屋信息",
policyFlag: "1",
sort: 2,
supportAdd: false,
tableName: "ic_resi_user",
}
]
dataTemp.forEach((item) => {
data.forEach((item) => {
(async (id) => {
// item.queryItemList = await this.getExportChildList(id)
item.queryItemList = [];
})(item.id);
});
this.exportList = [...dataTemp];
this.exportList = [...data];
this.$nextTick(() => {
this.diyDialog = true;
});
@ -823,6 +778,67 @@ export default {
} else {
this.$message.error(msg);
}
// if (code === 0) {
// //
// let dataTemp = [
// {
// childShowFlag: "0",
// customerId: "45687aa479955f9d06204d415238f7cc",
// display: false,
// formCode: "resi_base_info",
// formId: "20220422102809_1",
// groupCode: "jcxx",
// id: "45687aa479955f9d06204d415238f7cc_0",
// label: "",
// policyFlag: "1",
// sort: 0,
// supportAdd: false,
// tableName: "ic_resi_user"
// },
// {
// childShowFlag: "0",
// customerId: "45687aa479955f9d06204d415238f7cc",
// display: true,
// formCode: "resi_base_info",
// formId: "20220422102809_1",
// groupCode: "jyxx",
// id: "20220422102809_101",
// label: "",
// policyFlag: "1",
// sort: 1,
// supportAdd: false,
// tableName: "ic_resi_user",
// },
// {
// childShowFlag: "0",
// customerId: "45687aa479955f9d06204d415238f7cc",
// display: true,
// formCode: "resi_base_info",
// formId: "20220422102809_1",
// groupCode: "xqah",
// id: "20220422102809_102",
// label: "",
// policyFlag: "1",
// sort: 2,
// supportAdd: false,
// tableName: "ic_resi_user",
// }
// ]
// dataTemp.forEach((item) => {
// (async (id) => {
// // item.queryItemList = await this.getExportChildList(id)
// item.queryItemList = [];
// })(item.id);
// });
// this.exportList = [...dataTemp];
// this.$nextTick(() => {
// this.diyDialog = true;
// });
// console.log("getExportList----", this.exportList);
// } else {
// this.$message.error(msg);
// }
},
//
async handleExport () {

32
src/views/modules/base/diyInfo.vue

@ -7,11 +7,11 @@
<el-tabs v-model="leftActive" tab-position="left" class="left-h" @tab-click="handleTabsClick">
<el-tab-pane v-for="item in leftList" :key="item.id" :label="item.label" :name="item.id">
<div class="pd10 check-boxwr scroll-h">
<checkBox v-if="item.queryItemList.length > 0" :ref="'checkbox' + item.id"
<checkBox v-if="item.queryItemList.length > 0" :ref="'checkbox' + item.id"
:list="item.queryItemList" @change="handleChangeBox" />
</div>
</el-tab-pane>
</el-tabs>
</div>
<div class="right">
@ -21,7 +21,7 @@
</div>
<div class="h80 scroll-h">
<el-collapse v-model="activeCollapse" id="collapsWr">
<el-collapse-item v-for="item in rightList" :key="item.id"
<el-collapse-item v-for="item in rightList" :key="item.id"
:title="item.label" :name="item.id" class="col-h">
<dragItem :ref="'drag' + item.id" :list="item.queryItemList" :id="item.id"
@del="handleDelItem"
@ -68,9 +68,9 @@
<template slot-scope="scope">
<el-button v-if="scope.row.isSelf" type="text" size="small" class="div-table-button--delete"
@click="handleDeltemplate(scope.row.id)">删除</el-button>
<el-button type="text" size="small" class="div-table-button--detail"
<el-button type="text" size="small" class="div-table-button--detail"
@click="handlePreview(scope.row.id)">预览</el-button>
<el-button
<el-button
type="text"
size="small"
class="div-table-button--edit" @click="handleExportTemplate(scope.row.id)">导出</el-button>
@ -84,6 +84,8 @@
<div class="flex-div">
<div>模板名称</div>
<el-input v-model="form.name" maxlength="20" class="wd200 mr10" />
<div>自定义表头</div>
<el-input v-model="form.title" maxlength="20" class="wd200 mr10" />
<el-checkbox v-model="form.isSaveTemp">保存为常用模板</el-checkbox>
</div>
</div>
@ -115,10 +117,10 @@
:key="i"
align="center"
min-width="120">
</el-table-column>
</el-table-column>
</el-table>
</div>
</el-dialog>
@ -178,7 +180,7 @@ export default {
rightList: {
handler(val) {
if (val.length > 0) this.dragSort()
},
deep: true
},
@ -211,7 +213,7 @@ export default {
})
} else {
this.rightList.push(obj)
this.$nextTick(() => {
console.log('itemttt------', this.$refs[`drag${pid}`])
this.$refs[`drag${pid}`][0].dragSort()
@ -235,7 +237,7 @@ export default {
if (n == item.itemId) {
checkList.splice(i, 1)
this.$refs[`checkbox${item.itemGroupId}`][0].handleChange(checkList)
}
}
})
this.rightList.forEach((n, i) => {
if (n.id === item.itemGroupId) {
@ -281,7 +283,7 @@ export default {
this.$message({
type: 'info',
message: '已取消删除'
});
});
})
},
handlePreview(id) {
@ -337,13 +339,13 @@ export default {
console.log('res----dddd', res)
// this.download(res.data, title + '.xls')
// this.getTemplateList()
this.exportLoading = false
// if (res.data.code && res.data.code == 9999) {
// return this.$message.error(res.data.msg)
// }
this.formatData(res)
})
.catch(err => {
console.log('err', err)
@ -519,7 +521,7 @@ export default {
// max-height: calc(80vh - 220px);
// // overflow: auto;
// }
// }
// }
.mb10 {
@ -534,4 +536,4 @@ export default {
.wd200 {
width: 200px;
}
</style>
</style>

4
src/views/modules/base/resi copy.vue

@ -142,7 +142,7 @@
type="text"
size="small"
class="btn-color-look">查看</el-button> -->
<!-- <el-button @click="handleTransfer(scope.row)"
<!-- <el-button @click="handleTransfer(scope.row)"
type="text"
size="small"
class="div-table-button--detail">变动</el-button> -->
@ -1335,7 +1335,7 @@ export default {
});
},
async getExportList (type) {
const url = "/oper/customize//icformitemgroup/list";
const url = "/oper/customize/icformitemgroup/list";
let params = {
formCode: "resi_base_info",
};

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

@ -1,45 +1,9 @@
<template>
<div class="g-main">
<div class="m-search">
<!-- <el-collapse v-if="openSearch"
v-model="activeNames">
<el-collapse-item v-for="item in searchList"
:key="item.itemGroupId"
:name="item.itemGroupId">
<template slot="title">
<div class="collapse-title">{{ item.groupName }}</div>
</template>
<resi-search v-if="searchList.length > 0"
:ref="'resiSearch' + item.itemGroupId"
:form-list="item.queryItemList"
:column-name="defaultCategotyKey"
:show-grid="item.groupName == '基础信息'" />
</el-collapse-item>
</el-collapse> -->
<!-- <template v-else> -->
<!-- </template> -->
<!-- <el-row v-if="openSearch"
class="resi-search">
<el-col :span="24">
<el-button size="small"
class="diy-button--blue"
@click="handleSearchFrom">查询</el-button>
<el-button style="margin-left:10px"
size="small"
class="diy-button--gray"
@click="resetSearchForm">重置</el-button>
</el-col>
</el-row> -->
<!-- <div class="resi-down"
@click="handleOpenSearch">
<img v-if="openSearch"
src="../../../assets/img/arrow-up.png" />
<img v-else
src="../../../assets/img/arrow-down.png" />
</div> -->
<resi-search ref="myResiSearch" />
<section :class="showSercahStatus?'m-form-box-height-auto':'m-form-box-height'">
<resi-search ref="myResiSearch" />
</section>
<el-row class="resi-search">
<el-col :span="24">
<el-button
@ -48,20 +12,29 @@
@click="handleSearchFrom"
>智能查询</el-button
>
<el-button
style="margin-left: 10px"
size="small"
plain
class=" f-right5"
@click="resetSearchForm"
>重置</el-button>
<el-button
size="small"
type="primary"
@click="handleSearchFrom"
>查询</el-button
>
<!-- -->
<el-button
style="margin-left: 10px"
<el-button
type="text"
size="small"
plain
style="margin-left: 10px"
class=" f-right5"
@click="resetSearchForm"
>重置</el-button>
@click="showSercahStatus = !showSercahStatus"
>
<i :class="showSercahStatus?'el-icon-arrow-up':'el-icon-arrow-down'"></i>
{{showSercahStatus?'收起':'展开'}}
</el-button>
</el-col>
</el-row>
</div>
@ -87,7 +60,14 @@
plain
>导出</el-button
>
<el-button
v-if="btnAuths.ic_resi_export"
style="margin-left: 10px"
size="small"
@click=""
plain
>核对</el-button
>
<!-- <el-button v-if="btnAuths.ic_resi_import"
style="margin-left:10px"
class="diy-button--blue"
@ -495,6 +475,7 @@ export default {
data() {
return {
activeNames: [],
showSercahStatus:false,
diyDialog: false,
openSearch: false,
exportBtn: false,
@ -822,7 +803,7 @@ export default {
obj.agencyId = obj.agencyId.join(',')
} else {
obj.agencyId = "";
}
}
this.currentPage = val;
this.getTableData(obj);
},
@ -1175,6 +1156,7 @@ export default {
return
}
const _baseForm = JSON.parse(this.$refs.baseForm.submit_from())
console.log(_baseForm);
_baseForm.partyFlag = parseInt(_baseForm.partyFlag) //
_baseForm.subsistenceAllowanceFlag = parseInt(_baseForm.subsistenceAllowanceFlag) //
_baseForm.ensureHouseFlag = parseInt(_baseForm.ensureHouseFlag) //
@ -1234,6 +1216,7 @@ export default {
_baseForm.specialDto.specialCategoryCode = specialCategoryCode
}
}
console.log(_baseForm);
this.submitAdd(_baseForm);
},
handleDel(row) {
@ -1273,6 +1256,7 @@ export default {
this.dialogVisible = false;
},
async submitAdd(arr) {
console.log(arr);
this.btnLoading = true;
await this.$http
.post(arr.resiId ? "actual/base/residentBaseInfo/update" : "/actual/base/residentBaseInfo/save", arr)
@ -1492,7 +1476,7 @@ export default {
});
},
async getExportList(type) {
const url = "/oper/customize//icformitemgroup/list";
const url = "/oper/customize/icformitemgroup/list";
let params = {
formCode: "resi_base_info",
};

2
src/views/modules/customer/feedback/DetailForm.vue

@ -520,7 +520,7 @@ export default {
}
</script>
<style scope>
<style scoped>
.div_total {
margin: 0 10px;
}

879
src/views/modules/home/index.vue

@ -1,215 +1,282 @@
<template>
<div>
<div class="g-row">
<div class="g-row-left">
<div class="m-box m-search">
<div class="wrap">
<div class="title">
<span>社区查询</span>
</div>
<div class="tabs">
<div
:class="{ 'z-on': searchData.type == 'jumin' }"
@click="searchData.type = 'jumin'"
>
查居民
</div>
<div
:class="{ 'z-on': searchData.type == 'fangwu' }"
@click="searchData.type = 'fangwu'"
>
查房屋
</div>
</div>
<div class="search">
<div class="search-input">
<div class="input">
<input
type="text"
:placeholder="typePlaceholder[searchData.type]"
v-model="searchData.searchKey"
@keyup.enter="handleClickSearchBtn"
/>
<div
class="close-btn"
v-if="searchData.searchKey != ''"
@click="searchData.searchKey = ''"
>
<img src="@/assets/img/shequ/close.png" />
</div>
</div>
<div class="btn" @click="handleClickSearchBtn">查一下</div>
</div>
<div class="btn2" @click="handleClickSearchBtn">
<img src="@/assets/images/index/i-search.png" />
智能搜索
</div>
</div>
</div>
</div>
<div class="m-box m-pan">
<div class="wrap">
<div class="header">
<img src="@/assets/images/index/title-icon-sqzl.png" />
<span>社区总览</span>
</div>
<div class="cnt">
<div class="cnt-left">
<div class="subtitle">
<img src="@/assets/images/index/i-sqjj.png" />
<span>社区简介</span>
</div>
<p>
{{ pandectData.deptName }}<span v-if="pandectData.gridCount"
>划分为{{ pandectData.underCount }}{{
pandectData.underName
}}</span
>现有居民{{ pandectData.homeCount }}{{
pandectData.resiCount
}}其中常住人口{{
pandectData.permanentResiCount
}}流动人口{{
pandectData.floatingResiCount
}}各类群体分布如下
</p>
<div class="subtitle">
<img src="@/assets/images/index/i-fxjg.png" />
<span>分析结果</span>
</div>
<p class="hint" v-if="resiCategory.list.length > 0">
<i>*</i> 根据数据分析结果建议重点关注
<b
>{{ resiCategory.list[0].name }}{{
resiCategory.list[1].name
}}{{ resiCategory.list[2].name }}</b
>
三类群体开展相关的社区服务和活动
</p>
</div>
<div class="cnt-right">
<div class="list">
<div
class="item"
@click="handleClickCategory(item)"
:key="item.code"
v-for="(item, index) in resiCategory.list"
>
<div>{{ ("0" + (index + 1)).substr(-2) }}.</div>
<div class="item-name">{{ item.name }}</div>
<div class="item-div"></div>
<div class="item-count">{{ item.count }}</div>
<div class="item-progress">
<b :style="{ width: item.per + '%' }"></b>
</div>
<div class="item-per">{{ item.per }} %</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="g-row-right">
<div class="m-box m-tx">
<div class="wrap">
<div class="header">
<img src="@/assets/images/index/title-icon-zntx.png" />
<span>智能提醒</span>
</div>
<div class="more" @click="toNoticePage">更多></div>
<div class="cnt">
<div
@click="handleClickNotice(item)"
class="item"
:key="'notice' + item.targetId + index"
v-for="(item, index) in noticeData"
>
<div class="item-date">{{ item.createdTime }}</div>
<div class="item-title">
{{ item.content }}
</div>
</div>
</div>
</div>
</div>
<div class="m-box m-tb">
<div class="wrap">
<div class="header">
<img src="@/assets/images/index/title-icon-zntb.png" />
<span>智能填报</span>
</div>
</div>
<div class="more">更多></div>
<div class="cnt">
<div class="item">
<img class="item-tag" src="@/assets/images/index/i-zntb.png" />
<div class="item-name">80-90周岁高龄老人生活补助申请表</div>
<div class="item-btns">
<div class="item-btn">
<img src="@/assets/images/index/i-tx.png" />
<span>填写</span>
</div>
<div class="item-btn">
<img src="@/assets/images/index/i-xz.png" />
<span>下载</span>
</div>
</div>
</div>
<div class="item">
<img class="item-tag" src="@/assets/images/index/i-zntb.png" />
<div class="item-name">80-90周岁高龄老人生活补助申请表</div>
<div class="item-btns">
<div class="item-btn">
<img src="@/assets/images/index/i-tx.png" />
<span>填写</span>
</div>
<div class="item-btn">
<img src="@/assets/images/index/i-xz.png" />
<span>下载</span>
</div>
</div>
</div>
<div class="item">
<img class="item-tag" src="@/assets/images/index/i-zntb.png" />
<div class="item-name">80-90周岁高龄老人生活补助申请表</div>
<div class="item-btns">
<div class="item-btn">
<img src="@/assets/images/index/i-tx.png" />
<span>填写</span>
</div>
<div class="item-btn">
<img src="@/assets/images/index/i-xz.png" />
<span>下载</span>
</div>
</div>
</div>
<div class="item">
<img class="item-tag" src="@/assets/images/index/i-zntb.png" />
<div class="item-name">80-90周岁高龄老人生活补助申请表</div>
<div class="item-btns">
<div class="item-btn">
<img src="@/assets/images/index/i-tx.png" />
<span>填写</span>
</div>
<div class="item-btn">
<img src="@/assets/images/index/i-xz.png" />
<span>下载</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<fastcall ref="fastcall" />
</div>
<div>
<div class="g-row">
<div class="g-row-left">
<div class="m-box m-search">
<div class="wrap">
<div class="title">
<span>社区查询</span>
</div>
<div class="tabs">
<div
:class="{ 'z-on': searchData.type == 'jumin' }"
@click="searchData.type = 'jumin'"
>
查居民
</div>
<div
:class="{ 'z-on': searchData.type == 'fangwu' }"
@click="searchData.type = 'fangwu'"
>
查房屋
</div>
</div>
<div class="search">
<div class="search-input">
<div class="input">
<input
type="text"
:placeholder="
typePlaceholder[searchData.type]
"
v-model="searchData.searchKey"
@keyup.enter="handleClickSearchBtn"
/>
<div
class="close-btn"
v-if="searchData.searchKey != ''"
@click="searchData.searchKey = ''"
>
<img
src="@/assets/img/shequ/close.png"
/>
</div>
</div>
<div class="btn" @click="handleClickSearchBtn">
查一下
</div>
</div>
<div class="btn2" @click="handleClickSearchBtn">
<img src="@/assets/images/index/i-search.png" />
智能搜索
</div>
</div>
</div>
</div>
<div class="m-box m-pan">
<div class="wrap">
<div class="header">
<img
src="@/assets/images/index/title-icon-sqzl.png"
/>
<span>社区总览</span>
</div>
<div class="cnt">
<div class="cnt-left">
<div class="subtitle">
<img
src="@/assets/images/index/i-sqjj.png"
/>
<span>社区简介</span>
</div>
<p>
{{ pandectData.deptName }}<span
v-if="pandectData.gridCount"
>划分为{{ pandectData.underCount }}{{
pandectData.underName
}}</span
>现有居民{{ pandectData.homeCount }}{{
pandectData.resiCount
}}其中常住人口{{
pandectData.permanentResiCount
}}流动人口{{
pandectData.floatingResiCount
}}各类群体分布如下
</p>
<div class="subtitle">
<img
src="@/assets/images/index/i-fxjg.png"
/>
<span>分析结果</span>
</div>
<p
class="hint"
v-if="resiCategory.list.length > 0"
>
<i>*</i> 根据数据分析结果建议重点关注
<b
>{{ resiCategory.list[0].name }}{{
resiCategory.list[1].name
}}{{ resiCategory.list[2].name }}</b
>
三类群体开展相关的社区服务和活动
</p>
</div>
<div class="cnt-right">
<div class="list">
<div
class="item"
@click="handleClickCategory(item)"
:key="item.code"
v-for="(
item, index
) in resiCategory.list"
>
<div>
{{
("0" + (index + 1)).substr(-2)
}}.
</div>
<div class="item-name">
{{ item.name }}
</div>
<div class="item-div"></div>
<div class="item-count">
{{ item.count }}
</div>
<div class="item-progress">
<b
:style="{
width: item.per + '%',
}"
></b>
</div>
<div class="item-per">
{{ item.per }} %
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="g-row-right">
<div class="m-box m-tx">
<div class="wrap">
<div class="header">
<img
src="@/assets/images/index/title-icon-zntx.png"
/>
<span>智能提醒</span>
</div>
<div class="more" @click="toNoticePage">更多></div>
<div class="cnt" v-if="noticeData.length > 0">
<div
@click="handleClickNotice(item)"
class="item"
:key="'notice' + item.targetId + index"
v-for="(item, index) in noticeData"
>
<div class="item-date">
{{ item.createdTime }}
</div>
<div class="item-title">
{{ item.content }}
</div>
</div>
</div>
<div class="cnt" v-else>
<div class="empty">
<img
src="~@/assets/images/shuju/renfang/index/empty.png"
/>
<span>暂无提醒</span>
</div>
</div>
</div>
</div>
<div class="m-box m-tb">
<div class="wrap">
<div class="header">
<img
src="@/assets/images/index/title-icon-zntb.png"
/>
<span>智能填报</span>
</div>
</div>
<div class="more">更多></div>
<div class="cnt">
<div class="item">
<img
class="item-tag"
src="@/assets/images/index/i-zntb.png"
/>
<div class="item-name">
80-90周岁高龄老人生活补助申请表
</div>
<div class="item-btns">
<div class="item-btn">
<img src="@/assets/images/index/i-tx.png" />
<span>填写</span>
</div>
<div class="item-btn">
<img src="@/assets/images/index/i-xz.png" />
<span>下载</span>
</div>
</div>
</div>
<div class="item">
<img
class="item-tag"
src="@/assets/images/index/i-zntb.png"
/>
<div class="item-name">
80-90周岁高龄老人生活补助申请表
</div>
<div class="item-btns">
<div class="item-btn">
<img src="@/assets/images/index/i-tx.png" />
<span>填写</span>
</div>
<div class="item-btn">
<img src="@/assets/images/index/i-xz.png" />
<span>下载</span>
</div>
</div>
</div>
<div class="item">
<img
class="item-tag"
src="@/assets/images/index/i-zntb.png"
/>
<div class="item-name">
80-90周岁高龄老人生活补助申请表
</div>
<div class="item-btns">
<div class="item-btn">
<img src="@/assets/images/index/i-tx.png" />
<span>填写</span>
</div>
<div class="item-btn">
<img src="@/assets/images/index/i-xz.png" />
<span>下载</span>
</div>
</div>
</div>
<div class="item">
<img
class="item-tag"
src="@/assets/images/index/i-zntb.png"
/>
<div class="item-name">
80-90周岁高龄老人生活补助申请表
</div>
<div class="item-btns">
<div class="item-btn">
<img src="@/assets/images/index/i-tx.png" />
<span>填写</span>
</div>
<div class="item-btn">
<img src="@/assets/images/index/i-xz.png" />
<span>下载</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<fastcall ref="fastcall" />
</div>
</template>
<script>
@ -220,199 +287,203 @@ import nextTick from "dai-js/tools/nextTick";
import fastcall from "@/views/modules/cpts/fastcall";
export default {
components: { fastcall },
data() {
return {
searchStatus: "ini", //ing over
searchData: {
type: "jumin",
searchKey: "",
},
typePlaceholder: {
jumin: "请输入姓名或电话或身份证号",
fangwu: "请输入“小区名称,楼号”,如:亿联小区,1号楼",
xuqiu: "请输入需求人或需求内容或服务方",
},
resiCategory: {
loading: false,
total: "",
list: [],
},
orgData: {
id: "",
level: "agency",
},
pandectData: {
communityName: "",
streetName: "",
gridCount: "",
resiCount: "",
homeCount: "",
floatingResiCount: "",
permanentResiCount: "",
},
noticeData: [],
};
},
computed: {
maxTableHeight() {
// return this.clientHeight - 450;
return 420;
},
...mapGetters(["clientHeight"]),
},
watch: {
"searchData.searchKey": function (val) {
if (val == "") {
this.searchStatus = "ini";
}
},
},
mounted() {
this.getApiData();
console.log(
"dynamicMenuRoutes----------------------------",
this.$store.state.sidebarMenuList
);
},
methods: {
handleClickCategory(item) {
this.$store.commit('setCategoryCode',item.code)
this.$router.push({
path: "/main/base-resi"
});
},
handleClickNotice(item) {
const { msgType, targetId } = item;
if (msgType == "community_house") {
this.$refs.fastcall.showHouseInfo(targetId);
} else if (msgType == "resident_base_info") {
this.$refs.fastcall.showResiInfo(targetId);
}
},
toNoticePage() {
this.$router.push({
path: "/main/home-notice",
});
},
toSearchPage(type, searchKey) {
this.$router.push({
path: "/main/shequ-chaxun",
query: {
type,
searchKey,
},
});
},
handleClickSearchBtn() {
const {
searchData: { type, searchKey },
} = this;
if (!searchKey) return this.$message.error("请输入搜索条件");
this.toSearchPage(type, searchKey);
},
async getApiData() {
await this.getOrgData();
this.getWarningList();
this.getPandectData();
this.getNoticeData();
},
//
async getOrgData() {
const url = "/gov/org/agency/maporg";
let params = {
orgId: "",
level: "",
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.orgData = data;
} else {
this.$message.error(msg);
}
},
//
async getPandectData() {
const url = "/actual/base/residentHouseMerge/communityOverview";
let params = {
// orgId: "",
// level: "",
};
const { data, code, msg } = await requestGet(url, params);
if (code === 0) {
if (data) {
this.pandectData = data;
}
} else {
this.$message.error(msg);
}
},
//
async getNoticeData() {
const url = "/message/intelligentMessage/list";
let params = {
last: "6",
};
const { data, code, msg } = await requestGet(url, params);
if (code === 0) {
if (data) {
this.noticeData = data;
}
} else {
this.$message.error(msg);
}
},
//
async getWarningList() {
const url = "/actual/base/resiCategory/categoryCountList";
let params = {
// id: this.orgData.id,
// level: "agency",
};
this.resiCategory.loading = true;
const { data, code, msg } = await requestGet(url, params);
this.resiCategory.loading = false;
if (code === 0) {
if (data) {
this.resiCategory.count = data.resiCount;
this.resiCategory.list = data.categoryList.map((item) => {
return {
code: item.categoryName,
name: resiCategoryMap[item.categoryName] || "",
count: item.categoryCount,
per: parseInt((100 * item.categoryCount) / data.resiCount),
const: "const",
};
});
}
} else {
this.$message.error(msg);
}
},
},
components: { fastcall },
data() {
return {
searchStatus: "ini", //ing over
searchData: {
type: "jumin",
searchKey: "",
},
typePlaceholder: {
jumin: "请输入姓名或电话或身份证号",
fangwu: "请输入“小区名称,楼号”,如:亿联小区,1号楼",
xuqiu: "请输入需求人或需求内容或服务方",
},
resiCategory: {
loading: false,
total: "",
list: [],
},
orgData: {
id: "",
level: "agency",
},
pandectData: {
communityName: "",
streetName: "",
gridCount: "",
resiCount: "",
homeCount: "",
floatingResiCount: "",
permanentResiCount: "",
},
noticeData: [],
};
},
computed: {
maxTableHeight() {
// return this.clientHeight - 450;
return 420;
},
...mapGetters(["clientHeight"]),
},
watch: {
"searchData.searchKey": function (val) {
if (val == "") {
this.searchStatus = "ini";
}
},
},
mounted() {
this.getApiData();
console.log(
"dynamicMenuRoutes----------------------------",
this.$store.state.sidebarMenuList
);
},
methods: {
handleClickCategory(item) {
this.$router.push({
path: "/main/base-resi",
query: {
category: item.code,
},
});
},
handleClickNotice(item) {
const { msgType, targetId } = item;
if (msgType == "community_house") {
this.$refs.fastcall.showHouseInfo(targetId);
} else if (msgType == "resident_base_info") {
this.$refs.fastcall.showResiInfo(targetId);
}
},
toNoticePage() {
this.$router.push({
path: "/main/home-notice",
});
},
toSearchPage(type, searchKey) {
this.$router.push({
path: "/main/shequ-chaxun",
query: {
type,
searchKey,
},
});
},
handleClickSearchBtn() {
const {
searchData: { type, searchKey },
} = this;
if (!searchKey) return this.$message.error("请输入搜索条件");
this.toSearchPage(type, searchKey);
},
async getApiData() {
await this.getOrgData();
this.getWarningList();
this.getPandectData();
this.getNoticeData();
},
//
async getOrgData() {
const url = "/gov/org/agency/maporg";
let params = {
orgId: "",
level: "",
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.orgData = data;
} else {
this.$message.error(msg);
}
},
//
async getPandectData() {
const url = "/actual/base/residentHouseMerge/communityOverview";
let params = {
// orgId: "",
// level: "",
};
const { data, code, msg } = await requestGet(url, params);
if (code === 0) {
if (data) {
this.pandectData = data;
}
} else {
this.$message.error(msg);
}
},
//
async getNoticeData() {
const url = "/message/intelligentMessage/list";
let params = {
last: "6",
};
const { data, code, msg } = await requestGet(url, params);
if (code === 0) {
if (data) {
this.noticeData = data;
}
} else {
this.$message.error(msg);
}
},
//
async getWarningList() {
const url = "/actual/base/resiCategory/categoryCountList";
let params = {
// id: this.orgData.id,
// level: "agency",
};
this.resiCategory.loading = true;
const { data, code, msg } = await requestGet(url, params);
this.resiCategory.loading = false;
if (code === 0) {
if (data) {
this.resiCategory.count = data.resiCount;
this.resiCategory.list = data.categoryList.map((item) => {
return {
code: item.categoryName,
name: resiCategoryMap[item.categoryName] || "",
count: item.categoryCount,
per: parseInt(
(100 * item.categoryCount) / data.resiCount
),
const: "const",
};
});
}
} else {
this.$message.error(msg);
}
},
},
};
</script>

420
src/views/modules/home/notice.vue

@ -1,50 +1,59 @@
<template>
<div>
<div class="m-tx">
<div class="wrap">
<div class="tabs">
<el-tabs v-model="type" @tab-click="handleClickTab">
<el-tab-pane label="全部" name="all"></el-tab-pane>
<el-tab-pane label="已读" name="readed"></el-tab-pane>
<el-tab-pane label="未读" name="unreaded"></el-tab-pane>
</el-tabs>
</div>
<!-- <div class="btn-clear">清除未读</div> -->
<div class="cnt">
<div
@click="handleClickNotice(item, index)"
:class="{ 'z-readed': item.readFlag == 1 }"
class="item"
:key="'notice' + item.targetId + index"
v-for="(item, index) in noticeData"
>
<img
class="item-tag"
src="@/assets/images/index/title-icon-zntb.png"
/>
<div class="item-title">
{{ item.content }}
</div>
<div class="item-date">{{ item.createdTime }}</div>
</div>
</div>
<div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pageNo"
:page-sizes="[20, 50, 100, 200]"
:page-size="parseInt(pageSize)"
layout="sizes, prev, pager, next, total"
:total="total"
>
</el-pagination>
</div>
</div>
</div>
<fastcall ref="fastcall" />
</div>
<div>
<div class="m-tx">
<div class="wrap">
<div class="tabs">
<el-tabs v-model="type" @tab-click="handleClickTab">
<el-tab-pane label="全部" name="all"></el-tab-pane>
<el-tab-pane label="已读" name="readed"></el-tab-pane>
<el-tab-pane label="未读" name="unreaded"></el-tab-pane>
</el-tabs>
</div>
<!-- <div class="btn-clear">清除未读</div> -->
<div class="cnt" v-if="noticeData.length > 0">
<div
@click="handleClickNotice(item, index)"
:class="{ 'z-readed': item.readFlag == 1 }"
class="item"
:key="'notice' + item.targetId + index"
v-for="(item, index) in noticeData"
>
<img
class="item-tag"
src="@/assets/images/index/title-icon-zntb.png"
/>
<div class="item-title">
{{ item.content }}
</div>
<div class="item-date">{{ item.createdTime }}</div>
</div>
</div>
<div class="cnt" v-else>
<div class="empty">
<img
src="~@/assets/images/shuju/renfang/index/empty.png"
/>
<span>暂无提醒</span>
</div>
</div>
<div>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pageNo"
:page-sizes="[20, 50, 100, 200]"
:page-size="parseInt(pageSize)"
layout="sizes, prev, pager, next, total"
:total="total"
>
</el-pagination>
</div>
</div>
</div>
<fastcall ref="fastcall" />
</div>
</template>
<script>
@ -53,88 +62,90 @@ import nextTick from "dai-js/tools/nextTick";
import fastcall from "@/views/modules/cpts/fastcall";
export default {
components: { fastcall },
data() {
return {
type: "all",
pageNo: 1,
pageSize: window.localStorage.getItem("pageSize") || 20,
total: 1,
noticeData: [],
};
},
computed: {},
watch: {},
mounted() {
this.getList();
},
methods: {
handleClickNotice(item, index) {
const { msgType, targetId } = item;
if (msgType == "community_house") {
this.$refs.fastcall.showHouseInfo(targetId);
} else if (msgType == "resident_base_info") {
this.$refs.fastcall.showResiInfo(targetId);
}
this.read(item, index);
},
async read(item) {
if (item.readFlag == 1) return;
const url = "/message/intelligentMessage/msg/clear";
let params = {
id: item.id,
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.noticeData[index].readFlag = 1;
console.log("消息已读");
} else {
this.$message.error(msg);
}
},
handleClickTab(type) {
console.log(type);
this.getList();
},
handleSizeChange(val) {
this.pageSize = val;
localStorage.setItem("pageSize", val);
this.getList();
},
handleCurrentChange(val) {
this.pageNo = val;
this.getList();
},
//
async getList() {
const url = "/message/intelligentMessage/page";
let params = {
page: this.pageNo,
limit: this.pageSize,
};
const { type } = this;
if (type == "readed") {
params.readFlag = 1;
} else if (type == "unreaded") {
params.readFlag = 0;
}
const { data, code, msg } = await requestGet(url, params);
if (code === 0) {
this.total = data.total;
this.noticeData = data.list;
} else {
this.$message.error(msg);
}
},
},
components: { fastcall },
data() {
return {
type: "all",
pageNo: 1,
pageSize: window.localStorage.getItem("pageSize") || 20,
total: 1,
noticeData: [],
};
},
computed: {},
watch: {},
mounted() {
this.getList();
},
methods: {
handleClickNotice(item, index) {
const { msgType, targetId } = item;
if (msgType == "community_house") {
this.$refs.fastcall.showHouseInfo(targetId);
} else if (msgType == "resident_base_info") {
this.$refs.fastcall.showResiInfo(targetId);
}
this.read(item, index);
},
async read(item) {
if (item.readFlag == 1) return;
const url = "/message/intelligentMessage/msg/clear";
let params = {
id: item.id,
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
const { noticeData } = this;
noticeData[index].readFlag = 1;
this.noticeData = noticeData;
console.log("消息已读");
} else {
this.$message.error(msg);
}
},
handleClickTab(type) {
console.log(type);
this.getList();
},
handleSizeChange(val) {
this.pageSize = val;
localStorage.setItem("pageSize", val);
this.getList();
},
handleCurrentChange(val) {
this.pageNo = val;
this.getList();
},
//
async getList() {
const url = "/message/intelligentMessage/page";
let params = {
page: this.pageNo,
limit: this.pageSize,
};
const { type } = this;
if (type == "readed") {
params.readFlag = 1;
} else if (type == "unreaded") {
params.readFlag = 0;
}
const { data, code, msg } = await requestGet(url, params);
if (code === 0) {
this.total = data.total;
this.noticeData = data.list;
} else {
this.$message.error(msg);
}
},
},
};
</script>
@ -142,82 +153,93 @@ export default {
@import "~@/assets/scss/c/function.scss";
.m-tx {
position: relative;
margin: 10px 6px;
padding: 12px 20px;
background: #ffffff;
box-shadow: 0px 6px 16px 0px rgba(0, 0, 0, 0.08),
0px 3px 6px -4px rgba(0, 0, 0, 0.12);
border-radius: 2px;
.cnt {
box-sizing: border-box;
border-radius: 2px;
overflow: hidden;
padding: 0 12px;
.z-readed {
opacity: 0.5;
}
.item {
display: flex;
align-items: center;
padding: 16px 0 12px;
border-bottom: 1px dashed #f0f5fa;
&:last-child {
border-bottom: none;
}
.item-tag {
display: block;
margin-right: 15px;
width: 24px;
height: 24px;
}
.item-title {
// @include toe;
width: 60%;
margin-right: 100px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(0, 0, 0, 0.85);
line-height: 22px;
}
.item-date {
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(0, 0, 0, 0.45);
line-height: 17px;
}
}
}
.btn-clear {
position: absolute;
top: 14px;
right: 15px;
width: 32px;
height: 12px;
width: 75px;
height: 25px;
background: linear-gradient(0deg, #db3b3b 1%, #ff8080 100%);
border-radius: 3px;
font-size: 14px;
font-weight: 500;
color: #ffffff;
line-height: 25px;
text-align: center;
}
position: relative;
margin: 10px 6px;
padding: 12px 20px;
background: #ffffff;
box-shadow: 0px 6px 16px 0px rgba(0, 0, 0, 0.08),
0px 3px 6px -4px rgba(0, 0, 0, 0.12);
border-radius: 2px;
.cnt {
box-sizing: border-box;
border-radius: 2px;
overflow: hidden;
padding: 0 12px;
.empty {
margin: 100px 0;
text-align: center;
color: #999;
img {
display: block;
width: 120px;
margin: 20px auto;
}
}
.z-readed {
opacity: 0.5;
}
.item {
display: flex;
align-items: center;
padding: 16px 0 12px;
border-bottom: 1px dashed #f0f5fa;
&:last-child {
border-bottom: none;
}
.item-tag {
display: block;
margin-right: 15px;
width: 24px;
height: 24px;
}
.item-title {
// @include toe;
width: 60%;
margin-right: 100px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(0, 0, 0, 0.85);
line-height: 22px;
}
.item-date {
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: rgba(0, 0, 0, 0.45);
line-height: 17px;
}
}
}
.btn-clear {
position: absolute;
top: 14px;
right: 15px;
width: 32px;
height: 12px;
width: 75px;
height: 25px;
background: linear-gradient(0deg, #db3b3b 1%, #ff8080 100%);
border-radius: 3px;
font-size: 14px;
font-weight: 500;
color: #ffffff;
line-height: 25px;
text-align: center;
}
}
/deep/ .el-tabs__nav-wrap::after {
height: 1px;
background-color: #f0f5fa;
height: 1px;
background-color: #f0f5fa;
}
/deep/ .el-pagination__total {
// float: left;
// float: left;
}
</style>

2
src/views/modules/productConfig/autoTest/autoTestList copy.vue

@ -897,7 +897,7 @@ export default {
}
</script>
<style scope>
<style scoped>
.div_btn {
z-index: 10;
position: absolute;

2
src/views/modules/productConfig/subscribe/TempDetail.vue

@ -225,7 +225,7 @@ export default {
}
</script>
<style scope>
<style scoped>
.el-row {
margin-bottom: 0 20px 20px 20px;
}

2
src/views/modules/productConfig/subscribe/TempEdit.vue

@ -316,7 +316,7 @@ export default {
}
</script>
<style scope>
<style scoped>
.el-row {
margin-bottom: 20px;
}

Loading…
Cancel
Save