Browse Source

Merge branch '7.31' into dev

xiaowang-dev
mk 1 year ago
parent
commit
0302bd2e5c
  1. 20
      src/assets/scss/modules/shequzhili/event-info.scss
  2. 226
      src/views/modules/shequzhili/Delivery/index.vue
  3. 85
      src/views/modules/shequzhili/analysis/css/index.scss
  4. BIN
      src/views/modules/shequzhili/analysis/img/eventNum.png
  5. BIN
      src/views/modules/shequzhili/analysis/img/eventSumNum.png
  6. BIN
      src/views/modules/shequzhili/analysis/img/overdue.png
  7. BIN
      src/views/modules/shequzhili/analysis/img/perp.png
  8. 548
      src/views/modules/shequzhili/analysis/index.vue
  9. 3
      src/views/modules/shequzhili/event/cpts/process-form-assign.vue
  10. 2
      src/views/modules/shequzhili/event/eventList.vue
  11. 154
      src/views/modules/shequzhili/eventHandling/index.vue
  12. 169
      src/views/modules/shequzhili/timeOut/Urging.vue
  13. 110
      src/views/modules/shequzhili/timeOut/index.vue

20
src/assets/scss/modules/shequzhili/event-info.scss

@ -533,7 +533,24 @@
.m-top {
display: flex;
}
.m-top1 {
display: flex;
flex-direction: row;
justify-content: space-between;
.top-one{
display: flex;
flex-direction: row;
justify-content:flex-start;
.top-one-left{
padding: 6px;
display: flex;
flex-direction: column;
}
}
}
.m-chart {
min-height: 220px;
}
@ -587,4 +604,5 @@
width: 250px;
}
.event{
}

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

@ -1,19 +1,20 @@
<template>
<div class="g-main">
<div>
<div div v-show="pageType == 'list'">
<div class="m-search">
<el-form :inline="true" :model="formData" ref="ref_searchform" :label-width="'100px'">
<div>
<el-form-item label="事件类别" prop="firstIdList">
<el-cascader ref="cascaderEvent" v-model.trim="eventTypeCheck" :options="cateOptions" collapse-tags
<el-cascader ref="cascaderEvent" v-model.trim="formData.firstIdList" :options="cateOptions" collapse-tags
:show-all-levels="false" :props="{
multiple: true,
checkStrictly: false,
checkStrictly: true,
emitPath: false,
children: 'children',
label: 'categoryName',
value: 'id',
}" clearable class="u-item-width-normal" @change="handleEventType" />
}" clearable class="u-item-width-normal" />
</el-form-item>
<el-form-item label="工单编号" prop="workOrderNum">
<el-input v-model.trim="formData.workOrderNum" class="u-item-width-normal" size="small" clearable
@ -30,40 +31,31 @@
placeholder="请输入">
</el-input>
</el-form-item>
<el-form-item label="派件状态" prop="deliverystatus">
<el-cascader ref="cascaderEvent" v-model.trim="formData.deliverystatus" collapse-tags :options="ProcessingList"
:show-all-levels="false" clearable class="u-item-width-normal" @change="handleEventType" />
<!-- <template slot-scope="{ node, data }">
<div @click="cascaderClick(node, data)">
<span>{{ data.name }}</span>
</div>
</template>
</el-cascader> -->
<el-form-item label="派件状态" prop="deliveryStatus">
<el-select v-model.trim="formData.deliveryStatus" clearable class="u-item-width-normal">
<el-option v-for="item in ProcessingList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="办理状态" prop="handleStatus">
<el-cascader class="u-item-width-normal"
size="small"
ref="myCascader"
v-model.trim="formData.handleStatus"
:options="handleList"
:show-all-levels="false"
@change="handleChangeAgency"
clearable></el-cascader>
<el-form-item label="办理状态" prop="operationType">
<el-select v-model.trim="formData.operationType" clearable class="u-item-width-normal">
<el-option v-for="item in handleList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="指派部门" prop="agencyId">
<el-form-item label="指派部门" prop="departId">
<el-cascader class="u-item-width-normal"
size="small"
ref="myCascader"
v-model.trim="formData.agencyId"
v-model.trim="formData.departId"
:options="orgOptions"
:props="orgOptionProps"
:show-all-levels="false"
@change="handleChangeAgency"
clearable></el-cascader>
</el-form-item>
<el-form-item label="办结时限" prop="limitStartTime">
<el-date-picker v-model.trim="formData.limitStartTime" class="u-item-width-daterange" size="small"
<el-form-item label="办结时限" prop="timeLimit">
<el-date-picker v-model.trim="formData.timeLimit" class="u-item-width-daterange" size="small"
type="date" value-format="yyyy-MM-dd HH:mm:ss" value="yyyy-MM-dd" placeholder="开始时间">
</el-date-picker>
<span class="u-data-tag"></span>
@ -90,11 +82,16 @@
<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)">
@command="(command) => importTypeChange(command)">
导入
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="1">下载模板</el-dropdown-item>
<el-dropdown-item command="2">上传导入</el-dropdown-item>
<el-upload :headers="$getElUploadHeaders()" ref="upload" class="upload-btn" action="uploadUlr"
:limit="1" :accept="'.xls,.xlsx'" :with-credentials="true" :show-file-list="false"
:auto-upload="true" :on-progress="handleProgress" :on-success="handleExcelSuccess"
:before-upload="beforeExcelUpload" :http-request="uploadHttpRequest">
<el-dropdown-item command="1">上传导入</el-dropdown-item>
</el-upload>
</el-dropdown-menu>
</el-dropdown>
</div>
@ -103,9 +100,9 @@
<el-table-column label="" fixed="left" type="selection" align="center" width="50" />
<!-- <el-table-column label="序号" fixed="left" type="index" align="center" width="50" /> -->
<el-table-column prop="workOrder" align="center" label="工单编号" :show-overflow-tooltip="true">
<el-table-column prop="workOrderNum" align="center" label="工单编号" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="eventType" label="事件类别" min-width="140" align="center"
<el-table-column prop="categoryAllName" label="事件类别" min-width="140" align="center"
:show-overflow-tooltip="true" />
<!-- <template slot-scope="scope">
{{ scope.row.firstName + '-' + scope.row.secondName }}
@ -113,10 +110,10 @@
</el-table-column> -->
<el-table-column prop="eventContent" label="事件描述" align="center" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="eventName" label="报件人" align="center" :show-overflow-tooltip="true">
<el-table-column prop="name" label="报件人" align="center" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="phone" align="center" width="110" label="联系电话" :show-overflow-tooltip="true">
<template slot-scope="scope">
<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)"
@ -128,31 +125,35 @@
<span v-else>
{{ scope.row.phone }}
</span>
</template>
</template> -->
</el-table-column>
<el-table-column prop="deliverystatus" align="center" width="110" label="指派状态" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-table-column prop="statusName" align="center" width="110" label="指派状态" :show-overflow-tooltip="true">
<!-- <template slot-scope="scope">
<span v-if="scope.row.deliverystatus === 0">未指派</span>
<span v-else-if="scope.row.deliverystatus ===1">已指派</span>
<span v-else>--</span>
</template>
</template> -->
</el-table-column>
<el-table-column prop="handlestatus" align="center" width="110" label="办理状态" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-table-column prop="operationTypeName" align="center" width="110" label="办理状态" :show-overflow-tooltip="true">
<!-- <template slot-scope="scope">
<span v-if="scope.row.handlestatus === 0">未联系当事人</span>
<span v-else-if="scope.row.handlestatus ===1">已联系当事人</span>
<span v-else-if="scope.row.handlestatus ===1">已联系当事人</span>
<span v-else>--</span>
</template>
</template> -->
</el-table-column>
<el-table-column prop="department" align="center" width="110" label="指定部门" :show-overflow-tooltip="true">
<el-table-column prop="deptName" align="center" width="110" label="指定部门" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="date" align="center" width="110" label="办结时" :show-overflow-tooltip="true">
<el-table-column prop="timeLimit" 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 type="text" size="small" class="">查看</el-button>
<el-button @click="handleDispose(scope.row)" type="text" size="small" class="">{{scope.row.deliverystatus==0?"派件":"办理"}}</el-button>
<el-button @click="handleWatch(scope.row)" type="text" size="small" class="">查看</el-button>
<!-- <el-button @click="handleDispose(scope.row)" type="text" size="small" class="">{{scope.row.deliverystatus==0?"派件":"办理"}}</el-button>
-->
<el-button @click="handleDispose(scope.row,'dispose')" type="text" size="small" class="">处理</el-button>
<el-button @click="handleDispose(scope.row,'assign')" type="text" size="small" class="">派件</el-button>
<el-button @click="handleDispose(scope.row,'check')" type="text" size="small" class="">审核</el-button>
</template>
</el-table-column>
</el-table>
@ -166,7 +167,10 @@
</div>
</div>
</div>
<div v-if="pageType == 'dispose' || pageType == 'info' || pageType == 'assign' || pageType=='check'">
<event-info ref="eleEditForm" :pageType="pageType" :eventId="eventId" :eventDetailData="eventDetailData"
@handleClose="handleClose" @handleOk="handleOk" @dialogOk="handleEditSuccess" />
</div>
</div>
</template>
@ -174,32 +178,13 @@
import { requestPost } from "@/js/dai/request";
import nextTick from "dai-js/tools/nextTick";
import { mapGetters } from "vuex";
import eventInfo from "../event/cpts/event-info.vue";
import axios from "axios";
export default {
data() {
// let endDisabledDate = (time) => {
// //datareturn
// let nowData = Date.now();
// if (this.formData.startTime) {
// let startTime = new Date(this.formData.startTime);
// return (
// time.getTime() > nowData ||
// time.getTime() < startTime ||
// time.getTime() === startTime
// );
// } else {
// return time.getTime() > nowData;
// }
// };
// let startDisabledDate = (time) => {
// //datareturn
// let nowData = Date.now();
// return time.getTime() > nowData;
// };
let orgOptionProps = {
multiple: false,
@ -212,7 +197,6 @@ export default {
return {
pageType: "list", // list add dispose info
user: {},
agencyId: "",
orgOptions: [],
orgOptionProps,
@ -221,78 +205,37 @@ export default {
sarr: [],
ProcessingList: [
{
value: "1",
label: "指派",
value: "assigned ",
label: "指派",
},
{
value: "2",
label: "未查收",
},
{
value: "3",
label: "已查收",
value: "unassigned",
label: "未指派",
},
],
handleList: [
{
value: "1",
{
value: "8",
label: "未联系当事人",
},
{
value: "2",
value: "9",
label: "已联系当事人",
},
{
value: "3",
value: "10",
label: "办理中",
},
{
value: "4",
value: "11",
label: "已办结待审核",
},
{
value: "5",
value: "12",
label: "已审核归档",
},
],
tableData: [
{
workOrder:"5131133113213213213",
eventType:"城乡建设-住房",
eventContent:"王先生反映:市北区有一家黄焖鸡不好吃",
eventName:"王先生",
phone:"15666628220",
deliverystatus:0,
handleStatus:0,
department:"城建办",
date:"2024-8-1 11:50",
status:0
},
{
workOrder:"5131133113213213213",
eventType:"城乡建设-住房",
eventContent:"王先生反映:市北区有一家黄焖鸡不好吃",
eventName:"王先生",
phone:"15666628220",
deliverystatus:1,
handleStatus:0,
department:"城建办",
date:"2024-8-1 11:50",
status:0
},
{
workOrder:"5131133113213213213",
eventType:"城乡建设-住房",
eventContent:"王先生反映:市北区有一家黄焖鸡不好吃",
eventName:"王先生",
phone:"15666628220",
deliverystatus:1,
handleStatus:1,
department:"城建办",
date:"2024-8-1 11:50",
status:0
}
],
tableData: [],
statusArray: [
{
value: "processing",
@ -331,6 +274,7 @@ export default {
formData: {
agencyId: "",
sourceType: "",
departId:'',
eventContent: "",
name: "",
mobile: "",
@ -339,10 +283,10 @@ export default {
limitStartTime: "",
limitEndTime: "",
status: "",
firstIdList: [],
secondIdList: [],
firstIdList:[],
operationType:'',
workOrderNum: "",
deliverystatus:"",
deliveryStatus:"",
handleStatus:"",
},
cateOptions: [],
@ -363,9 +307,10 @@ export default {
selVoiceUrl: "",
multipleSelection: [],
importLoading: false,
importType: "1"
importType: "1"
};
},
components:{eventInfo},
computed: {
maxTableHeight() {
const h = this.clientHeight - this.searchH - 275 + this.iframeHeight;
@ -398,22 +343,7 @@ export default {
this.getCateOptions();
},
methods: {
handleEventType(val) {
const nodes = this.$refs.cascaderEvent.getCheckedNodes();
this.formData.firstIdList = [];
this.formData.secondIdList = [];
let level1 = nodes.filter((item) => item.level === 1);
let level2 = nodes.filter((item) => item.level === 2);
level1.forEach((item) => {
if (item.hasChildren) {
for (let i = level2.length - 1; i >= 0; i--) {
if (level2[i].parent.value === item.value) level2.splice(i, 1);
}
}
});
this.formData.firstIdList = level1.map((item) => item.value);
this.formData.secondIdList = level2.map((item) => item.value);
},
handleSelectionChange(val) {
this.multipleSelection = [];
val.forEach((element) => {
@ -516,6 +446,7 @@ export default {
},
async handleWatch(row) {
console.log("row",row);
this.eventId = row.icEventId;
const url = "/governance/icEvent/detail";
const { data, code, msg } = await requestPost(url, {
@ -529,8 +460,19 @@ export default {
}
},
async handleDispose(row) {
console.log("row",row);
async handleDispose(row,type) {
console.log(row);
this.eventId = '1817808353882152962';
const url = "/governance/icEvent/detail";
const { data, code, msg } = await requestPost(url, {
icEventId: this.eventId,
});
if (code === 0) {
this.eventDetailData = { ...data };
this.pageType = type;
} else {
this.$message.error(msg);
}
},
//
async handleExportModule() {
@ -780,7 +722,6 @@ export default {
},
handleChangeAgency(val) {
this.sarr = []
const map = new Map();
this.getLastItem(
@ -789,6 +730,7 @@ export default {
"agencyId"
);
this.level = this.sarr[this.sarr.length - 1].level
this.formData.departId = this.sarr[this.sarr.length - 1].agencyId
},
getLastItem(list, vals, key) {
let LIST = list || [];

85
src/views/modules/shequzhili/analysis/css/index.scss

@ -0,0 +1,85 @@
.dashboard {
display: flex;
gap: 20px;
}
.card {
width: 280px;
height: 49px;
background: #E6F0FF;
border-radius: 3px;
padding: 20px;
display: flex;
align-items: center;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.card1 {
width: 284px;
height: 49px;
background: #E6F0FF;
border-radius: 3px;
padding: 20px;
display: flex;
align-items: center;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.card-icon {
width: 40px;
height: 40px;
margin-right: 10px;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
}
.card-icon.total {
background-color: #4a90e2;
}
.card-icon.completed {
background-color: #f5a623;
}
.card-icon.overdue-contact {
background-color: #7ed321;
}
.card-icon.overdue-process {
background-color: #d0021b;
}
.card-content {
display: flex;
flex-direction: column;
align-items: flex-start;
}
.card-content1 {
display: flex;
flex-direction: row;
align-items: flex-start;
}
.card-title {
font-size: 16px;
font-weight: bold;
margin: 0;
}
.card-text {
font-size: 14px;
color: #777;
margin: 5px 0 0 0;
}
.percentage {
font-size: 14px;
color: #777;
margin-left: 5px;
}
.br{
padding: 20px 0;
border-left: #777 solid 1px;
}

BIN
src/views/modules/shequzhili/analysis/img/eventNum.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
src/views/modules/shequzhili/analysis/img/eventSumNum.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
src/views/modules/shequzhili/analysis/img/overdue.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
src/views/modules/shequzhili/analysis/img/perp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

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

@ -1,312 +1,263 @@
<template>
<div class="g-main">
<div>
<div class="m-search">
<el-form :inline="true" :model="formData" ref="ref_searchform" :label-width="'100px'">
<el-form-item label="统计时间">
<el-date-picker v-model.trim="formData.queryDateStart" type="date" value-format="yyyy-MM-dd" placeholder="开始时间"
style="width: 202px" clearable>
</el-date-picker>
<el-date-picker v-model.trim="formData.queryDateEnd" type="date" value-format="yyyy-MM-dd" placeholder="结束时间"
style="width: 202px" clearable>
</el-date-picker>
</el-form-item>
<el-button style="margin-left: 30px" size="small" type="primary "
@click="handleSearch">查询</el-button>
<el-button style="margin-left: 10px" is-plain class="diy-button--white el-button--default"
size="small" @click="exportReport">导出</el-button>
</el-form>
</div>
<div class="m-table">
<div style="text-align: center;">
<h1>{{ report.streetName }}{{ report.period }}</h1>
<h1>政务热线运行情况分析报告</h1>
</div>
<div>
<h1 style="font-size: 24px; font-weight: bold;"> 总体运行情况 </h1>
<p style="font-size: 16px; line-height: 1.5; margin-top: 10px; text-indent: 2em;">
{{ report.overallOperation }}
</p>
<el-table :data="eventCategorys" border class="m-table-item" style="width: 100%;margin-top: 20px;" @row-click="clickEventCategorys">
<el-table-column label="序号" fixed="left" type="index" align="center" width="50" />
<el-table-column prop="categoryName" align="center" label="类型" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="subCategoryName" align="center" label="类型详细" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="eventCount" align="center" label="事件数量" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="percentage" align="center" label="占比" :show-overflow-tooltip="true"></el-table-column>
</el-table>
<h1 style="text-align: center;font-size: 20px;margin-top: 5%;">行业领域分布情况</h1>
<div v-if="categoryCountShow">
<div class="m-table-item" :style="{ height: maxTableHeight + 'px', width: '100%' }">
<div id="categoryPie"></div>
</div>
</div>
<div class="no-data" v-else>
暂无数据
</div>
<div>
<div class="m-search">
<el-form :inline="true" :model="formData" ref="ref_searchform" :label-width="'100px'">
<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>
</el-date-picker>
<el-date-picker v-model.trim="formData.queryDateEnd" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
placeholder="结束时间" style="width: 202px" clearable>
</el-date-picker>
</el-form-item>
<el-button style="margin-left: 30px" size="small" type="primary " @click="handleSearch">查询</el-button>
<el-button style="margin-left: 10px" is-plain class="diy-button--white el-button--default" size="small"
@click="exportReport">导出</el-button>
</el-form>
</div>
<div class="m-table">
<div style="display: flex;justify-content: space-between;flex-direction:row;">
<h1 style="font-size: 24px; font-weight: bold;"> 事件统计 </h1>
</div>
<div class="dashboard">
<div class="card">
<div class="card-icon ">
<img style="width: 40px;height: 40px;" src="./img/eventSumNum.png">
</div>
<div>
<h1 style="font-size: 24px; font-weight: bold;"> 工单情况分析 </h1>
<div v-if="agencyLevel!='community' && communityCountShow">
<h2 style="font-size: 20px; font-weight: bold;"> 地域统计分析 </h2>
<p style="font-size: 16px; line-height: 1.5; margin-top: 10px; text-indent: 2em;">
{{ report.geoStatis }}
</p>
<h1 style="text-align: center;font-size: 20px;">各社区问题数量及占比</h1>
<div class="m-table-item" :style="{ height: maxTableHeight + 'px', width: '100%' }">
<div id="communityChart"></div>
</div>
</div>
<!-- <div class="no-data" v-else>
暂无数据
</div> -->
<div v-if="agencyLevel!='community' && departCountShow">
<h2 style="font-size: 20px; font-weight: bold;"> 科室热线分布分析 </h2>
<p style="font-size: 16px; line-height: 1.5; margin-top: 10px; text-indent: 2em;">
{{ report.geoStatis }}
</p>
<h1 style="text-align: center;font-size: 20px;">科室热线分布情况</h1>
<div class="m-table-item" :style="{ height: maxTableHeight + 'px', width: '100%' }">
<div id="departChart"></div>
<div class="card-content">
<p class="card-title">{{analysisList.total}}</p>
<p class="card-text">事件总数</p>
</div>
</div>
<div class="card1">
<div class="card-icon ">
<img style="width: 40px;height: 40px;" src="./img/eventNum.png">
</div>
<div class="card-content1">
<div style="display: flex;flex-direction: column;justify-content: center;">
<div style="display: flex;flex-direction: row;">
<p class="card-title">{{analysisList.resolveTotal}}</p>
<span class="percentage">{{analysisList.resolveRate}}%</span>
</div>
<!-- <div v-else class="no-data">
暂无数据
</div> -->
<p class="card-text">已办结事件数</p>
</div>
<div v-if="subCategoryCountShow">
<h2 style="font-size: 20px; font-weight: bold;"> 热点诉求及区域分析 </h2>
<p style="font-size: 16px; line-height: 1.5; margin-top: 10px; text-indent: 2em;">
{{ report.hotDemand }}
</p>
<h1 style="text-align: center;font-size: 20px;">热线诉求热点问题前十</h1>
<div class="m-table-item" :style="{ height: maxTableHeight + 'px', width: '100%' }">
<div id="hotlineChart"></div>
<div style="padding-left: 20px; display: flex;flex-direction: column;justify-content: center;">
<div style="display: flex;flex-direction: row;">
<p class="card-title">{{analysisList.unresolveTotal}}</p>
<span class="percentage">{{analysisList.unresolveRate}}%</span>
</div>
<p class="card-text">未办结事件数</p>
</div>
<!-- <div class="no-data" v-else>
暂无数据
</div> -->
</div>
<div>
<h1 style="font-size: 24px; font-weight: bold;"> 存在主要问题 </h1>
<h2 style="font-size: 20px; font-weight: bold;"> 同地点同类型事件重复投诉 </h2>
</div>
<div class="card">
<div class="card-icon ">
<img style="width: 40px;height: 40px;" src="./img/perp.png">
</div>
<el-table :data="addressData" border class="m-table-item" style="width: 100%">
<el-table-column label="序号" fixed="left" type="index" align="center" width="50" />
<el-table-column prop="address" align="center" label="地点" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="categoryName" align="center" label="类型" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="amount" align="center" label="投诉次数" :show-overflow-tooltip="true">
<template slot-scope="{row}">
<el-button style="width: 100%" type="text" @click="clickAddressData(row)">{{row.amount}}</el-button>
</template>
</el-table-column>
<el-table-column prop="content" align="center" label="投诉内容" :show-overflow-tooltip="true"></el-table-column>
</el-table>
<el-button @click="handelMoreAddressData" type="text" size="small">查看更多</el-button>
<div>
<h2 style="font-size: 20px; font-weight: bold;"> 同一人员重复投诉</h2>
<div class="card-content">
<p class="card-title">{{analysisList.illegalConnectTotal}} <span class="percentage">{{analysisList.illegalConnectRate}}%</span></p>
<p class="card-text">联系当事人超期事件数</p>
</div>
<el-table :data="mobileData" border class="m-table-item" style="width: 100%">
<el-table-column label="序号" fixed="left" type="index" align="center" width="50" />
<el-table-column prop="mobile" align="center" label="联系方式" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-button
v-if="scope.row.resiId !== null && scope.row.resiId !== ''"
@click="handleLook(scope.row)"
type="text"
size="small"
>
{{ scope.row.mobile }}
</el-button>
<span v-else>
{{ scope.row.mobile }}
</span>
</template>
</el-table-column>
<el-table-column prop="amount" align="center" label="投诉次数" :show-overflow-tooltip="true">
<template slot-scope="{row}">
<el-button style="width: 100%" type="text" @click="clickMobileData(row)">{{row.amount}}</el-button>
</template>
</el-table-column>
<el-table-column prop="content" align="center" label="投诉内容" :show-overflow-tooltip="true"></el-table-column>
</el-table>
<el-button @click="handelMoreMobileData" type="text" size="small">查看更多</el-button>
<div>
<h2 style="font-size: 20px; font-weight: bold;"> 同一区域不同类型投诉</h2>
</div>
<div class="card">
<div class="card-icon ">
<img style="width: 40px;height: 40px;" src="./img/overdue.png">
</div>
<el-table :data="addressMobileData" border class="m-table-item" style="width: 100%" :span-method="objectSpanMethod">
<el-table-column label="序号" fixed="left" type="index" align="center" width="50" />
<el-table-column prop="address" align="center" label="地点" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="categoryName" align="center" label="类型" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="amount" align="center" label="投诉次数" :show-overflow-tooltip="true">
<template slot-scope="{row}">
<el-button style="width: 100%" type="text" @click="clickAddressMobileData(row)">{{row.amount}}</el-button>
</template>
</el-table-column>
<el-table-column prop="content" align="center" label="投诉内容" :show-overflow-tooltip="true"></el-table-column>
</el-table>
<el-button @click="handelMoreAddressMobileData" type="text" size="small">查看更多</el-button>
<div>
<h2 style="font-size: 20px; font-weight: bold;"> 同一工单追加内容投诉</h2>
<div class="card-content">
<p class="card-title">{{analysisList.illegalResolveTotal}} <span class="percentage">{{analysisList.illegalResolveRate}}%</span></p>
<p class="card-text">办理超期事件数</p>
</div>
</div>
</div>
<div style="display: flex;justify-content: space-between;flex-direction:row;">
<h1 style="font-size: 24px; font-weight: bold;"> 事件类型统计 </h1>
</div>
<el-table :data="addressData" border class="m-table-item" style="width: 100%">
<!-- <el-table-column label="序号" fixed="left" type="index" align="center" width="50" /> -->
<!-- <el-table-column prop="address" align="center" label="地点" :show-overflow-tooltip="true"></el-table-column> -->
<el-table-column prop="categoryName" align="center" label="一级分类"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="amount" align="center" label="二级分类" :show-overflow-tooltip="true">
<!-- <template slot-scope="{row}">
<el-button style="width: 100%" type="text" @click="clickAddressData(row)">{{row.amount}}</el-button>
</template> -->
</el-table-column>
<el-table-column prop="content" align="center" label="三级分类" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="content" align="center" label="四级分类" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="content" align="center" label="事件数量" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="content" align="center" label="同级占比" :show-overflow-tooltip="true"></el-table-column>
</el-table>
<div style="display: flex;justify-content: space-between;flex-direction:row;">
<h1 style="font-size: 24px; font-weight: bold;"> 部门科室工单量统计 </h1>
<h1 style="font-size: 24px; font-weight: bold; margin-right: 600px;"> 社区工单量统计 </h1>
</div>
<div style="display: flex;justify-content: space-between;flex-direction:row;">
<el-table :data="addressData" border class="m-table-item" style="width: 100%">
<!-- <el-table-column label="序号" fixed="left" type="index" align="center" width="50" /> -->
<!-- <el-table-column prop="address" align="center" label="地点" :show-overflow-tooltip="true"></el-table-column> -->
<el-table-column prop="categoryName" align="center" label="部门科室"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="amount" align="center" label="事件数" :show-overflow-tooltip="true">
<!-- <template slot-scope="{row}">
<el-button style="width: 100%" type="text" @click="clickAddressData(row)">{{row.amount}}</el-button>
</template> -->
</el-table-column>
<el-table-column prop="content" align="center" label="占比" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="content" align="center" label="为办结数" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="content" align="center" label="联系当事人超期数" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="content" align="center" label="办理超期数" :show-overflow-tooltip="true"></el-table-column>
</el-table>
<el-table :data="addressData" border class="m-table-item" style="margin-left: 50px;">
<!-- <el-table-column label="序号" fixed="left" type="index" align="center" width="50" /> -->
<!-- <el-table-column prop="address" align="center" label="地点" :show-overflow-tooltip="true"></el-table-column> -->
<el-table-column prop="categoryName" align="center" label="社区"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="amount" align="center" label="事件数" :show-overflow-tooltip="true">
<!-- <template slot-scope="{row}">
<el-button style="width: 100%" type="text" @click="clickAddressData(row)">{{row.amount}}</el-button>
</template> -->
</el-table-column>
<el-table-column prop="content" align="center" label="占比" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="content" align="center" label="为办结数" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="content" align="center" label="联系当事人超期数" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="content" align="center" label="办理超期数" :show-overflow-tooltip="true"></el-table-column>
</el-table>
</div>
<div>
<h1 style="font-size: 24px; font-weight: bold;"> 存在主要问题 </h1>
<h2 style="font-size: 20px; font-weight: bold;"> 同地点同类型事件重复投诉 </h2>
</div>
<el-table :data="addressData" border class="m-table-item" style="width: 100%">
<el-table-column label="序号" fixed="left" type="index" align="center" width="50" />
<el-table-column prop="address" align="center" label="地点" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="categoryName" align="center" label="类型"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="amount" align="center" label="投诉次数" :show-overflow-tooltip="true">
<template slot-scope="{row}">
<el-button style="width: 100%" type="text" @click="clickAddressData(row)">{{row.amount}}</el-button>
</template>
</el-table-column>
<el-table-column prop="content" align="center" label="投诉内容" :show-overflow-tooltip="true"></el-table-column>
</el-table>
<el-button @click="handelMoreAddressData" type="text" size="small">查看更多</el-button>
<div>
<h2 style="font-size: 20px; font-weight: bold;"> 同一人员重复投诉</h2>
</div>
<el-table :data="mobileData" border class="m-table-item" style="width: 100%">
<el-table-column label="序号" fixed="left" type="index" align="center" width="50" />
<el-table-column prop="mobile" align="center" label="联系方式" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-button v-if="scope.row.resiId !== null && scope.row.resiId !== ''" @click="handleLook(scope.row)"
type="text" size="small">
{{ scope.row.mobile }}
</el-button>
<span v-else>
{{ scope.row.mobile }}
</span>
</template>
</el-table-column>
<el-table-column prop="amount" align="center" label="投诉次数" :show-overflow-tooltip="true">
<template slot-scope="{row}">
<el-button style="width: 100%" type="text" @click="clickMobileData(row)">{{row.amount}}</el-button>
</template>
</el-table-column>
<el-table-column prop="content" align="center" label="投诉内容" :show-overflow-tooltip="true"></el-table-column>
</el-table>
<el-button @click="handelMoreMobileData" type="text" size="small">查看更多</el-button>
<div>
<h2 style="font-size: 20px; font-weight: bold;"> 同一区域不同类型投诉</h2>
</div>
<el-table :data="addressMobileData" border class="m-table-item" style="width: 100%"
:span-method="objectSpanMethod">
<el-table-column label="序号" fixed="left" type="index" align="center" width="50" />
<el-table-column prop="address" align="center" label="地点" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="categoryName" align="center" label="类型"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="amount" align="center" label="投诉次数" :show-overflow-tooltip="true">
<template slot-scope="{row}">
<el-button style="width: 100%" type="text" @click="clickAddressMobileData(row)">{{row.amount}}</el-button>
</template>
</el-table-column>
<el-table-column prop="content" align="center" label="投诉内容" :show-overflow-tooltip="true"></el-table-column>
</el-table>
<el-button @click="handelMoreAddressMobileData" type="text" size="small">查看更多</el-button>
<div>
<h2 style="font-size: 20px; font-weight: bold;"> 同一工单追加内容投诉</h2>
</div>
<el-table :data="addComplainData" border class="m-table-item" style="width: 100%">
<el-table-column label="序号" fixed="left" type="index" align="center" width="50" />
<el-table-column prop="categoryName" align="center" label="类型"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="awoNum" align="center" label="追加内容次数" :show-overflow-tooltip="true">
<template slot-scope="{row}">
<el-button style="width: 100%" type="text" @click="clickAwoFlagData(row)">{{row.awoNum}}</el-button>
</template>
</el-table-column>
<el-table-column prop="content" align="center" label="投诉内容" :show-overflow-tooltip="true"></el-table-column>
</el-table>
<el-button @click="handelMoreAddComplainData" type="text" size="small">查看更多</el-button>
<el-table
:data="addComplainData"
border
class="m-table-item"
style="width: 100%"
>
<el-table-column label="序号" fixed="left" type="index" align="center" width="50" />
<el-table-column prop="categoryName" align="center" label="类型" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="awoNum" align="center" label="追加内容次数" :show-overflow-tooltip="true">
<template slot-scope="{row}">
<el-button style="width: 100%" type="text" @click="clickAwoFlagData(row)">{{row.awoNum}}</el-button>
</template>
</el-table-column>
<el-table-column prop="content" align="center" label="投诉内容" :show-overflow-tooltip="true"></el-table-column>
</el-table>
<el-button @click="handelMoreAddComplainData" type="text" size="small">查看更多</el-button>
</div>
</div>
</div>
</div>
<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"
>
<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
>
<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">
<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" />
@handleClose="handleClose" @handleOk="handleOk" @dialogOk="handleEditSuccess" />
</el-dialog>
</el-dialog>
<el-dialog
v-if="showAreaSameEventList"
:visible.sync="showAreaSameEventList"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="同地点同类型事件重复投诉"
:modal-append-to-body="false"
width="60%"
top="5vh"
class="dialog-h"
@closed="showAreaSameEventList = false"
>
<area-same-list
ref="ref_area_same_list"
@handleClose="handleClose"
@clickAddressData="clickAddressData"
></area-same-list>
<el-dialog v-if="showAreaSameEventList" :visible.sync="showAreaSameEventList" :close-on-click-modal="false"
:close-on-press-escape="false" title="同地点同类型事件重复投诉" :modal-append-to-body="false" width="60%" top="5vh"
class="dialog-h" @closed="showAreaSameEventList = false">
<area-same-list ref="ref_area_same_list" @handleClose="handleClose"
@clickAddressData="clickAddressData"></area-same-list>
</el-dialog>
<el-dialog
v-if="showMobileEventList"
:visible.sync="showMobileEventList"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="同一人员重复投诉"
:modal-append-to-body="false"
width="60%"
top="5vh"
class="dialog-h"
@closed="showMobileEventList = false"
>
<mobile-list
ref="ref_mobile_list"
@handleClose="handleClose"
@clickMobileData="clickMobileData"
></mobile-list>
<el-dialog v-if="showMobileEventList" :visible.sync="showMobileEventList" :close-on-click-modal="false"
:close-on-press-escape="false" title="同一人员重复投诉" :modal-append-to-body="false" width="60%" top="5vh"
class="dialog-h" @closed="showMobileEventList = false">
<mobile-list ref="ref_mobile_list" @handleClose="handleClose" @clickMobileData="clickMobileData"></mobile-list>
</el-dialog>
<el-dialog
v-if="showAreaNoSameEventList"
:visible.sync="showAreaNoSameEventList"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="同一区域不同类型投诉"
:modal-append-to-body="false"
width="60%"
top="5vh"
class="dialog-h"
@closed="showAreaNoSameEventList = false"
>
<area-no-same-list
ref="ref_area_no_same_list"
@handleClose="handleClose"
@clickAddressMobileData="clickAddressMobileData"
></area-no-same-list>
<el-dialog v-if="showAreaNoSameEventList" :visible.sync="showAreaNoSameEventList" :close-on-click-modal="false"
:close-on-press-escape="false" title="同一区域不同类型投诉" :modal-append-to-body="false" width="60%" top="5vh"
class="dialog-h" @closed="showAreaNoSameEventList = false">
<area-no-same-list ref="ref_area_no_same_list" @handleClose="handleClose"
@clickAddressMobileData="clickAddressMobileData"></area-no-same-list>
</el-dialog>
<el-dialog
v-if="showAddEventList"
:visible.sync="showAddEventList"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="同一工单追加内容投诉"
:modal-append-to-body="false"
width="60%"
top="5vh"
class="dialog-h"
@closed="showAddEventList = false"
>
<add-complain-list
ref="ref_area_no_same_list"
@clickAwoFlagData="clickAwoFlagData"
></add-complain-list>
<el-dialog v-if="showAddEventList" :visible.sync="showAddEventList" :close-on-click-modal="false"
:close-on-press-escape="false" title="同一工单追加内容投诉" :modal-append-to-body="false" width="60%" top="5vh"
class="dialog-h" @closed="showAddEventList = false">
<add-complain-list ref="ref_area_no_same_list" @clickAwoFlagData="clickAwoFlagData"></add-complain-list>
</el-dialog>
<awoList ref="awoList" />
</div>
@ -317,24 +268,13 @@ import nextTick from "dai-js/tools/nextTick";
import { mapGetters } from "vuex";
import axios from "axios";
import * as echarts from "echarts";
// import formList from "./formList";
// import areaSameList from "./areaSameList";
// import areaNoSameList from "./areaNoSameList";
// import addComplainList from "./addComplainList";
// import mobileList from "./mobileList";
import util from "@js/util.js";
// import followDetail from "./followDetail";
// import eventInfo from "../shequzhili/event/cpts/event-info";
// import awoList from "@/views/modules/shequzhili/event/cpts/awoList.vue"
export default {
components: {},
data() {
return {
searchH: 20,
formData: {
queryDateStart: "",
queryDateEnd: "",
@ -346,6 +286,7 @@ export default {
id: "",
level: "agency",
},
analysisList:{},
//
report:{
@ -670,6 +611,7 @@ export default {
await this.initEcharts();
},
methods: {
initEcharts() {
if(this.categoryCountShow){
@ -757,6 +699,7 @@ export default {
this.showFormDetail = true;
}
},
//
async handleLook(row) {
@ -816,8 +759,27 @@ export default {
this.cleanReportData();
await this.getTableData();
await this.initEcharts();
await this.EventCategoryAnalysis()
},
//
async EventCategoryAnalysis(){
const url = "/governance/icEvent/EventCategoryAnalysis";
let params = {
startDate:this.formData.queryDateStart,
endDate:this.formData.queryDateEnd,
usableFlag:false
};
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);
}
},
cleanReportData(){
console.log("刷新数据");
this.report={}
@ -849,7 +811,6 @@ export default {
//
async getTableData() {
const url = '/governance/dwdEvent/report';
const {formData } = this;
const { data, code, internalMsg } = await requestPost(url, {
@ -1087,6 +1048,7 @@ export default {
@import "@/assets/scss/buttonstyle.scss";
@import "@/assets/scss/modules/management/list-main.scss";
@import "@/assets/scss/modules/shequzhili/event-info.scss";
@import "./css/index.scss";
.div_btn_left>* {
margin-right: 10px;

3
src/views/modules/shequzhili/event/cpts/process-form-assign.vue

@ -81,7 +81,8 @@ export default {
timeLimit:'',//
deptId:'', //
deptName:'',
sendMsg:0
sendMsg:0,
status:'assigned'
},
orgOptions: [],
orgOptionProps: {

2
src/views/modules/shequzhili/event/eventList.vue

@ -526,7 +526,7 @@ export default {
//
async handleDispose(row,type) {
this.eventId = '1817808567393198082';
this.eventId = '1818180543393128449';
const url = "/governance/icEvent/detail";
const { data, code, msg } = await requestPost(url, {
icEventId: this.eventId,

154
src/views/modules/shequzhili/eventHandling/index.vue

@ -1,19 +1,19 @@
<template>
<div class="g-main">
<div>
<div v-show="pageType == 'list'">
<div class="m-search">
<el-form :inline="true" :model="formData" ref="ref_searchform" :label-width="'100px'">
<div>
<el-form-item label="事件类别" prop="firstIdList">
<el-cascader ref="cascaderEvent" v-model.trim="eventTypeCheck" :options="cateOptions"
<el-cascader ref="cascaderEvent" v-model.trim="formData.firstIdList" :options="cateOptions"
collapse-tags :show-all-levels="false" :props="{
multiple: true,
checkStrictly: false,
checkStrictly: true,
emitPath: false,
children: 'children',
label: 'categoryName',
value: 'id',
}" clearable class="u-item-width-normal" @change="handleEventType" />
}" clearable class="u-item-width-normal" />
</el-form-item>
<el-form-item label="工单编号" prop="workOrderNum">
<el-input v-model.trim="formData.workOrderNum" class="u-item-width-normal" size="small"
@ -30,21 +30,17 @@
clearable placeholder="请输入">
</el-input>
</el-form-item>
<el-form-item label="办理超期" prop="overdue">
<el-cascader ref="cascaderEvent" v-model.trim="formData.overdue" :options="overdue"
collapse-tags :show-all-levels="false" clearable class="u-item-width-normal"
@change="handleEventType" />
<!-- <template slot-scope="{ node, data }">
<div @click="cascaderClick(node, data)">
<span>{{ data.name }}</span>
</div>
</template>
</el-cascader> -->
<el-form-item label="办理超期" prop="limitStatus">
<el-select v-model.trim="formData.limitStatus" clearable class="u-item-width-normal">
<el-option v-for="item in overdue" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="办理状态" prop="agencyId">
<el-cascader class="u-item-width-normal" size="small" ref="myCascader"
v-model.trim="formData.agencyId" :options="ProcessingList" :show-all-levels="false"
clearable></el-cascader>
<el-form-item label="办理状态" prop="operationType">
<el-select v-model.trim="formData.operationType" clearable class="u-item-width-normal">
<el-option v-for="item in ProcessingList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="办结时限" prop="limitStartTime">
<el-date-picker v-model.trim="formData.startTime" class="u-item-width-daterange"
@ -89,9 +85,9 @@
<el-table-column label="" fixed="left" type="selection" align="center" width="50" />
<!-- <el-table-column label="序号" fixed="left" type="index" align="center" width="50" /> -->
<el-table-column prop="workOrder" align="center" label="工单编号" :show-overflow-tooltip="true">
<el-table-column prop="workOrderNum" align="center" label="工单编号" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="eventType" label="事件类别" min-width="140" align="center"
<el-table-column prop="categoryAllName" label="事件类别" min-width="140" align="center"
:show-overflow-tooltip="true" />
<!-- <template slot-scope="scope">
{{ scope.row.firstName + '-' + scope.row.secondName }}
@ -99,10 +95,10 @@
</el-table-column> -->
<el-table-column prop="eventContent" label="事件描述" align="center" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="eventName" label="报件人" align="center" :show-overflow-tooltip="true">
<el-table-column prop="name" label="报件人" align="center" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="phone" align="center" width="110" label="联系电话" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-table-column prop="mobile" align="center" width="110" label="联系电话" :show-overflow-tooltip="true">
<!-- <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 }}
@ -110,32 +106,31 @@
<span v-else>
{{ scope.row.phone }}
</span>
</template>
</template> -->
</el-table-column>
<el-table-column prop="date" align="center" width="110" label="办结时限" :show-overflow-tooltip="true">
<el-table-column prop="timeLimit" align="center" width="110" label="办结时限" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="handlestatus" align="center" width="110" label="办理状态"
<el-table-column prop="statusName" align="center" width="110" label="办理状态"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<!-- <template slot-scope="scope">
<span v-if="scope.row.handlestatus === 0">联系当事人超期</span>
<span v-else-if="scope.row.handlestatus ===1">部门办结超期</span>
<span v-else>--</span>
</template>
</template> -->
</el-table-column>
<el-table-column prop="deliverystatus" align="center" width="110" label="办理超期"
<el-table-column prop="limitStatus" align="center" width="110" label="办理超期"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<!-- <template slot-scope="scope">
<span v-if="scope.row.deliverystatus === 0">联系当事人超期</span>
<span v-else-if="scope.row.deliverystatus ===1">部门办结超期</span>
<span v-else>--</span>
</template>
</template> -->
</el-table-column>
<el-table-column fixed="right" label="操作" align="center" width="200px" prop="status">
<template slot-scope="scope">
<el-button type="text" size="small" class="">查看</el-button>
<el-button @click="handleDispose(scope.row)" type="text" size="small"
class="">办理</el-button>
<el-button @click="handleWatch(scope.row)" type="text" size="small">查看</el-button>
<el-button @click="handleDispose(scope.row,'dispose')" type="text" size="small" class="">办理</el-button>
</template>
</el-table-column>
@ -149,7 +144,10 @@
</div>
</div>
</div>
<div v-if="pageType == 'dispose' || pageType == 'info' || pageType == 'assign' || pageType=='check'">
<event-info ref="eleEditForm" :pageType="pageType" :eventId="eventId" :eventDetailData="eventDetailData"
@handleClose="handleClose" @handleOk="handleOk" @dialogOk="handleEditSuccess" />
</div>
</div>
</template>
@ -158,9 +156,12 @@ import { requestPost } from "@/js/dai/request";
import nextTick from "dai-js/tools/nextTick";
import { mapGetters } from "vuex";
import axios from "axios";
import eventInfo from "../event/cpts/event-info.vue";
export default {
components:{
eventInfo
},
data() {
// let endDisabledDate = (time) => {
// //datareturn
@ -202,64 +203,28 @@ export default {
optionsG: [],
sarr: [],
ProcessingList: [
{
value: "1",
label: "未响应",
{
value: "8",
label: "未联系当事人",
},
{
value: "2",
label: "以响应",
value: "9",
label: "已联系当事人",
},
{
value: "3",
value: "10",
label: "办理中",
},
},
{
value: "4",
label: "待审核",
value: "11",
label: "已办结待审核",
},
{
value: "5",
label: "已办结",
value: "12",
label: "已审核归档",
},
],
tableData: [
{
workOrder:"5131133113213213213",
eventType:"城乡建设-住房",
eventContent:"王先生反映:市北区有一家黄焖鸡不好吃",
eventName:"王先生",
phone:"15666628220",
deliverystatus:0,
handleStatus:0,
department:"城建办",
date:"2024-8-1 11:50",
status:0
},
{
workOrder:"5131133113213213213",
eventType:"城乡建设-住房",
eventContent:"王先生反映:市北区有一家黄焖鸡不好吃",
eventName:"王先生",
phone:"15666628220",
deliverystatus:1,
handleStatus:0,
department:"城建办",
date:"2024-8-1 11:50",
status:0
},
{
workOrder:"5131133113213213213",
eventType:"城乡建设-住房",
eventContent:"王先生反映:市北区有一家黄焖鸡不好吃",
eventName:"王先生",
phone:"15666628220",
deliverystatus:1,
handleStatus:1,
department:"城建办",
date:"2024-8-1 11:50",
status:0
}
],
statusArray: [
{
@ -320,7 +285,8 @@ export default {
firstIdList: [],
secondIdList: [],
workOrderNum: "",
overdue:""
limitStatus:"",
operationType:''
},
cateOptions: [],
eventTypeCheck: [],
@ -375,22 +341,7 @@ export default {
this.getCateOptions();
},
methods: {
handleEventType(val) {
const nodes = this.$refs.cascaderEvent.getCheckedNodes();
this.formData.firstIdList = [];
this.formData.secondIdList = [];
let level1 = nodes.filter((item) => item.level === 1);
let level2 = nodes.filter((item) => item.level === 2);
level1.forEach((item) => {
if (item.hasChildren) {
for (let i = level2.length - 1; i >= 0; i--) {
if (level2[i].parent.value === item.value) level2.splice(i, 1);
}
}
});
this.formData.firstIdList = level1.map((item) => item.value);
this.formData.secondIdList = level2.map((item) => item.value);
},
handleSelectionChange(val) {
this.multipleSelection = [];
val.forEach((element) => {
@ -492,6 +443,7 @@ export default {
},
async handleWatch(row) {
console.log((row,"row"));
this.eventId = row.icEventId;
const url = "/governance/icEvent/detail";
const { data, code, msg } = await requestPost(url, {
@ -699,7 +651,7 @@ export default {
});
if (code === 0) {
this.total = data.total || 0;
// this.tableData = data.list ? data.list.map((item) => { return item; }) : [];
this.tableData = data.list ? data.list.map((item) => { return item; }) : [];
} else {
this.$message.error(msg);
}

169
src/views/modules/shequzhili/timeOut/Urging.vue

@ -1,49 +1,45 @@
<template>
<div class="form-container">
<el-form ref="form" :model="form" label-width="80px">
<el-form-item label="活动名称">
<el-input v-model="form.name"></el-input>
</el-form-item>
<el-form-item label="活动区域">
<el-select v-model="form.region" placeholder="请选择活动区域">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item>
<el-form-item label="活动时间">
<el-col :span="11">
<el-date-picker type="date" placeholder="选择日期" v-model="form.date1" style="width: 100%;"></el-date-picker>
</el-col>
<el-col class="line" :span="2">-</el-col>
<el-col :span="11">
<el-time-picker placeholder="选择时间" v-model="form.date2" style="width: 100%;"></el-time-picker>
</el-col>
</el-form-item>
<el-form-item label="即时配送">
<el-switch v-model="form.delivery"></el-switch>
</el-form-item>
<el-form-item label="活动性质">
<el-checkbox-group v-model="form.type">
<el-checkbox label="美食/餐厅线上活动" name="type"></el-checkbox>
<el-checkbox label="地推活动" name="type"></el-checkbox>
<el-checkbox label="线下主题活动" name="type"></el-checkbox>
<el-checkbox label="单纯品牌曝光" name="type"></el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="特殊资源">
<el-radio-group v-model="form.resource">
<el-radio label="线上品牌商赞助"></el-radio>
<el-radio label="线下场地免费"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="活动形式">
<el-input type="textarea" v-model="form.desc"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">立即创建</el-button>
<el-button>取消</el-button>
</el-form-item>
</el-form>
<table>
<tr>
<th>工单号</th>
<td>{{formData.ticketNumber}}</td>
<th>事件类别</th>
<td>{{formData.eventCategory}}</td>
</tr>
<tr>
<th>报件人</th>
<td>{{formData.reporter}}</td>
<th>联系电话</th>
<td>{{formData.phone}}</td>
</tr>
<tr>
<th>事件描述</th>
<td colspan="3">{{formData.reminderExplanation}}</td>
</tr>
<tr>
<th>指派部门</th>
<td>{{formData.assignedDepartment}}</td>
<th>指派时间</th>
<td>{{formData.assignmentTime}}</td>
</tr>
<tr>
<th>联系来电人时限</th>
<td>{{formData.contactDeadline}}</td>
<th>部门办结时限</th>
<td>{{formData.departmentDeadline}}</td>
</tr>
<tr>
<th>办理状态</th>
<td>{{formData.status}}</td>
<th></th>
<td></td>
</tr>
<tr>
<th>催办说明</th>
<td class="status-overdue" colspan="3">{{formData.reminderExplanation}}</td>
</tr>
</table>
</div>
</template>
@ -61,7 +57,8 @@
assignmentTime: '2024-07-14 19:54:36',
contactDeadline: '2024-07-15 10:00',
status: '联系来电人超期',
reminderExplanation: '将以发送手机短信形式提醒指派部门负责人(城建办-张三),尽快对事件进行响应处理!'
reminderExplanation: '将以发送手机短信形式提醒指派部门负责人(城建办-张三),尽快对事件进行响应处理!',
phone:"156666628220"
}
};
},
@ -75,27 +72,65 @@
</script>
<style scoped>
.form-container {
max-width: 600px;
margin: 0 auto;
padding: 20px;
border: 1px solid #ccc;
border-radius: 8px;
}
.form-group {
margin-bottom: 15px;
}
.form-group label {
display: block;
margin-bottom: 5px;
}
.form-group input,
.form-group textarea {
width: 100%;
.form-container{
display: flex;
justify-content: center;
align-items: center;
}
body {
font-family: Arial, sans-serif;
background-color: #f5f5f5;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
}
table {
width: 90%;
border-collapse: collapse;
margin: 20px 0;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
background-color: #ffffff;
}
th, td {
border: 1px solid #ddd;
padding: 8px;
box-sizing: border-box;
}
text-align: left;
vertical-align: top;
}
th {
background-color: #f2f2f2;
font-weight: bold;
}
tr:nth-child(even) {
background-color: #f9f9f9;
}
tr:hover {
background-color: #f1f1f1;
}
td[colspan="3"] {
}
td[rowspan="2"] {
background-color: #c3e6cb;
}
.percentage {
font-size: 14px;
color: #777;
margin-left: 5px;
}
.status-overdue {
color: red;
font-weight: bold;
}
</style>

110
src/views/modules/shequzhili/timeOut/index.vue

@ -1,11 +1,11 @@
<template>
<div class="g-main">
<div>
<div v-show="pageType == 'list'" >
<div class="m-search">
<el-form :inline="true" :model="formData" ref="ref_searchform" :label-width="'100px'">
<div>
<el-form-item label="事件类别" prop="firstIdList">
<el-cascader ref="cascaderEvent" v-model.trim="eventTypeCheck" :options="cateOptions" collapse-tags
<el-form-item label="事件类别" prop="categoryAllName">
<el-cascader ref="cascaderEvent" v-model.trim="formData.categoryAllName" :options="cateOptions" collapse-tags
:show-all-levels="false" :props="{
multiple: true,
checkStrictly: false,
@ -30,30 +30,41 @@
placeholder="请输入">
</el-input>
</el-form-item>
<el-form-item label="指派部门" prop="firstIdList">
<el-cascader ref="cascaderEvent" v-model.trim="formData.firstIdList" :options="cateOptions" collapse-tags
:show-all-levels="false" clearable class="u-item-width-normal" @change="handleEventType" />
<el-form-item label="指派部门" prop="departId">
<el-cascader ref="cascaderEvent" v-model.trim="formData.departId" :options="cateOptions" collapse-tags
:show-all-levels="false" clearable class="u-item-width-normal" :props="{
multiple: true,
checkStrictly: true,
emitPath: false,
children: 'children',
label: 'categoryName',
value: 'id',
}" />
</el-form-item>
<el-form-item label="办理状态" prop="status">
<el-form-item label="办理状态" prop="resolveStatus">
<el-cascader class="u-item-width-normal"
size="small"
ref="myCascader"
v-model.trim="formData.status"
v-model.trim="formData.resolveStatus"
:options="ProcessingList"
:show-all-levels="false"
clearable></el-cascader>
</el-form-item>
<el-form-item label="超时状态" prop="Timeoutstatus">
<el-cascader class="u-item-width-normal"
<el-form-item label="超时状态" prop="limitStatus">
<!-- <el-cascader class="u-item-width-normal"
size="small"
ref="myCascader"
v-model.trim="formData.Timeoutstatus"
v-model.trim="formData.limitStatus"
:options="timeoutList"
:show-all-levels="false"
clearable></el-cascader>
clearable></el-cascader> -->
<el-select v-model.trim="formData.limitStatus" clearable class="u-item-width-normal">
<el-option v-for="item in timeoutList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="办结时限" prop="limitStartTime">
<el-date-picker v-model.trim="formData.startTime"
<el-form-item label="办结时限" prop="timeLimit">
<el-date-picker v-model.trim="formData.timeLimit"
class="u-item-width-daterange" size="small" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
value="yyyy-MM-dd HH:mm:ss" placeholder="开始时间">
</el-date-picker>
@ -95,9 +106,9 @@
<el-table-column label="" fixed="left" type="selection" align="center" width="50" />
<!-- <el-table-column label="序号" fixed="left" type="index" align="center" width="50" /> -->
<el-table-column prop="workOrder" align="center" label="工单编号" :show-overflow-tooltip="true">
<el-table-column prop="workOrderNum" align="center" label="工单编号" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="eventType" label="事件类别" min-width="140" align="center"
<el-table-column prop="categoryAllName" label="事件类别" min-width="140" align="center"
:show-overflow-tooltip="true" />
<!-- <template slot-scope="scope">
{{ scope.row.firstName + '-' + scope.row.secondName }}
@ -105,7 +116,7 @@
</el-table-column> -->
<el-table-column prop="eventContent" label="事件描述" align="center" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="eventName" label="联系来电人时限" align="center" :show-overflow-tooltip="true">
<el-table-column prop="receptionTime" label="联系来电人时限" align="center" :show-overflow-tooltip="true">
</el-table-column>
<!-- <el-table-column prop="phone" align="center" width="110" label="联系电话" :show-overflow-tooltip="true">
<template slot-scope="scope">
@ -122,26 +133,26 @@
</span>
</template>
</el-table-column> -->
<el-table-column prop="date" align="center" width="110" label="部门办结时限" :show-overflow-tooltip="true">
<el-table-column prop="latestOperatedTime" align="center" width="110" label="部门办结时限" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="deliverystatus" align="center" width="110" label="办理超期" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-table-column prop="limitStatus" align="center" width="110" label="办理超期" :show-overflow-tooltip="true">
<!-- <template slot-scope="scope">
<span v-if="scope.row.deliverystatus === 0">联系当事人超期</span>
<span v-else-if="scope.row.deliverystatus ===1">部门办结超期</span>
<span v-else>--</span>
</template>
</template> -->
</el-table-column>
<el-table-column prop="handlestatus" align="center" width="110" label="办理状态" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-table-column prop="statusName" align="center" width="110" label="办理状态" :show-overflow-tooltip="true">
<!-- <template slot-scope="scope">
<span v-if="scope.row.handlestatus === 0">联系当事人超期</span>
<span v-else-if="scope.row.handlestatus ===1">部门办结超期</span>
<span v-else>--</span>
</template>
</template> -->
</el-table-column>
<el-table-column fixed="right" label="操作" align="center" width="200px" prop="status">
<template slot-scope="scope">
<el-button type="text" size="small" class="">查看</el-button>
<el-button @click="handleWatch(scope.row)" type="text" size="small">查看</el-button>
<el-button @click="handleDispose(scope.row)" type="text" size="small" class="">催办</el-button>
</template>
@ -156,6 +167,10 @@
</div>
</div>
</div>
<div v-if="pageType == 'dispose' || pageType == 'info' || pageType == 'assign' || pageType=='check'">
<event-info ref="eleEditForm" :pageType="pageType" :eventId="eventId" :eventDetailData="eventDetailData"
@handleClose="handleClose" @handleOk="handleOk" @dialogOk="handleEditSuccess" />
</div>
<el-dialog title="催办" :visible.sync="dialogVisible" width="650px" top="5vh" class="dialog-h" :before-close="handleClose">
<Urging ref="ref_form" v-if="dialogVisible" @dialogCancle="addFormCancle"
@ -174,6 +189,7 @@ import nextTick from "dai-js/tools/nextTick";
import { mapGetters } from "vuex";
import axios from "axios";
import Urging from "./Urging.vue"
import eventInfo from "../event/cpts/event-info.vue";
export default {
@ -239,42 +255,6 @@ export default {
dialogVisible:false,
tableData: [
{
workOrder:"5131133113213213213",
eventType:"城乡建设-住房",
eventContent:"王先生反映:市北区有一家黄焖鸡不好吃",
eventName:"王先生",
phone:"15666628220",
deliverystatus:0,
handleStatus:0,
department:"城建办",
date:"2024-8-1 11:50",
status:0
},
{
workOrder:"5131133113213213213",
eventType:"城乡建设-住房",
eventContent:"王先生反映:市北区有一家黄焖鸡不好吃",
eventName:"王先生",
phone:"15666628220",
deliverystatus:1,
handleStatus:0,
department:"城建办",
date:"2024-8-1 11:50",
status:0
},
{
workOrder:"5131133113213213213",
eventType:"城乡建设-住房",
eventContent:"王先生反映:市北区有一家黄焖鸡不好吃",
eventName:"王先生",
phone:"15666628220",
deliverystatus:1,
handleStatus:1,
department:"城建办",
date:"2024-8-1 11:50",
status:0
}
],
statusArray: [
{
@ -301,6 +281,7 @@ export default {
formData: {
agencyId: "",
sourceType: "",
departId:'',
eventContent: "",
name: "",
mobile: "",
@ -312,7 +293,7 @@ export default {
firstIdList: [],
secondIdList: [],
workOrderNum: "",
Timeoutstatus:""
limitStatus:""
},
cateOptions: [],
eventTypeCheck: [],
@ -335,7 +316,7 @@ export default {
importType: "1"
};
},
components:{Urging},
components:{Urging,eventInfo},
computed: {
maxTableHeight() {
const h = this.clientHeight - this.searchH - 275 + this.iframeHeight;
@ -485,6 +466,7 @@ export default {
},
async handleWatch(row) {
console.log("row",row);
this.eventId = row.icEventId;
const url = "/governance/icEvent/detail";
const { data, code, msg } = await requestPost(url, {
@ -694,7 +676,7 @@ export default {
});
if (code === 0) {
this.total = data.total || 0;
// this.tableData = data.list ? data.list.map((item) => { return item; }) : [];
this.tableData = data.list ? data.list.map((item) => { return item; }) : [];
} else {
this.$message.error(msg);
}

Loading…
Cancel
Save