Browse Source

网格化列表接口对接,超时督办接口对接,分析报告接口对接

chengyang
mk 9 months ago
parent
commit
f12d2578d5
  1. 344
      src/views/modules/shequzhili/eventOld/analysis/grid-analysis.vue
  2. 140
      src/views/modules/shequzhili/eventOld/eventList-grid.vue
  3. 25
      src/views/modules/shequzhili/eventOld/eventList.vue
  4. 37
      src/views/modules/shequzhili/eventOld/timeOut/grid-time.vue

344
src/views/modules/shequzhili/eventOld/analysis/grid-analysis.vue

@ -3,6 +3,11 @@
<div>
<div class="m-search">
<el-form :inline="true" :model="formData" ref="ref_searchform" :label-width="'100px'">
<el-form-item label="所属组织" prop="agencyId">
<el-cascader class="u-item-width-normal" size="small" ref="myCascader"
v-model.trim="formData.agencyId" :options="orgOptions" :props="orgOptionProps"
clearable @change="handleCascaderChange"></el-cascader>
</el-form-item>
<el-form-item label="统计时间">
<el-date-picker v-model.trim="formData.queryDateStart" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
placeholder="开始时间" style="width: 202px" clearable>
@ -68,9 +73,9 @@
<img src="../../analysis/img/perp.png" alt />
<div class="item_content">
<div class="item_row1">
<div class="row_left">{{ analysisList.illegalConnectTotal }}</div>
<div class="row_left">{{ analysisList.illegalConnectTotal || 0 }}</div>
<div class="text1">{{ analysisList.illegalConnectRate }}%</div>
<div class="text1">{{ analysisList.illegalConnectRate || 0 }}%</div>
</div>
<div class="item_row2">
@ -85,9 +90,9 @@
<img src="@/assets/images/category/perpon.png" alt />
<div class="item_content">
<div class="item_row1">
<div class="row_left">{{ analysisList.illegalResolveTotal }}</div>
<div class="row_left">{{ analysisList.illegalResolveTotal || 0 }}</div>
<div class="text2">{{ analysisList.illegalResolveRate }}%</div>
<div class="text2">{{ analysisList.illegalResolveRate || 0 }}%</div>
</div>
<div class="item_row2">
@ -191,7 +196,6 @@ export default {
return {
starttime: "",
endtime: "",
level: 1,
tableList: [],
communityList: [],
departmentList: [],
@ -199,14 +203,16 @@ export default {
formData: {
queryDateStart: "",
queryDateEnd: "",
agencyId:''
},
agencyLevel: '',
orgData: {
id: "",
level: "agency",
},
orgOptionProps:{
multiple: false,
value: 'agencyId',
label: 'agencyName',
children: 'subAgencyList',
checkStrictly: true
},
analysisList: {},
//
@ -217,37 +223,14 @@ export default {
departHotline: "",
hotDemand: "",
},
orgOptions:[],
mobileData: [],
addressMobileData: [],
addComplainData: [],
eventCategorys: [],
categoryPie: {},
communityChart: {},
departChart: {},
hotlineChart: {},
categoryCountShow: false,
communityCountShow: false,
departCountShow: false,
subCategoryCountShow: false,
recId: "",
departId: "",
communityId: "",
eventId: "",
eventDetailData: {},
pageType: "info",
mergeObj: {},
mergeArr: ['address'],
myBarchart: {},
sourceType:'0'
sourceType:'0',
selectedValue:null,
};
},
@ -262,17 +245,22 @@ export default {
watch: {},
mounted() {
this.user = this.$store.state.user;
this.agencyId = this.user.agencyId;
this.formData.agencyId = this.user.agencyId;
this.selectedValue = this.user.agencyId
this.getLastMonthRange()
this.getOrgData();
this.initEcharts()
this.agencyLevel = localStorage.getItem("level", this.orgData.level);
this.getTableData();
this.EventCategoryAnalysis();
this.EventCate();
this.getOrgTreeList()
this.getCategoryTree()
},
methods: {
handleCascaderChange(value) {
// value
//
const lastValue = value[value.length - 1];
console.log(lastValue);
this.selectedValue = lastValue;
},
calculateRowspan(item) {
if (!item.children || !item.children.length) {
return 1;
@ -293,34 +281,17 @@ export default {
});
},
//
async getOrgData() {
const url = "/gov/org/agency/maporg";
let params = {
orgId: "",
level: "",
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.orgData = data;
} else {
this.$message.error(msg);
}
},
//
handleSearch(val) {
this.communityList = [];
this.departmentList = [];
console.log(this.formData);
this.myBarchart =null;
//
this.getTableData();
this.EventCategoryAnalysis();
this.EventCate();
this.getCategoryTree()
this.initEcharts()
},
//
async getCategoryTree() {
@ -341,9 +312,7 @@ export default {
const { data, code, msg } = await requestPost(url, param);
if (code === 0) {
this.tableList = data
// this.tableList=this.flattenTree(data);
console.log(this.tableList);
console.log(this.tableList, "lksdjfklj s");
} else {
this.$message.error(msg);
}
@ -360,39 +329,15 @@ export default {
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
},
initEcharts() {
this.$http.get("/actual/base/residentIntegrity/resiCategoryStats/byOrg/query4Org").then(({ data: { data } }) => {
let params = {
startDate: this.starttime,
endDate: this.endtime,
usableFlag: false,
agencyId:this.selectedValue
}
this.$http.post("/governance/icEvent/getSourceTypeNum",params).then(({ data: { data } }) => {
this.myBarchart = echarts.init(document.getElementById("myBarchart"));
data = {
"totalResiNum": 25391,
"nonIntegratedResiNum": 8359,
"categoryStatsDatas": [
{
"resiCategory": "VETERAN_FLAG",
"resiCategoryName": "退役军人",
"total": 306,
"integratedNum": 149,
"nonIntegratedNum": 157
},
{
"resiCategory": "UNEMPLOYED_FLAG",
"resiCategoryName": "失业人员",
"total": 240,
"integratedNum": 0,
"nonIntegratedNum": 240
},
{
"resiCategory": "SUBSISTENCE_ALLOWANCE_FLAG",
"resiCategoryName": "低保人员",
"total": 53,
"integratedNum": 2,
"nonIntegratedNum": 51
},
]
}
let xData = data.categoryStatsDatas.map(item => item.resiCategoryName)
let xData = data.map(item => item.sourceTypeName)
let option = {
backgroundColor: '#fff',
color: ['#448cf6', '#f7ca60',],
@ -436,9 +381,9 @@ export default {
type: 'bar',
stack: '总量',
barWidth: '50px',
data: data.categoryStatsDatas.map((item, index) => ({
value: item.integratedNum,
extraProperty: item.resiCategory
data: data.map((item, index) => ({
value: item.num,
// extraProperty: item.resiCategory
})),
},
{
@ -446,9 +391,9 @@ export default {
type: 'bar',
stack: '总量',
barWidth: '50px',
data: data.categoryStatsDatas.map((item, index) => ({
value: item.nonIntegratedNum,
extraProperty: item.resiCategory
data: data.map((item, index) => ({
value: item.num,
// extraProperty: item.resiCategory
})),
}
]
@ -477,78 +422,24 @@ export default {
console.log(this.formData.queryDateEnd);
},
//
async EventCate() {
const url = "/governance/icEvent/EventCategoryAnalysis";
//
if (this.formData.queryDateStart && this.formData.queryDateEnd) {
this.starttime = this.formData.queryDateStart,
this.endtime = this.formData.queryDateEnd
} else {
{
this.getLastMonthRange()
}
}
let param = {
startDate: this.starttime,
endDate: this.endtime,
usableFlag: true
}
const { data, code, msg } = await requestPost(url, param);
if (code === 0) {
console.log(data);
data.map(item => {
if (item.assignOrgType == "duty") {
this.departmentList.push(item)
} else {
this.communityList.push(item)
}
})
} else {
this.$message.error(msg);
}
},
flattenTree(tree, levelKeys = []) {
let result = [];
console.log(tree, "tree");
tree.forEach(node => {
console.log(levelKeys);
let newLevelKeys = [...levelKeys];
newLevelKeys.push(node.categoryName);
console.log(newLevelKeys, "newLevelKeys");
let level1 = newLevelKeys[0] || null;
let level2 = newLevelKeys[1] || null;
let level3 = newLevelKeys[2] || null;
let level4 = newLevelKeys[3] || null;
let level5 = newLevelKeys[4] || null;
if (level2) level1 = null;
if (level3) level2 = null;
if (level4) level3 = null;
if (level5) level4 = null;
let flattenedNode = {
...node,
level1: level1,
level2: level2,
level3: level3,
level4: level4,
level5: level5
};
delete flattenedNode.children;
result.push(flattenedNode);
if (node.children && node.children.length > 0) {
console.log(node, "node");
result = result.concat(this.flattenTree(node.children, newLevelKeys));
}
});
console.log(result);
return result;
getOrgTreeList () {
this.$http
.post('/gov/org/customeragency/agencygridtree', {})
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
this.orgOptions = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
//
async EventCategoryAnalysis() {
const url = "/governance/icEvent/EventCategoryAnalysis";
const url = "/governance/icEvent/EventOldCategoryAnalysis";
if (this.formData.queryDateStart && this.formData.queryDateEnd) {
this.starttime = this.formData.queryDateStart,
this.endtime = this.formData.queryDateEnd
@ -560,13 +451,12 @@ export default {
let params = {
startDate: this.starttime,
endDate: this.endtime,
usableFlag: false
usableFlag: false,
agencyId:this.selectedValue
}
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
console.log(data);
this.analysisList = data[0];
console.log(this.analysisList);
} else {
this.$message.error(msg);
}
@ -576,113 +466,7 @@ export default {
exportReport() {
this.$message.info('功能即将开通,敬请期待')
},
//
async getTableData() {
const url = '/governance/dwdEvent/report';
const { formData } = this;
const { data, code, internalMsg } = await requestPost(url, {
...formData
});
if (code != 0) {
this.$message.info(internalMsg);
return;
}
if (!data) {
return;
}
this.report = data;
this.tableLoading = true;
this.mobileData = this.report.mobileEvent
? this.report.mobileEvent.map(item => {
return item;
})
: [];
this.addressMobileData = this.report.addressMobileEvents
? this.report.addressMobileEvents.map(item => {
return item;
})
: [];
this.addComplainData = this.report.awoEvents
? this.report.awoEvents.map(item => {
return item;
})
: [];
this.eventCategorys = this.report.eventCategorys
? this.report.eventCategorys.map(item => {
return item;
})
: [];
//
this.getSpanArr(this.addressMobileData);
if (this.report && this.report.categoryCount && Object.keys(this.report.categoryCount).length > 0) {
this.categoryCountShow = true;
}
if (this.report && this.report.communityCount && Object.keys(this.report.communityCount).length > 0) {
this.communityCountShow = true;
}
if (this.report && this.report.departCount && Object.keys(this.report.departCount).length > 0) {
this.departCountShow = true;
}
if (this.report && this.report.subCategoryCount && Object.keys(this.report.subCategoryCount).length > 0) {
this.subCategoryCountShow = true;
}
},
cleanSearchForm() {
this.departId = '';
this.eventId = "";
this.recId = '';
this.address = '';
this.mobile = '';
this.awo_flag = '';
},
getSpanArr(data) {
this.mergeArr.forEach((key, index1) => {
let count = 0; //
this.mergeObj[key] = []; //
data.forEach((item, index) => {
// index == 0 push 1
if (index === 0) {
this.mergeObj[key].push(1);
} else {
// count +1 push 0
if (item[key] === data[index - 1][key]) {
this.mergeObj[key][count] += 1;
this.mergeObj[key].push(0);
} else {
//
count = index; //
this.mergeObj[key].push(1); // push 1
}
}
})
})
},
// { , , , }
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
//
if (this.mergeArr.indexOf(column.property) !== -1) {
// 0
if (this.mergeObj[column.property][rowIndex]) {
return [this.mergeObj[column.property][rowIndex], 1]
} else {
// 0
return [0, 0];
}
}
}
},
props: {},

140
src/views/modules/shequzhili/eventOld/eventList-grid.vue

@ -10,9 +10,9 @@
:show-all-levels="false" @change="handleChangeAgency" clearable></el-cascader>
</el-form-item>
<el-form-item label="事件来源" prop="sourceType">
<el-select v-model.trim="formData.sourceType" placeholder="请选择" size="small" clearable
<el-select v-model.trim="formData.sourceType" disabled placeholder="请选择" size="small" clearable
class="u-item-width-normal">
<el-option v-for="item in qudaoArray" :key="item.value" :label="item.label"
<el-option v-for="item in eventSourceTypeList" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
@ -28,10 +28,10 @@
</template>
</el-cascader> -->
</el-form-item>
<el-form-item label="重点问题标注" prop="sourceType">
<el-select v-model.trim="formData.sourceType" placeholder="请选择" size="small" clearable
<el-form-item label="重点问题标注" prop="keyProblem">
<el-select v-model.trim="formData.keyProblem" placeholder="请选择" size="small" clearable
class="u-item-width-normal">
<el-option v-for="item in qudaoArray" :key="item.value" :label="item.label"
<el-option v-for="item in keyProblemList" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
@ -80,35 +80,6 @@
</el-date-picker>
</el-form-item>
<!--
<el-form-item label="标记" prop="type">
<el-select class="u-item-width-normal" v-model.trim="formData.type" placeholder="全部" size="small"
clearable>
<el-option v-for="item in typeArray" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="公开表决" prop="openFlag">
<el-select class="u-item-width-normal" v-model.trim="formData.openFlag" placeholder="全部" size="small"
clearable>
<el-option v-for="item in Publicvoting" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="处理时长" prop="type">
<el-select class="u-item-width-normal" v-model.trim="formData.overPeriod" placeholder="全部" size="small"
clearable>
<el-option v-for="item in overPeriodArray" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item> -->
<el-row>
<el-col :span="24" align="right">
<el-button style="margin-left: 30px" size="small" type="primary "
@ -127,20 +98,6 @@
<el-button @click="handleExport" class="diy-button--white" size="small">导出</el-button>
<!-- <el-dropdown size="small" split-button type="primary" style="margin: 0 10px; height: 30px"
@command="(command) => handleMarkDiffcult(command)">
标记
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="1">标记为难点堵点</el-dropdown-item>
<el-dropdown-item command="2">标记为矛盾纠纷</el-dropdown-item>
<el-dropdown-item command="3">标记为自身问题</el-dropdown-item>
<el-dropdown-item command="4">标记为超出服务范围</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-button @click="handleCancalDiffcult" class="diy-button--white" size="small">取消标记</el-button>
<el-button @click="handleSuperviseEvent" class="diy-button--white" size="small">批量催办</el-button>
</el-dropdown> -->
<!-- <el-button @click="handleCancalDiffcult" class="diy-button--white" size="small">取消标记</el-button> -->
<el-button @click="handleSuperviseEvent" class="diy-button--white" size="small">批量催办</el-button>
</div>
@ -159,34 +116,8 @@
<el-table-column prop="categoryName" label="事件类别" min-width="140" align="center"
:show-overflow-tooltip="true" />
<!-- <template slot-scope="scope">
{{ scope.row.firstName + '-' + scope.row.secondName }}
</template>
</el-table-column> -->
<el-table-column prop="eventContent" label="事件描述" align="center" :show-overflow-tooltip="true">
</el-table-column>
<!-- <el-table-column prop="imageList" align="center" width="80" label="图片">
<template slot-scope="scope">
<el-image v-if="scope.row.imageList && scope.row.imageList.length > 0"
style="width: 40px; height: 40px" :src="scope.row.imageList[0]"
:preview-src-list="scope.row.imageList">
</el-image>
<span v-else></span>
</template>
</el-table-column> -->
<!-- <el-table-column prop="voiceList" align="center" width="80" label="音频">
<template slot-scope="scope">
<img @click="handleShowVoice(scope.row.voiceList[0].url)" class="img-voice"
v-if="scope.row.voiceList && scope.row.voiceList.length > 0"
src="@/assets/img/icon-voice.png" />
<span v-else></span>
</template>
</el-table-column> -->
<!-- <el-table-column prop="address" align="center" :show-overflow-tooltip="true" label="地址">
</el-table-column> -->
<el-table-column prop="responsibleName" align="center" width="100" label="上报人"
:show-overflow-tooltip="true">
@ -210,41 +141,14 @@
<span v-else>--</span>
</template>
</el-table-column>
<!--
<el-table-column prop="satisfactionName" align="center" width="100" label="满意度"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<span v-if="scope.row.satisfactionName">--</span>
</template>
</el-table-column>
<el-table-column prop="happenTime" align="center" width="140" :show-overflow-tooltip="true"
label="上报时间">
</el-table-column>
<el-table-column prop="deptName" align="center" width="100" :show-overflow-tooltip="true"
label="当前结点">
</el-table-column>
<el-table-column prop="openFlag" align="center" label="公开表决" width="80" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span v-if="scope.row.openFlag === 0"></span>
<span v-else-if="scope.row.openFlag === 1"></span>
</template>
</el-table-column>
<el-table-column prop="markTypeName" align="center" label="标记" width="80" :show-overflow-tooltip="true">
</el-table-column> -->
<el-table-column prop="happenTime" align="center" width="140" :show-overflow-tooltip="true"
label="办结时限"></el-table-column>
<el-table-column fixed="right" label="操作" align="center" width="200px">
<template slot-scope="scope">
<el-button v-if="scope.row.sourceTypeName !== '北尚诉办' && scope.row.status === 'processing' && !scope.row.operationId
" @click="handleDispose(scope.row)" type="text" size="small" class="">处理</el-button>
<!--
<el-button v-else-if="scope.row.sourceTypeName!=='北尚诉办' && scope.row.status === 'closed_case' &&
!scope.row.satisfactionName &&
user.id === scope.row.createdUserId
" @click="handleWatch(scope.row)" type="text" size="small" class="">去评价</el-button> -->
<el-button @click="handleWatch(scope.row)" type="text" size="small">查看</el-button>
<el-button v-if="scope.row.sourceTypeName!=='北尚诉办'" @click="handleVote(scope.row)"
type="text" size="small" class="">催办</el-button>
@ -425,24 +329,7 @@ export default {
},
],
qudaoArray: [
{
value: "0",
label: "综治网格事件",
},
{
value: "1",
label: "诚心办事件",
},
{
value: "2",
label: "城管事件",
},
{
value: "3",
label: "信访事件",
}
],
keyProblemList:[
{label:'违章拉客',value:'0'},
{label:'违章停车',value:'1'}
@ -496,6 +383,7 @@ export default {
superviseFrom:{
content: "",
},
eventSourceTypeList:[]
};
},
computed: {
@ -521,8 +409,18 @@ export default {
this.getGridList()
this.getTableData();
this.getCateOptions();
this.getEventSourceTypeDict()
},
methods: {
getEventSourceTypeDict() {
const url = "/sys/dict/data/dictlist"
let params = {
dictType: 'event_source_type'
}
requestPost(url, params).then(res => {
this.eventSourceTypeList = res.data
})
},
handleEventType(val) {
const nodes = this.$refs.cascaderEvent.getCheckedNodes();
this.formData.firstIdList = [];

25
src/views/modules/shequzhili/eventOld/eventList.vue

@ -38,10 +38,10 @@
</template>
</el-cascader> -->
</el-form-item>
<el-form-item label="重点问题标注" prop="sourceType">
<el-select v-model.trim="formData.sourceType" placeholder="请选择" size="small" clearable
<el-form-item label="重点问题标注" prop="keyProblem">
<el-select v-model.trim="formData.keyProblem" placeholder="请选择" size="small" clearable
class="u-item-width-normal">
<el-option v-for="item in qudaoArray" :key="item.value" :label="item.label"
<el-option v-for="item in keyProblemList" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
@ -413,24 +413,7 @@ export default {
},
],
qudaoArray: [
{
value: "0",
label: "综治网格事件",
},
{
value: "1",
label: "诚心办事件",
},
{
value: "2",
label: "城管事件",
},
{
value: "3",
label: "信访事件",
}
],
keyProblemList:[
{label:'违章拉客',value:'0'},
{label:'违章停车',value:'1'}

37
src/views/modules/shequzhili/eventOld/timeOut/grid-time.vue

@ -11,8 +11,8 @@
</el-form-item>
<el-form-item label="事件来源" prop="sourceType">
<el-select v-model.trim="formData.sourceType" placeholder="请选择" size="small" clearable
class="u-item-width-normal">
<el-option v-for="item in qudaoArray" :key="item.value" :label="item.label"
class="u-item-width-normal" disabled>
<el-option v-for="item in eventSourceTypeList" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
@ -182,7 +182,7 @@
</el-table-column> -->
<el-table-column prop="happenTime" align="center" width="140" :show-overflow-tooltip="true"
label="办结时限"></el-table-column>
<el-table-column prop="" align="center" width="140" :show-overflow-tooltip="true"
<el-table-column prop="overDays" align="center" width="140" :show-overflow-tooltip="true"
label="办结超期(天数)"></el-table-column>
<el-table-column fixed="right" label="操作" align="center" width="200px">
<template slot-scope="scope">
@ -362,24 +362,6 @@ export default {
},
],
qudaoArray: [
{
value: "0",
label: "综治网格事件",
},
{
value: "1",
label: "诚心办事件",
},
{
value: "2",
label: "城管事件",
},
{
value: "3",
label: "信访事件",
}
],
keyProblemList:[
{label:'违章拉客',value:'0'},
{label:'违章停车',value:'1'}
@ -387,7 +369,7 @@ export default {
formData: {
agencyId: "",
gridId:"",
sourceType: "",
sourceType: "0",
eventContent: "",
name: "",
mobile: "",
@ -433,6 +415,7 @@ export default {
superviseFrom:{
content: "",
},
eventSourceTypeList:[]
};
},
computed: {
@ -465,10 +448,20 @@ export default {
this.agencyId = this.user.agencyId;
this.getOrgTreeList()
this.getGridList()
this.getEventSourceTypeDict()
this.getTableData();
this.getCateOptions();
},
methods: {
getEventSourceTypeDict() {
const url = "/sys/dict/data/dictlist"
let params = {
dictType: 'event_source_type'
}
requestPost(url, params).then(res => {
this.eventSourceTypeList = res.data
})
},
beforhandleVote(row){
this.showSupervise=true
this.multipleSelection=[]

Loading…
Cancel
Save