Browse Source

Merge branch 'test' into dev-chaxun

shibei_master
jiangyy 4 years ago
parent
commit
2533e6a201
  1. 12
      src/assets/scss/modules/visual/basicInfoMain.scss
  2. 8
      src/views/components/scoreRecord.vue
  3. 2
      src/views/modules/base/community/buildTable.vue
  4. 2
      src/views/modules/base/community/communityTable.vue
  5. 2
      src/views/modules/base/community/roomTable.vue
  6. 3
      src/views/modules/communityService/shzz/index.vue
  7. 3
      src/views/modules/communityService/sqzzz/index.vue
  8. 75
      src/views/modules/visual/basicinfo/basicInfoCommunity.vue
  9. 22
      src/views/modules/visual/basicinfo/basicInfoMain.vue
  10. 204
      src/views/modules/visual/basicinfo/cpts/topic-info.vue
  11. 3
      src/views/modules/visual/communityGovern/cpt/project-info.vue
  12. 179
      src/views/modules/visual/communityGovern/resiPieOption copy.js
  13. 2
      src/views/modules/visual/communityGovern/resiPieOption.js
  14. 523
      src/views/modules/visual/communityGovern/resibuzz copy.vue
  15. 70
      src/views/modules/visual/heart/index.vue

12
src/assets/scss/modules/visual/basicInfoMain.scss

@ -246,9 +246,9 @@
justify-content: flex-start; justify-content: flex-start;
margin: 0 21px 0 21px; margin: 0 21px 0 21px;
.item:hover { // .item:hover {
cursor: pointer; // cursor: pointer;
} // }
.item_sel { .item_sel {
box-shadow: 0 0 10px inset #1a5afd; box-shadow: 0 0 10px inset #1a5afd;
} }
@ -267,13 +267,13 @@
// margin-left: 0; // margin-left: 0;
// } // }
> span { .housename {
margin-top: 70px;
font-size: 24px; font-size: 24px;
font-family: PingFang SC; font-family: PingFang SC;
font-weight: 500; font-weight: 500;
color: #ffffff; color: #ffffff;
line-height: 18px; // line-height: 180px;
line-height: 190px;
} }
.icon_party { .icon_party {

8
src/views/components/scoreRecord.vue

@ -192,11 +192,11 @@ export default {
// //
initDate () { initDate () {
let yesterday = new Date((new Date).getTime() - 24 * 60 * 60 * 1000) let today = new Date((new Date).getTime())
let year = yesterday.getFullYear() let year = today.getFullYear()
let month = yesterday.getMonth() + 1 // let month = today.getMonth() + 1 //
let day = yesterday.getDate() // let day = today.getDate() //
let days = new Date(year, month, 0); let days = new Date(year, month, 0);
days = days.getDate(); // days = days.getDate(); //

2
src/views/modules/base/community/buildTable.vue

@ -156,7 +156,7 @@ export default {
return { return {
loading: false, loading: false,
total: 0, total: 0,
pageSize: 10, pageSize: 20,
pageNo: 0, pageNo: 0,
tableLoading: true, tableLoading: true,

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

@ -157,7 +157,7 @@ export default {
return { return {
loading: false, loading: false,
total: 0, total: 0,
pageSize: 10, pageSize: 20,
pageNo: 0, pageNo: 0,
tableLoading: true, tableLoading: true,

2
src/views/modules/base/community/roomTable.vue

@ -167,7 +167,7 @@ export default {
return { return {
loading: false, loading: false,
total: 0, total: 0,
pageSize: 10, pageSize: 20,
pageNo: 0, pageNo: 0,
tableLoading: true, tableLoading: true,

3
src/views/modules/communityService/shzz/index.vue

@ -128,6 +128,9 @@
label="负责人电话"> </el-table-column> label="负责人电话"> </el-table-column>
<el-table-column prop="serviceTime" <el-table-column prop="serviceTime"
label="服务时间"> </el-table-column> label="服务时间"> </el-table-column>
<el-table-column prop="score"
width="80"
label="积分"> </el-table-column>
<el-table-column fixed="right" <el-table-column fixed="right"
label="操作" label="操作"
align="center" align="center"

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

@ -91,6 +91,9 @@
</el-table-column> </el-table-column>
<el-table-column prop="serviceItem" <el-table-column prop="serviceItem"
label="服务事项"> </el-table-column> label="服务事项"> </el-table-column>
<el-table-column prop="score"
width="80"
label="积分"> </el-table-column>
<el-table-column prop="principalName" <el-table-column prop="principalName"
label="负责人"> </el-table-column> label="负责人"> </el-table-column>
<el-table-column prop="principalPhone" <el-table-column prop="principalPhone"

75
src/views/modules/visual/basicinfo/basicInfoCommunity.vue

@ -22,14 +22,18 @@
</div> </div>
<div class="div_room_bar"> <div class="div_room_bar">
<el-scrollbar style="height:100%"> <el-scrollbar style="height:100%">
<div v-if="roomLoaded" <div class="info_loading"
v-if="roomLoaded">
<screen-loading>加载中</screen-loading>
</div>
<div v-if="!roomLoaded"
class="div_room"> class="div_room">
<div v-for="(item,index) in roomArray" <div v-for="(item,index) in roomArray"
:key="index" :key="index"
:class="['item',{'item_sel':selHouseIndex==index}]" :class="['item',{'item_sel':selHouseIndex==index}]"
@click="handleClickRoom(index)"> @click="handleClickRoom(index)">
<span>{{item.houseName}}</span> <div class="housename">{{item.houseName}}</div>
<div class="icon_party"> <div class="icon_party">
<img :src="item.partyUrl" <img :src="item.partyUrl"
@ -80,6 +84,7 @@
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import { Loading } from 'element-ui'; //Loading import { Loading } from 'element-ui'; //Loading
import { requestPost } from "@/js/dai/request"; import { requestPost } from "@/js/dai/request";
import ScreenLoading from "@/views/modules/visual/cpts/loading";
let loading;// let loading;//
@ -94,7 +99,7 @@ export default {
selBuildingId: '', selBuildingId: '',
selBuildingName: '', selBuildingName: '',
roomLoaded: false, roomLoaded: true,
roomArray: [], roomArray: [],
selHouseId: '', selHouseId: '',
selHouseName: '', selHouseName: '',
@ -121,7 +126,7 @@ export default {
methods: { methods: {
//id //id
async initData (neighborHoodId, neighborHoodName) { async initData (neighborHoodId, neighborHoodName) {
this.roomLoaded = false
this.neighborHoodId = neighborHoodId this.neighborHoodId = neighborHoodId
this.neighborHoodName = neighborHoodName this.neighborHoodName = neighborHoodName
// //
@ -129,7 +134,6 @@ export default {
if (this.selBuildingId) { if (this.selBuildingId) {
await this.loadRoom() await this.loadRoom()
this.roomLoaded = true
} }
@ -142,7 +146,7 @@ export default {
this.selBuildingName = this.buildingArray[index].buildingName this.selBuildingName = this.buildingArray[index].buildingName
await this.loadRoom() await this.loadRoom()
this.roomLoaded = true
this.$emit('refreshInfoList', this.selBuildingId, 'building') this.$emit('refreshInfoList', this.selBuildingId, 'building')
}, },
@ -152,12 +156,16 @@ export default {
this.selHouseId = this.roomArray[index].houseId this.selHouseId = this.roomArray[index].houseId
this.selHouseName = this.roomArray[index].houseName this.selHouseName = this.roomArray[index].houseName
// this.$emit('refreshInfoList', this.selHouseId, 'room') // this.$emit('refreshInfoList', this.selHouseId, 'room')-
}, },
// //
async handleShowAllUser (selIndex) { async handleShowAllUser (selIndex) {
// this.startLoading() // this.startLoading()
await this.loadUser(this.roomArray[selIndex].houseId, selIndex)
if ((selIndex === 0 || selIndex) && !this.roomArray[selIndex].showAllUser) {
await this.loadUser(this.roomArray[selIndex].houseId, selIndex)
}
this.roomArray.forEach((element, index) => { this.roomArray.forEach((element, index) => {
let obj = JSON.parse(JSON.stringify(element)) let obj = JSON.parse(JSON.stringify(element))
@ -208,6 +216,7 @@ export default {
this.selBuildingId = this.buildingArray[0].buildingId this.selBuildingId = this.buildingArray[0].buildingId
this.selBuildingName = this.buildingArray[0].buildingName this.selBuildingName = this.buildingArray[0].buildingName
} else { } else {
this.selBuildingId = '' this.selBuildingId = ''
this.selBuildingName = '' this.selBuildingName = ''
@ -221,6 +230,7 @@ export default {
// //
async loadRoom () { async loadRoom () {
this.roomLoaded = true
const url = "/gov/org/ichouse/houselist" const url = "/gov/org/ichouse/houselist"
// const url = "http://yapi.elinkservice.cn/mock/245/gov/org/ichouse/houselist" // const url = "http://yapi.elinkservice.cn/mock/245/gov/org/ichouse/houselist"
let params = { let params = {
@ -228,41 +238,43 @@ export default {
} }
const { data, code, msg } = await requestPost(url, params) const { data, code, msg } = await requestPost(url, params)
this.roomLoaded = false
if (code === 0) { if (code === 0) {
this.roomArray = data
if (this.roomArray.length > 0) { if (data.length > 0) {
this.roomArray.forEach(roomItem => { data.forEach((roomItem, index) => {
let iconArrayShow = JSON.parse(JSON.stringify(roomItem.categoryList)) roomItem.showAllUser = false
let iconArray = []
let categoryList = JSON.parse(JSON.stringify(roomItem.categoryList))
roomItem.iconArrayShow = []
if (iconArrayShow.length > 0) { if (categoryList.length > 0) {
if (iconArrayShow[0].isSpecial === '1') {// if (categoryList[0].isSpecial === '1') {//
roomItem.isParty = true roomItem.isParty = true
roomItem.partyUrl = iconArrayShow[0].iconUrl roomItem.partyUrl = categoryList[0].iconUrl
iconArrayShow.shift();// categoryList.shift();//
} else { } else {
roomItem.isParty = false roomItem.isParty = false
} }
}
if (iconArrayShow.length > 4) {// let iconNum = categoryList.length > 4 ? 4 : categoryList.length
for (let i = 0; i < 4; i++) {
iconArray.push(iconArrayShow[i]) for (let i = 0; i < iconNum; i++) {
roomItem.iconArrayShow.push(categoryList[i])
} }
} else {
iconArray = iconArrayShow
} }
this.$nextTick(() => {
// ref_tree ref value node-key
roomItem.iconArrayShow = iconArray
});
roomItem.showAllUser = false
}); });
this.$nextTick(() => {
this.roomArray = [...data]
});
} else {
this.roomArray = []
} }
@ -343,7 +355,7 @@ export default {
...mapGetters(["clientHeight"]) ...mapGetters(["clientHeight"])
}, },
components: {}, components: { ScreenLoading },
} }
</script> </script>
@ -355,6 +367,9 @@ export default {
></style> ></style>
<style lang=scss scoped> <style lang=scss scoped>
.info_loading {
margin-top: 50px;
}
.customer_select { .customer_select {
/* 未选中任何选项的时候 placeholder的样式 需要先选中父元素 增加权重 */ /* 未选中任何选项的时候 placeholder的样式 需要先选中父元素 增加权重 */
/deep/ input::-webkit-input-placeholder { /deep/ input::-webkit-input-placeholder {

22
src/views/modules/visual/basicinfo/basicInfoMain.vue

@ -61,7 +61,13 @@
<div class="tip_title">分类列表</div> <div class="tip_title">分类列表</div>
</div> </div>
<div class="info_list"> <div class="info_loading"
v-if="infoLoading">
<screen-loading>加载中</screen-loading>
</div>
<div v-if="!infoLoading"
class="info_list">
<div v-for="(item,index) in listDatashow" <div v-for="(item,index) in listDatashow"
:key="index" :key="index"
class="item"> class="item">
@ -114,6 +120,8 @@ import BasicInfoCommunity from "./basicInfoCommunity";
import PeopleSearch from "./peopleSearch"; import PeopleSearch from "./peopleSearch";
import People from "./people"; import People from "./people";
import cptCard from "@/views/modules/visual/cpts/card"; import cptCard from "@/views/modules/visual/cpts/card";
import ScreenLoading from "@/views/modules/visual/cpts/loading";
var centerPointGlobal = [120.38945519, 36.0722275] var centerPointGlobal = [120.38945519, 36.0722275]
let loading;// let loading;//
@ -226,6 +234,7 @@ const vueGis = {
searchName: "", searchName: "",
// //
infoLoading: true,
listData: [],// listData: [],//
listDatashow: [],// listDatashow: [],//
@ -270,6 +279,7 @@ const vueGis = {
//infolist //infolist
async loadList () { async loadList () {
this.infoLoading = true
const url = "/epmetuser/statsresiwarn/list" const url = "/epmetuser/statsresiwarn/list"
// const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/statsresiwarn/list" // const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/statsresiwarn/list"
let params = { let params = {
@ -278,7 +288,7 @@ const vueGis = {
} }
const { data, code, msg } = await requestPost(url, params) const { data, code, msg } = await requestPost(url, params)
this.infoLoading = false
if (code === 0) { if (code === 0) {
this.listData = data this.listData = data
// this.listData = this.listData1 // this.listData = this.listData1
@ -307,7 +317,7 @@ const vueGis = {
//list //list
refreshInfoList (selId, type) { refreshInfoList (selId, type) {
this.orgId = houselIdseId this.orgId = selId
this.level = '' this.level = ''
}, },
@ -844,7 +854,7 @@ const vueGis = {
...mapGetters(["clientHeight"]) ...mapGetters(["clientHeight"])
}, },
components: { BasicInfoCommunity, PeopleSearch, People, cptCard }, components: { BasicInfoCommunity, PeopleSearch, People, cptCard, ScreenLoading },
} }
export default vueGis; export default vueGis;
</script> </script>
@ -868,4 +878,8 @@ export default vueGis;
.el-scrollbar__wrap { .el-scrollbar__wrap {
overflow-x: hidden !important; overflow-x: hidden !important;
} }
.info_loading {
margin-top: 50px;
}
</style> </style>

204
src/views/modules/visual/basicinfo/cpts/topic-info.vue

@ -7,7 +7,8 @@
<span>话题详情</span> <span>话题详情</span>
</div> </div>
<div class="btn-close" @click="handleClose"> <div class="btn-close"
@click="handleClose">
<img src="@/assets/img/shuju/people/close.png" /> <img src="@/assets/img/shuju/people/close.png" />
</div> </div>
@ -15,12 +16,10 @@
<div class="info-title">话题内容</div> <div class="info-title">话题内容</div>
<div class="info-content">{{ info.topicContent }}</div> <div class="info-content">{{ info.topicContent }}</div>
<div class="info-pics"> <div class="info-pics">
<img <img :src="src"
:src="src" :key="src"
:key="src" v-for="src in info.topicImgs"
v-for="src in info.topicImgs" @click="watchImg(src)" />
@click="watchImg(src)"
/>
</div> </div>
<div class="info-prop"> <div class="info-prop">
<span>发布时间</span> <span>发布时间</span>
@ -37,65 +36,57 @@
</div> </div>
<div class="tabs"> <div class="tabs">
<div <div class="tab-btn"
class="tab-btn" @click="subStartGroupIndex"
@click="subStartGroupIndex" v-if="groupList.length > 9">
v-if="groupList.length > 9"
>
<img src="@/assets/img/shuju/people/arrow-double-left.png" /> <img src="@/assets/img/shuju/people/arrow-double-left.png" />
</div> </div>
<div <div v-show="index >= startGroupIndex && index < startGroupIndex + 9"
v-show="index >= startGroupIndex && index < startGroupIndex + 9" class="tab"
class="tab" :class="groupIndex % groupList.length == index ? 'z-on' : ''"
:class="groupIndex % groupList.length == index ? 'z-on' : ''" :key="'tab' + index"
:key="'tab' + index" @click="groupIndex = index"
@click="groupIndex = index" v-for="(item, index) in groupList">
v-for="(item, index) in groupList"
>
{{ item.label }} {{ item.label }}
</div> </div>
<div <div class="tab-btn"
class="tab-btn" @click="addStartGroupIndex"
@click="addStartGroupIndex" v-if="groupList.length > 9">
v-if="groupList.length > 9"
>
<img src="@/assets/img/shuju/people/arrow-double-right.png" /> <img src="@/assets/img/shuju/people/arrow-double-right.png" />
</div> </div>
</div> </div>
<div class="m-case"> <div class="m-case">
<div class="m-yanpan" v-if="groupIndex == 0"> <div class="m-yanpan"
v-if="groupIndex == 0">
<div v-if="issueInfo.projectId"> <div v-if="issueInfo.projectId">
<analyse <analyse v-if="yanPan.loading"
v-if="yanPan.loading" singleTitle="楼院小组"
singleTitle="楼院小组" :userList="yanPan.houseUserList"
:userList="yanPan.houseUserList" :userName="yanPan.icUserName"
:userName="yanPan.icUserName" :singleList="yanPan.categoryList"
:singleList="yanPan.categoryList" @user="toUserInfo"
@user="toUserInfo" @project="toProjectInfo" />
@project="toProjectInfo"
/>
<screen-loading v-else>加载中</screen-loading> <screen-loading v-else>加载中</screen-loading>
</div> </div>
<div v-else class="m-hint"> <div v-else
<img class="m-hint">
src="@/assets/img/modules/visual/noData.png" <img src="@/assets/img/modules/visual/noData.png"
class="no-data-img" class="no-data-img" />
/>
</div> </div>
</div> </div>
<div class="m-tb" v-if="groupIndex == 1"> <div class="m-tb"
<cpt-tb v-if="groupIndex == 1">
:col-list="comment.colList" <cpt-tb :col-list="comment.colList"
:loading="comment.loading" :loading="comment.loading"
:header="comment.header" :header="comment.header"
:list="comment.list" :list="comment.list"
@operate="checkTopicCommentImg" @operate="checkTopicCommentImg"></cpt-tb>
></cpt-tb>
</div> </div>
<div v-if="groupIndex == 2"> <div v-if="groupIndex == 2">
<div class="m-row" v-if="info.issueId"> <div class="m-row"
v-if="info.issueId">
<div class="m-info"> <div class="m-info">
<div class="info-prop"> <div class="info-prop">
<span>议题标题</span> <span>议题标题</span>
@ -113,7 +104,8 @@
<span>议题发起人</span> <span>议题发起人</span>
<span>{{ issueInfo.issueInitiator }}</span> <span>{{ issueInfo.issueInitiator }}</span>
</div> </div>
<div class="info-prop"> <div v-if="issueInfo.topicInfo&&issueInfo.topicInfo.groupName"
class="info-prop">
<span>议题来源</span> <span>议题来源</span>
<span>{{ issueInfo.topicInfo.groupName }}</span> <span>{{ issueInfo.topicInfo.groupName }}</span>
</div> </div>
@ -143,22 +135,20 @@
</div> </div>
</div> </div>
<line-chart <line-chart v-if="issueChartData.length > 0"
v-if="issueChartData.length > 0" :list="issueChartData" />
:list="issueChartData"
/>
</div> </div>
</div> </div>
<div v-else class="m-hint"> <div v-else
<img class="m-hint">
src="@/assets/img/modules/visual/noData.png" <img src="@/assets/img/modules/visual/noData.png"
class="no-data-img" class="no-data-img" />
/>
</div> </div>
</div> </div>
<div v-if="groupIndex == 3"> <div v-if="groupIndex == 3">
<div class="m-row" v-if="issueInfo.projectId"> <div class="m-row"
v-if="issueInfo.projectId">
<div class="m-info"> <div class="m-info">
<div class="info-prop"> <div class="info-prop">
<span>项目标题</span> <span>项目标题</span>
@ -176,33 +166,36 @@
<span>当前处理部门</span> <span>当前处理部门</span>
<span>{{ projectInfo.departmentNameList.join("、") }}</span> <span>{{ projectInfo.departmentNameList.join("、") }}</span>
</div> </div>
<div class="info-prop" v-if="projectCate.length > 0"> <div class="info-prop"
v-if="projectCate.length > 0">
<span>分类</span> <span>分类</span>
<fold-text :row="3"> <fold-text :row="3">
<div :key="item.name" v-for="item in projectCate"> <div :key="item.name"
v-for="item in projectCate">
{{ item.name }} {{ item.name }}
</div> </div>
</fold-text> </fold-text>
</div> </div>
<div class="info-prop" v-if="projectTag.length > 0"> <div class="info-prop"
v-if="projectTag.length > 0">
<span>标签</span> <span>标签</span>
<fold-text :row="3"> <fold-text :row="3">
<div :key="item.name" v-for="item in projectTag"> <div :key="item.name"
v-for="item in projectTag">
{{ item.name }} {{ item.name }}
</div> </div>
</fold-text> </fold-text>
</div> </div>
</div> </div>
<div class="m-process" v-if="projectProcess.length > 0"> <div class="m-process"
v-if="projectProcess.length > 0">
<div class="process-title">处理进展</div> <div class="process-title">处理进展</div>
<div class="list"> <div class="list">
<div <div class="item"
class="item" :class="index === 0 ? 'z-on' : ''"
:class="index === 0 ? 'z-on' : ''" :key="item.processId"
:key="item.processId" v-for="(item, index) in projectProcess">
v-for="(item, index) in projectProcess"
>
<div class="item-row"> <div class="item-row">
<div class="name">{{ item.processName }}</div> <div class="name">{{ item.processName }}</div>
<div class="date"> <div class="date">
@ -215,20 +208,16 @@
<div class="detail-value">{{ item.departmentName }}</div> <div class="detail-value">{{ item.departmentName }}</div>
</div> </div>
<div <div class="detail"
class="detail" v-if="item.processName != '转项目' && item.publicReply">
v-if="item.processName != '转项目' && item.publicReply"
>
<div class="detail-field"> </div> <div class="detail-field"> </div>
<div class="detail-value"> <div class="detail-value">
<fold-text :row="3">{{ item.publicReply }}</fold-text> <fold-text :row="3">{{ item.publicReply }}</fold-text>
</div> </div>
</div> </div>
<div <div class="detail"
class="detail" v-if="item.processName != '转项目' && item.internalRemark">
v-if="item.processName != '转项目' && item.internalRemark"
>
<div class="detail-field">内部备注</div> <div class="detail-field">内部备注</div>
<div class="detail-value"> <div class="detail-value">
<fold-text :row="3">{{ <fold-text :row="3">{{
@ -238,12 +227,10 @@
</div> </div>
<div class="detail"> <div class="detail">
<div class="attachement-list"> <div class="attachement-list">
<a <a :href="att.url"
:href="att.url" target="_blank"
target="_blank" :key="att.url"
:key="att.url" v-for="att in item.internalFile">
v-for="att in item.internalFile"
>
<i class="el-icon-folder-opened"></i> <i class="el-icon-folder-opened"></i>
{{ att.name }} {{ att.name }}
</a> </a>
@ -253,11 +240,10 @@
</div> </div>
</div> </div>
</div> </div>
<div v-else class="m-hint"> <div v-else
<img class="m-hint">
src="@/assets/img/modules/visual/noData.png" <img src="@/assets/img/modules/visual/noData.png"
class="no-data-img" class="no-data-img" />
/>
</div> </div>
</div> </div>
</div> </div>
@ -276,7 +262,7 @@ import analyse from "@/views/modules/visual/cpts/analyse";
import foldText from "@/views/components/foldText"; import foldText from "@/views/components/foldText";
import dateFormat from "dai-js/tools/dateFormat"; import dateFormat from "dai-js/tools/dateFormat";
function iniData() { function iniData () {
return { return {
groupList: [ groupList: [
{ label: "研判分析" }, { label: "研判分析" },
@ -434,7 +420,7 @@ export default {
computed: {}, computed: {},
watch: { watch: {
topicId() { topicId () {
let data = iniData(); let data = iniData();
Object.keys(data).forEach((k) => { Object.keys(data).forEach((k) => {
this[k] = data[k]; this[k] = data[k];
@ -443,16 +429,16 @@ export default {
}, },
}, },
mounted() { mounted () {
this.getApiData(); this.getApiData();
}, },
methods: { methods: {
watchImg(src) { watchImg (src) {
window.open(src); window.open(src);
}, },
addStartGroupIndex() { addStartGroupIndex () {
const { startGroupIndex, groupList } = this; const { startGroupIndex, groupList } = this;
if (startGroupIndex < groupList.length - 9) { if (startGroupIndex < groupList.length - 9) {
this.startGroupIndex = startGroupIndex + 1; this.startGroupIndex = startGroupIndex + 1;
@ -460,7 +446,7 @@ export default {
this.startGroupIndex = groupList.length - 9; this.startGroupIndex = groupList.length - 9;
} }
}, },
subStartGroupIndex() { subStartGroupIndex () {
const { startGroupIndex, groupList } = this; const { startGroupIndex, groupList } = this;
if (startGroupIndex > 0) { if (startGroupIndex > 0) {
this.startGroupIndex = startGroupIndex - 1; this.startGroupIndex = startGroupIndex - 1;
@ -468,11 +454,11 @@ export default {
this.startGroupIndex = 0; this.startGroupIndex = 0;
} }
}, },
handleClose() { handleClose () {
this.$emit("close"); this.$emit("close");
}, },
async getApiData() { async getApiData () {
this.getComment(); this.getComment();
await this.getInfo(); await this.getInfo();
await this.getIssueInfo(); await this.getIssueInfo();
@ -484,7 +470,7 @@ export default {
}, },
// //
async getInfo() { async getInfo () {
const url = "/resi/group/topic/gettopicdetail"; const url = "/resi/group/topic/gettopicdetail";
const { data, code, msg } = await requestPost(url, { const { data, code, msg } = await requestPost(url, {
@ -499,7 +485,7 @@ export default {
}, },
// //
async getComment() { async getComment () {
const url = "/resi/group/comment/getcommentlistoftopic"; const url = "/resi/group/comment/getcommentlistoftopic";
const { data, code, msg } = await requestPost(url, { const { data, code, msg } = await requestPost(url, {
@ -526,7 +512,7 @@ export default {
} }
}, },
checkTopicCommentImg(index) { checkTopicCommentImg (index) {
const { const {
comment: { srcList }, comment: { srcList },
} = this; } = this;
@ -536,7 +522,7 @@ export default {
}, },
// //
async getIssueInfo() { async getIssueInfo () {
const { const {
info: { issueId }, info: { issueId },
} = this; } = this;
@ -555,7 +541,7 @@ export default {
}, },
// //
async getIssueTrend() { async getIssueTrend () {
const { const {
info: { issueId }, info: { issueId },
} = this; } = this;
@ -592,7 +578,7 @@ export default {
}, },
// //
async getProjectProcess() { async getProjectProcess () {
const { issueInfo } = this; const { issueInfo } = this;
if (!issueInfo || !issueInfo.projectId) return; if (!issueInfo || !issueInfo.projectId) return;
const url = "/gov/project/trace/processlist-v2"; const url = "/gov/project/trace/processlist-v2";
@ -615,7 +601,7 @@ export default {
}, },
// //
async getProjectInfo() { async getProjectInfo () {
const { issueInfo } = this; const { issueInfo } = this;
if (!issueInfo || !issueInfo.projectId) return; if (!issueInfo || !issueInfo.projectId) return;
const url = "/gov/project/trace/projectdetail"; const url = "/gov/project/trace/projectdetail";
@ -631,7 +617,7 @@ export default {
} }
}, },
async getProjectCate() { async getProjectCate () {
const { issueInfo } = this; const { issueInfo } = this;
if (!issueInfo || !issueInfo.projectId) return; if (!issueInfo || !issueInfo.projectId) return;
const url = "/gov/project/projectcategory/categorytaglist"; const url = "/gov/project/projectcategory/categorytaglist";
@ -649,7 +635,7 @@ export default {
}, },
// //
async getYanPan() { async getYanPan () {
const url = "/gov/project/project/topic-research-analysis"; const url = "/gov/project/project/topic-research-analysis";
if (!this.issueInfo.projectId) return; if (!this.issueInfo.projectId) return;
@ -685,13 +671,13 @@ export default {
} }
}, },
toUserInfo(item) { toUserInfo (item) {
this.$router.push({ this.$router.push({
path: `/main-shuju/visual-basicinfo-people/${item.icResiUserId}`, path: `/main-shuju/visual-basicinfo-people/${item.icResiUserId}`,
}); });
}, },
toProjectInfo(item) { toProjectInfo (item) {
console.log(item); console.log(item);
this.topicId = item.topicId; this.topicId = item.topicId;
}, },

3
src/views/modules/visual/communityGovern/cpt/project-info.vue

@ -173,7 +173,8 @@
<span>议题发起人</span> <span>议题发起人</span>
<span>{{ issueInfo.issueInitiator }}</span> <span>{{ issueInfo.issueInitiator }}</span>
</div> </div>
<div class="info-prop"> <div v-if="issueInfo.topicInfo&&issueInfo.topicInfo.groupName"
class="info-prop">
<span>议题来源</span> <span>议题来源</span>
<span>{{ issueInfo.topicInfo.groupName }}</span> <span>{{ issueInfo.topicInfo.groupName }}</span>
</div> </div>

179
src/views/modules/visual/communityGovern/resiPieOption copy.js

@ -0,0 +1,179 @@
export function pieOption (_charts) {
const center= ['50%', '250px']
return {
title: {
text: '0',
top: 220,
left: 'center',
textStyle: {
width: '100%',
fontSize: 32,
color: '#FFFFFF',
fontWeight: 400
},
itemGap: 5,
subtext: '总数',
subtextStyle: {
fontSize: 20,
color: '#fff',
fontWeight: 400
}
},
tooltip: {
show: false
},
legend: {
top: 500,
bottom: 0,
itemWidth: 20,
itemHeight: 10,
textStyle: {
color: '#D2E7FF',
fontSize: 16,
lineHeight: 20,
},
},
series: [
// 外侧圆环
{
type: 'pie',
// 起始刻度的角度,默认为 90 度,即圆心的正上方。0 度为圆心的正右方。
startAngle: 0,
hoverAnimation: false,
// tooltip: {
// },
center: center,
radius: ['55%', '55.3%'],
label: {
show: false
},
labelLine: {
show: false
},
data: [{
value: 360,
itemStyle: {
color: 'rgba(40, 101, 250, 0)',
width:0,
borderColor: 'rgba(40, 101, 250, 0.5)',
borderWidth: 1,
borderType: 'dotted'
}
}
]
},
// 突出的
{
hoverAnimation: false,
// name: 'Access From',
type: 'pie',
center: center,
radius: ['40%', '60%'],
avoidLabelOverlap: false,
// top: top + '%',
// height: '80%',
selectedMode: 'single',
left: 'center',
width: 400,
label: {
// show: false,
position: 'outside',
alignTo: 'edge',
// formatter: '{a|{c}}\n\n{name|{b}}',
formatter: '{a|{c}}\n{r|}\n{name|{b}}',
minMargin: 5,
edgeDistance: -20,
lineHeight: 15,
color: '#fff',
fontSize: 12,
// distanceToLabelLine: -60,
rich: {
name: {
padding: [0, 6, 0, 6]
},
a: {
fontSize: 30,
color: '#fff',
padding: [0, 6, 6, 6]
},
r: {
backgroundColor: 'auto',
borderRadius: 6,
width: 6,
height: 6,
// padding: [3, 3, 0, -12]
}
}
},
labelLine: {
show: false,
smooth: 0.2,
length: 30,
length2: 0,
maxSurfaceAngle: 80
},
labelLayout: function (params) {
const isLeft = params.labelRect.x < _charts.getWidth() / 2;
const points = params.labelLinePoints;
// Update the end point.
if (points) {
points[2][0] = isLeft
? params.labelRect.x
: params.labelRect.x + params.labelRect.width;
}
return {
labelLinePoints: points
};
},
itemStyle: {
// color:function(params) {
// //自定义颜色
// var colorList = [
// '#00FFFF', '#00FF00', '#FFFF00', '#FF8C00', '#FF0000', '#FE8463',
// ];
// return colorList[params.dataIndex]
// }
},
data: [],
},
// 中间圆环
{
type: 'pie',
// 起始刻度的角度,默认为 90 度,即圆心的正上方。0 度为圆心的正右方。
startAngle: 0,
hoverAnimation: false,
center: center,
// tooltip: {
// },
radius: ['0%', '25%'],
label: {
show: false
},
labelLine: {
show: false
},
data: [{
value: 360,
itemStyle: {
normal: {
color: 'rgba(8, 37, 134, 1)',
}
}
}
]
},
]
}
}

2
src/views/modules/visual/communityGovern/resiPieOption.js

@ -79,7 +79,7 @@ const center= ['50%', '250px']
left: 'center', left: 'center',
width: 400, width: 400,
label: { label: {
// show: false, show: true,
position: 'outside', position: 'outside',
alignTo: 'edge', alignTo: 'edge',
// formatter: '{a|{c}}\n\n{name|{b}}', // formatter: '{a|{c}}\n\n{name|{b}}',

523
src/views/modules/visual/communityGovern/resibuzz copy.vue

@ -0,0 +1,523 @@
<template>
<cpt-card>
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
<span>居民热议</span>
<div class="second-select cascader">
<el-cascader class="customer_cascader"
ref="myCascader"
v-model="agencyIdArray"
:key="iscascaderShow"
:options="casOptions"
:props="optionProps"
:show-all-levels="false"
@change="handleChangeAgency"></el-cascader>
</div>
<div class="second-select status-select">
<el-select v-model="status"
:popper-append-to-body="false"
placeholder="请选择">
<el-option v-for="(item,index) in stateArray"
:key="item.value"
:label="item.label"
:value="item.value"
@click.native="handleChangeState(index)">
</el-option>
</el-select>
</div>
</div>
<div class="g-cpt-resi">
<div class="g-l">
<screen-echarts-frame v-if=" !dataLoading"
class="echart-wr"
@myChartMethod="pieInitOk"
ref="pieChart"></screen-echarts-frame>
<div class="table-status"
v-if="dataLoading">
<screen-loading>加载中</screen-loading>
</div>
</div>
<div class="g-r">
<div class="m-tb">
<div class="tb">
<cpt-tb :col-list="demand.colList"
:loading="demand.loading"
:header="demand.header"
:list="demand.list"
@operate="toIssueInfo"></cpt-tb>
</div>
<div class="m-pagination">
<el-pagination :current-page="demand.pageNo"
:page-size="demand.pageSize"
:total="demand.total"
background
layout="prev, pager, next"
@current-change="handlePageNoChange_demand">
</el-pagination>
</div>
</div>
</div>
</div>
<issue-info v-if="showIssue"
:issueId="issueId"
@close="showIssue = false" />
</cpt-card>
</template>
<script>
import { Loading } from "element-ui"; //Loading
import { requestPost } from "@/js/dai/request";
import cptCard from "@/views/modules/visual/cpts/card";
import cptTb from "@/views/modules/visual/cpts/tb";
import screenEchartsFrame from "@/views/modules/visual/components/screen-echarts-frame";
import ScreenLoading from "@/views/modules/visual/components/screen-loading";
import ScreenNodata from "@/views/modules/visual/components/screen-nodata";
import { pieOption } from './resiPieOption.js'
import nextTick from 'dai-js/tools/nextTick'
import issueInfo from "./cpt/issue-info";
export default {
name: "HomeMap",
data () {
return {
dataLoading: true,
pieChartS: null,
pieChart: '',
pieOption: {},
pieInitState: false,
pieTotal: 0,
colorArray: [],
pieData: [
// { count: 1048, categoryName: '', color: '#1B51FF', selected: true },
// { count: 735, categoryName: '', color: '#00E5ED' },
// { count: 580, categoryName: '', color: '#7800FF' },
// { count: 484, categoryName: '', color: '#16D783' },
// { count: 300, categoryName: '', color: '#FF7800' },
// { count: 1048, categoryName: '', color: '#FFBA00' },
// { count: 735, categoryName: '', color: '#FFD685' },
// { count: 1580, categoryName: '', color: '#2A00FF' },
// { count: 484, categoryName: '', color: '#C600FF' },
// { count: 300, categoryName: '', color: '#FF2A00' },
// { count: 484, categoryName: '', color: '#3DDA83' },
// { count: 300, categoryName: '', color: '#FAC126' }
],
//voting shift_project closedall
stateArray: [
{
label: '全部',
value: 'all'
},
{
label: '表决中',
value: 'voting'
},
{
label: '已转项目',
value: 'shift_project'
},
{
label: '已关闭',
value: 'closed'
},
],
status: 'all',
orgId: '',
orgTypeSel: '',
tableList: [],
demand: {
loading: true,
colList: [
{
align: "center",
width: "5%",
},
{
align: "center",
width: "10%",
},
{
align: "center",
width: "20%",
},
{
align: "center",
width: "10%",
},
{
align: "center",
width: "5%",
},
{
align: "center",
width: "10%",
},
{
align: "center",
width: "10%",
},
{
align: "center",
width: "15%",
},
{
align: "center",
width: "5%",
},
{
align: "center",
width: "5%",
},
{
align: "center",
width: "10%",
},
],
header: ["序号", "议题标题", "处理意见", "分类", "状态", "创建时间", "发起人", "已表态/应表态", "支持", "反对", "操作"],
list: [],
pageSize: 10,
pageNo: 1,
total: 0,
},
showIssue: false,
issueId: '',
casOptions: [],
agencyIdArray: [],
customerList: [],
iscascaderShow: 0,
optionProps: {
multiple: false,
value: 'orgLevel',
label: 'agencyName',
children: 'subAgencyList',
checkStrictly: true
},
};
},
// mixins: [animate]
beforeDestroy () {
},
async mounted () {
this.dataLoading = true
await this.getAgencylist()//
await this.getApiData()
this.dataLoading = false
this.getPie()
},
methods: {
async getApiData () {
await this.getPieChart()
// await this.getTable();
},
//
async getAgencylist () {
const url = "/gov/org/customeragency/agencygridtree";
let params = {};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.agencyInfo = data
this.orgId = this.agencyInfo.agencyId
this.orgType = this.agencyInfo.level === 'grid' ? 'grid' : 'agency'
if (!this.agencyInfo.latitude) {
this.agencyInfo.latitude = 36.072227
}
if (!this.agencyInfo.longitude) {
this.agencyInfo.longitude = 120.389455
}
if (!this.agencyInfo.level) {
this.agencyInfo.level = 'street'
}
//
++this.iscascaderShow
this.casOptions = []
this.agencyIdArray.length = []
if (data) {
this.casOptions.push(data)
this.agencyIdArray.push(this.agencyInfo.orgLevel)
}
} else {
this.$message.error(msg);
}
},
//
async getPieChart () {
if (this.$refs.pieChart) {
this.$refs.pieChart.clear()
this.$refs.pieChart.showLoading()
}
const url = "/gov/issue/issue/resibuzz-leftpiechart";
// const url = "http://yapi.elinkservice.cn/mock/245/gov/issue/issue/resibuzz-leftpiechart";
let params = {
orgId: this.orgId,
orgType: this.orgType,
status: this.status,
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
if (data && data.length > 0) {
this.pieData = data
} else {
this.pieData = []
}
if (this.$refs.pieChart) {
this.$refs.pieChart.hideLoading()
}
} else {
this.$message.error(msg);
}
},
pieInitOk (dom) {
console.log('pie准备好了', dom)
this.pieChartS = dom
this.pieInitState = true
},
getPie () {
if (this.pieInitState) {
this.assignPieChart()
} else {
setTimeout(() => {
this.getPie()
}, 500)
}
},
clickPie (seriesIndex) {
this.pieData.forEach((element, index) => {
if (index === seriesIndex) {
element.label = {
show: true,
};
element.labelLine = {
show: true,
lineStyle: {
opacity: 1,
}
};
console.log('zhilma')
} else {
element.label = {
show: true,
};
element.labelLine = {
show: true,
lineStyle: {
opacity: 0,
color: 'rgba(255,255,255,0)'
}
};
}
});
this.pieOption.series[1].data = this.pieData
this.$refs.pieChart.setOption(this.pieOption)
},
assignPieChart () {
this.pieTotal = 0
if (this.pieData.length > 0) {
this.$refs.pieChart.setNoData(false)
const _that = this
let maxIndex = 0
let maxValue = this.pieData[0].count
this.pieData[0].selected = true
this.pieData.forEach((item, index) => {
item.name = item.categoryName
item.value = item.count
this.colorArray.push(item.color)
this.pieTotal = this.pieTotal + item.value
if (item.value > maxValue) {
maxValue = item.value
maxIndex = index
item.selected = true
} else if (index !== 0) {
item.selected = false
}
});
// pieChart
this.pieOption = pieOption(this.pieChartS)
this.pieOption.title.text = this.pieTotal
this.pieOption.series[1].itemStyle = {
color: function (params) {
return _that.colorArray[params.dataIndex]
}
}
this.pieOption.series[1].data = this.pieData
this.$refs.pieChart.setOption(this.pieOption)
// this.clickPie(maxIndex)
// let fun = function (params) {
// _that.clickPie(params.dataIndex)
// }
// this.$refs.pieChart.handleClick(fun)
} else {
this.$refs.pieChart.setNoData(true)
}
},
async handleChangeState (index) {
await this.getApiData()
this.assignPieChart()
},
async handleChangeAgency (value) {
let orgArray = []
let key = this.agencyIdArray.length > 0 ? this.agencyIdArray[this.agencyIdArray.length - 1] : ''
if (key) {
orgArray = key.split('-')
this.orgId = orgArray[0]
this.orgType = orgArray[1] === 'grid' ? 'grid' : 'agency'
} else {
this.orgId = ''
this.orgType = ''
}
await this.getApiData()
this.assignPieChart()
},
//
async getTable () {
const url = "/gov/issue/issue/resibuzz";
// const url = "http://yapi.elinkservice.cn/mock/245/gov/issue/issue/resibuzz";
let params = {
status: this.status,
orgId: this.orgId,
orgType: this.orgType,
pageNo: this.demand.pageNo,
pageSize: this.demand.pageSize,
};
const { data, code, msg } = await requestPost(url, params);
this.demand.loading = false;
if (code === 0) {
this.demand.total = data.total;
this.tableList = data.list
this.demand.list = data.list.map((item) => {
return [
item.sort ? item.sort : '--',
item.issueTitle ? item.issueTitle : '',
item.suggestion ? item.suggestion : '',
item.categoryName.join(','),
item.status ? item.status : '',
item.createdTime ? item.createdTime : '',
item.issueOriginator ? item.issueOriginator : '',
item.voteAccount ? item.voteAccount : '',
item.supportCount ? item.supportCount : 0,
item.oppositionCount ? item.oppositionCount : 0,
{ type: "operate", list: ["查看"] },
];
});
} else {
this.$message.error(msg);
}
},
handlePageNoChange_demand (val) {
this.demand.pageNo = val;
this.getTable();
},
async toIssueInfo (index) {
const { tableList } = this;
this.issueId = tableList[index].issueId
this.showIssue = true
},
},
props: {
uid: {
type: String,
default: "",
// default: "8ada68cb6f1e4b9a8333348a39ef3aee",
},
},
computed: {},
components: {
cptCard,
cptTb,
screenEchartsFrame,
ScreenLoading,
ScreenNodata,
issueInfo
},
watch: {
uid (id) {
this.userId = id;
},
userId () {
this.getApiData();
window.scrollTo(0, 0);
},
},
};
</script>
<style
lang="scss"
src="@/assets/scss/modules/visual/resibuzz.scss"
scoped
></style>
<style lang=scss scoped>
</style>

70
src/views/modules/visual/heart/index.vue

@ -2,14 +2,12 @@
<div> <div>
<div class="m-sizer"> <div class="m-sizer">
<span>时间</span> <span>时间</span>
<el-date-picker <el-date-picker v-model="monthId"
v-model="monthId" type="month"
type="month" :clearable="false"
:clearable="false" prefix-icon="el-icon-caret-bottom"
prefix-icon="el-icon-caret-bottom" placeholder="选择日期"
placeholder="选择日期" value-format="yyyyMM">
value-format="yyyyMM"
>
</el-date-picker> </el-date-picker>
</div> </div>
@ -22,13 +20,11 @@
</div> </div>
<div class="tb"> <div class="tb">
<cpt-tb <cpt-tb :highlight-top3="true"
:highlight-top3="true" :col-list="tb3.colList"
:col-list="tb3.colList" :loading="tb3.loading"
:loading="tb3.loading" :header="tb3.header"
:header="tb3.header" :list="tb3.list"></cpt-tb>
:list="tb3.list"
></cpt-tb>
</div> </div>
</cpt-card> </cpt-card>
</div> </div>
@ -41,13 +37,11 @@
</div> </div>
<div class="tb"> <div class="tb">
<cpt-tb <cpt-tb :highlight-top3="true"
:highlight-top3="true" :col-list="tb2.colList"
:col-list="tb2.colList" :loading="tb2.loading"
:loading="tb2.loading" :header="tb2.header"
:header="tb2.header" :list="tb2.list"></cpt-tb>
:list="tb2.list"
></cpt-tb>
</div> </div>
</cpt-card> </cpt-card>
</div> </div>
@ -60,13 +54,11 @@
</div> </div>
<div class="tb"> <div class="tb">
<cpt-tb <cpt-tb :highlight-top3="true"
:highlight-top3="true" :col-list="tb1.colList"
:col-list="tb1.colList" :loading="tb1.loading"
:loading="tb1.loading" :header="tb1.header"
:header="tb1.header" :list="tb1.list"></cpt-tb>
:list="tb1.list"
></cpt-tb>
</div> </div>
</cpt-card> </cpt-card>
</div> </div>
@ -84,7 +76,7 @@ import dateFormat from "dai-js/tools/dateFormat";
export default { export default {
name: "heart", name: "heart",
data() { data () {
return { return {
agencyId: this.$store.state.user.agencyId, agencyId: this.$store.state.user.agencyId,
areaCode: "", areaCode: "",
@ -187,33 +179,33 @@ export default {
}, },
watch: { watch: {
monthId() { monthId () {
this.getApiData(); this.getApiData();
}, },
}, },
async mounted() { async mounted () {
this.userId = this.uid; this.userId = this.uid;
await nextTick(100); await nextTick(100);
this.getApiData(); this.getApiData();
}, },
methods: { methods: {
handleSearch() {}, handleSearch () { },
async getApiData() { async getApiData () {
//await this.getAgencyInfo(); //await this.getAgencyInfo();
this.getTb1(); this.getTb1();
this.getTb2(); this.getTb2();
this.getTb3(); this.getTb3();
}, },
toUserInfo(uid) { toUserInfo (uid) {
this.$router.push({ path: `/main-shuju/visual-basicinfo-people/${uid}` }); this.$router.push({ path: `/main-shuju/visual-basicinfo-people/${uid}` });
}, },
// //
async getAgencyInfo() { async getAgencyInfo () {
const { data, code, msg } = await requestPost( const { data, code, msg } = await requestPost(
"/data/report/screen/agency/agencydetail-multic", "/data/report/screen/agency/agencydetail-multic",
{ {
@ -227,7 +219,7 @@ export default {
}, },
// //
async getTb1() { async getTb1 () {
const { agencyId, areaCode } = this; const { agencyId, areaCode } = this;
const url = "/data/report/screen/index/advancedbranchrank"; const url = "/data/report/screen/index/advancedbranchrank";
let params = { let params = {
@ -252,7 +244,7 @@ export default {
}, },
// //
async getTb2() { async getTb2 () {
const { agencyId, areaCode } = this; const { agencyId, areaCode } = this;
const url = "/data/report/screen/user/partypointrank"; const url = "/data/report/screen/user/partypointrank";
let params = { let params = {
@ -282,7 +274,7 @@ export default {
}, },
// //
async getTb3() { async getTb3 () {
const { agencyId, areaCode } = this; const { agencyId, areaCode } = this;
const url = "/data/report/screen/user/userpointrank/withoutpartymember"; const url = "/data/report/screen/user/userpointrank/withoutpartymember";
let params = { let params = {

Loading…
Cancel
Save