31 changed files with 1231 additions and 706 deletions
@ -1,10 +1,30 @@ |
|||
import {potentialSatisfactionGroup} from "../../../../utils/statisticsApi"; |
|||
|
|||
Component({ |
|||
properties: {}, |
|||
data: {}, |
|||
data: { |
|||
unSolvedNum: 0, |
|||
unFinishNum: 0, |
|||
noServiceNum: 0, |
|||
}, |
|||
lifetimes: { |
|||
ready() { |
|||
this.getData() |
|||
} |
|||
}, |
|||
methods: { |
|||
gotopage({currentTarget: {dataset}}) { |
|||
const {url} = dataset; |
|||
wx.navigateTo({url}) |
|||
}, |
|||
getData() { |
|||
potentialSatisfactionGroup().then(({data}) => { |
|||
this.setData({ |
|||
unSolvedNum: data.unSolvedNum, |
|||
unFinishNum: data.unFinishNum, |
|||
noServiceNum: data.noServiceNum, |
|||
}) |
|||
}) |
|||
} |
|||
} |
|||
}); |
|||
|
|||
@ -1,23 +1,23 @@ |
|||
<view class="num-list"> |
|||
<view class="num-item" bind:tap="gotopage" data-url="/subpages/statistics/pages/sjwjj/sjwjj"> |
|||
<view class="num-item" bind:tap="gotopage" data-url="/subpages/statistics/pages/qzbmy/qzbmy"> |
|||
<view class="txt"> |
|||
<text>事件未解决 |
|||
的人数</text> |
|||
</view> |
|||
<view class="num">76</view> |
|||
<view class="num">{{unSolvedNum}}</view> |
|||
</view> |
|||
<view class="num-item" bind:tap="gotopage" data-url="/subpages/statistics/pages/xqwmz/xqwmz"> |
|||
<view class="num-item" bind:tap="gotopage" data-url="/subpages/statistics/pages/qzbmy/qzbmy"> |
|||
<view class="txt"> |
|||
<text>需求未满足 |
|||
的人数</text> |
|||
</view> |
|||
<view class="num">24</view> |
|||
<view class="num">{{unFinishNum}}</view> |
|||
</view> |
|||
<view class="num-item" bind:tap="gotopage" data-url="/subpages/statistics/pages/yxwxfw/yxwxfw"> |
|||
<view class="num-item" bind:tap="gotopage" data-url="/subpages/statistics/pages/qzbmy/qzbmy"> |
|||
<view class="txt"> |
|||
<text>应享未享服务 |
|||
的人数</text> |
|||
</view> |
|||
<view class="num">13</view> |
|||
<view class="num">{{noServiceNum}}</view> |
|||
</view> |
|||
</view> |
|||
@ -1,141 +1,202 @@ |
|||
import * as echarts from '../../../../ec-canvas/echarts'; |
|||
import {satisfactionGroup} from "../../../../utils/statisticsApi"; |
|||
|
|||
var chart; |
|||
|
|||
function initChart(canvas, width, height, dpr) { |
|||
const chart = echarts.init(canvas, null, { |
|||
chart = echarts.init(canvas, null, { |
|||
width: width, |
|||
height: height, |
|||
devicePixelRatio: dpr // 像素比
|
|||
}); |
|||
canvas.setChart(chart); |
|||
var dataname = ['老有所养', '社会治安', '生态环境', '体育设施', '社会救助', '文化设施', '基础教育', '病有所医'] |
|||
var datamax = [20, 20, 20, 20, 20, 20, 20, 20] |
|||
var datavaule = [10, 16, 18, 15, 12, 18, 18, 18] |
|||
var datavaule2 = [12, 17, 20, 16, 13, 19, 19, 19] |
|||
var indicator = [] |
|||
for (var i = 0; i < dataname.length; i++) { |
|||
indicator.push({ |
|||
name: dataname[i], |
|||
max: datamax[i], |
|||
}) |
|||
} |
|||
var option = { |
|||
tooltip: { |
|||
show: false, |
|||
trigger: "item", |
|||
}, |
|||
legend: { |
|||
show: true, |
|||
textStyle: { |
|||
color: '#999999', |
|||
rich: { |
|||
name: { |
|||
fontSize: 14, |
|||
lineHeight: 19, |
|||
padding: [20, 0, 0, 0] |
|||
}, |
|||
} |
|||
}, |
|||
itemWidth: 6, |
|||
itemHeight: 6, |
|||
y: 'bottom', |
|||
x: 'center', |
|||
formatter: name => { |
|||
return `{name|${name}}` |
|||
}, |
|||
data: ['省满意度调查\n各项不满意人数', '社区满意度自查\n各项不满意人数'], |
|||
}, |
|||
radar: { |
|||
center: ["50%", "40%"], |
|||
radius: "50%", |
|||
startAngle: 90, |
|||
splitNumber: 5, |
|||
splitArea: { |
|||
areaStyle: { |
|||
color: 'transparent' |
|||
} |
|||
}, |
|||
axisLabel: { |
|||
show: false, |
|||
}, |
|||
axisLine: { |
|||
show: true, |
|||
lineStyle: { |
|||
color: "rgba(226,226,226,0.28)" |
|||
} |
|||
}, |
|||
splitLine: { |
|||
show: true, |
|||
lineStyle: { |
|||
color: "rgba(226,226,226,0.61)" |
|||
} |
|||
}, |
|||
name: { |
|||
textStyle: { |
|||
color: '#333333', |
|||
fontSize: 14, |
|||
borderRadius: 3, |
|||
} |
|||
}, |
|||
indicator: indicator |
|||
}, |
|||
|
|||
series: [{ |
|||
name: "省满意度调查\n各项不满意人数", |
|||
type: "radar", |
|||
symbol: "circle", |
|||
symbolSize: 0, |
|||
areaStyle: { |
|||
normal: { |
|||
color: 'rgba(58,128,231,0.36)', |
|||
} |
|||
}, |
|||
itemStyle: { |
|||
color: '#3A80E7', |
|||
borderColor: '#3AB7FF', |
|||
borderWidth: 1, |
|||
}, |
|||
lineStyle: { |
|||
normal: { |
|||
color: "#3AB7FF", |
|||
width: 2 |
|||
} |
|||
}, |
|||
data: [datavaule] |
|||
}, { |
|||
name: "社区满意度自查\n各项不满意人数", |
|||
type: "radar", |
|||
symbol: "circle", |
|||
symbolSize: 0, |
|||
areaStyle: { |
|||
normal: { |
|||
color: 'rgba(170, 216, 255, 0)', |
|||
} |
|||
}, |
|||
itemStyle: { |
|||
color: '#EB8E16', |
|||
borderColor: '#EF9700', |
|||
borderWidth: 1, |
|||
}, |
|||
lineStyle: { |
|||
normal: { |
|||
color: "#EF9700", |
|||
width: 2 |
|||
} |
|||
}, |
|||
data: [datavaule2] |
|||
}] |
|||
}; |
|||
chart.setOption(option); |
|||
return chart; |
|||
} |
|||
|
|||
const formatTime = date => { |
|||
const year = date.getFullYear() |
|||
const month = date.getMonth() + 1 |
|||
const day = date.getDate() |
|||
return [year, month, day].map(formatNumber).join('-') |
|||
} |
|||
const formatNumber = n => { |
|||
n = n.toString() |
|||
return n[1] ? n : '0' + n |
|||
} |
|||
Component({ |
|||
properties: {}, |
|||
properties: { |
|||
typeCondition: { |
|||
type: Number, |
|||
value: 0, |
|||
observer (val) { |
|||
console.log(val,11) |
|||
this.getData() |
|||
} |
|||
} |
|||
}, |
|||
data: { |
|||
ec: { |
|||
onInit: initChart |
|||
} |
|||
}, |
|||
lifetimes: { |
|||
ready() { |
|||
this.getData() |
|||
} |
|||
}, |
|||
methods: { |
|||
getData() { |
|||
let params = { |
|||
startTime: '', |
|||
endTime: '' |
|||
} |
|||
let now = new Date(); |
|||
if (this.data.typeCondition === 0) { |
|||
params.startTime = formatTime(new Date(now.getFullYear(), now.getMonth(), 1)) |
|||
} |
|||
if (this.data.typeCondition === 1) { |
|||
params.startTime = formatTime(new Date(now.getFullYear(), now.getMonth() - 1)); |
|||
} |
|||
if (this.data.typeCondition === 2) { |
|||
params.startTime = formatTime(new Date(now.getFullYear(), now.getMonth() - 2)); |
|||
} |
|||
if (this.data.typeCondition === 3) { |
|||
params.startTime = formatTime(new Date(now.getFullYear(), now.getMonth() - 5)); |
|||
} |
|||
if (this.data.typeCondition === 4) { |
|||
params.startTime = formatTime(new Date(now.getFullYear(), now.getMonth() - 11)); |
|||
} |
|||
|
|||
if (this.data.typeCondition === 1) { |
|||
params.endTime = formatTime(new Date(now.getFullYear(), now.getMonth(), 0, 23, 59, 59)) |
|||
} else { |
|||
params.endTime = formatTime(new Date(now.getFullYear(), now.getMonth() + 1, 0, 23, 59, 59)) |
|||
} |
|||
console.log(params) |
|||
|
|||
satisfactionGroup(params).then(({data}) => { |
|||
var dataname = data.map(item => item.name) |
|||
var datavaule = data.map(item => item.blueNum ? item.blueNum : 0) |
|||
var datavaule2 = data.map(item => item.yellowNum ? item.yellowNum : 0) |
|||
var indicator = [] |
|||
let max = Math.max(...datavaule, ...datavaule2) |
|||
console.log(max) |
|||
var datamax = new Array(datavaule.length).fill(max) |
|||
for (var i = 0; i < dataname.length; i++) { |
|||
indicator.push({ |
|||
name: dataname[i], |
|||
max: datamax[i], |
|||
}) |
|||
} |
|||
let legendName = ['省满意度调查各项\n不满意人数', '社区满意度自查各项\n不满意人数'] |
|||
let series = [{ |
|||
name: "省满意度调查各项\n不满意人数", |
|||
type: "radar", |
|||
symbol: "circle", |
|||
symbolSize: 0, |
|||
areaStyle: { |
|||
normal: { |
|||
color: 'rgba(58,128,231,0.36)', |
|||
} |
|||
}, |
|||
itemStyle: { |
|||
color: '#3A80E7', |
|||
borderColor: '#3AB7FF', |
|||
borderWidth: 1, |
|||
}, |
|||
lineStyle: { |
|||
normal: { |
|||
color: "#3AB7FF", |
|||
width: 2 |
|||
} |
|||
}, |
|||
data: [datavaule] |
|||
}, { |
|||
name: "社区满意度自查各项\n不满意人数", |
|||
type: "radar", |
|||
symbol: "circle", |
|||
symbolSize: 0, |
|||
areaStyle: { |
|||
normal: { |
|||
color: 'rgba(170, 216, 255, 0)', |
|||
} |
|||
}, |
|||
itemStyle: { |
|||
color: '#EB8E16', |
|||
borderColor: '#EF9700', |
|||
borderWidth: 1, |
|||
}, |
|||
lineStyle: { |
|||
normal: { |
|||
color: "#EF9700", |
|||
width: 2 |
|||
} |
|||
}, |
|||
data: [datavaule2] |
|||
}] |
|||
var option = { |
|||
tooltip: { |
|||
show: false, |
|||
trigger: "item", |
|||
}, |
|||
legend: { |
|||
show: true, |
|||
textStyle: { |
|||
color: '#999999', |
|||
rich: { |
|||
name: { |
|||
fontSize: 14, |
|||
lineHeight: 19, |
|||
padding: [20, 0, 0, 0] |
|||
}, |
|||
} |
|||
}, |
|||
itemWidth: 6, |
|||
itemHeight: 6, |
|||
y: 'bottom', |
|||
x: 'center', |
|||
formatter: name => { |
|||
return `{name|${name}}` |
|||
}, |
|||
data: legendName, |
|||
}, |
|||
radar: { |
|||
center: ["50%", "40%"], |
|||
radius: "50%", |
|||
startAngle: 90, |
|||
splitNumber: 5, |
|||
splitArea: { |
|||
areaStyle: { |
|||
color: 'transparent' |
|||
} |
|||
}, |
|||
axisLabel: { |
|||
show: false, |
|||
}, |
|||
axisLine: { |
|||
show: true, |
|||
lineStyle: { |
|||
color: "rgba(226,226,226,0.28)" |
|||
} |
|||
}, |
|||
splitLine: { |
|||
show: true, |
|||
lineStyle: { |
|||
color: "rgba(226,226,226,0.61)" |
|||
} |
|||
}, |
|||
name: { |
|||
textStyle: { |
|||
color: '#333333', |
|||
fontSize: 14, |
|||
borderRadius: 3, |
|||
} |
|||
}, |
|||
indicator: indicator |
|||
}, |
|||
series |
|||
}; |
|||
chart.setOption(option,true); |
|||
}) |
|||
} |
|||
} |
|||
}); |
|||
|
|||
@ -1,13 +1,49 @@ |
|||
import {satisfactionCrowdList} from "../../../../utils/statisticsApi"; |
|||
|
|||
Page({ |
|||
data: { |
|||
|
|||
list: [], |
|||
total: 0, |
|||
params: {}, |
|||
pageNo: 1, |
|||
pageSize: 10 |
|||
}, |
|||
onLoad(options) { |
|||
|
|||
let params = {} |
|||
let data = JSON.parse(decodeURIComponent(options.data)) |
|||
for (let key in data) { |
|||
if (data[key]) { |
|||
params[key] = data[key] |
|||
} |
|||
} |
|||
this.setData({ |
|||
params |
|||
}) |
|||
this.getList() |
|||
}, |
|||
gotopage() { |
|||
gotopage(e) { |
|||
wx.navigateTo({ |
|||
url: "/subpages/statistics/pages/residentPortrait/residentPortrait" |
|||
url: "/subpages/statistics/pages/residentPortrait/residentPortrait?id="+e.currentTarget.dataset.id |
|||
}) |
|||
}, |
|||
getList() { |
|||
satisfactionCrowdList({ |
|||
...this.data.params, |
|||
pageNo: this.data.pageNo, |
|||
pageSize: this.data.pageSize |
|||
}).then(({data}) => { |
|||
this.setData({ |
|||
list: this.data.list.concat(data.list), |
|||
total: data.total |
|||
}) |
|||
}) |
|||
}, |
|||
onReachBottom() { |
|||
if (this.data.list.length < this.data.total) { |
|||
this.setData({ |
|||
pageNo: this.data.pageNo+1 |
|||
}) |
|||
this.getList() |
|||
} |
|||
} |
|||
}) |
|||
@ -1,8 +1,25 @@ |
|||
import {getUnsatisfiedMattersDetailInfo} from "../../../../../utils/statisticsApi"; |
|||
|
|||
Page({ |
|||
data: { |
|||
|
|||
detail: {}, |
|||
unsatisfiedHisCount: {}, |
|||
followUpRecordDetails: {}, |
|||
id: {} |
|||
}, |
|||
onLoad(options) { |
|||
|
|||
this.setData({ |
|||
id: JSON.parse(decodeURIComponent(options.id)) |
|||
}) |
|||
this.getData() |
|||
}, |
|||
getData() { |
|||
getUnsatisfiedMattersDetailInfo(this.data.id).then(({data}) =>{ |
|||
this.setData({ |
|||
detail: data.unsatisfiedMattersModel, |
|||
unsatisfiedHisCount: data.unsatisfiedHisCount, |
|||
followUpRecordDetails: data.followUpRecordDetails |
|||
}) |
|||
}) |
|||
} |
|||
}) |
|||
@ -1,18 +1,148 @@ |
|||
import { |
|||
getUnsatisfiedCategory, |
|||
getUnsatisfiedMattersList, |
|||
satisfactionMonthGroupForResident |
|||
} from "../../../../../utils/statisticsApi"; |
|||
|
|||
const formatTime = date => { |
|||
const year = date.getFullYear() |
|||
const month = date.getMonth() + 1 |
|||
return [year, month].map(formatNumber).join('-') |
|||
} |
|||
const formatTime2 = date => { |
|||
const year = date.getFullYear() |
|||
const month = date.getMonth() + 1 |
|||
const day = date.getDate() |
|||
return [year, month,day].map(formatNumber).join('-') |
|||
} |
|||
const formatNumber = n => { |
|||
n = n.toString() |
|||
return n[1] ? n : '0' + n |
|||
} |
|||
|
|||
Page({ |
|||
data: { |
|||
month:'', |
|||
month: '', |
|||
typeIndex: -1, |
|||
typeList: [] |
|||
typeList: [], |
|||
satisfactionSourceIndex: -1, |
|||
satisfactionSourceOptions: [{ |
|||
value: 'satisfaction_12345', |
|||
label: '12345投诉', |
|||
color: '#FFB73C', |
|||
}, { |
|||
value: 'satisfaction_province', |
|||
label: '省满意度调查', |
|||
color: '#64C1FF' |
|||
}, { |
|||
value: 'satisfaction_community', |
|||
label: '社区满意度自查', |
|||
color: '#08EBAE' |
|||
}], |
|||
satisfactionCategory: -1, |
|||
satisfactionCategoryOptions: [], |
|||
list: {}, |
|||
total: 0, |
|||
pageNo: 1, |
|||
pageSize: 20, |
|||
}, |
|||
onLoad(options) { |
|||
this.setData({ |
|||
month: formatTime(new Date()) |
|||
}) |
|||
this.getList() |
|||
}, |
|||
nextMonth() { |
|||
console.log('next'); |
|||
if (this.data.list[this.data.month].data.length < this.data.list[this.data.month].total) { |
|||
this.setData({ |
|||
pageNo: this.data.pageNo + 1 |
|||
}) |
|||
this.getList() |
|||
return |
|||
} |
|||
|
|||
let now = new Date(this.data.month) |
|||
this.setData({ |
|||
pageNo: 1, |
|||
month: formatTime(new Date(now.getFullYear(), now.getMonth() - 1)) |
|||
}) |
|||
this.getList() |
|||
}, |
|||
onConfirm() { |
|||
prevMonth() { |
|||
console.log('prev'); |
|||
|
|||
/* let now = new Date(this.data.month) |
|||
let now2 = new Date() |
|||
if (now.getMonth() < now2) { |
|||
this.setData({ |
|||
month: formatTime(new Date(now.getFullYear(), now.getMonth() + 1)) |
|||
}) |
|||
this.getList() |
|||
}*/ |
|||
}, |
|||
sourceChange(e) { |
|||
console.log(e) |
|||
this.getSatisfactionCategoryOptions() |
|||
}, |
|||
getSatisfactionCategoryOptions() { |
|||
this.setData({ |
|||
satisfactionCategory: -1, |
|||
satisfactionCategoryOptions: [] |
|||
}) |
|||
getUnsatisfiedCategory({ |
|||
satisfactionSource: this.data.satisfactionSourceOptions[this.data.satisfactionSourceIndex].value |
|||
}).then(({data}) => { |
|||
this.setData({ |
|||
satisfactionCategoryOptions: data.map(item => { |
|||
return { |
|||
label: item.categoryName, |
|||
value: item.categoryCode |
|||
} |
|||
}) |
|||
}) |
|||
}) |
|||
}, |
|||
onConfirm() { |
|||
this.setData({ |
|||
list: {}, |
|||
}) |
|||
this.getList(); |
|||
}, |
|||
getList() { |
|||
let params = { |
|||
pageNo: this.data.pageNo, |
|||
pageSize: this.data.pageSize, |
|||
month: this.data.month, |
|||
satisfactionSource: this.data.satisfactionSourceIndex >= 0 ? this.data.satisfactionSourceOptions[this.data.satisfactionSourceIndex].value : '', |
|||
satisfactionCategory: this.data.satisfactionCategory >= 0 ? this.data.satisfactionCategoryOptions[this.data.satisfactionCategory].value : '', |
|||
} |
|||
let list = this.data.list |
|||
getUnsatisfiedMattersList(params).then(({data}) => { |
|||
list[params.month] = { |
|||
data: this.data.list[params.month]?this.data.list[params.month].data.concat(data.list):data.list, |
|||
total: data.total, |
|||
month: params.month.split('-')[1], |
|||
} |
|||
this.setData({ |
|||
list |
|||
}) |
|||
this.getCount(params); |
|||
}) |
|||
}, |
|||
getCount({month}) { |
|||
let now = new Date(month); |
|||
var startTime = formatTime2(new Date(now.getFullYear(), now.getMonth(), 1)); |
|||
var endTime = formatTime2(new Date(now.getFullYear(), now.getMonth() + 1, 0, 23, 59, 59)); |
|||
satisfactionMonthGroupForResident({ |
|||
startTime,endTime |
|||
}).then(({data}) => { |
|||
this.setData(JSON.parse(`{"list.${month}.sumNumber": "${data.sumNumber}","list.${month}.sumPeople": "${data.sumPeople}"}`)) |
|||
}) |
|||
}, |
|||
gotopage(e) { |
|||
wx.navigateTo({ |
|||
url: '/subpages/statistics/pages/dissatisfied/detial/detail?id='+e.currentTarget.dataset.id |
|||
url: '/subpages/statistics/pages/dissatisfied/detial/detail?id=' + JSON.stringify(e.currentTarget.dataset.id) |
|||
}) |
|||
} |
|||
}) |
|||
@ -1,22 +1,67 @@ |
|||
// subpages/statistics/pages/qzbmy/qzbmy.js
|
|||
Page({ |
|||
import {getPotentialDissatisfiedCountDetail, maporg} from "../../../../utils/statisticsApi"; |
|||
|
|||
/** |
|||
* 页面的初始数据 |
|||
*/ |
|||
Page({ |
|||
data: { |
|||
org: [], |
|||
orgIndex: -1, |
|||
orgList: [], |
|||
orgIndex: 0, |
|||
pageNo: 1, |
|||
pageSize: 10, |
|||
list: [], |
|||
total: 0, |
|||
mobile: "", |
|||
name: "" |
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面加载 |
|||
*/ |
|||
onLoad(options) { |
|||
this.getOrg() |
|||
}, |
|||
getOrg() { |
|||
|
|||
maporg().then(async ({data}) => { |
|||
let parent = {value: data.id, label: data.name} |
|||
this.setData({ |
|||
orgList: [ |
|||
parent, ...data.children.map(item => { |
|||
return { |
|||
value: item.id, |
|||
label: item.name |
|||
} |
|||
}) |
|||
] |
|||
}) |
|||
this.getList() |
|||
}) |
|||
}, |
|||
gotopage({currentTarget:{dataset}}) { |
|||
|
|||
gotopage({currentTarget: {dataset}}) { |
|||
const {url} = dataset; |
|||
wx.navigateTo({url}) |
|||
}, |
|||
setVal(e) { |
|||
this.setData({ |
|||
[e.currentTarget.dataset.key]: e.detail.value |
|||
}) |
|||
}, |
|||
getList() { |
|||
getPotentialDissatisfiedCountDetail({ |
|||
pageNo: this.data.pageNo, |
|||
pageSize: this.data.pageSize, |
|||
agencyId: this.data.orgList[this.data.orgIndex].value, |
|||
name: this.data.name, |
|||
mobile: this.data.mobile, |
|||
}).then(({data}) => { |
|||
this.setData({ |
|||
list: this.data.list.concat(data.list), |
|||
total: data.total |
|||
}) |
|||
}); |
|||
}, |
|||
onReachBottom() { |
|||
if (this.data.list.length < this.data.total) { |
|||
this.setData({ |
|||
pageNo: this.data.pageNo + 1 |
|||
}) |
|||
this.getList() |
|||
} |
|||
} |
|||
}) |
|||
@ -1,43 +1,49 @@ |
|||
<view class="screen"> |
|||
<picker model:value="{{ orgIndex }}" bind:change="onConfirm"> |
|||
<picker |
|||
model:value="{{ orgIndex }}" |
|||
range="{{orgList}}" |
|||
range-key="label" |
|||
data-key="orgIndex" |
|||
bindchange="setVal" |
|||
> |
|||
<view class="picker"> |
|||
<text>{{ orgIndex>0 ? orgList[orgIndex].label : '按组织' }}</text> |
|||
<text>{{ orgIndex >= 0 ? orgList[orgIndex].label : '按组织' }}</text> |
|||
<image src="../../images/down.png" mode="widthFix"/> |
|||
</view> |
|||
|
|||
</picker> |
|||
<input placeholder="按姓名" class="picker-type"/> |
|||
<input placeholder="按电话" class="picker-type"/> |
|||
<input placeholder="按姓名" bind:input="setVal" data-key="name" class="picker-type"/> |
|||
<input placeholder="按电话" bind:input="setVal" data-key="mobile" class="picker-type"/> |
|||
<view class="btn">筛选</view> |
|||
</view> |
|||
|
|||
<view class="qz-container"> |
|||
<view class="qz-list"> |
|||
<view class="qz-item" wx:for="{{10}}"> |
|||
<view class="user-info"> |
|||
<view class="name">刘萍 133****1000</view> |
|||
<view class="address">XXX社区第一网格</view> |
|||
</view> |
|||
<view class="num-list"> |
|||
<view class="num-item" bind:tap="gotopage" data-url="/subpages/statistics/pages/sjwjj/sjwjj"> |
|||
<view class="txt"> |
|||
<text>事件未解决数</text> |
|||
</view> |
|||
<view class="num">76</view> |
|||
<view class="qz-list"> |
|||
<view class="qz-item" wx:for="{{list}}" wx:key="{{index}}"> |
|||
<view class="user-info"> |
|||
<view class="name">{{item.name}} {{item.mobile}}</view> |
|||
<view class="address">{{item.agencyName}}</view> |
|||
</view> |
|||
<view class="num-item" bind:tap="gotopage" data-url="/subpages/statistics/pages/xqwmz/xqwmz"> |
|||
<view class="txt"> |
|||
<text>需求未满足数</text> |
|||
<view class="num-list"> |
|||
<view class="num-item" bind:tap="gotopage" data-url="{{'/subpages/statistics/pages/sjwjj/sjwjj?id='+item.reportUserId+'&name='+item.name+'&mobile='+item.mobile+'&agencyName='+item.agencyName}}"> |
|||
<view class="txt"> |
|||
<text>事件未解决数</text> |
|||
</view> |
|||
<view class="num">{{item.eventCount}}</view> |
|||
</view> |
|||
<view class="num">24</view> |
|||
</view> |
|||
<view class="num-item" bind:tap="gotopage" data-url="/subpages/statistics/pages/yxwxfw/yxwxfw"> |
|||
<view class="txt"> |
|||
<text>应享未享服务数</text> |
|||
<view class="num-item" bind:tap="gotopage" data-url="{{'/subpages/statistics/pages/xqwmz/xqwmz?id='+item.reportUserId+'&name='+item.name+'&mobile='+item.mobile+'&agencyName='+item.agencyName}}"> |
|||
<view class="txt"> |
|||
<text>需求未满足数</text> |
|||
</view> |
|||
<view class="num">{{item.demandCount}}</view> |
|||
</view> |
|||
<view class="num-item" bind:tap="gotopage" data-url="{{'/subpages/statistics/pages/yxwxfw/yxwxfw?id='+item.reportUserId+'&name='+item.name+'&mobile='+item.mobile+'&agencyName='+item.agencyName}}"> |
|||
<view class="txt"> |
|||
<text>应享未享服务数</text> |
|||
</view> |
|||
<view class="num">{{item.serviceCount}}</view> |
|||
</view> |
|||
<view class="num">13</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
@ -1,66 +1,71 @@ |
|||
// subpages/statistics/pages/residentPortrait/residentPortrait.js
|
|||
Page({ |
|||
import { |
|||
getFamilyRelationshipList, getPersonalFeature, |
|||
getPersonalFile, potentialSatisfactionForResident, queryResidentFollowRecord |
|||
} from "../../../../utils/statisticsApi"; |
|||
|
|||
/** |
|||
* 页面的初始数据 |
|||
*/ |
|||
Page({ |
|||
data: { |
|||
|
|||
id: 0, |
|||
userInfo: {}, |
|||
relationship: {}, |
|||
unSolvedNum: 0, |
|||
unFinishNum: 0, |
|||
noServiceNum: 0, |
|||
event12345Num: 0, |
|||
provinceSatisfactionNum: 0, |
|||
selfInspectNum: 0, |
|||
logList: [], |
|||
tags: {} |
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面加载 |
|||
*/ |
|||
onLoad(options) { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面初次渲染完成 |
|||
*/ |
|||
onReady() { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面显示 |
|||
*/ |
|||
onShow() { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面隐藏 |
|||
*/ |
|||
onHide() { |
|||
|
|||
this.setData({ |
|||
id: options.id |
|||
}) |
|||
this.getUser() |
|||
this.getNum() |
|||
this.getlog() |
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面卸载 |
|||
*/ |
|||
onUnload() { |
|||
|
|||
getUser() { |
|||
getPersonalFile({resid: this.data.id}).then(({data}) => { |
|||
this.setData({ |
|||
userInfo: data |
|||
}) |
|||
}) |
|||
getFamilyRelationshipList({resid: this.data.id, type: 0}).then(({data}) => { |
|||
this.setData({ |
|||
relationship: data |
|||
}) |
|||
}) |
|||
getPersonalFeature({resid: this.data.id}).then(({data}) => { |
|||
this.setData({ |
|||
tags: data |
|||
}) |
|||
}) |
|||
}, |
|||
|
|||
/** |
|||
* 页面相关事件处理函数--监听用户下拉动作 |
|||
*/ |
|||
onPullDownRefresh() { |
|||
|
|||
getNum() { |
|||
let params = { |
|||
resiId: this.data.id, |
|||
}; |
|||
potentialSatisfactionForResident(params).then(({data}) => { |
|||
this.setData({ |
|||
unSolvedNum: data.unSolvedNum, |
|||
unFinishNum: data.unFinishNum, |
|||
noServiceNum: data.noServiceNum, |
|||
event12345Num: data.event12345Num, |
|||
provinceSatisfactionNum: data.provinceSatisfactionNum, |
|||
selfInspectNum: data.selfInspectNum |
|||
}) |
|||
}); |
|||
}, |
|||
|
|||
/** |
|||
* 页面上拉触底事件的处理函数 |
|||
*/ |
|||
onReachBottom() { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 用户点击右上角分享 |
|||
*/ |
|||
onShareAppMessage() { |
|||
|
|||
getlog() { |
|||
let params = { |
|||
resiId: this.data.id, |
|||
}; |
|||
queryResidentFollowRecord(params).then(({data}) => { |
|||
this.setData({ |
|||
logList: data |
|||
}) |
|||
}) |
|||
} |
|||
}) |
|||
@ -1,8 +1,44 @@ |
|||
import {getEventUnSolvedByUserId} from "../../../../utils/statisticsApi"; |
|||
|
|||
Page({ |
|||
data: { |
|||
|
|||
pageNo: 1, |
|||
pageSize: 10, |
|||
list: [], |
|||
total: 0, |
|||
id: 0, |
|||
name: '', |
|||
mobile: '', |
|||
agencyName: '', |
|||
}, |
|||
onLoad(options) { |
|||
this.setData({ |
|||
id: options.id, |
|||
name: options.name, |
|||
mobile: options.mobile, |
|||
agencyName: options.agencyName, |
|||
}) |
|||
this.getList() |
|||
}, |
|||
|
|||
getList() { |
|||
getEventUnSolvedByUserId({ |
|||
pageNo: this.data.pageNo, |
|||
pageSize: this.data.pageSize, |
|||
reportUserId: this.data.id |
|||
}).then(({data}) => { |
|||
this.setData({ |
|||
list: this.data.list.concat(data.list), |
|||
total: data.total |
|||
}) |
|||
}); |
|||
}, |
|||
onReachBottom() { |
|||
if (this.data.list.length < this.data.total) { |
|||
this.setData({ |
|||
pageNo: this.data.pageNo + 1 |
|||
}) |
|||
this.getList() |
|||
} |
|||
} |
|||
}) |
|||
@ -1,20 +1,20 @@ |
|||
<view class="user-info"> |
|||
<view class="name">刘萍 133****1000</view> |
|||
<view class="address">XXX社区第一网格</view> |
|||
<view class="name">{{name}} {{mobile}}</view> |
|||
<view class="address">{{agencyName}}</view> |
|||
</view> |
|||
<view class="qz-container"> |
|||
<view class="list"> |
|||
<view class="item" wx:for="{{10}}"> |
|||
<view class="item" wx:for="{{list}}" wx:key="{{index}}"> |
|||
<view class="title"> |
|||
<view class="blue">城市管理-生态环境</view> |
|||
<view class="time">2023-08-12 15:30</view> |
|||
<view class="blue">{{item.categoryName}}</view> |
|||
<view class="time">{{item.happenTime}}</view> |
|||
</view> |
|||
<view class="content"> |
|||
有几颗高大的树木因为雷雨天气被折断,影响小区居民出行。 |
|||
{{item.eventContent}} |
|||
</view> |
|||
<view class="status"> |
|||
<text>2023-08-12 18:20</text> |
|||
<text>已指派 [XXX社区第一网格] 办理</text> |
|||
<text>{{item.latestProcessingTime}}</text> |
|||
<text>{{item.latestProcessingStatus}}</text> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
@ -1,10 +1,44 @@ |
|||
Page({ |
|||
import {getUserDemandUnSolvedByUserId} from "../../../../utils/statisticsApi"; |
|||
|
|||
Page({ |
|||
data: { |
|||
|
|||
pageNo: 1, |
|||
pageSize: 10, |
|||
list: [], |
|||
total: 0, |
|||
id: 0, |
|||
name: '', |
|||
mobile: '', |
|||
agencyName: '', |
|||
}, |
|||
|
|||
onLoad(options) { |
|||
this.setData({ |
|||
id: options.id, |
|||
name: options.name, |
|||
mobile: options.mobile, |
|||
agencyName: options.agencyName, |
|||
}) |
|||
this.getList() |
|||
}, |
|||
|
|||
getList() { |
|||
getUserDemandUnSolvedByUserId({ |
|||
pageNo: this.data.pageNo, |
|||
pageSize: this.data.pageSize, |
|||
reportUserId: this.data.id |
|||
}).then(({data}) => { |
|||
this.setData({ |
|||
list: this.data.list.concat(data.list), |
|||
total: data.total |
|||
}) |
|||
}); |
|||
}, |
|||
onReachBottom() { |
|||
if (this.data.list.length < this.data.total) { |
|||
this.setData({ |
|||
pageNo: this.data.pageNo + 1 |
|||
}) |
|||
this.getList() |
|||
} |
|||
} |
|||
}) |
|||
@ -1,21 +1,20 @@ |
|||
<view class="user-info"> |
|||
<view class="name">刘萍 133****1000</view> |
|||
<view class="address">XXX社区第一网格</view> |
|||
<view class="name">{{name}} {{mobile}}</view> |
|||
<view class="address">{{agencyName}}</view> |
|||
</view> |
|||
<view class="qz-container"> |
|||
<view class="list"> |
|||
<view class="item" wx:for="{{10}}"> |
|||
<view class="item" wx:for="{{list}}" wx:key="{{index}}"> |
|||
<view class="title"> |
|||
<view class="blue">社区养老</view> |
|||
<view class="time">2023-08-12 15:30</view> |
|||
<view class="blue">{{item.categoryName}}</view> |
|||
<view class="time">{{item.reportTime}}</view> |
|||
</view> |
|||
<view class="content"> |
|||
社区很多高龄老人已经行动不便,常年没办法下楼 |
|||
梯,希望社区能提供上门体检业务。 |
|||
{{item.content}} |
|||
</view> |
|||
<view class="status"> |
|||
<text>2023-08-12 18:20</text> |
|||
<text>已指派 [XXX社区第一网格] 办理</text> |
|||
<text>{{item.latestProcessingTime}}</text> |
|||
<text>{{item.latestProcessingStatus}}</text> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
@ -1,66 +1,44 @@ |
|||
// subpages/statistics/pages/yxwxfw/yxwxfw.js
|
|||
Page({ |
|||
import {getServiceNotEnjoyedByUserId} from "../../../../utils/statisticsApi"; |
|||
|
|||
/** |
|||
* 页面的初始数据 |
|||
*/ |
|||
Page({ |
|||
data: { |
|||
|
|||
pageNo: 1, |
|||
pageSize: 10, |
|||
list: [], |
|||
total: 0, |
|||
id: 0, |
|||
name: '', |
|||
mobile: '', |
|||
agencyName: '', |
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面加载 |
|||
*/ |
|||
onLoad(options) { |
|||
|
|||
this.setData({ |
|||
id: options.id, |
|||
name: options.name, |
|||
mobile: options.mobile, |
|||
agencyName: options.agencyName, |
|||
}) |
|||
this.getList() |
|||
}, |
|||
|
|||
getList() { |
|||
getServiceNotEnjoyedByUserId({ |
|||
pageNo: this.data.pageNo, |
|||
pageSize: this.data.pageSize, |
|||
reportUserId: this.data.id |
|||
}).then(({data}) => { |
|||
this.setData({ |
|||
list: this.data.list.concat(data.list), |
|||
total: data.total |
|||
}) |
|||
}); |
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面初次渲染完成 |
|||
*/ |
|||
onReady() { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面显示 |
|||
*/ |
|||
onShow() { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面隐藏 |
|||
*/ |
|||
onHide() { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面卸载 |
|||
*/ |
|||
onUnload() { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 页面相关事件处理函数--监听用户下拉动作 |
|||
*/ |
|||
onPullDownRefresh() { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 页面上拉触底事件的处理函数 |
|||
*/ |
|||
onReachBottom() { |
|||
|
|||
}, |
|||
|
|||
/** |
|||
* 用户点击右上角分享 |
|||
*/ |
|||
onShareAppMessage() { |
|||
|
|||
if (this.data.list.length < this.data.total) { |
|||
this.setData({ |
|||
pageNo: this.data.pageNo + 1 |
|||
}) |
|||
this.getList() |
|||
} |
|||
} |
|||
}) |
|||
@ -1,21 +1,20 @@ |
|||
<view class="user-info"> |
|||
<view class="name">刘萍 133****1000</view> |
|||
<view class="address">XXX社区第一网格</view> |
|||
<view class="name">{{name}} {{mobile}}</view> |
|||
<view class="address">{{agencyName}}</view> |
|||
</view> |
|||
<view class="qz-container"> |
|||
<view class="list"> |
|||
<view class="item" wx:for="{{10}}"> |
|||
<view class="item" wx:for="{{list}}" wx:key="{{index}}"> |
|||
<view class="title"> |
|||
<view class="blue">社区养老</view> |
|||
<view class="time">2023-08-12 15:30</view> |
|||
<view class="blue">{{item.serviceCategoryName}}</view> |
|||
<view class="time">{{item.serviceTimeStart}}</view> |
|||
</view> |
|||
<view class="content"> |
|||
社区很多高龄老人已经行动不便,常年没办法下楼 |
|||
梯,希望社区能提供上门体检业务。 |
|||
{{item.remark}} |
|||
</view> |
|||
<view class="status"> |
|||
<text>是否已完成服务:</text> |
|||
<text class="orange">否</text> |
|||
<text class="orange">{{item.serviceStatus}}</text> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
@ -0,0 +1,122 @@ |
|||
var request = require('./request.js') |
|||
const paramsFormat = function (params) { |
|||
let strArray = [] |
|||
for(let key in params) { |
|||
if(params[key] || params[key] == 0 || params[key] == '0') { |
|||
strArray.push(key+'='+params[key]) |
|||
} |
|||
} |
|||
return strArray.join('&') |
|||
} |
|||
// 不满意事项类型分析
|
|||
export function satisfactionGroup(params) { |
|||
return request.get(`governance/satisfactionOverview/satisfactionGroup`, params) |
|||
} |
|||
|
|||
// 按12345热线投诉结果
|
|||
export function event12345Group(params) { |
|||
return request.get('governance/satisfactionOverview/event12345Group', params) |
|||
} |
|||
|
|||
// 不满意事项月份走势图
|
|||
export function notSatisfactionTrend(params) { |
|||
return request.get('governance/satisfactionOverview/notSatisfactionTrend', params) |
|||
} |
|||
|
|||
// 社区自查走势图
|
|||
export function selfInspectMonthTrend(params) { |
|||
return request.get('governance/satisfactionOverview/selfInspectMonthTrend', params) |
|||
} |
|||
|
|||
// 12345政务热线事件办理情况
|
|||
export function do12345MonthGroup(params) { |
|||
return request.get('governance/satisfactionOverview/do12345MonthGroup', params) |
|||
} |
|||
|
|||
// 不满意风险人员统计及回访情况
|
|||
export function satisfactionFollowGroup(params) { |
|||
return request.get('governance/satisfactionOverview/satisfactionFollowGroup', params) |
|||
} |
|||
|
|||
// 下级不满意事项
|
|||
export function childSatisfactionGroup(params) { |
|||
return request.get('governance/satisfactionOverview/childSatisfactionGroup', params) |
|||
} |
|||
|
|||
// 潜在不满意人数统计
|
|||
export function potentialSatisfactionGroup(params) { |
|||
return request.get('governance/satisfactionOverview/potentialSatisfactionGroup', params) |
|||
} |
|||
|
|||
// 不满意人员画像
|
|||
export function satisfactionCrowdPortrait(params) { |
|||
return request.get('governance/satisfactionOverview/satisfactionCrowdPortrait', params) |
|||
} |
|||
// 不满意人员画像列表
|
|||
export function satisfactionCrowdList(params) { |
|||
return request.get('governance/satisfactionOverview/satisfactionCrowdList', params) |
|||
} |
|||
// 家庭关系
|
|||
export function getFamilyRelationshipList(params) { |
|||
console.log(params,'params') |
|||
return request.post('actual/base/peopleRoomOverview/getFamilyRelationshipList?'+paramsFormat(params), params) |
|||
} |
|||
// 个人档案
|
|||
export function getPersonalFile(params) { |
|||
return request.post('actual/base/peopleRoomOverview/getPersonalFile?'+paramsFormat(params), params) |
|||
} |
|||
|
|||
// 社区服务
|
|||
export function getUnsatisfiedMattersList(params) { |
|||
return request.get('governance/satisfactionDetailList/getUnsatisfiedMattersList', params) |
|||
} |
|||
// 获取类型
|
|||
export function getUnsatisfiedCategory(params) { |
|||
return request.get('governance/satisfactionDetailList/getUnsatisfiedCategory', params) |
|||
} |
|||
// 获取类型
|
|||
export function getUnsatisfiedMattersDetailInfo(params) { |
|||
return request.post('governance/satisfactionDetailList/getUnsatisfiedMattersDetailInfo', params) |
|||
} |
|||
// 潜在不满意人数汇总
|
|||
export function getPotentialDissatisfiedCountDetail(params) { |
|||
return request.get('governance/satisfactionDetailList/getPotentialDissatisfiedCountDetail', params) |
|||
} |
|||
// 满意度评价-事件未解决数详情
|
|||
export function getEventUnSolvedByUserId(params) { |
|||
return request.get('governance/satisfactionDetailList/getEventUnSolvedByUserId', params) |
|||
} |
|||
// 满意度评价-应享未享服务数详情
|
|||
export function getServiceNotEnjoyedByUserId(params) { |
|||
return request.get('governance/satisfactionDetailList/getServiceNotEnjoyedByUserId', params) |
|||
} |
|||
// 满意度评价-需求未满足数详情
|
|||
export function getUserDemandUnSolvedByUserId(params) { |
|||
return request.get('governance/satisfactionDetailList/getUserDemandUnSolvedByUserId', params) |
|||
} |
|||
|
|||
|
|||
// 获取组织
|
|||
export function maporg(params) { |
|||
return request.post('gov/org/agency/maporg', params) |
|||
} |
|||
|
|||
// 居民的历史及潜在不满意事项
|
|||
export function potentialSatisfactionForResident(params) { |
|||
return request.get('governance/satisfactionOverview/potentialSatisfactionForResident', params) |
|||
} |
|||
// 居民被回访记录
|
|||
export function queryResidentFollowRecord(params) { |
|||
return request.get('governance/satisfactionOverview/queryResidentFollowRecord', params) |
|||
} |
|||
|
|||
// 不满意时间汇总--工作端
|
|||
export function satisfactionMonthGroupForResident(params) { |
|||
return request.get('governance/satisfactionOverview/satisfactionMonthGroupForResident', params) |
|||
} |
|||
|
|||
// 居民特征
|
|||
export function getPersonalFeature(params) { |
|||
return request.post('actual/base/peopleRoomOverview/getPersonalFeature?'+paramsFormat(params), params) |
|||
} |
|||
|
|||
Loading…
Reference in new issue