Browse Source

Merge branch 'feature-xiaowang' of http://120.46.222.128:10021/elink-star/epmet-work-pc into 7.31

feature
mk 1 year ago
parent
commit
219204761b
  1. 20
      src/assets/scss/modules/shequzhili/event-info.scss
  2. 4
      src/main.js
  3. 55
      src/views/modules/shequzhili/Delivery/index.vue
  4. 85
      src/views/modules/shequzhili/analysis/css/index.scss
  5. BIN
      src/views/modules/shequzhili/analysis/img/eventNum.png
  6. BIN
      src/views/modules/shequzhili/analysis/img/eventSumNum.png
  7. BIN
      src/views/modules/shequzhili/analysis/img/overdue.png
  8. BIN
      src/views/modules/shequzhili/analysis/img/perp.png
  9. 515
      src/views/modules/shequzhili/analysis/index.vue
  10. 20
      src/views/modules/shequzhili/eventHandling/index.vue
  11. 169
      src/views/modules/shequzhili/timeOut/Urging.vue
  12. 14
      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{
}

4
src/main.js

@ -48,7 +48,7 @@ import PopTips from "@/components/PopTips/index.vue";
import PopHomeTip from "@/components/PopHomeTip/index.vue";
import NameSplit from "@/components/NameSplit/index.vue";
import RelationGraph from "relation-graph";
import dayjs from 'dayjs'
// import dayjs from 'dayjs'
// import AddNodeJw from "@/components/JwTree/addNode.vue";
//按钮
@ -104,7 +104,7 @@ Vue.directive("fixed", {
// 挂载全局
Vue.prototype.$http = http;
Vue.prototype.$sensitive = desensitization;
Vue.prototype.$dayjs = dayjs
// Vue.prototype.$dayjs = dayjs
// el-uploader的header配置
Vue.prototype.$getElUploadHeaders = () => ({
Authorization: localStorage.getItem("token") || "",

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

@ -1,6 +1,7 @@
<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>
@ -151,8 +152,12 @@
</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 +171,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 +182,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 +201,6 @@ export default {
return {
pageType: "list", // list add dispose info
user: {},
agencyId: "",
orgOptions: [],
orgOptionProps,
@ -366,6 +354,7 @@ export default {
importType: "1"
};
},
components:{eventInfo},
computed: {
maxTableHeight() {
const h = this.clientHeight - this.searchH - 275 + this.iframeHeight;
@ -516,6 +505,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 +519,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() {

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

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

@ -1,312 +1,264 @@
<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="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="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">2360</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">2250</p>
<span class="percentage">95%</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 class="br"></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">110</p>
<span class="percentage">5%</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">60 <span class="percentage">2%</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">60 <span class="percentage">2%</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>
@ -1087,6 +1039,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;

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

@ -1,6 +1,6 @@
<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>
@ -133,9 +133,8 @@
</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 +148,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 +160,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
@ -492,6 +497,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 +705,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>

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

@ -1,6 +1,6 @@
<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>
@ -141,7 +141,7 @@
<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 +156,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 +178,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 {
@ -335,7 +340,7 @@ export default {
importType: "1"
};
},
components:{Urging},
components:{Urging,eventInfo},
computed: {
maxTableHeight() {
const h = this.clientHeight - this.searchH - 275 + this.iframeHeight;
@ -485,6 +490,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 +700,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