Browse Source

系统管理-高级配置】如图所示,选择统计时间段未回显,分析报告页面加跳转

bug_mk
是小王呀\24601 1 year ago
parent
commit
e92b0a4ff4
  1. 5
      package.json
  2. 1
      src/views/modules/shequzhili/Delivery/index.vue
  3. 247
      src/views/modules/shequzhili/analysis/cpts/event-list.vue
  4. 135
      src/views/modules/shequzhili/analysis/index.vue
  5. 8
      src/views/modules/shequzhili/event/cpts/event-info.vue
  6. 9
      src/views/modules/workSys/sysConfigure/index.vue

5
package.json

@ -67,10 +67,7 @@
"vue-quill-editor": "^3.0.6",
"vue-router": "^3.0.7",
"vuex": "^3.1.1",
"xlsx": "^0.17.1",
"exceljs": "^4.2.0",
"FileSaver": "^0.10.0",
"file-saver": "^2.0.5"
"xlsx": "^0.17.1"
},
"devDependencies": {
"@antv/f2": "^3.8.10-beta.1",

1
src/views/modules/shequzhili/Delivery/index.vue

@ -88,7 +88,6 @@
</div>
<div class="m-table">
<div class="div_btn">
<el-button @click="handleExport" class="diy-button--white" size="small">导出</el-button>

247
src/views/modules/shequzhili/analysis/cpts/event-list.vue

@ -0,0 +1,247 @@
<template>
<div style="margin-top:10px">
<div v-if="pageType==='list'">
<el-table :data="tableData" border class="m-table-item" style="width: 100%"
@selection-change="handleSelectionChange" height="500px">
<el-table-column label="" fixed="left" type="selection" align="center" width="50" />
<el-table-column prop="workOrderNum" align="center" label="工单编号" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="categoryAllName" label="事件类别" min-width="140" align="center"
:show-overflow-tooltip="true" />
<el-table-column prop="eventContent" label="事件描述" align="center" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="name" label="报件人" align="center" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="mobile" align="center" width="110" label="联系电话">
<!-- <template slot-scope="scope">
<el-button
v-if="scope.row.reportUserId !== null && scope.row.reportUserId !== ''"
@click="handleLook(scope.row)"
type="text"
size="small"
>
{{ scope.row.phone }}
</el-button>
<span v-else>
{{ scope.row.phone }}
</span>
</template> -->
</el-table-column>
<el-table-column prop="statusName" align="center" width="110" label="指派状态"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<span v-if="scope.row.status === 'unassigned'" style="color: #ff6600;">未指派</span>
<span v-else-if="scope.row.status === 'assigned'">已指派</span>
<span v-else-if="scope.row.operationType === '13'" style="color: #ff0000;">已退件</span>
<!-- <span v-else-if="scope.row.status ==='closed_case'">已办结</span>
<span v-else="scope.row.status ==='processing'">处理中</span> -->
</template>
</el-table-column>
<el-table-column prop="operationTypeName" align="center" width="110" label="办理状态"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<span
:style="{ color: getFontColor(scope.row.operationType) }">{{ scope.row.operationTypeName }}</span>
</template>
</el-table-column>
<el-table-column prop="operationStep" align="center" width="150" label="最新办理进展"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="deptName" align="center" width="110" label="指派部门" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="deptName" align="center" width="110" label="指派部门" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="limitTime" align="center" width="110" label="办结时限(部门)"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column fixed="right" label="操作" align="center" width="200px" prop="status">
<template slot-scope="scope">
<el-button @click="handleWatch(scope.row)" type="text" size="small" class="">查看</el-button>
</template>
</el-table-column>
</el-table>
<div>
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page.sync="pageNo" :page-sizes="[20, 30, 50]" :page-size="pageSize"
layout="sizes, prev, pager, next, total" :total="total"></el-pagination>
</div>
</div>
<div v-if="pageType==='info'" style="overflow-y: scroll;">
<event-info style="overflow: scroll;" v-if="pageType==='info'" ref="eleEditForm" :pageType="pageType" :eventId="eventId" :eventDetailData="eventDetailData"
@handleClose="handleClose" @handleOk="handleOk" @dialogOk="handleEditSuccess" />
</div>
</div>
</template>
<script>
import eventInfo from "../../../shequzhili/event/cpts/event-info.vue";
import { requestPost, requestGet } from "@/js/dai/request";
import { completeList } from "@/js/columns/constants";
export default {
//
data() {
return {
eventId:"",
pageType:"list",
formData: {
agencyId:"",
gridId: "",
sourceType: "",
eventContent: "",
name: "",
mobile: "",
startTime: "",
endTime: "",
limitStartTime: "",
limitEndTime: "",
status: "",
firstIdList: [],
secondIdList: [],
workOrderNum: "",
departId:"",
content:"",
mobile:""
},
eventDetailData:"",
pageNo: 0,
pageSize:window.localStorage.getItem('pageSize') || 20,
total: 0,
tableData: [],
};
},
//
created() { },
async mounted() {
await this.getTableData()
},
//
methods: {
handleClose() {
this.pageType = "list";
this.eventId = "";
this.getTableData();
},
async handleWatch(row) {
console.log((row,"row"));
this.eventId = row.icEventId;
const url = "/governance/icEvent/detail";
const { data, code, msg } = await requestPost(url, {
icEventId: this.eventId,
});
if (code === 0) {
this.eventDetailData = { ...data };
this.pageType = "info";
} else {
this.$message.error(msg);
}
},
getFontColor(operationType){
if(operationType=='11'){
return '#09af44'
}else if(operationType=='13'){
return '#FF0000'
}else{
return '#000000'
}
},
handleSelectionChange(val) {
this.multipleSelection = [];
val.forEach((element) => {
this.multipleSelection.push(element.icEventId);
});
},
handleSizeChange(val) {
this.pageSize = val;
this.getTableData();
},
handelClickDetail(row) {
this.$emit('handelClickDetail', row);
},
handlClickEdit(row){
this.$emit('handelClickEdit', row);
},
handleCurrentChange(val) {
this.pageNo = val;
this.getTableData();
},
//
handleLook(row) {
let { name,reportUserId } = row
const resiId = reportUserId;
this.$store.dispatch('saveData', { name,resiId });
this.$router.push({ name: 'jumin-huaxiang' });
this.$store.state.contentTabs = this.$store.state.contentTabs.map(item => {
if (item.name === "jumin-huaxiang") {
return {...item, title: name };
}
return item;
});
},
async getTableData() {
try {
const url = "/governance/dwdEvent/list";
if(this.recId){
this.formData.firstIdList = [this.recId];
}
if(this.departId){
this.formData.departId = this.departId;
}
if(this.communityId){
this.formData.agencyId = this.communityId;
}
if(this.address){
this.formData.eventContent = this.address;
}
if(this.mobile){
this.formData.mobile = this.mobile;
}
const { pageSize, pageNo, formData } = this;
const { data, code, msg } = await requestPost(url, {
pageSize,
pageNo,
...formData,
});
if (code == 0) {
this.tableData = data.list;
this.total = data.total;
} else {
console.log(err);
}
} catch (err) {
console.log(err);
}
},
},
//
components: {eventInfo},
//
computed: {},
props: {
recId:{
type:String,
default:''
},
communityId:{
type:String,
default:''
},
address:{
type:String,
default:''
},
mobile:{
type:String,
default:''
},
departId:{
type:String,
default:''
}
},
//
watch: {},
}
</script>
<style lang="scss"></style>

135
src/views/modules/shequzhili/analysis/index.vue

@ -73,13 +73,14 @@
</div>
<div class="div_room">
<div style="width: 18%; display: flex; justify-content: center; flex-direction: column; align-items: center;">
<div
style="width: 18%; display: flex; justify-content: center; flex-direction: column; align-items: center;">
<div style="font-size: 16px; margin-top: 20px">收件/派件</div>
<div class="item" @click="onEventNum()">
<div class="item" >
<div class="item_category">
<img src="./img/eventSumNum.png" alt />
<div class="row_left">{{ analysisList.total }}</div>
<div class="item_content">
<div class="item_content" @click="onEventNum()">
收件数
<el-tooltip class="item_content" effect="dark" content="按导入事件的接收时间在统计时段内的事件数" placement="top">
<img class="img_describe" src="./img/describe1.png" alt="描述图标" />
@ -95,7 +96,7 @@
</div>
</div>
<div style="width: 18%; display: flex; justify-content: center; flex-direction: column; align-items: center;">
<div style="font-size: 16px; margin-top: 20px">办理</div>
<div style="font-size: 16px; margin-top: 20px">办理</div>
<div class="item" @click="onEventNum()" style="background-color: #f2fffb;">
<div class="item_category">
<img src="./img/perp.png" alt />
@ -114,7 +115,7 @@
</div>
</div>
<div style="width: 18%;display: flex; justify-content: center; flex-direction: column; align-items: center;">
<div style="font-size: 16px; margin-top: 20px">办结</div>
<div style="font-size: 16px; margin-top: 20px">办结</div>
<div class="item" @click="onEventNum()" style="background-color: #f4fdff; ">
<div class="item_category">
<img src="./img/completed.png" alt />
@ -128,12 +129,14 @@
content="在统计时段内所有“未办结”状态的事件数" placement="top">
<img class="img_describe" src="./img/describe1.png" alt="描述图标" />
</el-tooltip></div> -->
<div class="row_left" style="color:#FF7035 ;">{{ analysisList.onTimeCompleteTotal?analysisList.onTimeCompleteTotal:"0"}}</div>
<div class="row_left" style="color:#FF7035 ;">{{
analysisList.onTimeCompleteTotal?analysisList.onTimeCompleteTotal:"0"}}</div>
<div class="item_content">按时办结数<el-tooltip class="item_content" effect="dark"
content="在统计时段内进行“办结”操作且未超过(部门)办结时限的事件数" placement="top">
<img class="img_describe" src="./img/describe1.png" alt="描述图标" />
</el-tooltip></div>
<div class="row_left" style="color:#FF7035 ;">{{ analysisList.overTimeCompleteTotal?analysisList.overTimeCompleteTotal:"0"}}</div>
<div class="row_left" style="color:#FF7035 ;">{{
analysisList.overTimeCompleteTotal?analysisList.overTimeCompleteTotal:"0"}}</div>
<div class="item_content">超期办结数<el-tooltip class="item_content" effect="dark"
content="在统计时段内进行“办结”操作但已超过(部门)办结时限的事件数" placement="top">
<img class="img_describe" src="./img/describe1.png" alt="描述图标" />
@ -142,7 +145,7 @@
</div>
</div>
<div style="width: 18%;display: flex; justify-content: center; flex-direction: column; align-items: center;">
<div style="font-size: 16px; margin-top: 20px">退件/不合规申请件</div>
<div style="font-size: 16px; margin-top: 20px">退件/不合规申请件</div>
<div class="item" @click="onEventNum()" style="background-color:#fffdf0;">
<div class="item_category">
<img src="./img/returnTheItem.png" alt />
@ -172,7 +175,7 @@
</div>
</div>
<div style="width: 18%;display: flex; justify-content: center; flex-direction: column; align-items: center;">
<div style="font-size: 16px; margin-top: 20px">退件/不合规申请件</div>
<div style="font-size: 16px; margin-top: 20px">退件/不合规申请件</div>
<div class="item" @click="onEventNum('3')">
<div class="item_category">
<img src="./img/acttive.png" alt />
@ -197,7 +200,7 @@
</div>
<el-table :data="tableList" style="width: 100%;margin-bottom: 20px;" row-key="id" border
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
<el-table-column prop="categoryName" label="事件类型" :show-overflow-tooltip="true">
<el-table-column prop="categoryName" label="事件类型" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="eventCount" label="事件数量" :show-overflow-tooltip="true">
</el-table-column>
@ -213,7 +216,7 @@
<div>
<echartsAffairs :formData="formData"></echartsAffairs>
</div>
<div style="display: flex;margin-top: 20px" >
<div style="display: flex;margin-top: 20px">
<div class="f-align_item " :class="{ active: selectedIndex === index }" v-for="(item, index) in titleList"
:key="item.value" @click="selectItem(index)">
<div style="font-size: 20px; "> {{ item.label }} </div>
@ -257,15 +260,16 @@
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="sensitiveTotal" align="center" label="敏感渠道来源件数"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column fixed="right" prop="responseRate" align="center" label="响应率" :show-overflow-tooltip="true">
<el-table-column fixed="right" prop="responseRate" align="center" label="响应率"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<span >{{scope.row.responseRate?scope.row.responseRate+'%':'--' }}</span>
<span>{{scope.row.responseRate?scope.row.responseRate+'%':'--' }}</span>
</template>
</el-table-column>
<el-table-column fixed="right" prop="inTimeResolveRate" align="center" label="按时办结率"
:show-overflow-tooltip="true">
:show-overflow-tooltip="true">
<template slot-scope="scope">
<span >{{scope.row.inTimeResolveRate?scope.row.inTimeResolveRate+'%':'--' }}</span>
<span>{{scope.row.inTimeResolveRate?scope.row.inTimeResolveRate+'%':'--' }}</span>
</template>
</el-table-column>
<!-- <el-table-column fixed="right" prop="resolveRate" align="center" label="解决率" :show-overflow-tooltip="true">
@ -317,15 +321,16 @@
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="sensitiveTotal" align="center" label="敏感渠道来源件数"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column fixed="right" prop="responseRate" align="center" label="响应率" :show-overflow-tooltip="true">
<el-table-column fixed="right" prop="responseRate" align="center" label="响应率"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<span >{{scope.row.responseRate?scope.row.responseRate+'%':'--' }}</span>
<span>{{scope.row.responseRate?scope.row.responseRate+'%':'--' }}</span>
</template>
</el-table-column>
<el-table-column fixed="right" prop="inTimeResolveRate" align="center" label="按时办结率"
:show-overflow-tooltip="true">
:show-overflow-tooltip="true">
<template slot-scope="scope">
<span >{{scope.row.inTimeResolveRate?scope.row.inTimeResolveRate+'%':'--' }}</span>
<span>{{scope.row.inTimeResolveRate?scope.row.inTimeResolveRate+'%':'--' }}</span>
</template>
</el-table-column>
<!-- <el-table-column fixed="right" prop="resolveRate" align="center" label="解决率" :show-overflow-tooltip="true">
@ -370,10 +375,10 @@
</div>
<div style="display: flex;width: 49%;flex-direction:column;">
<h2 style="font-size: 20px; font-weight: bold;"> 同一人员重复投诉</h2>
<el-table :data="mobileData" height="250" border class="m-table-item"style="width: 100%">
<el-table :data="mobileData" height="250" border class="m-table-item" style="width: 100%">
<el-table-column label="序号" fixed="left" type="index" align="center" width="50" />
<el-table-column prop="name" align="center" label="联系人" :show-overflow-tooltip="true">
<template slot-scope="scope">{{ scope.row.name? scope.row.name:"匿名"}}</template>
<template slot-scope="scope">{{ scope.row.name? scope.row.name:"匿名"}}</template>
</el-table-column>
<el-table-column prop="mobile" align="center" label="联系方式" :show-overflow-tooltip="true">
<template slot-scope="scope">
@ -412,7 +417,7 @@
:show-overflow-tooltip="true">
<template slot-scope="{row}">
<el-button style="width: 100%" type="text" @click="clickAddressMobileData(row)">{{ row.amount
}}</el-button>
}}</el-button>
</template>
</el-table-column>
<el-table-column prop="content" align="center" label="操作" fixed="right" :show-overflow-tooltip="true">
@ -447,7 +452,19 @@
</div>
<el-dialog v-if="showEventList" :visible.sync="showEventList" :close-on-click-modal="false"
:close-on-press-escape="false" title="事件列表" :modal-append-to-body="false" width="60%" top="10vh"
class="dialog-h" @closed="showEventList = false">
<event-list ref="ref_form_list" @handleEventClose="handleEventClose"></event-list>
<!-- <form-list ref="ref_form_list" @handleClose="handleClose" :recId="recId" :communityId="communityId"
:departId="departId" :address="address" :mobile="mobile" :awo_flag="awo_flag"
@handelClickDetail="handelClickDetail"></form-list> -->
<!-- <el-dialog width="60%" class="dialog-h" title="12345事件详情" :close-on-click-modal="false" v-if="showFormDetail"
:visible.sync="showFormDetail" append-to-body>
<event-info ref="eleEditForm" :pageType="pageType" :eventId="eventId" :eventDetailData="eventDetailData"
@handleClose="handleClose" @handleOk="handleOk" @dialogOk="handleEditSuccess" />
</el-dialog> -->
</el-dialog>
<el-dialog v-if="showFormList" :visible.sync="showFormList" :close-on-click-modal="false"
:close-on-press-escape="false" title="12345问题列表" :modal-append-to-body="false" width="60%" top="5vh"
class="dialog-h" @closed="showFormList = false">
@ -509,10 +526,13 @@ import areaNoSameList from "./areaNoSameList";
import addComplainList from "./addComplainList";
import echartsAffairs from "./cpts/echarts-affairs.vue";
import markDown from "./markDown.vue";
import eventList from "./cpts/event-list.vue"
import moment from 'moment';
export default {
components: { TableRow, formList, eventInfo, areaSameList, mobileList, areaNoSameList, addComplainList, echartsAffairs ,markDown},
components: {eventList,TableRow, formList, eventInfo, areaSameList, mobileList, areaNoSameList, addComplainList, echartsAffairs ,markDown},
data() {
return {
showEventList:false,
selectedIndex: 0,
titleList: [
{
@ -848,6 +868,7 @@ export default {
},
watch: {},
async mounted() {
this.user = this.$store.state.user;
this.agencyId = this.user.agencyId;
this.getLastMonthRange()
@ -857,10 +878,43 @@ export default {
// this.initEcharts();
await this.EventCategoryAnalysis();
await this.EventCate();
this.getCategoryTree()
this.getCategoryTree();
this.sysAdvancedPage()
},
methods: {
async sysAdvancedPage(row) {
const url = '/governance/icEventConfig/getStreetConfigDetail';
const param = {
orgId: this.agencyId,
};
const { data, code, msg } = await requestGet(url, param);
if (code === 0) {
console.log(data,"高级配置");
if (data.reportPeriod==='week') {
const start = moment().startOf('week').startOf('day').format('YYYY-MM-DD HH:mm:ss');
const end = moment().endOf('week').endOf('day').format('YYYY-MM-DD HH:mm:ss');
this.formData.queryDateStart=start;
this.formData.queryDateEnd=end
}else if(data.reportPeriod==="month"){
const start = moment().startOf('month').startOf('day').format('YYYY-MM-DD HH:mm:ss');
const end = moment().endOf('month').endOf('day').format('YYYY-MM-DD HH:mm:ss');
this.formData.queryDateStart=start;
this.formData.queryDateEnd=end
}else{
const start = moment().startOf('year').startOf('day').format('YYYY-MM-DD HH:mm:ss');
const end = moment().endOf('year').endOf('day').format('YYYY-MM-DD HH:mm:ss');
this.formData.queryDateStart=start;
this.formData.queryDateEnd=end
}
} else {
this.$message.error(msg);
}
},
handleEventClose(){
this.showEventList=false
},
regexChat(str) {
const regex = /"content":"(.*?)"/g;
const matches = [];
@ -957,20 +1011,23 @@ export default {
}
},
onEventNum(data) {
if (data == "resolve") {
this.$router.push({ name: 'eventHandling', params: { params: data } });
} else if (data == "unResolve") {
this.$router.push({ name: 'eventHandling', params: { params: data } });
} else if (data == "1") {
this.$router.push({ name: 'timeOut', params: { params: data } });
} else if (data == "2") {
this.$router.push({ name: 'timeOut', params: { params: data } });
} else if (data == "3") {
this.$router.push({ name: 'workpiece', params: { params: data } });
}
else {
this.$router.push({ name: 'eventHandling' });
}
this.showEventList=true
console.log(this.showEventList,"sdkjfdslkjsd");
// if (data == "resolve") {
// this.$router.push({ name: 'eventHandling', params: { params: data } });
// } else if (data == "unResolve") {
// this.$router.push({ name: 'eventHandling', params: { params: data } });
// } else if (data == "1") {
// this.$router.push({ name: 'timeOut', params: { params: data } });
// } else if (data == "2") {
// this.$router.push({ name: 'timeOut', params: { params: data } });
// } else if (data == "3") {
// this.$router.push({ name: 'workpiece', params: { params: data } });
// }
// else {
// this.$router.push({ name: 'eventHandling' });
// }
},
calculateRowspan(item) {

8
src/views/modules/shequzhili/event/cpts/event-info.vue

@ -1,12 +1,8 @@
<template>
<div class="">
<div class="" style="overflow-y: scroll;">
<div v-if="pageTypeCopy == 'dispose' || pageTypeCopy == 'info' || pageTypeCopy == 'assign'|| pageTypeCopy == 'check' || pageTypeCopy ==='resetAssign' || pageTypeCopy == 'return'" class="g-page">
<!-- 面包屑放到这里-->
<div class="tabs" @click="handleClose">
<i class="el-icon-arrow-left"></i>
<el-button class="diy-button--white" style="height: 20px">
查看详情</el-button>
</div>
<div :class="['g-total', { 'g-left': projectProcess.length > 0, 'g-left-top40': pageType == 'info' }]"
style="z-index: 1;">
<event-detail ref="ref_detail" :type="pageType" :eventId="eventId" :eventDetailData="eventDetailData"

9
src/views/modules/workSys/sysConfigure/index.vue

@ -271,13 +271,12 @@
<div style="margin-right: 10px;">
统计时间段(默认):
</div>
<el-radio v-model="statisticalTimeReport" label="1">当年</el-radio>
<el-radio v-model="statisticalTimeReport" label="2">当月</el-radio>
<el-radio v-model="statisticalTimeReport" label="3">本周</el-radio>
<el-radio @change="handleChange()" v-model="sysAdvancedList.reportPeriod" label="year">当年</el-radio>
<el-radio @change="handleChange()" v-model="sysAdvancedList.reportPeriod" label="month">当月</el-radio>
<el-radio @change="handleChange()" v-model="sysAdvancedList.reportPeriod" label="week">本周</el-radio>
</div>
</div>
</div>
</div>Weekly
<div
style=" margin-top: 20px;display: flex; flex-direction: row; align-items: center; justify-content: space-between;">
<div>

Loading…
Cancel
Save