Browse Source

修改对接页面

v1.1
战立标 2 years ago
parent
commit
755cc83bfd
  1. 7
      src/App.vue
  2. 144
      src/views/dataBoard/cpts/sjkb-map/index.vue
  3. 167
      src/views/dataBoard/overview/components/DemandCharts.vue
  4. 169
      src/views/dataBoard/overview/components/DemandCharts2.vue
  5. 10
      src/views/dataBoard/overview/components/EventDetail.vue
  6. 87
      src/views/dataBoard/overview/components/MapDialog/CommunityList.vue
  7. 196
      src/views/dataBoard/overview/components/MapDialog/DisputeDispatch.vue
  8. 36
      src/views/dataBoard/overview/components/MapDialog/List12345.vue
  9. 104
      src/views/dataBoard/overview/components/MapDialog/SatisfactionList.vue
  10. 15
      src/views/dataBoard/overview/components/MapDialog/index.vue
  11. 212
      src/views/dataBoard/overview/components/MapResourceInfo.vue
  12. 223
      src/views/dataBoard/overview/components/MapResourceInfoMore.vue
  13. 4
      src/views/dataBoard/overview/components/RequirementList.vue
  14. 9
      src/views/dataBoard/overview/components/map-top.vue
  15. 8
      src/views/dataBoard/overview/components/wtqd.vue
  16. 58
      src/views/dataBoard/overview/dissatisfiedProblemNumber/12345Hotline.vue
  17. 68
      src/views/dataBoard/overview/dissatisfiedProblemNumber/provinceSatisfaction.vue
  18. 65
      src/views/dataBoard/overview/dissatisfiedProblemNumber/selfInspect.vue
  19. 122
      src/views/dataBoard/overview/index.vue
  20. 187
      src/views/dataBoard/satisfactionEval/dissatisfieReason/detail.vue
  21. 28
      src/views/dataBoard/satisfactionEval/dissatisfieReason/index.vue
  22. 295
      src/views/dataBoard/satisfactionEval/dissatisfied/detail.vue

7
src/App.vue

@ -241,7 +241,12 @@ export default {
.selectPopClass {
border: none !important;
background: linear-gradient(180deg, #05326e 0%, #032a5d 100%) !important;
.el-autocomplete-suggestion li{
color: #fff!important;
&:hover {
background: rgba(#409eff, .5)!important;
}
}
.el-select-dropdown__item {
color: #fff !important;
background: #05326e !important;

144
src/views/dataBoard/cpts/sjkb-map/index.vue

@ -34,6 +34,8 @@ let searchBgLayer;
let numMarker;
let pointMarker;
let numPointMarker;
let numPointMarker2;
let numPointMarker1;
export default {
name: "l7",
@ -342,7 +344,6 @@ export default {
} else if (mapType == "tdzw") {
this.iniMapBase2(scene);
}
this.iniMapGrid(scene);
// this.iniMapDot(scene);
// this.iniMapDot2(scene);
@ -418,7 +419,6 @@ export default {
iniMapGrid(scene) {
const {darkStyle, lightStyle, polygonData, polygonDotData} = this;
let styleConfig = darkStyle;
if (this.mapStyleType == "light") {
styleConfig = lightStyle;
@ -586,6 +586,13 @@ export default {
if (numPointMarker) {
scene.removeMarkerLayer(numPointMarker);
}
if (numPointMarker1) {
scene.removeLayer(numPointMarker1);
}
if (numPointMarker2) {
scene.removeLayer(numPointMarker2);
}
},
iniMapDot(scene) {
@ -681,8 +688,10 @@ export default {
//
zoomInABit() {
let current = scene.getZoom();
scene.setZoomAndCenter(current + 0.5);
if (scene) {
let current = scene.getZoom();
scene.setZoomAndCenter(current + 0.5);
}
},
shiftMapStyle(type) {
@ -876,28 +885,93 @@ export default {
scene.addMarkerLayer(numMarker);
},
/* setNumpoint(data) {
this.clearMarkert();
numPointMarker = new MarkerLayer({
name: "numpoinMarker",
});
for (let i in data) {
for (let j in data[i].data) {
if (data[i].data[j].num > 0) {
var el = document.createElement("div");
el.innerText = data[i].data[j].num
el.className = "label-number-point-class";
el.classList.add(data[i].data[j].type);
el.onclick=
function(e) {
e.stopPropagation()
}
// el.textContent = data[i].peopleType+''+data[i].personnelNum;
console.log(data[i].data[j])
const numPointMarkerItem = new Marker({
offsets: data[i].data[j].offsets,
element: el,
}).setLnglat([data[i].data[j].longitude * 1, data[i].data[j].latitude * 1]);
numPointMarkerItem.on("click", (e) => {
console.log(e,'sssddeeee')
this.$emit('showMapDialog',e)
// this.$router.push(`/homeDetails/index?id=${data[i].id}&typeB=${peopleType}`);
});
numPointMarker.addMarker(numPointMarkerItem);
}
}
}
scene.addMarkerLayer(numPointMarker);
},*/
setNumpoint(data) {
this.clearMarkert();
numPointMarker = new MarkerLayer({
name: "numpoinMarker",
});
for (let i in data) {
var el = document.createElement("div");
el.className = "label-number-point-class";
el.classList.add(data[i].type);
// el.textContent = data[i].peopleType+''+data[i].personnelNum;
const numPointMarkerItem = new Marker({
offsets: [0, 0],
element: el,
}).setLnglat([data[i].longitude * 1, data[i].latitude * 1]);
let popup;
numPointMarkerItem.on("click", () => {
this.$router.push(`/homeDetails/index?id=${data[i].id}&typeB=${peopleType}`);
});
numPointMarker.addMarker(numPointMarkerItem);
if (!scene.hasImage('rsources')) {
scene.addImage('rsources', require('@/assets/images/overview/map_num_green.png'));
scene.addImage('services', require('@/assets/images/overview/map_num_red.png'));
scene.addImage('events', require('@/assets/images/overview/map_num_blue.png'));
scene.addImage('problems', require('@/assets/images/overview/map_num_orange.png'));
}
scene.addMarkerLayer(numPointMarker);
let pointData = data.map(item => item.data)
pointData = pointData.reduce((a, b) => a.concat(b), []);
pointData = pointData.filter(item => item.num > 0)
console.log(pointData, 'pointData')
numPointMarker1 = new PointLayer({
name: 'numPointMarker1',
zIndex: 20,
})
.source(pointData, {
parser: {
type: 'json',
x: 'longitude',
y: 'latitude'
}
})
.shape('type', (type) => {
console.log(type,'type')
return type
})
.size(36);
scene.addLayer(numPointMarker1);
numPointMarker2 = new PointLayer({
name: 'numPointMarker2',
zIndex: 21,
}).source(pointData, {
parser: {
type: 'json',
x: 'longitude',
y: 'latitude'
}
})
.shape('num', 'text')
.color('#fff')
.size(24)
.style({
textOffset: [0, 7],
fontWeight: "bold"
})
scene.addLayer(numPointMarker2);
numPointMarker1.on("click", (e) => {
console.log(e, 'imageLayer')
this.$emit('showMapDialog',e.feature)
})
// scene.addMarkerLayer(numPointMarker);
},
async setDotMarker(item, posArr) {
@ -1148,24 +1222,32 @@ export default {
}
/deep/ .label-number-point-class {
font-size: 24px;
font-weight: bold;
display: flex !important;
align-items: center;
justify-content: center;
width: 50px;
height: 76px;
background-repeat: no-repeat;
padding-bottom: 30px;
text-align: center;
font-size: 24px;
font-weight: bold;
color: #FFFFFF;
&.green {
background-repeat: no-repeat;
&.rsources {
background-image: url("@/assets/images/overview/map_num_green.png");
}
&.blue {
&.services {
background-image: url("@/assets/images/overview/map_num_blue.png");
}
&.red {
&.events {
background-image: url("@/assets/images/overview/map_num_red.png");
}
&.orange {
background-image: url("@/assets/images/overview/map_num_blue.png");
&.problems {
background-image: url("@/assets/images/overview/map_num_orange.png");
}
}

167
src/views/dataBoard/overview/components/DemandCharts.vue

@ -45,94 +45,97 @@ export default {
},
initChart() {
let div = document.getElementById('DemandCharts');
this.myChart = echarts.init(div);
var getname = ['健康知识专业讲座', '未成年人兴趣培养', '老年人现代智能···', '老年群体的心理···', '配合社区安全巡···', '其他']; //
var getNum = [8, 9, 16, 21, 26, 62];
this.$http.post('/governance/userdemand/countByCategory').then(({data:{data}}) => {
let div = document.getElementById('DemandCharts');
this.myChart = echarts.init(div);
var getname = data.map(item => item.categoryName); //
var getNum = data.map(item => item.cateTotal);
var totals = eval(getNum.join('+'))
var data = [];
for (var i = 0; i < getname.length; i++) {
data.push({name: getname[i], value: getNum[i]})
}
const color = ['#16A7EB', '#5974FF', '#04C790', '#FFAA01', '#FF6701', '#EF3B00']
var data = [];
for (var i = 0; i < getname.length; i++) {
data.push({name: getname[i], value: getNum[i]})
}
const color = ['#16A7EB', '#5974FF', '#04C790', '#FFAA01', '#FF6701', '#EF3B00']
var option = {
color,
tooltip: {
trigger: "item"
},
legend: {
type: "plain",
orient: "vertical",
right: 0,
top: "center",
align: "left",
itemGap: 10,
itemWidth: 8,
itemHeight: 8,
symbolKeepAspect: false,
selectedMode: false,
formatter: function (name) {
for (var i = 0; i < getname.length; i++) {
if (name == data[i].name) {
return '{name|' + name + '}{num|' + getNum[i] + '人}'
}
}
var option = {
color,
tooltip: {
trigger: "item"
},
textStyle: {
rich: {
name: {
fontSize: 12,
width: 96,
overflow: 'hidden',
textOverflow: 'ellipsis',
padding: [0, 29, 0, 5],
color: '#A3B9DA',
},
num: {
fontSize: 12,
fontWeight: 500,
align: 'right',
color: '#FFFFFF',
legend: {
type: "plain",
orient: "vertical",
right: 0,
top: "center",
align: "left",
itemGap: 10,
itemWidth: 8,
itemHeight: 8,
symbolKeepAspect: false,
selectedMode: false,
formatter: function (name) {
for (var i = 0; i < getname.length; i++) {
if (name == data[i].name) {
name = name.length > 8?name.slice(0,7)+'...':name;
return '{name|' + name + '}{num|' + getNum[i] + '人}'
}
}
}
}
},
series: [{
name: '',
type: "pie",
radius: ["65%", "90%"],
center: ["20%", "50%"],
avoidLabelOverlap: false,
label: {
show: true,
position: "center",
color: "rgba(13, 17, 29,0)",
formatter: `{primary|${3289}}\n{point|总数}`,
rich: {
primary: {
fontSize: 24,
color: '#7FCEFF',
align: 'center'
},
point: {
fontSize: 12,
fontWeight: 400,
color: "#A3B9DA",
align: 'center'
},
textStyle: {
rich: {
name: {
fontSize: 12,
width: 96,
overflow: 'hidden',
textOverflow: 'ellipsis',
padding: [0, 29, 0, 5],
color: '#A3B9DA',
},
num: {
fontSize: 12,
fontWeight: 500,
align: 'right',
color: '#FFFFFF',
}
}
}
},
labelLine: {
show: false
},
data: data,
zlevel: 30
}]
};
this.myChart.setOption(option, true);
window.addEventListener("resize", () => this.myChart.resize());
series: [{
name: '',
type: "pie",
radius: ["65%", "90%"],
center: ["20%", "50%"],
avoidLabelOverlap: false,
label: {
show: true,
position: "center",
color: "rgba(13, 17, 29,0)",
formatter: `{primary|${totals}}\n{point|总数}`,
rich: {
primary: {
fontSize: 24,
color: '#7FCEFF',
align: 'center'
},
point: {
fontSize: 12,
fontWeight: 400,
color: "#A3B9DA",
align: 'center'
}
}
},
labelLine: {
show: false
},
data: data,
zlevel: 30
}]
};
this.myChart.setOption(option, true);
window.addEventListener("resize", () => this.myChart.resize());
})
}
}
}

169
src/views/dataBoard/overview/components/DemandCharts2.vue

@ -0,0 +1,169 @@
<template>
<div class="charts">
<el-select v-model="date" class="select" placeholder="请选择" popper-class="selectPopClass" @change="timeChange">
<el-option v-for="item in dateList" :key="item.value" :label="item.label" :value="item.value"/>
</el-select>
<div id="DemandCharts2"></div>
</div>
</template>
<script>
import * as echarts from "echarts";
export default {
name: "DemandCharts2",
props: {
data: {
type: Array,
default: () => []
}
},
data() {
return {
dateList: [{
label: '上月',
value: 1
}, {
label: '近三个月',
value: 2
}, {
label: '近半年',
value: 3
}, {
label: '近一年',
value: 4
}],
date: 4
}
},
mounted() {
this.initChart();
},
methods: {
timeChange() {
},
initChart() {
this.$http.post('/governance/commonDemand/countByCategory').then(({data:{data}}) => {
let div = document.getElementById('DemandCharts2');
this.myChart = echarts.init(div);
var getname = data.map(item => item.categoryName); //
var getNum = data.map(item => item.cateTotal);
var totals = eval(getNum.join('+'))
var data = [];
for (var i = 0; i < getname.length; i++) {
data.push({name: getname[i], value: getNum[i]})
}
const color = ['#16A7EB', '#5974FF', '#04C790', '#FFAA01', '#FF6701', '#EF3B00']
var option = {
color,
tooltip: {
trigger: "item"
},
legend: {
type: "plain",
orient: "vertical",
right: 0,
top: "center",
align: "left",
itemGap: 10,
itemWidth: 8,
itemHeight: 8,
symbolKeepAspect: false,
selectedMode: false,
formatter: function (name) {
for (var i = 0; i < getname.length; i++) {
if (name == data[i].name) {
name = name.length > 8?name.slice(0,7)+'...':name;
return '{name|' + name + '}{num|' + getNum[i] + '人}'
}
}
},
textStyle: {
rich: {
name: {
fontSize: 12,
width: 96,
overflow: 'hidden',
textOverflow: 'ellipsis',
padding: [0, 29, 0, 5],
color: '#A3B9DA',
},
num: {
fontSize: 12,
fontWeight: 500,
align: 'right',
color: '#FFFFFF',
}
}
}
},
series: [{
name: '',
type: "pie",
radius: ["65%", "90%"],
center: ["20%", "50%"],
avoidLabelOverlap: false,
label: {
show: true,
position: "center",
color: "rgba(13, 17, 29,0)",
formatter: `{primary|${totals}}\n{point|总数}`,
rich: {
primary: {
fontSize: 24,
color: '#7FCEFF',
align: 'center'
},
point: {
fontSize: 12,
fontWeight: 400,
color: "#A3B9DA",
align: 'center'
}
}
},
labelLine: {
show: false
},
data: data,
zlevel: 30
}]
};
this.myChart.setOption(option, true);
window.addEventListener("resize", () => this.myChart.resize());
})
}
}
}
</script>
<style lang="scss" scoped>
/deep/ .el-input__inner {
width: 90px !important;
height: 24px !important;
color: #a0cdff;
border: 1px solid #125aaa !important;
border-radius: 12px !important;
background: #021c49 !important;
}
/deep/ .el-input__icon {
line-height: 24px !important;
color: #a0cdff;
}
.charts {
display: flex;
justify-content: space-between;
#DemandCharts2 {
flex: calc(100% - 100px);
width: calc(100% - 100px);
height: 150px;
}
}
</style>

10
src/views/dataBoard/overview/components/EventDetail.vue

@ -191,9 +191,14 @@
</div>
</el-dialog>
<ResourceScheduling ref="ResourceScheduling" @handle="dispatchOrder" :currentLevelData="currentLevelData"/>
<ResourceScheduling ref="ResourceScheduling" :currentLevelData="currentLevelData" @handle="dispatchOrder"/>
<Supervision ref="supervision" :currentLevelData="currentLevelData"/>
<EventDispatchOrder ref="EventDispatchOrder" v-if="isEventDispatchOrder" @ok="handleSure" @close="isEventDispatchOrder = false"/>
<EventDispatchOrder
v-if="isEventDispatchOrder"
ref="EventDispatchOrder"
@close="isEventDispatchOrder = false"
@ok="handleSure"
/>
</div>
</template>
@ -205,7 +210,6 @@ import Supervision from "@/views/dataBoard/overview/components/Supervision.vue";
import EventDispatchOrder from "@/views/dataBoard/overview/components/EventDispatchOrder.vue";
export default {
name: "EventDetail",
components: {

87
src/views/dataBoard/overview/components/MapDialog/CommunityList.vue

@ -3,29 +3,39 @@
<div class="table">
<el-table v-loading="loading" :data="list" height="600px"
element-loading-background="rgba(0, 0, 0, 0.3)">
<el-table-column label="序号" type="index" width="80"/>
<el-table-column label="月度" prop="key" width="100"/>
<el-table-column label="所属社区" prop="key" width="150"/>
<el-table-column label="文化设施" prop="key" width="150"/>
<el-table-column label="体育设施" prop="key" width="150"/>
<el-table-column label="生态环境" prop="key" width="150"/>
<el-table-column label="社会治安" prop="key" width="150"/>
<el-table-column label="社会救助" prop="key" width="150"/>
<el-table-column label="老有所养" prop="key" width="150"/>
<el-table-column label="基础教育" prop="key" width="150"/>
<el-table-column label="病有所医" prop="key" width="150"/>
<el-table-column label="提交时间" prop="key" width="150"/>
<el-table-column label="姓名" prop="key" width="100"/>
<el-table-column label="电话" prop="mobile" width="100">
<el-table-column label="月度" prop="periodStart" width="100"/>
<el-table-column label="所属社区" prop="agencyName" width="200"/>
<el-table-column :formatter="(row) => row.evaCulturalFacility === 'veryGood' ? '满意' : '不满意'" label="文化设施" prop="evaCulturalFacility"
width="150"/>
<el-table-column :formatter="(row) => row.evaSportsFacility === 'veryGood' ? '满意' : '不满意'" label="体育设施" prop="evaSportsFacility"
width="150"/>
<el-table-column :formatter="(row) => row.evaEcologicalEnv === 'veryGood' ? '满意' : '不满意'" label="生态环境" prop="evaEcologicalEnv"
width="150"/>
<el-table-column :formatter="(row) => row.evaSocialSecurity === 'veryGood' ? '满意' : '不满意'" label="社会治安" prop="evaSocialSecurity"
width="150"/>
<el-table-column :formatter="(row) => row.evaSocialAssistance === 'veryGood' ? '满意' : '不满意'" label="社会救助" prop="evaSocialAssistance"
width="150"/>
<el-table-column :formatter="(row) => row.evaOldPeopleProvide === 'veryGood' ? '满意' : '不满意'" label="老有所养" prop="evaOldPeopleProvide"
width="150"/>
<el-table-column :formatter="(row) => row.evaBasicEducation === 'veryGood' ? '满意' : '不满意'" label="基础教育" prop="evaBasicEducation"
width="150"/>
<el-table-column :formatter="(row) => row.evaMedical === 'veryGood' ? '满意' : '不满意'" label="病有所医" prop="evaMedical"
width="150"/>
<el-table-column label="提交时间" prop="createdTime" width="200"/>
<el-table-column label="姓名" prop="reporterName" width="100"/>
<el-table-column label="电话" min-width="120" prop="reporterMobile">
<template slot-scope="scope">
{{ $sensitive(scope.row.mobile, 3, 7) }}
{{ $sensitive(scope.row.reporterMobile, 3, 7) }}
</template>
</el-table-column>
<el-table-column label="是否回访" prop="key" width="150"/>
<el-table-column label="消除风险" prop="key" width="150"/>
<el-table-column label="操作" prop="op" width="250">
<template slot-scope="scope">
<span class="view" @click="handleViews(scope.row)">查看</span>
<el-table-column label="是否回访" prop="followUpStatus" width="150" :formatter="(row) => row.followUpStatus === -1?'否':'是'"/>
<el-table-column label="消除风险" prop="dangerFlag" width="150"/>
<el-table-column label="操作" width="120">
<template slot-scope="{ row }">
<span class="view" @click="handleView(row)">查看</span>
</template>
</el-table-column>
</el-table>
@ -36,36 +46,65 @@
:total="total"
@pagination="getList"
/>
<dissatisfieReasonDetail ref="detail" />
</div>
</div>
</template>
<script>
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import dissatisfieReasonDetail from "@/views/dataBoard/satisfactionEval/dissatisfieReason/detail.vue";
export default {
name: "CommunityList",
components: {Pagination},
components: {Pagination,dissatisfieReasonDetail},
props: {
catVal: {
type: [String, Number],
default: ""
},
currentLevelData: {
type: Object,
default: () =>{}
}
},
data() {
return {
total: 10,
queryParams: {},
queryParams: {
pageNo: 1,
pageSize: 10,
},
list: [],
loading: false,
rowId: "",
loading: true
}
},
watch: {
catVal() {
this.getList()
}
},
mounted() {
this.getList();
},
methods: {
getList() {
this.loading = true
let params = {
...this.queryParams,
agencyId: this.currentLevelData.orgId,
secondIdList:[this.catVal]
}
this.$http.get("/governance/satisfaction/communitySelfInsp/inspResult/list?" + this.$paramsFormat(params)).then(({data: {data}}) => {
this.list = data.list;
this.total = data.total;
this.loading = false
});
},
handleView({id}) {
this.id = id;
this.$refs.detail.open(id);
},
}
}

196
src/views/dataBoard/overview/components/MapDialog/DisputeDispatch.vue

@ -1,53 +1,155 @@
<template>
<div>
<Tabs v-model="type" :list="typeList" @changeVal="typeChange"/>
<div class="table">
<div class="table" v-if="type === '4'">
<el-table v-loading="loading" :data="list" element-loading-background="rgba(0, 0, 0, 0.3)"
height="250px">
<el-table-column label="资源类型" prop="key"/>
<el-table-column label="所属网格" prop="key"/>
<el-table-column label="姓名/名称" prop="key"/>
<el-table-column label="联系电话" prop="key"/>
<el-table-column label="状态" prop="name"/>
<el-table-column label="距离" prop="name"/>
<el-table-column label="资源类型" min-width="120" prop="personnelType">
<template slot-scope="{row}">
社区自组织
</template>
</el-table-column>
<el-table-column label="所属组织" min-width="180" prop="agencyName"/>
<el-table-column label="负责人" min-width="120" prop="principalName"/>
<el-table-column label="联系电话" min-width="120" prop="principalPhone">
<template slot-scope="scope">
{{ $sensitive(scope.row.principalPhone, 3, 7) }}
</template>
</el-table-column>
<!-- <el-table-column label="状态" prop="name"/>-->
<!-- <el-table-column label="距离" prop="name"/>-->
<el-table-column label="操作" prop="op" width="250">
<template slot-scope="scope">
<CallPhone text="拨打电话"/>
<span class="view" @click="handleViews(scope.row)">查看</span>
</template>
</el-table-column>
</el-table>
<Pagination
v-show="total > 0"
:limit.sync="queryParams.pageSize"
:page.sync="queryParams.pageNo"
:total="total"
@pagination="getList"
@pagination="pageChange"
/>
</div>
<div class="table" v-if="type === '5'">
<el-table v-loading="loading" :data="list" element-loading-background="rgba(0, 0, 0, 0.3)"
height="250px">
<el-table-column label="资源类型" min-width="120" prop="personnelType">
<template slot-scope="{row}">
联建单位
</template>
</el-table-column>
<el-table-column label="所属组织" min-width="180" prop="agencyName"/>
<el-table-column label="联系人" min-width="120" prop="contact"/>
<el-table-column label="联系电话" min-width="120" prop="contactMobile">
<template slot-scope="scope">
{{ $sensitive(scope.row.contactMobile, 3, 7) }}
</template>
</el-table-column>
<!-- <el-table-column label="状态" prop="name"/>-->
<!-- <el-table-column label="距离" prop="name"/>-->
<el-table-column label="操作" prop="op" width="250">
<template slot-scope="scope">
<CallPhone text="拨打电话"/>
<span class="view" @click="handleViews(scope.row)">查看</span>
</template>
</el-table-column>
</el-table>
<Pagination
v-show="total > 0"
:limit.sync="queryParams.pageSize"
:page.sync="queryParams.pageNo"
:total="total"
@pagination="pageChange"
/>
</div>
<div class="table" v-if="type !== '4' && type !== '5'">
<el-table v-loading="loading" :data="list" element-loading-background="rgba(0, 0, 0, 0.3)"
height="250px">
<el-table-column label="资源类型" min-width="120" prop="personnelType">
<template slot-scope="{row}">
{{
row.personnelType ? typeList.filter(item => item.value === row.personnelType)[0].label : ''
}}
</template>
</el-table-column>
<el-table-column label="所属组织" min-width="180" prop="orgName"/>
<el-table-column label="姓名/名称" min-width="120" prop="name"/>
<el-table-column label="联系电话" min-width="120" prop="mobile">
<template slot-scope="scope">
{{ $sensitive(scope.row.mobile, 3, 7) }}
</template>
</el-table-column>
<!-- <el-table-column label="状态" prop="name"/>-->
<!-- <el-table-column label="距离" prop="name"/>-->
<el-table-column label="操作" prop="op" width="250">
<template slot-scope="scope">
<CallPhone text="拨打电话"/>
<span class="view" @click="handleViews(scope.row)">查看</span>
</template>
</el-table-column>
</el-table>
<Pagination
v-show="total > 0"
:limit.sync="queryParams.pageSize"
:page.sync="queryParams.pageNo"
:total="total"
@pagination="pageChange"
/>
</div>
</div>
</template>
<script>
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import Tabs from "@/views/dataBoard/satisfactionEval/components/Tabs/index.vue";
import CallPhone from "@/views/dataBoard/cpts/CallPhone";
export default {
name: "DisputeDispatch",
components: {Pagination, Tabs},
components: {Pagination, Tabs, CallPhone},
props: {
currentLevelData: {
type: Object,
default: () => {
}
},
catVal: {
type: [String,Number],
default: ""
}
},
watch: {
catVal() {
this.typeChange(this.type)
}
},
data() {
return {
total: 10,
queryParams: {},
type: "1",
total: 0,
queryParams: {
pageSize: 5,
pageNo: 1,
},
type: "staffGrid",
list: [],
loading: false,
typeList: [
{
label: "网格员",
value: "1",
value: "staffGrid",
},
{
label: "公益岗",
value: "2",
value: "publicWelfareNum",
},
{
label: "志愿者",
value: "3",
value: "volunteer",
},
{
label: "社区自组织",
@ -57,25 +159,79 @@ export default {
label: "联建单位",
value: "5",
},
/* {
label: "15分钟生活圈商家",
value: "6",
},*/
],
}
},
mounted() {
this.getList()
},
methods: {
getList() {
this.loading = true;
this.$http.get("/actual/base/streetOverview/queryPersonnelGroup" +
"?level=" + this.currentLevelData.orgLevel +
"&orgId=" + this.currentLevelData.orgId +
"&personnelType=" + this.type)
.then(({data: {data}}) => {
this.loading = false;
this.list = data.personnelInfoVOList;
});
},
typeChange() {
getZzzList() {
this.loading = true;
this.$http.post('/actual/base/iccommunityselforganization/communityselforganizationlist', {
agencyId: this.currentLevelData.orgId,
...this.queryParams
}).then(res => {
this.loading = false;
this.list = res.data.data.list;
this.total = res.data.data.total;
})
},
getLjdwList() {
this.loading = true;
this.$http.post('/actual/base/icpartyunit/list', {
agencyId: this.currentLevelData.orgId,
serviceMatter: this.catVal,
...this.queryParams
}).then(res => {
this.loading = false;
this.list = res.data.data.list;
this.total = res.data.data.total;
})
},
pageChange() {
if (this.type === '4') {
this.getZzzList();
} else if (this.type === '5') {
this.getLjdwList();
} else {
this.getList()
}
},
typeChange(val) {
this.type = val
this.total = 0;
this.queryParams.pageNo = 1
if (val === '4') {
this.getZzzList();
} else if (val === '5') {
this.getLjdwList();
} else {
this.getList()
}
}
}
}
</script>
<style scoped lang="scss">
<style lang="scss" scoped>
@import "@/assets/scss/dataBoard/table2.scss";
.table {
margin-top: 20px;
}

36
src/views/dataBoard/overview/components/MapDialog/List12345.vue

@ -18,7 +18,7 @@
<el-table-column label="操作" prop="op" width="250">
<template slot-scope="scope">
<CallPhone text="拨打电话"/>
<span class="handle">处理</span>
<span class="handle" @click="handleDispatch(row)">处理</span>
<span class="view" @click="handleViews(scope.row)">查看</span>
</template>
</el-table-column>
@ -38,6 +38,8 @@
@close="showDialog = false"
@ok="getList"
/>
<EventDispatchOrder v-if="isEventDispatchOrder" ref="EventDispatchOrder" @close="isEventDispatchOrder = false"
@ok="handleSure"/>
</div>
</template>
@ -46,10 +48,11 @@ import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination
import CallPhone from "@/views/dataBoard/cpts/CallPhone";
import EventDetails from "@/views/dataBoard/overview/components/EventDetail.vue";
import EventDispatchOrder from "@/views/dataBoard/overview/components/EventDispatchOrder.vue";
export default {
name: "List12345",
components: {Pagination,CallPhone,EventDetails},
components: {Pagination,CallPhone,EventDetails,EventDispatchOrder},
props: {
catVal: {
type: [String,Number],
@ -72,16 +75,45 @@ export default {
},
list: [],
loading: false,
isEventDispatchOrder: false
}
},
watch: {
catVal() {
this.getList()
}
},
mounted() {
this.getList()
},
methods: {
handleSure() {
this.queryParams.pageNo = 1;
this.getList();
},
handleDispatch({icEventId}) {
this.$http
.post("/governance/icEvent/detail", {icEventId: icEventId})
.then((res) => {
const {code, data, msg} = res.data;
if (code === 0) {
this.loading = false;
this.isEventDispatchOrder = true
this.$nextTick(() => {
this.$refs.EventDispatchOrder.open(data || {});
})
} else {
this.loading = false;
this.$message.error(msg);
}
});
},
getList() {
this.loading = true;
let params = {
...this.queryParams,
agencyId:this.currentLevelData.orgId,
secondIdList:[this.catVal]
}
this.$http.post("/governance/icEvent/list",params).then(({data: {data}}) => {

104
src/views/dataBoard/overview/components/MapDialog/SatisfactionList.vue

@ -1,26 +1,35 @@
<template>
<div>
<div class="table">
<el-table v-loading="loading" :data="list" height="600px"
element-loading-background="rgba(0, 0, 0, 0.3)">
<el-table v-loading="loading" :data="list" element-loading-background="rgba(0, 0, 0, 0.3)"
height="600px">
<el-table-column label="序号" type="index" width="80"/>
<el-table-column label="月度" prop="key" width="100"/>
<el-table-column label="所属社区" prop="key" width="150"/>
<el-table-column label="事项来源" prop="key" width="150"/>
<el-table-column label="问题" prop="key" width="220"/>
<el-table-column label="提交时间" prop="key" width="150"/>
<el-table-column label="姓名" prop="key" width="100"/>
<el-table-column label="电话" prop="mobile" width="100">
<el-table-column label="月度" prop="month"/>
<el-table-column label="所属社区" prop="organizationName"/>
<el-table-column label="事项来源" prop="satisfactionSource">
<template slot-scope="{ row }">
<span
:style="{
color: satisfactionSourceFormat(row.satisfactionSource).color,
}">
{{ satisfactionSourceFormat(row.satisfactionSource).label }}
</span>
</template>
</el-table-column>
<el-table-column label="问题" prop="reason"/>
<el-table-column label="提交时间" prop="createdTime"/>
<el-table-column label="姓名" prop="name"/>
<el-table-column label="电话" prop="mobile">
<template slot-scope="scope">
{{ $sensitive(scope.row.mobile, 3, 7) }}
</template>
</el-table-column>
<el-table-column label="是否完成" prop="key" width="150"/>
<el-table-column label="消除风险" prop="key" width="150"/>
<el-table-column label="状态" prop="name" width="120"/>
<el-table-column label="操作" prop="op" width="250">
<template slot-scope="scope">
<span class="view" @click="handleViews(scope.row)">查看</span>
<el-table-column label="是否完成" prop="completeFlag"/>
<el-table-column label="消除风险" prop="dangerFlag"/>
<el-table-column label="操作" sortable>
<template slot-scope="{ row }">
<span class="view" @click="handleView(row)">查看</span>
</template>
</el-table-column>
</el-table>
@ -31,36 +40,91 @@
:total="total"
@pagination="getList"
/>
<DissatisfiedDetail :id="id" ref="detail"/>
</div>
</div>
</template>
<script>
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import DissatisfiedDetail from "@/views/dataBoard/satisfactionEval/dissatisfied/detail.vue";
export default {
name: "SatisfactionList",
components: {Pagination},
components: {Pagination, DissatisfiedDetail},
props: {
catVal: {
type: [String,Number],
type: [String, Number],
default: ""
},
currentLevelData: {
type: Object,
default: () => {
},
}
},
data() {
return {
total: 10,
queryParams: {},
id: "",
queryParams: {
pageNo: 1,
pageSize: 10,
satisfactionSource: "satisfaction_province"
},
list: [],
loading: false,
satisfactionSourceOptions: [
{
value: "satisfaction_12345",
label: "12345投诉",
color: "#FFB73C",
},
{
value: "satisfaction_province",
label: "满意度调查",
color: "#64C1FF",
},
{
value: "satisfaction_community",
label: "社区满意度自查",
color: "#08EBAE",
},
],
}
},
watch: {
catVal() {
this.getList()
}
},
mounted() {
this.getList()
},
methods: {
handleView({id}) {
this.id = id;
this.$refs.detail.open(id);
},
getList() {
this.loading = true
let params = {
...this.queryParams,
agencyId: this.currentLevelData.orgId,
secondIdList: [this.catVal]
}
this.$http.get("/governance/satisfactionDetailList/getUnsatisfiedMattersList?" + this.$paramsFormat(params)).then(({data: {data}}) => {
this.list = data.list;
this.total = data.total;
this.loading = false
});
},
satisfactionSourceFormat(val) {
let satisfactionSource = this.satisfactionSourceOptions.filter((item) => item.value === val)[0];
return satisfactionSource ? satisfactionSource : "";
},
close() {
this.showDialog = false;
},
}
}

15
src/views/dataBoard/overview/components/MapDialog/index.vue

@ -55,8 +55,8 @@
catVal === 4 ? '超出服务范围事件列表' : ''
}}
</div>
<DifficultyCharts v-if="catVal === 1" style="margin-bottom: 56px;"/>
<DisputeDispatch v-if="catVal === 2" style="margin-bottom: 56px;"/>
<DifficultyCharts v-if="catVal === 1" :currentLevelData="currentLevelData" style="margin-bottom: 56px;"/>
<DisputeDispatch v-if="catVal === 2" :currentLevelData="currentLevelData" style="margin-bottom: 56px;"/>
<Njjwtqk :catVal="catVal"/>
</template>
@ -65,9 +65,9 @@
<img :height="18" :width="18" src="@/assets/images/manyidu/tc-title-icon.png"/>
不满意事项列表
</div>
<List12345 :currentLevelData="currentLevelData" v-if="catVal === 1" :catVal="catVal"/>
<CommunityList :currentLevelData="currentLevelData" v-if="catVal === 2" :catVal="catVal"/>
<SatisfactionList :currentLevelData="currentLevelData" v-if="catVal === 3" :catVal="catVal"/>
<List12345 :currentLevelData="currentLevelData" v-if="catVal === 1" :catVal="catValSub"/>
<CommunityList :currentLevelData="currentLevelData" v-if="catVal === 2" :catVal="catValSub"/>
<SatisfactionList :currentLevelData="currentLevelData" v-if="catVal === 3" :catVal="catValSub"/>
</template>
<template v-if="type === 'xqwwcqk'">
@ -190,6 +190,7 @@ export default {
label: 'label'
},
catVal: '',
catValSub: '',
catLabel: '',
totalCount: [],
currentLevelData: {}
@ -245,11 +246,11 @@ export default {
});
},
handleNodeClick(item) {
this.catLabel = item.label
if (this.type === "xqwwcqk") {
this.catLabel = item.label
this.catVal = item.value
} else {
this.catLabel = item.label
this.catValSub = item.value
console.log(this.getTopLevel(item.value))
this.catVal = this.getTopLevel(item.value) || item.value
}

212
src/views/dataBoard/overview/components/MapResourceInfo.vue

@ -16,33 +16,101 @@
<div class="content">
<div class="items">
<div class="label">资源类型</div>
<div class="value">联建单位</div>
</div>
<div class="items">
<div class="label">单位名称</div>
<div class="value">青岛**消毒科技有限公司</div>
</div>
<div class="items">
<div class="label">分类</div>
<div class="value">区域单位党建</div>
</div>
<div class="items">
<div class="label">服务事项</div>
<div class="value">青岛**消毒科技有限公司</div>
</div>
<div class="items">
<div class="label">联系人</div>
<div class="value">王军</div>
</div>
<div class="items">
<div class="label">联系电话</div>
<div class="value">133****8989</div>
<CallPhone icon="el-icon-phone"/>
</div>
<div class="items">
<div class="label">所在位置</div>
<div class="value">xxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
<div class="value">{{ typeList[type] }}</div>
</div>
<template v-if="type === 2 || type === 3">
<div class="items">
<div class="label">单位名称</div>
<div class="value">{{ detail.unitName }}</div>
</div>
<div class="items">
<div class="label">分类</div>
<div class="value">{{ detail.typeName }}</div>
</div>
<div class="items">
<div class="label">服务事项</div>
<div class="value">{{ detail.serviceMatterNameList ? detail.serviceMatterNameList.join('、') : '' }}</div>
</div>
<div class="items">
<div class="label">联系人</div>
<div class="value">{{ detail.contact }}</div>
</div>
<div class="items">
<div class="label">联系电话</div>
<div class="value">{{ detail.contactMobile }}</div>
<CallPhone icon="el-icon-phone"/>
</div>
<div class="items">
<div class="label">地理位置</div>
<div class="value">{{ detail.address }}</div>
</div>
</template>
<template v-if="type === 3">
<div class="items">
<div class="label">组织名称</div>
<div class="value">{{ detail.organizationName }}</div>
</div>
<div class="items">
<div class="label">分类</div>
<div class="value">{{ detail.categoryName }}</div>
</div>
<div class="items">
<div class="label">服务事项</div>
<div class="value">{{ detail.serviceItem }}</div>
</div>
<div class="items">
<div class="label">联系人</div>
<div class="value">{{ detail.principalName }}</div>
</div>
<div class="items">
<div class="label">联系电话</div>
<div class="value">{{ detail.principalPhone }}</div>
<CallPhone icon="el-icon-phone"/>
</div>
<div class="items">
<div class="label">地理位置</div>
<div class="value">{{ detail.address }}</div>
</div>
</template>
<template v-if="type === 4 || type === 5 || type === 1">
<div class="items">
<div class="label">姓名</div>
<div class="value">{{ detail.name }}</div>
</div>
<div class="items">
<div class="label">联系电话</div>
<div class="value">{{ detail.mobile }}</div>
<CallPhone icon="el-icon-phone"/>
</div>
<div class="items">
<div class="label">年龄</div>
<div class="value">{{ detail.birthday?getAgeByDateOfBirth(detail.birthday):'未知' }}</div>
</div>
<div class="items">
<div class="label">学历</div>
<div class="value">{{ education?education.cultureLevelName:'' }}</div>
</div>
<!-- <div class="items">
<div class="label">状态</div>
<div class="value">巡查中</div>
</div>-->
<div class="items">
<div class="label">所在位置</div>
<div class="value">{{ detail.houseInfo.homeName }}</div>
</div>
<div class="items">
<div class="label">兴趣爱好</div>
<div class="value">{{ hobby?hobby.hobbyRemark:'' }}</div>
</div>
</template>
<div class="btn-group">
<el-button class="sure" plain round type="warning" @click="handleSure">查看更多</el-button>
</div>
@ -65,27 +133,108 @@ export default {
data() {
return {
dialogVisible: false,
explain: ""
explain: "",
id: '',
detail: '',
type: '',
typeList: {
1: '志愿者',
2: '联建单位',
3: '社区自组织',
4: '网格员',
5: '公益岗'
},
education: '',
hobby: '',
}
},
mounted() {
},
methods: {
getAgeByDateOfBirth(dateOfBirth) {
let birthDate = this.$moment(dateOfBirth);
let age = this.$moment().diff(birthDate, 'years');
return age;
},
handleClose(done) {
this.dialogVisible = false;
},
open(id) {
open(id, type) {
console.log(id, type)
//type 12345
this.dialogVisible = true;
this.id = id
this.type = type
this.getData(type)
},
handleSure() {
this.$refs.MapResourceInfoMore.open()
}
this.$refs.MapResourceInfoMore.open({
detail: this.detail,
type: this.type,
education: this.education,
hobby: this.hobby,
})
},
getData(type) {
if (type === 1) {
this.getVolunteer()
}
if (type === 2) {
this.getCompany()
}
if (type === 3) {
this.getCommunity()
}
if (type === 4) {
this.getGridOperator()
}
if (type === 5) {
this.getVolunteer()
}
},
// 使/actual/base/icpartyunit/detail
// 使/actual/base/iccommunityselforganization/community-self-org-detail/{id}
// /actual/base/residentBaseInfo/detail/{resi-id} +
// /actual/base/residentEduInfo/detail/{resi-id} +
// /actual/base/residentHobbyInfo/detail/{resi-id}
// /data/aggregator/org/staffdetailv2 apifox
//
getVolunteer() {
this.$http.post('/actual/base/residentBaseInfo/detail/' + this.id).then(({data: {data}}) => {
this.detail = data;
})
this.$http.get('/actual/base/residentEduInfo/detail/' + this.id).then(({data: {data}}) => {
this.education = data;
})
this.$http.get('/actual/base/residentHobbyInfo/detail/' + this.id).then(({data: {data}}) => {
this.hobby = data;
})
},
getCompany() {
this.$http.post('/actual/base/icpartyunit/detail?id=' + this.id, {id: this.id}).then(({data: {data}}) => {
this.detail = data;
})
},
getCommunity() {
this.$http.post('/actual/base/iccommunityselforganization/community-self-org-detail/' + this.id).then(({data: {data}}) => {
this.detail = data;
})
},
getGridOperator() {
this.$http.post('/data/aggregator/org/staffdetailv2?staffId=' + this.id,{staffId: this.id}).then(({data: {data}}) => {
this.detail = data;
})
},
}
}
</script>
<style lang="scss" src="@/assets/scss/dataBoard/dialog-small.scss" scoped></style>
<style lang="scss" scoped src="@/assets/scss/dataBoard/dialog-small.scss"></style>
<style lang="scss" scoped>
.content {
@ -100,6 +249,7 @@ export default {
.label {
color: #9CB4D3;
white-space: nowrap;
}
.value {

223
src/views/dataBoard/overview/components/MapResourceInfoMore.vue

@ -17,10 +17,137 @@
<el-row>
<el-col :span="12">
<div class="items">
<div class="label">所属网格</div>
<div class="value">xxxx社区第一网格</div>
<div class="label">资源类型</div>
<div class="value">{{ typesList[types] }}</div>
</div>
</el-col>
<template v-if="types === 2 || types === 3">
<el-col :span="12">
<div class="items">
<div class="label">单位名称</div>
<div class="value">{{ detail.unitName }}</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">分类</div>
<div class="value">{{ detail.typeName }}</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">服务事项</div>
<div class="value">{{
detail.serviceMatterNameList ? detail.serviceMatterNameList.join('、') : ''
}}
</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">联系人</div>
<div class="value">{{ detail.contact }}</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">联系电话</div>
<div class="value">{{ detail.contactMobile }}</div>
<CallPhone icon="el-icon-phone"/>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">地理位置</div>
<div class="value">{{ detail.address }}</div>
</div>
</el-col>
</template>
<template v-if="types === 3">
<el-col :span="12">
<div class="items">
<div class="label">组织名称</div>
<div class="value">{{ detail.organizationName }}</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">分类</div>
<div class="value">{{ detail.categoryName }}</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">服务事项</div>
<div class="value">{{ detail.serviceItem }}</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">联系人</div>
<div class="value">{{ detail.principalName }}</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">联系电话</div>
<div class="value">{{ detail.principalPhone }}</div>
<CallPhone icon="el-icon-phone"/>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">地理位置</div>
<div class="value">{{ detail.address }}</div>
</div>
</el-col>
</template>
<template v-if="types === 4 || types === 5 || types === 1">
<el-col :span="12">
<div class="items">
<div class="label">姓名</div>
<div class="value">{{ detail.name }}</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">联系电话</div>
<div class="value">{{ detail.mobile }}</div>
<CallPhone icon="el-icon-phone"/>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">年龄</div>
<div class="value">{{ detail.birthday ? getAgeByDateOfBirth(detail.birthday) : '未知' }}</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">学历</div>
<div class="value">{{ education ? education.cultureLevelName : '' }}</div>
</div>
</el-col>
<el-col :span="12">
<!-- <div class="items">
<div class="label">状态</div>
<div class="value">巡查中</div>
</div>-->
<div class="items">
<div class="label">所在位置</div>
<div class="value">{{ detail.houseInfo.homeName }}</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">兴趣爱好</div>
<div class="value">{{ hobby ? hobby.hobbyRemark : '' }}</div>
</div>
</el-col>
</template>
</el-row>
<Tabs v-model="type" :list="typeList" @changeVal="typeChange"/>
<div class="table">
@ -28,17 +155,17 @@
height="250px">
<el-table-column label="序号" type="index"/>
<el-table-column label="服务时间" prop="key" v-if="type === 1"/>
<el-table-column label="需求类型" prop="key" v-if="type === 1"/>
<el-table-column label="需求内容" prop="key" v-if="type === 1"/>
<el-table-column label="满意度" prop="key" v-if="type === 1"/>
<el-table-column label="状态" prop="key" v-if="type === 1"/>
<el-table-column v-if="type === 1" label="服务时间" prop="key"/>
<el-table-column v-if="type === 1" label="需求类型" prop="key"/>
<el-table-column v-if="type === 1" label="需求内容" prop="key"/>
<el-table-column v-if="type === 1" label="满意度" prop="key"/>
<el-table-column v-if="type === 1" label="状态" prop="key"/>
<el-table-column label="服务类型" prop="key" v-if="type !== 1"/>
<el-table-column label="服务事项" prop="key" v-if="type !== 1"/>
<el-table-column label="来自" prop="key" v-if="type !== 1"/>
<el-table-column label="服务时间" prop="key" v-if="type !== 1"/>
<el-table-column label="服务人数" prop="key" v-if="type !== 1"/>
<el-table-column v-if="type !== 1" label="服务类型" prop="key"/>
<el-table-column v-if="type !== 1" label="服务事项" prop="key"/>
<el-table-column v-if="type !== 1" label="来自" prop="key"/>
<el-table-column v-if="type !== 1" label="服务时间" prop="key"/>
<el-table-column v-if="type !== 1" label="服务人数" prop="key"/>
<el-table-column label="操作" prop="op">
<template slot-scope="scope">
@ -76,6 +203,17 @@ export default {
type: "1",
list: [],
loading: false,
typesList: {
1: '志愿者',
2: '联建单位',
3: '社区自组织',
4: '网格员',
5: '公益岗'
},
detail: {},
types: '',
education: {},
hobby: {},
typeList: [
{
label: "个性服务",
@ -107,11 +245,68 @@ export default {
handleClose(done) {
this.dialogVisible = false;
},
open(id) {
open(data) {
this.detail = data.detail;
this.types = data.type;
this.education = data.education;
this.hobby = data.hobby;
this.dialogVisible = true;
},
getList() {
if (this.type === 1) {
this.getPersonalizedNeeds();
}
if (this.type === 1) {
this.getPersonalizedServices();
}
if (this.type === 1) {
this.getServiceFindPeople();
}
if (this.type === 1) {
this.getWarmthAndFindPeople();
}
if (this.type === 1) {
this.getJobAndFindPeople();
}
if (this.type === 1) {
this.getSkillsToFindPeople();
}
},
getPersonalizedServices() {
this.$http.post('/api/governance/userdemand/pagelist', {...this.queryParams}).then(({data: {data}}) => {
this.list = data.list
this.total = data.total
})
},
getPersonalizedNeeds() {
this.$http.get('icServiceRecordV2/searchList', {...this.queryParams}).then(({data: {data}}) => {
this.list = data.list
this.total = data.total
})
},
getServiceFindPeople() {
this.$htpp.get('', {...this.queryParams}).then(({data: {data}}) => {
this.list = data.list;
this.total = data.total;
})
},
getWarmthAndFindPeople() {
this.$htpp.get('', {...this.queryParams}).then(({data: {data}}) => {
this.list = data.list;
this.total = data.total;
})
},
getJobAndFindPeople() {
this.$htpp.get('', {...this.queryParams}).then(({data: {data}}) => {
this.list = data.list;
this.total = data.total;
})
},
getSkillsToFindPeople() {
this.$htpp.get('', {...this.queryParams}).then(({data: {data}}) => {
this.list = data.list;
this.total = data.total;
})
},
typeChange() {

4
src/views/dataBoard/overview/components/RequirementList.vue

@ -20,7 +20,7 @@
<span>{{ data.title }}</span>
</template>
</DemandSwiperList>
<DemandCharts v-else/>
<DemandCharts2 v-else/>
<ServiceDetails ref="ServiceDetails" :currentLevelData="currentLevelData"/>
<Bmysxxq ref="Bmysxxq" :currentLevelData="currentLevelData"/>
</div>
@ -30,6 +30,7 @@
import Tabs from "@/views/dataBoard/cpts/Tabs.vue";
import DemandSwiperList from "@/views/dataBoard/overview/components/DemandSwiperList.vue";
import DemandCharts from "@/views/dataBoard/overview/components/DemandCharts.vue";
import DemandCharts2 from "@/views/dataBoard/overview/components/DemandCharts2.vue";
import ServiceDetails from "@/views/dataBoard/overview/components/ServiceDetails.vue";
import Bmysxxq from "@/views/dataBoard/overview/components/Bmysxxq.vue";
@ -38,6 +39,7 @@ export default {
components: {
Tabs,
DemandCharts,
DemandCharts2,
DemandSwiperList,
ServiceDetails,
Bmysxxq

9
src/views/dataBoard/overview/components/map-top.vue

@ -100,7 +100,9 @@ export default {
}
if(this.searchSelect=== '3') {
this.$refs.MapResourceInfo.open(data.label)
// 12345
console.log(data,'data')
this.$refs.MapResourceInfo.open(data.label,data.datas.dataClass)
}
if (this.searchSelect === '4') {
@ -120,7 +122,10 @@ export default {
}
console.log(this.searchUrl);
const {data} = await requestGet(this.searchUrl, params);
const suggestions = data.map(item => ({label: item.id, value: item.content}));
var suggestions = data.map(item => ({label: item.id, value: item.content}));
if (this.searchSelect=== '3') {
suggestions = data.map(item => ({label: item.id, value: item.content,datas: item}));
}
console.log(suggestions);
cb(suggestions)
} catch (error) {

8
src/views/dataBoard/overview/components/wtqd.vue

@ -1,6 +1,6 @@
<template>
<div class="m-wtqd">
<title-small text="难点点"/>
<title-small text="难点点"/>
<div v-if="nddd.length>0" class="t-list f-hflex">
<swiper ref="orderSwiper" :options="swiperOptions">
<swiper-slide
@ -100,7 +100,7 @@
class="f-hflex"
@click="
$router.push(
'/dataBoard/overview/dissatisfiedProblemNumber/12345Hotline'
'/dataBoard/overview/dissatisfiedProblemNumber/12345Hotline?id='+currentLevelData.orgId
)
"
>
@ -111,7 +111,7 @@
class="f-hflex"
@click="
$router.push(
'/dataBoard/overview/dissatisfiedProblemNumber/provinceSatisfaction'
'/dataBoard/overview/dissatisfiedProblemNumber/provinceSatisfaction?id='+currentLevelData.orgId
)
"
>
@ -122,7 +122,7 @@
class="f-hflex"
@click="
$router.push(
'/dataBoard/overview/dissatisfiedProblemNumber/selfInspect'
'/dataBoard/overview/dissatisfiedProblemNumber/selfInspect?id='+currentLevelData.orgId
)
"
>

58
src/views/dataBoard/overview/dissatisfiedProblemNumber/12345Hotline.vue

@ -10,23 +10,23 @@
>
<el-table-column label="序号" type="index" width="80"/>
<el-table-column label="所属网格" prop="key"/>
<el-table-column label="接收时间" prop="key"/>
<el-table-column label="问题描述" prop="key"/>
<el-table-column label="所属网格" prop="organizationName"/>
<el-table-column label="接收时间" prop="happenTime"/>
<el-table-column label="问题描述" prop="reason" show-overflow-tooltip width="220px"/>
<el-table-column label="语音" prop="key"/>
<el-table-column label="办结时限" prop="key"/>
<el-table-column label="联系人" prop="key"/>
<el-table-column label="办结时限" prop="timeLimit"/>
<el-table-column label="联系人" prop="name"/>
<el-table-column label="联系人电话" prop="mobile">
<template slot-scope="scope">
{{ $sensitive(scope.row.mobile, 3, 7) }}
</template>
</el-table-column>
<el-table-column label="状态" prop="key"/>
<el-table-column label="操作" sortable>
<el-table-column label="状态" prop="followUpStatus"/>
<el-table-column label="操作" min-width="150px">
<template slot-scope="{ row }">
<CallPhone text="拨打电话"/>
<span class="handle">处理</span>
<span class="view" @click="handleView(scope.row)">查看</span>
<span class="handle" @click="handleDispatch(row)">处理</span>
<span class="view" @click="handleView(row)">查看</span>
</template>
</el-table-column>
</el-table>
@ -35,6 +35,8 @@
<Pagination v-show="total > 0" :limit.sync="queryParams.pageSize" :page.sync="queryParams.pageNo" :total="total"
@pagination="getList"/>
<sjwjj :id="rowId" :showDialog="showDialog" @close="close"/>
<EventDispatchOrder v-if="isEventDispatchOrder" ref="EventDispatchOrder" @close="isEventDispatchOrder = false"
@ok="handleSure"/>
</div>
</template>
@ -42,18 +44,20 @@
import Breadcrumb from "@/views/dataBoard/satisfactionEval/components/Breadcrumb";
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import Title from "@/views/dataBoard/satisfactionEval/components/Title";
import sjwjj from "@/views/dataBoard/satisfactionEval/potentialPeople/details/sjwjj.vue";
import sjwjj from "@/views/dataBoard/overview/components/EventDetail.vue";
import CallPhone from '@/views/dataBoard/cpts/CallPhone.vue'
import EventDispatchOrder from "@/views/dataBoard/overview/components/EventDispatchOrder.vue";
export default {
name: "12345Hotline",
components: {Breadcrumb, Pagination, Title, sjwjj, CallPhone},
components: {Breadcrumb, Pagination, Title, sjwjj, CallPhone, EventDispatchOrder},
data() {
return {
queryParams: {
reportUserId: this.$route.query.reportUserId,
agencyId: this.$route.query.id,
pageNo: 1,
pageSize: 10,
satisfactionSource: "satisfaction_12345"
},
total: 0,
breadcrumbList: [
@ -69,7 +73,8 @@ export default {
list: [],
showDialog: false,
rowId: "",
loading: true
loading: true,
isEventDispatchOrder: false
};
},
activated() {
@ -82,9 +87,30 @@ export default {
this.queryParams.pageNo = 1;
this.getList();
},
handleSure() {
this.queryParams.pageNo = 1;
this.getList();
},
handleDispatch({id}) {
this.$http
.post("/governance/icEvent/detail", {icEventId: id})
.then((res) => {
const {code, data, msg} = res.data;
if (code === 0) {
this.loading = false;
this.isEventDispatchOrder = true
this.$nextTick(() => {
this.$refs.EventDispatchOrder.open(data || {});
})
} else {
this.loading = false;
this.$message.error(msg);
}
});
},
getList() {
this.loading = true
this.$http.get("/?" + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => {
this.$http.get("/governance/satisfactionDetailList/getUnsatisfiedMattersList?" + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => {
this.list = data.list;
this.total = data.total;
this.loading = false
@ -94,6 +120,10 @@ export default {
this.showDialog = true;
this.rowId = id;
},
handleHandle({id}) {
this.showDialog = true;
this.rowId = id;
},
close() {
this.showDialog = false;
},

68
src/views/dataBoard/overview/dissatisfiedProblemNumber/provinceSatisfaction.vue

@ -10,22 +10,31 @@
>
<el-table-column label="序号" type="index" width="80"/>
<el-table-column label="月度" prop="key"/>
<el-table-column label="所属社区" prop="key"/>
<el-table-column label="事项来源" prop="key"/>
<el-table-column label="问题" prop="key"/>
<el-table-column label="提交时间" prop="key"/>
<el-table-column label="姓名" prop="key"/>
<el-table-column label="月度" prop="month"/>
<el-table-column label="所属社区" prop="organizationName"/>
<el-table-column label="事项来源" prop="satisfactionSource">
<template slot-scope="{ row }">
<span
:style="{
color: satisfactionSourceFormat(row.satisfactionSource).color,
}">
{{ satisfactionSourceFormat(row.satisfactionSource).label }}
</span>
</template>
</el-table-column>
<el-table-column label="问题" prop="reason"/>
<el-table-column label="提交时间" prop="createdTime"/>
<el-table-column label="姓名" prop="name"/>
<el-table-column label="电话" prop="mobile">
<template slot-scope="scope">
{{ $sensitive(scope.row.mobile, 3, 7) }}
</template>
</el-table-column>
<el-table-column label="是否完成" prop="key"/>
<el-table-column label="消除风险" prop="key"/>
<el-table-column label="是否完成" prop="completeFlag"/>
<el-table-column label="消除风险" prop="dangerFlag"/>
<el-table-column label="操作" sortable>
<template slot-scope="{ row }">
<span class="view" @click="handleView(scope.row)">查看</span>
<span class="view" @click="handleView(row)">查看</span>
</template>
</el-table-column>
</el-table>
@ -33,7 +42,7 @@
<Pagination v-show="total > 0" :limit.sync="queryParams.pageSize" :page.sync="queryParams.pageNo" :total="total"
@pagination="getList"/>
<sjwjj :id="rowId" :showDialog="showDialog" @close="close"/>
<DissatisfiedDetail ref="detail" :id="id" />
</div>
</template>
@ -41,18 +50,19 @@
import Breadcrumb from "@/views/dataBoard/satisfactionEval/components/Breadcrumb";
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import Title from "@/views/dataBoard/satisfactionEval/components/Title";
import sjwjj from "@/views/dataBoard/satisfactionEval/potentialPeople/details/sjwjj.vue";
import CallPhone from '@/views/dataBoard/cpts/CallPhone.vue'
import DissatisfiedDetail from "@/views/dataBoard/satisfactionEval/dissatisfied/detail.vue";
export default {
name: "provinceSatisfaction",
components: {Breadcrumb, Pagination, Title, sjwjj, CallPhone},
components: {Breadcrumb, Pagination, Title, CallPhone, DissatisfiedDetail},
data() {
return {
queryParams: {
reportUserId: this.$route.query.reportUserId,
agencyId: this.$route.query.id,
pageNo: 1,
pageSize: 10,
satisfactionSource: "satisfaction_province"
},
total: 0,
breadcrumbList: [
@ -68,7 +78,25 @@ export default {
list: [],
showDialog: false,
rowId: "",
loading: true
id: "",
loading: true,
satisfactionSourceOptions: [
{
value: "satisfaction_12345",
label: "12345投诉",
color: "#FFB73C",
},
{
value: "satisfaction_province",
label: "满意度调查",
color: "#64C1FF",
},
{
value: "satisfaction_community",
label: "社区满意度自查",
color: "#08EBAE",
},
],
};
},
activated() {
@ -77,21 +105,25 @@ export default {
this.getList();
},
methods: {
handleView({id}) {
this.id = id;
this.$refs.detail.open(id);
},
search() {
this.queryParams.pageNo = 1;
this.getList();
},
getList() {
this.loading = true
this.$http.get("/?" + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => {
this.$http.get("/governance/satisfactionDetailList/getUnsatisfiedMattersList?" + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => {
this.list = data.list;
this.total = data.total;
this.loading = false
});
},
handleView({id}) {
this.showDialog = true;
this.rowId = id;
satisfactionSourceFormat(val) {
let satisfactionSource = this.satisfactionSourceOptions.filter((item) => item.value === val)[0];
return satisfactionSource ? satisfactionSource : "";
},
close() {
this.showDialog = false;

65
src/views/dataBoard/overview/dissatisfiedProblemNumber/selfInspect.vue

@ -9,29 +9,36 @@
element-loading-text="加载中..."
>
<el-table-column label="序号" type="index" width="80"/>
<el-table-column label="月度" prop="key"/>
<el-table-column label="所属社区" prop="key"/>
<el-table-column label="文化设施" prop="key"/>
<el-table-column label="体育设施" prop="key"/>
<el-table-column label="生态环境" prop="key"/>
<el-table-column label="社会治安" prop="key"/>
<el-table-column label="社会救助" prop="key"/>
<el-table-column label="老有所养" prop="key"/>
<el-table-column label="基础教育" prop="key"/>
<el-table-column label="病有所医" prop="key"/>
<el-table-column label="提交时间" prop="key"/>
<el-table-column label="姓名" prop="key"/>
<el-table-column label="电话" prop="mobile">
<el-table-column label="月度" prop="periodStart" width="100"/>
<el-table-column label="所属社区" prop="agencyName" width="200"/>
<el-table-column :formatter="(row) => row.evaCulturalFacility === 'veryGood' ? '满意' : '不满意'" label="文化设施" prop="evaCulturalFacility"
width="150"/>
<el-table-column :formatter="(row) => row.evaSportsFacility === 'veryGood' ? '满意' : '不满意'" label="体育设施" prop="evaSportsFacility"
width="150"/>
<el-table-column :formatter="(row) => row.evaEcologicalEnv === 'veryGood' ? '满意' : '不满意'" label="生态环境" prop="evaEcologicalEnv"
width="150"/>
<el-table-column :formatter="(row) => row.evaSocialSecurity === 'veryGood' ? '满意' : '不满意'" label="社会治安" prop="evaSocialSecurity"
width="150"/>
<el-table-column :formatter="(row) => row.evaSocialAssistance === 'veryGood' ? '满意' : '不满意'" label="社会救助" prop="evaSocialAssistance"
width="150"/>
<el-table-column :formatter="(row) => row.evaOldPeopleProvide === 'veryGood' ? '满意' : '不满意'" label="老有所养" prop="evaOldPeopleProvide"
width="150"/>
<el-table-column :formatter="(row) => row.evaBasicEducation === 'veryGood' ? '满意' : '不满意'" label="基础教育" prop="evaBasicEducation"
width="150"/>
<el-table-column :formatter="(row) => row.evaMedical === 'veryGood' ? '满意' : '不满意'" label="病有所医" prop="evaMedical"
width="150"/>
<el-table-column label="提交时间" prop="createdTime" width="200"/>
<el-table-column label="姓名" prop="reporterName" width="100"/>
<el-table-column label="电话" min-width="120" prop="reporterMobile">
<template slot-scope="scope">
{{ $sensitive(scope.row.mobile, 3, 7) }}
{{ $sensitive(scope.row.reporterMobile, 3, 7) }}
</template>
</el-table-column>
<el-table-column label="是否回访" prop="key"/>
<el-table-column label="消除风险" prop="key"/>
<el-table-column label="操作" sortable>
<el-table-column label="是否回访" prop="followUpStatus" width="150" :formatter="(row) => row.followUpStatus === -1?'否':'是'"/>
<el-table-column label="消除风险" prop="dangerFlag" width="150"/>
<el-table-column label="操作" width="120">
<template slot-scope="{ row }">
<span class="view" @click="handleView(scope.row)">查看</span>
<span class="view" @click="handleView(row)">查看</span>
</template>
</el-table-column>
</el-table>
@ -39,7 +46,9 @@
<Pagination v-show="total > 0" :limit.sync="queryParams.pageSize" :page.sync="queryParams.pageNo" :total="total"
@pagination="getList"/>
<sjwjj :id="rowId" :showDialog="showDialog" @close="close"/>
<dissatisfieReasonDetail ref="detail" />
</div>
</template>
@ -47,18 +56,18 @@
import Breadcrumb from "@/views/dataBoard/satisfactionEval/components/Breadcrumb";
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import Title from "@/views/dataBoard/satisfactionEval/components/Title";
import sjwjj from "@/views/dataBoard/satisfactionEval/potentialPeople/details/sjwjj.vue";
import CallPhone from '@/views/dataBoard/cpts/CallPhone.vue'
import dissatisfieReasonDetail from "@/views/dataBoard/satisfactionEval/dissatisfieReason/detail.vue";
export default {
name: "selfInspect",
components: {Breadcrumb, Pagination, Title, sjwjj, CallPhone},
components: {Breadcrumb, Pagination, Title, CallPhone,dissatisfieReasonDetail},
data() {
return {
queryParams: {
reportUserId: this.$route.query.reportUserId,
pageNo: 1,
pageSize: 10,
agencyId: this.$route.query.id
},
total: 0,
breadcrumbList: [
@ -72,7 +81,6 @@ export default {
},
],
list: [],
showDialog: false,
rowId: "",
loading: true
};
@ -89,18 +97,15 @@ export default {
},
getList() {
this.loading = true
this.$http.get("/?" + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => {
this.$http.get("/governance/satisfaction/communitySelfInsp/inspResult/list?" + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => {
this.list = data.list;
this.total = data.total;
this.loading = false
});
},
handleView({id}) {
this.showDialog = true;
this.rowId = id;
},
close() {
this.showDialog = false;
this.id = id;
this.$refs.detail.open(id);
},
},
};

122
src/views/dataBoard/overview/index.vue

@ -29,7 +29,9 @@
<img src="~@/assets/images/shuju/overview/go-back.png"/>
</div>
<grid-map ref="map" :level="currentLevel" :peopleType="peopleType" :srcGridData="orgData"
@clickAgency="clickAgencyItem" @clickDotBtn="handleClickDotBtn"/>
@clickAgency="clickAgencyItem" @clickDotBtn="handleClickDotBtn"
@showMapDialog="showMapDialog"
/>
<div class="map-legend">
<div class="legend-title">
供需匹配地图
@ -135,7 +137,7 @@
-- bmysxqk = 不满意事项情况
-- xqwwcqk = 需求未完成情况
-->
<MapDialog ref="MapDialog" type="njjwtqk" />
<MapDialog ref="MapDialog" :type="mapType"/>
<cpt-loading v-show="false"/>
</div>
</template>
@ -260,6 +262,7 @@ export default {
customerName: "",
peopleType: "staffAgency",
listShow: true,
mapType: ''
};
},
@ -458,11 +461,101 @@ export default {
orgId: this.orgId,
orgLevel: this.currentLevel,
};
console.log(this.currentLevelData,'this.currentLevelData 33210')
console.log(this.currentLevelData, 'this.currentLevelData 33210')
this.peopleType = this.currentLevel === "grid" ? "unit" : "staffAgency";
this.$refs.MapDialog.open(this.currentLevelData)
this.getMapCount()
});
},
showMapDialog(data) {
if (data.type === "rsources") {
this.setRsourcesPoint()
} else {
// -- njjwtqk =
// -- bmysxqk =
// -- xqwwcqk =
if (data.type === "events") {
this.mapType = "xqwwcqk";
}
if (data.type === "services") {
this.mapType = "bmysxqk";
}
if (data.type === 'problems') {
this.mapType = "njjwtqk";
}
this.$refs.MapDialog.open({
orgId: data.agencyId,
level: data.level
})
}
},
setRsourcesPoint() {
},
getMapCount() {
this.$http.get('/governance/icEvent/statOrgResourceAndEventCount?agencyId=' + this.orgId).then(res => {
let countData = res.data.data
countData.forEach(item2 => {
this.orgData.children.forEach(item => {
if (item2.agencyId === item.id) {
item2.coordinates = item.coordinates
item2.level = item.level
item2.latitude = item.latitude
item2.longitude = item.longitude
}
})
})
countData.forEach(item => {
console.log(item.data)
item.data.forEach(item3 => {
let coordinates = spliceIntoChunks(item.coordinates.split(",").map((item) => parseFloat(item)), 2)
let coordinates2 = coordinates.map(item3 => {
return [{
lat: item3[1],
lng: item3[0]
}]
})
let centerLngLat = this.getCenterPoint(coordinates2)
if (item3.hasOwnProperty("services")) {
item3.type = 'services'
item3.num = item3.services;
item3.offsets = [50, 50];
item3.latitude = centerLngLat.lat
item3.longitude = centerLngLat.lng
}
if (item3.hasOwnProperty("rsources")) {
item3.type = 'rsources'
item3.num = item3.rsources;
// item3.offsets = [-50, 50];
item3.latitude = centerLngLat.lat + 0.0012
item3.longitude = centerLngLat.lng
}
if (item3.hasOwnProperty("problems")) {
item3.type = 'problems'
item3.num = item3.problems;
// item3.offsets = [50, -50];
item3.latitude = centerLngLat.lat
item3.longitude = centerLngLat.lng + .0012
}
if (item3.hasOwnProperty("events")) {
item3.type = 'events'
item3.num = item3.events;
// item3.offsets = [-50, -50];
item3.latitude = centerLngLat.lat + .0012
item3.longitude = centerLngLat.lng + .0012
}
item3.id = item.agencyId + item3.type
item3.agencyId = item.agencyId
item3.level = item.level
})
})
console.log(countData, 'countData')
this.$refs.map.setNumpoint(countData)
// console.log(countData,'countData')
})
},
//
async getSubMapData() {
@ -573,11 +666,12 @@ export default {
}
.map-legend {
width: 148px;
color: #fff;
position: absolute;
bottom: 20px;
right: 17px;
bottom: 20px;
width: 148px;
color: #fff;
.legend-title {
font-size: 16px;
font-weight: bold;
@ -586,25 +680,28 @@ export default {
justify-content: center;
width: 100%;
height: 32px;
background: url("@/assets/images/overview/map_legend_title.png");
margin-bottom: 4px;
background: url("@/assets/images/overview/map_legend_title.png");
}
.legend-list {
border: 1px solid #488CC5;
background: rgba(#0A2351, 0.66);
padding: 19px 12px;
width: 126px;
box-sizing: border-box;
width: 126px;
margin: 0 auto;
padding: 19px 12px;
border: 1px solid #488CC5;
background: rgba(#0A2351, 0.66);
.legend-item {
font-size: 14px;
display: flex;
align-items: center;
margin-bottom: 7px;
&:before {
margin-right: 6px;
}
&.blue {
&:before {
display: block;
@ -648,6 +745,7 @@ export default {
}
}
.m-map {
height: 1050px;
}

187
src/views/dataBoard/satisfactionEval/dissatisfieReason/detail.vue

@ -12,7 +12,6 @@
<div class="main-title main-title2">
<Title text="社区自查报告详情"/>
</div>
<div class="content2">
<div class="title-sub">
<img :height="18" :width="18" src="@/assets/images/manyidu/tc-title-icon.png"/>
@ -27,138 +26,138 @@
<div class="problem-list">
<div class="problem-item">
<div class="problem-title">1您对本社区的文化设施建设情况</div>
<el-radio-group v-model="radio">
<el-radio :label="1">满意</el-radio>
<el-radio :label="2">基本满意</el-radio>
<el-radio :label="3">不满意</el-radio>
<el-radio-group disabled v-model="detail.evaCulturalFacility">
<el-radio label="veryGood">满意</el-radio>
<el-radio label="good">基本满意</el-radio>
<el-radio label="bad">不满意</el-radio>
</el-radio-group>
</div>
<div class="problem-item">
<div class="problem-title">1.1您具体对哪些方面不满意请详细说明原因</div>
<el-radio-group v-model="radio">
<el-radio :label="1">社区文化广场</el-radio>
<el-radio :label="2">图书阅览室</el-radio>
<el-radio :label="3">文艺演出</el-radio>
<el-radio :label="4">其他</el-radio>
<el-radio-group disabled v-model="detail.culturalFacilityAsp">
<el-radio label="culturalFacilityAsp01">社区文化广场</el-radio>
<el-radio label="culturalFacilityAsp02">图书阅览室</el-radio>
<el-radio label="culturalFacilityAsp03">文艺演出</el-radio>
<el-radio label="culturalFacilityAsp04">其他</el-radio>
</el-radio-group>
<div>不满意的原因: 退休人员比较多大家空闲时间多没社区文化广场太少了没法打发时间</div>
<div>不满意的原因: {{detail.culturalFacilityReason}}</div>
</div>
<div class="problem-item">
<div class="problem-title">2您对本社区的体育健身设施组织开展的健身活动比赛等体育活动是否满意?</div>
<el-radio-group v-model="radio">
<el-radio :label="1">满意</el-radio>
<el-radio :label="2">基本满意</el-radio>
<el-radio :label="3">不满意</el-radio>
<el-radio-group disabled v-model="detail.evaSportsFacility">
<el-radio label="veryGood">满意</el-radio>
<el-radio label="good">基本满意</el-radio>
<el-radio label="bad">不满意</el-radio>
</el-radio-group>
</div>
<div class="problem-item">
<div class="problem-title">2.1您具体对哪些方面不满意请详细说明原因</div>
<el-radio-group v-model="radio">
<el-radio :label="1">社区健身器材</el-radio>
<el-radio :label="2">健身运动</el-radio>
<el-radio :label="3">体育活动</el-radio>
<el-radio :label="3">其他</el-radio>
<el-radio-group disabled v-model="detail.sportsFacilityAsp">
<el-radio label="sportsFacilityAsp01">社区健身器材</el-radio>
<el-radio label="sportsFacilityAsp02">健身运动</el-radio>
<el-radio label="sportsFacilityAsp03">体育活动</el-radio>
<el-radio label="sportsFacilityAsp03">其他</el-radio>
</el-radio-group>
<div>不满意的原因: 老年人健身的地方都没有平时想锻炼困难</div>
<div>不满意的原因:{{detail.sportsFacilityReason}}</div>
</div>
<div class="problem-item">
<div class="problem-title">3您对本社区的幼儿园保育教育质量小学/初中数学质量以及师德师风方面是否满意</div>
<el-radio-group v-model="radio">
<el-radio :label="1">满意</el-radio>
<el-radio :label="2">基本满意</el-radio>
<el-radio :label="3">不满意</el-radio>
<el-radio-group disabled v-model=detail.evaBasicEducation>
<el-radio label="veryGood">满意</el-radio>
<el-radio label="good">基本满意</el-radio>
<el-radio label="bad">不满意</el-radio>
</el-radio-group>
<div>不满意的原因</div>
<div>不满意的原因{{detail.basicEducationReason}}</div>
</div>
<div class="problem-item">
<div class="problem-title">4您对本社区的医疗机构便利程度医务人员的服务态度是否满意</div>
<el-radio-group v-model="radio">
<el-radio :label="1">满意</el-radio>
<el-radio :label="2">基本满意</el-radio>
<el-radio :label="3">不满意</el-radio>
<el-radio-group disabled v-model="detail.evaMedical">
<el-radio label="veryGood">满意</el-radio>
<el-radio label="good">基本满意</el-radio>
<el-radio label="bad">不满意</el-radio>
</el-radio-group>
</div>
<div class="problem-item">
<div class="problem-title">4.1您具体对哪些方面不满意请详细说明原因</div>
<el-radio-group v-model="radio">
<el-radio :label="1">挂号缴费</el-radio>
<el-radio :label="2">检查化验</el-radio>
<el-radio :label="3">其他</el-radio>
<el-radio-group disabled v-model="detail.medicalAsp">
<el-radio label="medicalAsp01">挂号缴费</el-radio>
<el-radio label="medicalAsp02">检查化验</el-radio>
<el-radio label="medicalAsp03">其他</el-radio>
</el-radio-group>
<div>不满意的原因</div>
<div>不满意的原因{{detail.medicalReason}}</div>
</div>
<div class="problem-item">
<div class="problem-title">5您对本社区的养老院建设和服务居家社区养老服务等方面是否满意</div>
<el-radio-group v-model="radio">
<el-radio :label="1">满意</el-radio>
<el-radio :label="2">基本满意</el-radio>
<el-radio :label="3">不满意</el-radio>
<el-radio-group disabled v-model="detail.evaOldPeopleProvide">
<el-radio label="veryGood">满意</el-radio>
<el-radio label="good">基本满意</el-radio>
<el-radio label="bad">不满意</el-radio>
</el-radio-group>
</div>
<div class="problem-item">
<div class="problem-title">5.1您具体对哪些方面不满意请详细说明原因</div>
<el-radio-group v-model="radio">
<el-radio :label="1">社区老年人活动场所</el-radio>
<el-radio :label="2">社区为老服务</el-radio>
<el-radio :label="3">居家养老服务</el-radio>
<el-radio :label="4">其他</el-radio>
<el-radio-group disabled v-model="detail.oldPeopleProvideAsp">
<el-radio label="oldPeopleProvideAsp01">社区老年人活动场所</el-radio>
<el-radio label="oldPeopleProvideAsp02">社区为老服务</el-radio>
<el-radio label="oldPeopleProvideAsp03">居家养老服务</el-radio>
<el-radio label="oldPeopleProvideAsp04">其他</el-radio>
</el-radio-group>
<div>不满意的原因</div>
<div>不满意的原因{{detail.oldPeopleProvideReason}}</div>
</div>
<div class="problem-item">
<div class="problem-title">6您对本社区的社会救助和服务态度以及困难家庭住房保障工作是否满意</div>
<el-radio-group v-model="radio">
<el-radio :label="1">满意</el-radio>
<el-radio :label="2">基本满意</el-radio>
<el-radio :label="3">不满意</el-radio>
<el-radio-group disabled v-model="detail.evaSocialAssistance">
<el-radio label="veryGood">满意</el-radio>
<el-radio label="good">基本满意</el-radio>
<el-radio label="bad">不满意</el-radio>
</el-radio-group>
</div>
<div class="problem-item">
<div class="problem-title">6.1您具体对哪些方面不满意请详细说明原因</div>
<el-radio-group v-model="radio">
<el-radio :label="1">低保特困残疾人保障办理便利程度</el-radio>
<el-radio :label="3">临时救助申请办理便利程度</el-radio>
<el-radio :label="4">其他</el-radio>
<el-radio-group disabled v-model="detail.socialAssistanceAsp">
<el-radio label="socialAssistanceAsp01">低保特困残疾人保障办理便利程度</el-radio>
<el-radio label="socialAssistanceAsp02">临时救助申请办理便利程度</el-radio>
<el-radio label="socialAssistanceAsp03">其他</el-radio>
</el-radio-group>
<div>不满意的原因</div>
<div>不满意的原因{{detail.socialAssistanceReason}}</div>
</div>
<div class="problem-item">
<div class="problem-title">7您对本社区的空气质量居住环境道路情况停车情况是否满意</div>
<el-radio-group v-model="radio">
<el-radio :label="1">满意</el-radio>
<el-radio :label="2">基本满意</el-radio>
<el-radio :label="3">不满意</el-radio>
<el-radio-group disabled v-model="detail.evaEcologicalEnv">
<el-radio label="veryGood">满意</el-radio>
<el-radio label="good">基本满意</el-radio>
<el-radio label="bad">不满意</el-radio>
</el-radio-group>
</div>
<div class="problem-item">
<div class="problem-title">7.1您具体对哪些方面不满意请详细说明原因</div>
<el-radio-group v-model="radio">
<el-radio :label="1">废气异味工地扬尘</el-radio>
<el-radio :label="3">楼院卫生</el-radio>
<el-radio :label="3">乱停车</el-radio>
<el-radio :label="3">占道经营</el-radio>
<el-radio :label="4">其他</el-radio>
<el-radio-group disabled v-model="detail.ecologicalEnvAsp">
<el-radio label="ecologicalEnvAsp01">废气异味工地扬尘</el-radio>
<el-radio label="ecologicalEnvAsp02">楼院卫生</el-radio>
<el-radio label="ecologicalEnvAsp03">乱停车</el-radio>
<el-radio label="ecologicalEnvAsp04">占道经营</el-radio>
<el-radio label="ecologicalEnvAsp05">其他</el-radio>
</el-radio-group>
<div>不满意的原因</div>
<div>不满意的原因{{detail.ecologicalEnvReason}}</div>
</div>
<div class="problem-item">
<div class="problem-title">
8您对本社区的公安机关打击违法犯罪活动开展巡逻执勤维护治安秩序等安全防范工作方面是否满意
</div>
<el-radio-group v-model="radio">
<el-radio :label="1">满意</el-radio>
<el-radio :label="2">基本满意</el-radio>
<el-radio :label="3">不满意</el-radio>
<el-radio-group disabled v-model="detail.evaSocialSecurity">
<el-radio label="veryGood">满意</el-radio>
<el-radio label="good">基本满意</el-radio>
<el-radio label="bad">不满意</el-radio>
</el-radio-group>
</div>
@ -166,47 +165,47 @@
<div class="problem-title">
8您对本社区的公安机关打击违法犯罪活动开展巡逻执勤维护治安秩序等安全防范工作方面是否满意
</div>
<el-radio-group v-model="radio">
<el-radio :label="1">扫黑除恶</el-radio>
<el-radio :label="3">打击犯罪</el-radio>
<el-radio :label="3">保护人身财产安全</el-radio>
<el-radio :label="4">其他</el-radio>
<el-radio-group disabled v-model="detail.socialSecurityAsp">
<el-radio label="socialSecurityAsp01">扫黑除恶</el-radio>
<el-radio label="socialSecurityAsp02">打击犯罪</el-radio>
<el-radio label="socialSecurityAsp03">保护人身财产安全</el-radio>
<el-radio label="socialSecurityAsp04">其他</el-radio>
</el-radio-group>
<div>不满意的原因</div>
<div>不满意的原因{{ detail.socialSecurityReason }}</div>
</div>
<div class="problem-item">
<div class="problem-title">
<div>9您的姓名</div>
<div class="line">夯大力</div>
<div class="line">{{reporter.reporterName}}</div>
</div>
</div>
<div class="problem-item">
<div class="problem-title">
<div>10您的手机号</div>
<div class="line">夯大力</div>
<div class="line">{{reporter.reporterMobile}}</div>
</div>
</div>
<div class="problem-item">
<div class="problem-title">11您是否接受回访</div>
<el-radio-group v-model="radio">
<el-radio :label="1">接受回访</el-radio>
<el-radio :label="3">不接受回访</el-radio>
<el-radio-group disabled v-model="reporter.followUpStatus">
<el-radio :label="-1">接受回访</el-radio>
<el-radio :label="1">不接受回访</el-radio>
</el-radio-group>
</div>
<div class="problem-item">
<div class="problem-title">12请选择合适您的回访方式</div>
<el-radio-group v-model="radio">
<el-radio :label="1">电话回访</el-radio>
<el-radio :label="2">工作人员上门回访</el-radio>
<el-radio-group disabled v-model="reporter.expectFollowUpWay">
<el-radio label="1">电话回访</el-radio>
<el-radio label="2">工作人员上门回访</el-radio>
</el-radio-group>
</div>
<div class="problem-item">
<!-- <div class="problem-item">
<div class="problem-title">请填写您在社区的家庭住址</div>
<div class="select">
<el-select v-model="value" class="select" filterable placeholder="选择所在小区"
@ -214,7 +213,7 @@
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
label="item.label"
:value="item.value">
</el-option>
</el-select>
@ -222,7 +221,7 @@
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
label="item.label"
:value="item.value">
</el-option>
</el-select>
@ -230,7 +229,7 @@
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
label="item.label"
:value="item.value">
</el-option>
</el-select>
@ -238,7 +237,7 @@
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
label="item.label"
:value="item.value">
</el-option>
</el-select>
@ -250,7 +249,7 @@
type="textarea"
/>
</div>
</div>
</div>-->
</div>
</div>
@ -273,6 +272,8 @@ export default {
label: '1',
value: 1
}],
detail: {},
reporter: {}
};
},
methods: {
@ -284,6 +285,10 @@ export default {
this.getDetail(id);
},
getDetail(id) {
this.$http.get(`/governance/satisfaction/communitySelfInsp/inspResult/detail/${id}`).then(({data: {data}}) => {
this.detail = data.satisfaction || {}
this.reporter = data.reporter || {}
})
},
},
@ -357,4 +362,8 @@ export default {
width: 610px;
margin-top: 10px;
}
/deep/ .el-radio__input.is-disabled.is-checked .el-radio__inner {
border-color: #0056d6!important;
background: #0056d6!important;
}
</style>

28
src/views/dataBoard/satisfactionEval/dissatisfieReason/index.vue

@ -45,18 +45,22 @@
{{ $sensitive(scope.row.mobile, 3, 7) }}
</template>
</el-table-column>
<el-table-column label="文化设施" prop="key"/>
<el-table-column label="体育设施" prop="key"/>
<el-table-column label="生态环境" prop="key"/>
<el-table-column label="社会治安" prop="key"/>
<el-table-column label="社会救助" prop="key"/>
<el-table-column label="老有所养" prop="key"/>
<el-table-column label="基础教育" prop="key"/>
<el-table-column label="病有所医" prop="key"/>
<el-table-column label="不满意原因" prop="key"/>
<el-table-column label="回访方式" prop="key"/>
<el-table-column label="回访状态" prop="key"/>
<el-table-column :formatter="(row) => row.evaCulturalFacility === 'veryGood' ? '满意' : '不满意'" label="文化设施" prop="evaCulturalFacility"
width="150"/>
<el-table-column :formatter="(row) => row.evaSportsFacility === 'veryGood' ? '满意' : '不满意'" label="体育设施" prop="evaSportsFacility"
width="150"/>
<el-table-column :formatter="(row) => row.evaEcologicalEnv === 'veryGood' ? '满意' : '不满意'" label="生态环境" prop="evaEcologicalEnv"
width="150"/>
<el-table-column :formatter="(row) => row.evaSocialSecurity === 'veryGood' ? '满意' : '不满意'" label="社会治安" prop="evaSocialSecurity"
width="150"/>
<el-table-column :formatter="(row) => row.evaSocialAssistance === 'veryGood' ? '满意' : '不满意'" label="社会救助" prop="evaSocialAssistance"
width="150"/>
<el-table-column :formatter="(row) => row.evaOldPeopleProvide === 'veryGood' ? '满意' : '不满意'" label="老有所养" prop="evaOldPeopleProvide"
width="150"/>
<el-table-column :formatter="(row) => row.evaBasicEducation === 'veryGood' ? '满意' : '不满意'" label="基础教育" prop="evaBasicEducation"
width="150"/>
<el-table-column :formatter="(row) => row.evaMedical === 'veryGood' ? '满意' : '不满意'" label="病有所医" prop="evaMedical"
width="150"/>
<el-table-column align="center" label="详情" width="90">
<template slot-scope="data">

295
src/views/dataBoard/satisfactionEval/dissatisfied/detail.vue

@ -1,16 +1,16 @@
<template>
<el-dialog
class="dissatisfied-detail"
title=""
:modal="true"
:visible.sync="dialogVisible"
width="1118px"
:modal-append-to-body="false"
:before-close="handleClose"
:before-close="handleClose"
:modal="true"
:modal-append-to-body="false"
:visible.sync="dialogVisible"
class="dissatisfied-detail"
title=""
width="1118px"
>
<div class="content">
<div class="main-title">
<Title text="不满意事项详情" noBg />
<div class="main-title main-title2">
<Title text="不满意事项详情"/>
</div>
<el-row :gutter="20">
<el-col :span="10">
@ -24,8 +24,8 @@
<span>事项来源</span
>{{
satisfactionSourceOptions[
unsatisfiedMattersModel.satisfactionSource
]
unsatisfiedMattersModel.satisfactionSource
]
}}
</li>
<li>
@ -47,42 +47,42 @@
</ul>
</div>
</el-col>
<el-col :span="10" :offset="4">
<div class="sub-title">历史不满意事项</div>
<div class="number-list">
<div class="number-item">
<div class="text">12345投诉</div>
<div class="num">
<span class="orange">{{
unsatisfiedHisCount.satisfaction_12345
}}</span>
</div>
</div>
<div class="number-item">
<div class="text">省满意度调查</div>
<div class="num">
<span class="green">{{
unsatisfiedHisCount.satisfaction_province
}}</span>
</div>
</div>
<div class="number-item">
<div class="text">社区满意度自评</div>
<div class="num">
<span class="light">{{
unsatisfiedHisCount.satisfaction_community
}}</span>
</div>
</div>
</div>
<el-col :offset="4" :span="10">
<!-- <div class="sub-title">历史不满意事项</div>
<div class="number-list">
<div class="number-item">
<div class="text">12345投诉</div>
<div class="num">
<span class="orange">{{
unsatisfiedHisCount.satisfaction_12345
}}</span>
</div>
</div>
<div class="number-item">
<div class="text">省满意度调查</div>
<div class="num">
<span class="green">{{
unsatisfiedHisCount.satisfaction_province
}}</span>
</div>
</div>
<div class="number-item">
<div class="text">社区满意度自评</div>
<div class="num">
<span class="light">{{
unsatisfiedHisCount.satisfaction_community
}}</span>
</div>
</div>
</div>-->
<div class="sub-title">回访记录</div>
<div class="log">
<div
class="log-item"
v-for="(item, index) in followUpRecordDetails"
v-for="(item, index) in followUpRecordDetails"
class="log-item"
>
<div class="name">
{{ item.followUpUser }}{{ item.roleName }}
@ -104,7 +104,7 @@ import Title from "@/views/dataBoard/satisfactionEval/components/Title";
export default {
name: "DissatisfiedDetail",
components: { Title },
components: {Title},
data() {
return {
dialogVisible: false,
@ -128,149 +128,124 @@ export default {
},
getDetail(id) {
this.$http
.post(
"/governance/satisfactionDetailList/getUnsatisfiedMattersDetailInfo",
id
)
.then(({ data: { data } }) => {
this.unsatisfiedMattersModel = data.unsatisfiedMattersModel;
this.unsatisfiedHisCount = data.unsatisfiedHisCount;
this.followUpRecordDetails = data.followUpRecordDetails;
if (this.unsatisfiedMattersModel.satisfactionSource) {
this.unsatisfiedMattersModel.satisfactionSource =
satisfactionSourceOptions.filter(
(item) =>
item.value === this.unsatisfiedMattersModel.satisfactionSource
)[0].label;
}
});
.post(
"/governance/satisfactionDetailList/getUnsatisfiedMattersDetailInfo",
{id}
)
.then(({data: {data}}) => {
this.unsatisfiedMattersModel = data.unsatisfiedMattersModel || {};
// this.unsatisfiedHisCount = data.unsatisfiedHisCount;
this.followUpRecordDetails = data.followUpRecordDetails || [];
if (this.unsatisfiedMattersModel.satisfactionSource) {
this.unsatisfiedMattersModel.satisfactionSource =
satisfactionSourceOptions.filter(
(item) =>
item.value === this.unsatisfiedMattersModel.satisfactionSource
)[0].label;
}
});
},
},
};
</script>
<style scoped lang="scss">
.dissatisfied-detail {
/deep/ .el-dialog {
background: url("@/assets/images/manyidu/dialog_bg.png") no-repeat left top;
width: 1118px;
height: 506px;
color: #fff;
.el-dialog__header {
border-bottom: none !important;
}
<style lang="scss" scoped>
@import "@/assets/scss/dataBoard/dialog.scss";
.el-dialog__headerbtn {
top: 30px;
right: 30px;
.content {
padding: 0 64px;
}
.el-dialog__close {
color: #fff;
}
}
}
.main-title {
margin-bottom: 40px;
}
.el-dialog__wrapper {
background: rgba(0, 0, 0, 0.85);
}
.sub-title {
font-size: 18px;
font-weight: 500;
line-height: 22px;
margin-bottom: 14px;
padding-left: 26px;
color: #ffffff;
background: url("@/assets/images/manyidu/icon_fk.png") no-repeat left center;
}
.content {
padding: 0 64px;
.detail {
p {
font-size: 14px;
font-weight: 400;
line-height: 32px;
margin: 0 0 10px;
color: #ffffff;
}
.main-title {
margin-bottom: 40px;
ul {
margin: 0;
padding: 0;
list-style-type: none;
}
.sub-title {
background: url("@/assets/images/manyidu/icon_fk.png") no-repeat left center;
font-size: 18px;
font-weight: 500;
li {
line-height: 32px;
color: #ffffff;
line-height: 22px;
padding-left: 26px;
margin-bottom: 14px;
}
.detail {
p {
font-size: 14px;
font-weight: 400;
color: #ffffff;
line-height: 32px;
margin: 0 0 10px;
}
ul {
margin: 0;
padding: 0;
list-style-type: none;
}
li {
color: #ffffff;
line-height: 32px;
span {
color: #9cb4d3;
}
span {
color: #9cb4d3;
}
}
}
.number-list {
padding-left: 26px;
display: flex;
justify-content: space-between;
margin-bottom: 30px;
.text {
font-size: 14px;
font-weight: 400;
color: #a3b9da;
margin-bottom: 17px;
}
.number-list {
display: flex;
justify-content: space-between;
margin-bottom: 30px;
padding-left: 26px;
.text {
font-size: 14px;
font-weight: 400;
margin-bottom: 17px;
color: #a3b9da;
}
.num {
font-size: 14px;
font-weight: 400;
color: #a3b9da;
.num {
font-size: 14px;
font-weight: 400;
color: #a3b9da;
span {
font-size: 32px;
font-weight: bold;
font-style: italic;
}
span {
font-size: 32px;
font-weight: bold;
font-style: italic;
}
}
}
.orange {
color: #ffb73c;
}
.orange {
color: #ffb73c;
}
.green {
color: #08ebae;
}
.green {
color: #08ebae;
}
.light {
color: #7fceff;
}
.light {
color: #7fceff;
}
.log {
padding-left: 26px;
.log {
padding-left: 26px;
.log-item {
display: flex;
justify-content: space-between;
width: 100%;
color: #fff;
background: url("@/assets/images/manyidu/hf_line.png") bottom center
no-repeat;
padding: 9px 0;
.log-item {
display: flex;
justify-content: space-between;
width: 100%;
padding: 9px 0;
color: #fff;
background: url("@/assets/images/manyidu/hf_line.png") bottom center no-repeat;
.name {
flex: 0 0 33.33333%;
}
.name {
flex: 0 0 33.33333%;
}
}
}

Loading…
Cancel
Save