Browse Source

Merge branch 'dev-shuju' into prod

shibei_master
dai 4 years ago
parent
commit
7a288573d8
  1. 20
      src/views/modules/communityService/measure/index.vue
  2. 8
      src/views/modules/visual/communityGovern/cpt/issue-info.vue
  3. 10
      src/views/modules/visual/heart/index.vue
  4. 264
      src/views/modules/visual/measure/volunteer.vue

20
src/views/modules/communityService/measure/index.vue

@ -137,8 +137,9 @@
size="small"
@click="handleAppoint(scope.row, 'appoint')"
>指派</el-button>
<!-- v-if="scope.row.status === 'assigned' || scope.row.status === 'have_order'" -->
<el-button
v-if="scope.row.status === 'assigned' || scope.row.status === 'have_order'"
v-if="scope.row.status === 'assigned' || scope.row.status === 'have_order' || (scope.row.status == 'finished' && !scope.row.evaluateFlag)"
type="text"
size="small"
@click="handleFinish(scope.row, 'finish')"
@ -341,12 +342,7 @@
<span>{{ form.cancelTime }}</span>
</el-form-item>
<template v-if="addType == 'finish' || (addType == 'look' && form.status == 'finished')">
<el-form-item label="完成情况" prop="finishResult">
<el-radio v-model="form.finishResult"
label="resolved" :disabled="disabled && addType != 'finish'" >已解决</el-radio>
<el-radio v-model="form.finishResult" label="unresolved"
:disabled="disabled && addType != 'finish'" >未解决</el-radio>
</el-form-item>
<el-form-item label="实际服务时间" prop="serviceStartTime">
<el-date-picker
v-model="finishServiceTime"
@ -362,6 +358,12 @@
>
</el-date-picker>
</el-form-item>
<el-form-item label="完成情况" prop="finishResult">
<el-radio v-model="form.finishResult"
label="resolved" :disabled="disabled && addType != 'finish'" >已解决</el-radio>
<el-radio v-model="form.finishResult" label="unresolved"
:disabled="disabled && addType != 'finish'" >未解决</el-radio>
</el-form-item>
<el-form-item label="评价" prop="score" class="form-score">
<el-rate v-model="form.score" :allow-half="true" :disabled="disabled && addType != 'finish'" ></el-rate>
</el-form-item>
@ -738,6 +740,8 @@ export default {
this.finishServiceTime = row.serviceStartTime && [row.serviceStartTime, row.serviceEndTime] || ''
}
if (addType == 'finish') {
if (row.serviceStartTime) this.finishServiceTime = [row.serviceStartTime, row.serviceEndTime]
this.form.finishResult = 'resolved'
}
if (addType == 'appoint' && row.serviceType) {
@ -1035,7 +1039,7 @@ export default {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
this.reportOptions = res.data
this.reportOptions = res.data && res.data.filter(item => item.value != 'self_help')
}
})
.catch(() => {

8
src/views/modules/visual/communityGovern/cpt/issue-info.vue

@ -23,7 +23,7 @@
<span>{{ info.issueSuggestion }}</span>
</div>
<div class="info-prop">
<div class="info-prop" v-if="info.topicInfo">
<span class="info-title-2">话题内容</span>
<div>
<div>{{ info.topicInfo.topicContent }}</div>
@ -43,7 +43,7 @@
<span class="info-title-2">所属网格</span>
<span>{{ info.belongsGridName}}</span>
</div>
<div class="info-prop">
<div class="info-prop" v-if="info.topicInfo">
<span class="info-title-2">话题发表人</span>
<span>{{ info.topicInfo.publishedUser}}</span>
</div>
@ -51,11 +51,11 @@
<span class="info-title-2">议题发起人</span>
<span>{{ info.issueInitiator}}</span>
</div>
<div class="info-prop">
<div class="info-prop" v-if="info.topicInfo">
<span class="info-title-2">话题来源</span>
<span>{{ info.topicInfo.groupName}}</span>
</div>
<div class="info-prop">
<div class="info-prop" v-if="info.topicInfo">
<span class="info-title-2">话题发表时间</span>
<span>{{ info.topicInfo.publishedTimeShow}}</span>
</div>

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

@ -80,6 +80,7 @@ import { requestPost } from "@/js/dai/request";
import cptCard from "@/views/modules/visual/cpts/card";
import cptTb from "@/views/modules/visual/cpts/tb";
import nextTick from "dai-js/tools/nextTick";
import dateFormat from "dai-js/tools/dateFormat";
export default {
name: "heart",
@ -88,7 +89,14 @@ export default {
agencyId: "",
areaCode: "",
monthId: "",
monthId: dateFormat(
new Date(
new Date().getFullYear(),
new Date().getMonth() - 1,
new Date().getDate()
),
"yyyyMM"
),
// /
tb1: {

264
src/views/modules/visual/measure/volunteer.vue

@ -1,97 +1,114 @@
<template>
<div class="warning-box">
<cpt-card class="card-wr">
<cpt-card >
<div class="card-title">
<img class="title-icon"
src="../../../../assets/img/shuju/title-tip.png" />
<img class="title-icon" src="../../../../assets/img/shuju/title-tip.png" />
<div class="title-label">
志愿者服务情况
<el-cascader
v-model="selectAgency"
:options="propTree"
:props="{ checkStrictly: true }"
:show-all-levels="false"
clearable
@change="handleCascader">
</el-cascader>
</div>
</div>
<div class="box-wr">
<cpt-card class="card-wr">
<div class="card-title">
<img class="title-icon"
src="../../../../assets/img/shuju/title-tip.png" />
<div class="title-label">
志愿者服务情况
</div>
</div>
<div class="card-echart">
<div class="card-left">
<div class="card-count">
<div class="card-count-item">
<div class="card-count-content">
<div class="card-count-num">{{ vInfo.partyTotal || 0 }}</div>
<div class="card-count-label">党员数量</div>
<div class="card-echart">
<div class="card-left">
<div class="card-count">
<div class="card-count-item">
<div class="card-count-content">
<div class="card-count-num">{{ vInfo.partyTotal || 0 }}</div>
<div class="card-count-label">党员数量</div>
</div>
</div>
<div class="card-count-item">
<div class="card-count-content">
<div class="card-count-num">{{ vInfo.resiTotal || 0 }}</div>
<div class="card-count-label">居民数量</div>
</div>
</div>
</div>
</div>
<div class="card-count-item">
<div class="card-count-content">
<div class="card-count-num">{{ vInfo.resiTotal || 0 }}</div>
<div class="card-count-label">居民数量</div>
<div class="echart-wr">
<!-- <div class="echart-cicle"></div> -->
<div id="echartService"
class="echart-org"></div>
</div>
</div>
</div>
<div class="echart-wr">
<!-- <div class="echart-cicle"></div> -->
<div id="echartService"
class="echart-org"></div>
</div>
</div>
</div>
</div>
</div>
<div class="card-echart">
<div class="card-left">
<div class="card-count">
<div class="card-count-item">
<div class="card-count-content">
<div class="card-count-num">{{ vInfo.partyServiceTotal || 0 }}</div>
<div class="card-count-label">党员数量</div>
<div class="card-echart">
<div class="card-left">
<div class="card-count">
<div class="card-count-item">
<div class="card-count-content">
<div class="card-count-num">{{ vInfo.partyServiceTotal || 0 }}</div>
<div class="card-count-label">党员数量</div>
</div>
</div>
<div class="card-count-item">
<div class="card-count-content">
<div class="card-count-num">{{ vInfo.resiServiceTotal || 0 }}</div>
<div class="card-count-label">居民数量</div>
</div>
</div>
</div>
</div>
<div class="card-count-item">
<div class="card-count-content">
<div class="card-count-num">{{ vInfo.resiServiceTotal || 0 }}</div>
<div class="card-count-label">居民数量</div>
<div class="echart-wr">
<!-- <div class="echart-cicle"></div> -->
<div id="echartCount"
class="echart-org"></div>
</div>
</div>
</div>
<div class="echart-wr">
<!-- <div class="echart-cicle"></div> -->
<div id="echartCount"
class="echart-org"></div>
</div>
</div>
</div>
</div>
</cpt-card>
<cpt-card class="card-wr card-wr-map">
<div class="card-title">
<img class="title-icon"
src="../../../../assets/img/shuju/title-tip.png" />
<div class="title-label">
多元化治理平面图
</div>
</div>
</cpt-card>
<cpt-card class="card-wr card-wr-map">
<div class="card-title">
<img class="title-icon"
src="../../../../assets/img/shuju/title-tip.png" />
<div class="title-label">
多元化治理平面图
</div>
</div>
<div class="card-map">
<screen-map class="map"
ref="map"
@clickFeature="clickMapVolunteer"
:showIconLayer="true"
:clickType="'popup'"
:isAddOpenlay="true"></screen-map>
</div>
<div class="map-tips">
<div class="card-map">
<screen-map class="map"
ref="map"
@clickFeature="clickMapVolunteer"
:showIconLayer="true"
:clickType="'popup'"
:isAddOpenlay="true"></screen-map>
</div>
<div class="map-tips">
<div class="map-tips-item"
v-for="item in legendArray"
:key="item.optionValue">
<div class="map-tips-item"
v-for="item in legendArray"
:key="item.optionValue">
<img class="title-icon"
:src="item.url" />
<div class="map-tips-label">{{item.optionLabel}}</div>
</div>
<img class="title-icon"
:src="item.url" />
<div class="map-tips-label">{{item.optionLabel}}</div>
</div>
</div>
</cpt-card>
</div>
</cpt-card>
</div>
</template>
@ -129,6 +146,8 @@ export default {
// [1,'','','2',''],
],
value2: '',
selectAgency: '',
propTree: [],
visibleLoading: true,
pageNo: 1,
pageSize: 10,
@ -163,12 +182,13 @@ export default {
},
async mounted () {
await nextTick(100);
this.getPie()
await this.getAgencyList()
this.getPie(this.$store.state.user.agencyId)
// this.initCharts()
// this.initCount()
await this.getWorkUserInfo()
await this.getMapUnitList()
await this.getMapUnitList(this.$store.state.user.agencyId)
},
methods: {
initCharts (total, data) {
@ -286,12 +306,12 @@ export default {
option && _charts.setOption(option);
},
async getPie () {
async getPie (agencyId) {
const url = "/data/report/heart/demand/volunteer/service";
// let params = {
// agencyId: this.$store.state.user.agencyId,
// };
const { data, code, msg } = await requestPost(url);
let params = {
agencyId,
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
console.log('data-ddd', data)
this.vInfo = data
@ -317,7 +337,7 @@ export default {
}, {
name: '居民数量',
value: data.resiServiceTotal,
temStyle: {
itemStyle: {
color: 'rgba(250, 193, 38, 1)'
}
}]
@ -331,6 +351,55 @@ export default {
this.$message.error(msg)
}
},
async getAgencyList() {
// const url = "/gov/org/customeragency/staffinagencylist";
// const url = '/gov/org/customeragency/agencygridtree'
const url = '/gov/org/customeragency/staffinagencylist'
// let params = {
// agencyId: this.$store.state.user.agencyId,
// };
const { data, code, msg } = await requestPost(url);
if (code === 0) {
console.log('data-org----o', data)
let { agencyList, subAgencyList } = data
this.selectAgency = [`${agencyList.agencyId}-${agencyList.level}`]
let arr = []
agencyList.subAgencyList = subAgencyList
arr.push(agencyList)
this.propTree = arr && this.getTreeData(arr)
} else {
this.$message.error(msg)
}
},
getTreeData(data){
if (!Array.isArray(data)) return []
let arr = data.map(item => {
let _item = {}
if (item.subAgencyList) {
if (item.subAgencyList.length === 0) {
_item = {
label: item.agencyName,
value: item.agencyId + '-' + item.level,
level: item.level,
children: undefined
}
} else _item = {
label: item.agencyName,
value: item.agencyId + '-' + item.level,
level: item.level,
children: this.getTreeData(item.subAgencyList)}
} else {
_item = {
label: item.agencyName,
value: item.agencyId + '-' + item.level,
level: item.level,
}
}
return _item
})
return arr
},
//
pageSizeChangeHandleNew (val) {
this.pageNo = 1;
@ -370,12 +439,13 @@ export default {
//
async getMapUnitList () {
async getMapUnitList (agencyId) {
const url = "/epmetuser/volunteer/distribution"
// const url = "http://yapi.elinkservice.cn/mock/245/heart/icpartyunit/distribution"
let params = {
customerId: this.$store.state.user.customerId
customerId: this.$store.state.user.customerId,
agencyId
}
const { data, code, msg } = await requestPost(url, params)
@ -427,7 +497,17 @@ export default {
},
handleCascader(val) {
console.log('val-vvv', val)
if (val.length > 0) {
const _arr = val[val.length - 1].split('-')
const orgType = _arr[1] !== 'grid' ? 'agency': 'grid'
// this.getServicePie(_arr[0], orgType)
this.getPie(_arr[0])
this.getMapUnitList(_arr[0])
}
},
//
loadMap () {
if (this.isfirstInit) {
@ -534,7 +614,10 @@ export default {
></style>
<style lang="scss" scoped>
.warning-box {
display: flex;
// display: flex;
.box-wr {
display: flex;
}
.card-wr {
flex: 1;
}
@ -547,6 +630,7 @@ export default {
display: flex;
align-items: center;
cursor: pointer;
margin-bottom: 10px;
.title-icon {
display: block;
width: 36px;
@ -557,6 +641,20 @@ export default {
.title-label {
font-size: 16px;
font-weight: 800;
::v-deep .el-input {
width: 180px;
.el-input__inner {
font-size: 20px;
font-weight: 800;
color: #fff;
background: transparent;
border: 0;
}
.el-icon-arrow-down::before {
content: "\e790";
}
}
}
::v-deep .el-dropdown {
font-size: 16px;

Loading…
Cancel
Save