|
|
@ -27,13 +27,13 @@ |
|
|
|
</div> |
|
|
|
<div class="m-table"> |
|
|
|
<div style="margin:30px 0"> |
|
|
|
<h1 style="font-size: 24px; font-weight: bold;"> 事件统计 </h1> |
|
|
|
<h1 style="font-size: 24px; font-weight: bold;"> 镇街办件情况总览 </h1> |
|
|
|
</div> |
|
|
|
<div class="div_room"> |
|
|
|
<div class="item2"> |
|
|
|
<img src="./img/responsivity.png" /> |
|
|
|
<div class="item2_div"> |
|
|
|
<span class="div_span1">{{ analysisList.responseRate}}%</span> |
|
|
|
<span class="div_span1">98%</span> |
|
|
|
<div style="display: flex; align-items: center;justify-content:center;"> |
|
|
|
<span class="div_span2">响应率</span> |
|
|
|
<img style="width: 10px;height: 10px;margin-top: 10px;margin-left: 5px;" src="./img/describe.png"> |
|
|
@ -43,7 +43,7 @@ |
|
|
|
<div class="item2"> |
|
|
|
<img src="./img/ontimeCompletionRate.png" /> |
|
|
|
<div class="item2_div"> |
|
|
|
<span class="div_span1">{{ analysisList.returnRate? analysisList.returnRate:0}}%</span> |
|
|
|
<span class="div_span1">98%</span> |
|
|
|
<div style="display: flex; align-items: center;justify-content:center;"> |
|
|
|
<span class="div_span2">办结率</span> |
|
|
|
<img style="width: 10px;height: 10px;margin-top: 10px;margin-left: 5px;" src="./img/describe.png"> |
|
|
@ -53,7 +53,7 @@ |
|
|
|
<div class="item2"> |
|
|
|
<img src="./img/finalResolutionRate.png" /> |
|
|
|
<div class="item2_div"> |
|
|
|
<span class="div_span1">{{ analysisList.resolveRate? analysisList.resolveRate:0}}%</span> |
|
|
|
<span class="div_span1">98%</span> |
|
|
|
<div style="display: flex; align-items: center;justify-content:center;"> |
|
|
|
<span class="div_span2">最终解决率</span> |
|
|
|
<img style="width: 10px;height: 10px;margin-top: 10px;margin-left: 5px;" src="./img/describe.png"> |
|
|
@ -63,7 +63,7 @@ |
|
|
|
<div class="item2"> |
|
|
|
<img src="./img/finalSatisfactionRate.png" /> |
|
|
|
<div class="item2_div"> |
|
|
|
<span class="div_span1">{{ analysisList.satisfiedRate? analysisList.satisfiedRate:0}}%</span> |
|
|
|
<span class="div_span1">98%</span> |
|
|
|
<div style="display: flex; align-items: center;justify-content:center;"> |
|
|
|
<span class="div_span2">最终满意率</span> |
|
|
|
<img style="width: 10px;height: 10px;margin-top: 10px;margin-left: 5px;" src="./img/describe.png"> |
|
|
@ -74,13 +74,12 @@ |
|
|
|
</div> |
|
|
|
<div class="div_room"> |
|
|
|
<div style="display: flex; justify-content: center; flex-direction: column; align-items: center;"> |
|
|
|
<div style="font-size: 16px; margin-top: 20px">派件/派件</div> |
|
|
|
<div>派件/派件</div> |
|
|
|
<div class="item" @click="onEventNum()"> |
|
|
|
<div class="item_category"> |
|
|
|
<img src="./img/eventSumNum.png" alt /> |
|
|
|
<div class="row_left">{{ analysisList.total }}</div> |
|
|
|
<div class="item_content"> |
|
|
|
收件数 |
|
|
|
<div class="item_content">收件数 |
|
|
|
<el-tooltip class="item_content" effect="dark" content="按导入事件的接收时间在统计时段内的事件数" placement="top"> |
|
|
|
<img class="img_describe" src="./img/describe1.png" alt="描述图标" /> |
|
|
|
</el-tooltip> |
|
|
@ -95,7 +94,7 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div style="display: flex; justify-content: center; flex-direction: column; align-items: center;"> |
|
|
|
<div style="font-size: 16px; margin-top: 20px">办理</div> |
|
|
|
<div>办理</div> |
|
|
|
<div class="item" @click="onEventNum()" style="background-color: #f2fffb;"> |
|
|
|
<div class="item_category"> |
|
|
|
<img src="./img/perp.png" alt /> |
|
|
@ -114,7 +113,7 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div style="display: flex; justify-content: center; flex-direction: column; align-items: center;"> |
|
|
|
<div style="font-size: 16px; margin-top: 20px">办结</div> |
|
|
|
<div>办结</div> |
|
|
|
<div class="item" @click="onEventNum()" style="background-color: #f4fdff; "> |
|
|
|
<div class="item_category"> |
|
|
|
<img src="./img/completed.png" alt /> |
|
|
@ -128,12 +127,12 @@ |
|
|
|
content="在统计时段内所有“未办结”状态的事件数" placement="top"> |
|
|
|
<img class="img_describe" src="./img/describe1.png" alt="描述图标" /> |
|
|
|
</el-tooltip></div> --> |
|
|
|
<div class="row_left" style="color:#FF7035 ;">{{ analysisList.inTimeResolveNum?analysisList.inTimeResolveNum:"0"}}</div> |
|
|
|
<div class="row_left" style="color:#FF7035 ;">{{ analysisList.total }}</div> |
|
|
|
<div class="item_content">按时办结数<el-tooltip class="item_content" effect="dark" |
|
|
|
content="在统计时段内进行“办结”操作且未超过(部门)办结时限的事件数" placement="top"> |
|
|
|
<img class="img_describe" src="./img/describe1.png" alt="描述图标" /> |
|
|
|
</el-tooltip></div> |
|
|
|
<div class="row_left" style="color:#FF7035 ;">{{ analysisList.total?analysisList.total:"0"}}</div> |
|
|
|
<div class="row_left" style="color:#FF7035 ;">{{ analysisList.total }}</div> |
|
|
|
<div class="item_content">超期办结数<el-tooltip class="item_content" effect="dark" |
|
|
|
content="在统计时段内进行“办结”操作但已超过(部门)办结时限的事件数" placement="top"> |
|
|
|
<img class="img_describe" src="./img/describe1.png" alt="描述图标" /> |
|
|
@ -142,11 +141,11 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div style="display: flex; justify-content: center; flex-direction: column; align-items: center;"> |
|
|
|
<div style="font-size: 16px; margin-top: 20px">退件/不合规申请件</div> |
|
|
|
<div>退件/不合规申请件</div> |
|
|
|
<div class="item" @click="onEventNum()" style="background-color:#fffdf0;"> |
|
|
|
<div class="item_category"> |
|
|
|
<img src="./img/returnTheItem.png" alt /> |
|
|
|
<div class="row_left">{{ analysisList.returnTotal }}</div> |
|
|
|
<div class="row_left">{{ analysisList.total }}</div> |
|
|
|
<div class="item_content">退件数<el-tooltip class="item_content" effect="dark" content="在统计时段内进行“退件”操作的事件数" |
|
|
|
placement="top"> |
|
|
|
<img class="img_describe" src="./img/describe1.png" alt="描述图标" /> |
|
|
@ -156,7 +155,7 @@ |
|
|
|
content="在统计时段内进行“退件”操作且未超过退件时限的事件数" placement="top"> |
|
|
|
<img class="img_describe" src="./img/describe1.png" alt="描述图标" /> |
|
|
|
</el-tooltip></div> |
|
|
|
<div class="row_left" style="color:#FF7035 ;">{{ analysisList.overTimeTotal }}</div> |
|
|
|
<div class="row_left" style="color:#FF7035 ;">{{ analysisList.total }}</div> |
|
|
|
<div class="item_content">超期退件数<el-tooltip class="item_content" effect="dark" |
|
|
|
content="在统计时段内进行“退件”操作但已超过退件时限的事件数" placement="top"> |
|
|
|
<img class="img_describe" src="./img/describe1.png" alt="描述图标" /> |
|
|
@ -172,16 +171,16 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div style="display: flex; justify-content: center; flex-direction: column; align-items: center;"> |
|
|
|
<div style="font-size: 16px; margin-top: 20px">退件/不合规申请件</div> |
|
|
|
<div>退件/不合规申请件</div> |
|
|
|
<div class="item" @click="onEventNum('3')"> |
|
|
|
<div class="item_category"> |
|
|
|
<img src="./img/acttive.png" alt /> |
|
|
|
<div class="row_left">{{ analysisList.tackleWarehouseTotal }}</div> |
|
|
|
<div class="row_left">{{ analysisList.total }}</div> |
|
|
|
<div class="item_content">攻坚事件数<el-tooltip class="item_content" effect="dark" |
|
|
|
content="在统计时段内进行“派件”操作且符合攻坚事件条件的事件数" placement="top"> |
|
|
|
<img class="img_describe" src="./img/describe1.png" alt="描述图标" /> |
|
|
|
</el-tooltip></div> |
|
|
|
<div class="row_left">{{ analysisList.sensitiveTotal }}</div> |
|
|
|
<div class="row_left">{{ analysisList.total }}</div> |
|
|
|
<div class="item_content">敏感渠道来源件数<el-tooltip class="item_content" effect="dark" |
|
|
|
content="在统计时段内进行“派件”操作且符合敏感渠道来源的事件数" placement="top"> |
|
|
|
<img class="img_describe" src="./img/describe1.png" alt="描述图标" /> |
|
|
@ -197,11 +196,11 @@ |
|
|
|
</div> |
|
|
|
<el-table :data="tableList" style="width: 100%;margin-bottom: 20px;" row-key="id" border |
|
|
|
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"> |
|
|
|
<el-table-column prop="categoryName" label="事件类型" :show-overflow-tooltip="true"> |
|
|
|
<el-table-column prop="categoryName" label="事件类型"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="eventCount" label="事件数量" :show-overflow-tooltip="true"> |
|
|
|
<el-table-column prop="eventCount" label="事件数量"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="proportion" label="同级占比" :show-overflow-tooltip="true"> |
|
|
|
<el-table-column prop="proportion" label="同级占比"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
{{ scope.row.proportion }}% |
|
|
|
</template> |
|
|
@ -213,7 +212,7 @@ |
|
|
|
<div> |
|
|
|
<echartsAffairs></echartsAffairs> |
|
|
|
</div> |
|
|
|
<div style="display: flex;margin-top: 20px" > |
|
|
|
<div style="display: flex"> |
|
|
|
<div class="f-align_item " :class="{ active: selectedIndex === index }" v-for="(item, index) in titleList" |
|
|
|
:key="item.value" @click="selectItem(index)"> |
|
|
|
<div style="font-size: 20px; "> {{ item.label }} </div> |
|
|
@ -224,18 +223,18 @@ |
|
|
|
<el-table :data="departmentList" height="300" border class="m-table-item" style="width: 100%"> |
|
|
|
<el-table-column fixed="left" prop="assignOrgName" align="center" label="部门科室" |
|
|
|
:show-overflow-tooltip="true"></el-table-column> |
|
|
|
<el-table-column prop="total" align="center" label="事件数" :show-overflow-tooltip="true"> |
|
|
|
<el-table-column fixed="left" prop="total" align="center" label="收件数" :show-overflow-tooltip="true"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="totalRate" align="center" label="占比" :show-overflow-tooltip="true"> |
|
|
|
<el-table-column fixed="left" prop="totalRate" align="center" label="占比" :show-overflow-tooltip="true"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
{{ scope.row.totalRate }}% |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="unresolveTotal" align="center" label="未办结数" |
|
|
|
<el-table-column prop="unresolveTotal" align="center" label="派件数" |
|
|
|
:show-overflow-tooltip="true"></el-table-column> |
|
|
|
<el-table-column prop="illegalConnectRate" align="center" label="联系当事人超期数" |
|
|
|
<el-table-column prop="address" align="center" label="联系当事人(初访)件数" |
|
|
|
:show-overflow-tooltip="true"></el-table-column> |
|
|
|
<el-table-column prop="illegalResolveTotal" align="center" label="办理超期数" |
|
|
|
<el-table-column prop="address" align="center" label="办理中件数" |
|
|
|
:show-overflow-tooltip="true"></el-table-column> |
|
|
|
<el-table-column prop="address" align="center" label="办结件数" |
|
|
|
:show-overflow-tooltip="true"></el-table-column> |
|
|
@ -264,35 +263,65 @@ |
|
|
|
</el-table-column> |
|
|
|
<el-table-column fixed="right" prop="totalRate" align="center" label="解决率" :show-overflow-tooltip="true"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column fixed="right" prop="satisfiedRate" align="center" label="满意率" :show-overflow-tooltip="true"> |
|
|
|
<el-table-column fixed="right" prop="totalRate" align="center" label="满意率" :show-overflow-tooltip="true"> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div style="display: flex;width: 49%;flex-direction:column;"> |
|
|
|
<h1 style="font-size: 24px; font-weight: bold; margin: 20px 0;"> 社区工单量统计 </h1> |
|
|
|
<el-table :data="communityList" height="300" border class="m-table-item" style=""> |
|
|
|
<el-table-column prop="assignOrgName" align="center" label="社区" |
|
|
|
<div v-if="selectedIndex === 1" style=""> |
|
|
|
<el-table :data="communityList" height="300" border class="m-table-item" style="width: 100%"> |
|
|
|
<el-table-column fixed="left" prop="assignOrgName" align="center" label="社区" |
|
|
|
:show-overflow-tooltip="true"></el-table-column> |
|
|
|
<el-table-column prop="total" align="center" label="事件数" :show-overflow-tooltip="true"> |
|
|
|
<el-table-column fixed="left" prop="total" align="center" label="收件数" :show-overflow-tooltip="true"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="totalRate" align="center" label="占比" :show-overflow-tooltip="true"> |
|
|
|
<el-table-column fixed="left" prop="totalRate" align="center" label="占比" :show-overflow-tooltip="true"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
{{ scope.row.totalRate }}% |
|
|
|
</template> |
|
|
|
|
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="unresolveTotal" align="center" label="未办结数" |
|
|
|
<el-table-column prop="unresolveTotal" align="center" label="派件数" |
|
|
|
:show-overflow-tooltip="true"></el-table-column> |
|
|
|
<el-table-column prop="address" align="center" label="联系当事人(初访)件数" |
|
|
|
:show-overflow-tooltip="true"></el-table-column> |
|
|
|
<el-table-column prop="address" align="center" label="办理中件数" |
|
|
|
:show-overflow-tooltip="true"></el-table-column> |
|
|
|
<el-table-column prop="address" align="center" label="办结件数" |
|
|
|
:show-overflow-tooltip="true"></el-table-column> |
|
|
|
<el-table-column prop="address" align="center" label="未办结件数" |
|
|
|
:show-overflow-tooltip="true"></el-table-column> |
|
|
|
<el-table-column prop="address" align="center" label="按时办结数" |
|
|
|
:show-overflow-tooltip="true"></el-table-column> |
|
|
|
<el-table-column prop="address" align="center" label="超期办结数" |
|
|
|
:show-overflow-tooltip="true"></el-table-column> |
|
|
|
<el-table-column prop="address" align="center" label="退件数" |
|
|
|
:show-overflow-tooltip="true"></el-table-column> |
|
|
|
<el-table-column prop="illegalConnectRate" align="center" label="正常退件数" |
|
|
|
:show-overflow-tooltip="true"></el-table-column> |
|
|
|
<el-table-column prop="illegalResolveTotal" align="center" label="超期退件数" |
|
|
|
:show-overflow-tooltip="true"></el-table-column> |
|
|
|
<el-table-column prop="illegalResolveTotal" align="center" label="不合规申请件数" |
|
|
|
:show-overflow-tooltip="true"></el-table-column> |
|
|
|
<el-table-column prop="illegalConnectRate" align="center" label="联系当事人超期数" |
|
|
|
<el-table-column prop="illegalResolveTotal" align="center" label="攻坚事件数" |
|
|
|
:show-overflow-tooltip="true"></el-table-column> |
|
|
|
<el-table-column prop="illegalResolveTotal" align="center" label="办理超期数" |
|
|
|
<el-table-column prop="illegalResolveTotal" align="center" label="敏感渠道来源件数" |
|
|
|
:show-overflow-tooltip="true"></el-table-column> |
|
|
|
<el-table-column fixed="right" prop="total" align="center" label="响应率" :show-overflow-tooltip="true"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column fixed="right" prop="totalRate" align="center" label="按时办结率" |
|
|
|
:show-overflow-tooltip="true"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column fixed="right" prop="totalRate" align="center" label="解决率" :show-overflow-tooltip="true"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column fixed="right" prop="totalRate" align="center" label="满意率" :show-overflow-tooltip="true"> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
<div style="margin: 20px;"> |
|
|
|
<div class="chart-container"> |
|
|
|
<div ref="chart" class="chart"></div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div> |
|
|
|
<h1 style="font-size: 24px; font-weight: bold;"> 存在主要问题 </h1> |
|
|
@ -309,7 +338,7 @@ |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="content" align="center" label="操作" fixed="right" :show-overflow-tooltip="true"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-button @click="clickAddressData(scope.row)" type="text" size="small">查看</el-button> |
|
|
|
<el-button @click="clickAddressData(row)" type="text" size="small">查看</el-button> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
@ -318,9 +347,6 @@ |
|
|
|
<h2 style="font-size: 20px; font-weight: bold;"> ➤ 同一人员重复投诉</h2> |
|
|
|
<el-table :data="mobileData" height="300" border class="m-table-item" style=""> |
|
|
|
<el-table-column label="序号" fixed="left" type="index" align="center" width="50" /> |
|
|
|
<el-table-column prop="name" align="center" label="联系人" :show-overflow-tooltip="true"> |
|
|
|
<template slot-scope="scope">{{ scope.row.name? scope.row.name:"匿名"}}</template> |
|
|
|
</el-table-column> |
|
|
|
<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)" |
|
|
@ -340,7 +366,7 @@ |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="content" align="center" label="操作" fixed="right" :show-overflow-tooltip="true"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-button @click="clickMobileData(scope.row)" type="text" size="small">查看</el-button> |
|
|
|
<el-button @click="clickMobileData(row)" type="text" size="small">查看</el-button> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
@ -363,7 +389,7 @@ |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="content" align="center" label="操作" fixed="right" :show-overflow-tooltip="true"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-button @click="clickAddressMobileData(scope.row)" type="text" size="small">查看</el-button> |
|
|
|
<el-button @click="clickAddressMobileData(row)" type="text" size="small">查看</el-button> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
@ -382,7 +408,7 @@ |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="content" align="center" label="操作" fixed="right" :show-overflow-tooltip="true"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-button @click="clickAwoFlagData(scope.row)" type="text" size="small">查看</el-button> |
|
|
|
<el-button @click="clickAwoFlagData(row)" type="text" size="small">查看</el-button> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
@ -433,7 +459,7 @@ |
|
|
|
<add-complain-list ref="ref_area_no_same_list" @clickAwoFlagData="clickAwoFlagData"></add-complain-list> |
|
|
|
</el-dialog> |
|
|
|
<el-dialog :title="`${$store.state.user.agencyName}12345政务热线诉求总结`" :visible.sync="summarizeDialog" width="50%" |
|
|
|
v-if="summarizeDialog" center> |
|
|
|
v-if="summarizeDialog" @close="handleCloseSummarizeDialog" center> |
|
|
|
<div class="chatContent"> |
|
|
|
<mark-down></mark-down> |
|
|
|
</div> |
|
|
@ -447,19 +473,29 @@ import eventInfo from "../../shequzhili/event/cpts/event-info.vue"; |
|
|
|
import { requestPost, requestGet } from "@/js/dai/request"; |
|
|
|
import nextTick from "dai-js/tools/nextTick"; |
|
|
|
import { mapGetters } from "vuex"; |
|
|
|
import axios from "axios"; |
|
|
|
import * as echarts from "echarts"; |
|
|
|
import util from "@js/util.js"; |
|
|
|
import TableRow from './TableRow.vue'; |
|
|
|
import mobileList from "./mobileList"; |
|
|
|
import areaNoSameList from "./areaNoSameList"; |
|
|
|
import addComplainList from "./addComplainList"; |
|
|
|
import echartsAffairs from "./cpts/echarts-affairs.vue"; |
|
|
|
import markDown from "./markDown.vue"; |
|
|
|
|
|
|
|
export default { |
|
|
|
components: {TableRow,formList,eventInfo,areaSameList,mobileList,areaNoSameList,addComplainList,markDown}, |
|
|
|
components: { TableRow, formList, eventInfo, areaSameList, mobileList, areaNoSameList, addComplainList, echartsAffairs ,markDown}, |
|
|
|
data() { |
|
|
|
return { |
|
|
|
selectedIndex: 0, |
|
|
|
titleList: [ |
|
|
|
{ |
|
|
|
value: 0, |
|
|
|
label: '部门科室办件情况' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value: 1, |
|
|
|
label: '社区办件情况' |
|
|
|
}, |
|
|
|
], |
|
|
|
starttime: "", |
|
|
|
endtime: "", |
|
|
|
level: 1, |
|
|
@ -471,15 +507,12 @@ export default { |
|
|
|
queryDateStart: "", |
|
|
|
queryDateEnd: "", |
|
|
|
}, |
|
|
|
|
|
|
|
agencyLevel: '', |
|
|
|
|
|
|
|
orgData: { |
|
|
|
id: "", |
|
|
|
level: "agency", |
|
|
|
}, |
|
|
|
analysisList: {}, |
|
|
|
|
|
|
|
// 内容字段 |
|
|
|
report: { |
|
|
|
streetName: "", |
|
|
@ -488,45 +521,34 @@ export default { |
|
|
|
departHotline: "", |
|
|
|
hotDemand: "", |
|
|
|
}, |
|
|
|
|
|
|
|
addressData:[], |
|
|
|
addressData: [ |
|
|
|
], |
|
|
|
mobileData: [], |
|
|
|
addressMobileData: [], |
|
|
|
addComplainData: [], |
|
|
|
|
|
|
|
eventCategorys: [], |
|
|
|
|
|
|
|
categoryPie: {}, |
|
|
|
communityChart: {}, |
|
|
|
departChart: {}, |
|
|
|
hotlineChart: {}, |
|
|
|
|
|
|
|
categoryCountShow: false, |
|
|
|
communityCountShow: false, |
|
|
|
departCountShow: false, |
|
|
|
subCategoryCountShow: false, |
|
|
|
|
|
|
|
showFormList: false, |
|
|
|
showFormDetail: false, |
|
|
|
showAreaSameEventList: false, |
|
|
|
showMobileEventList: false, |
|
|
|
showAreaNoSameEventList: false, |
|
|
|
showAddEventList: false, |
|
|
|
|
|
|
|
recId: "", |
|
|
|
departId: "", |
|
|
|
communityId: "", |
|
|
|
|
|
|
|
eventId: "", |
|
|
|
eventDetailData: {}, |
|
|
|
pageType: "info", |
|
|
|
|
|
|
|
mergeObj: {}, |
|
|
|
mergeArr: ['address'], |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
categoryPieOption: { |
|
|
|
tooltip: { |
|
|
|
trigger: 'item' |
|
|
@ -783,6 +805,7 @@ export default { |
|
|
|
] |
|
|
|
}, |
|
|
|
summarizeDialog: false, |
|
|
|
displayedText: '', |
|
|
|
}; |
|
|
|
}, |
|
|
|
|
|
|
@ -793,9 +816,10 @@ export default { |
|
|
|
return this.$store.state.inIframe ? h : _h; |
|
|
|
}, |
|
|
|
...mapGetters(["clientHeight", "iframeHeight"]), |
|
|
|
|
|
|
|
}, |
|
|
|
watch: {}, |
|
|
|
async mounted() { |
|
|
|
mounted() { |
|
|
|
this.user = this.$store.state.user; |
|
|
|
this.agencyId = this.user.agencyId; |
|
|
|
this.getLastMonthRange() |
|
|
@ -803,12 +827,25 @@ export default { |
|
|
|
this.agencyLevel = localStorage.getItem("level", this.orgData.level); |
|
|
|
this.getTableData(); |
|
|
|
// this.initEcharts(); |
|
|
|
await this.EventCategoryAnalysis(); |
|
|
|
await this.EventCate(); |
|
|
|
this.EventCategoryAnalysis(); |
|
|
|
this.EventCate(); |
|
|
|
this.getCategoryTree() |
|
|
|
|
|
|
|
this.initChart("/actual/base/residentIntegrity/resiCategoryStats/byOrg/query4Org"); |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
regexChat(str) { |
|
|
|
const regex = /"content":"(.*?)"/g; |
|
|
|
const matches = []; |
|
|
|
let match; |
|
|
|
while ((match = regex.exec(str)) !== null) { |
|
|
|
const formattedContent = match[1].replace(/\\n/g, '\\\\n'); |
|
|
|
console.log(formattedContent,'formattedContent'); |
|
|
|
|
|
|
|
matches.push(formattedContent); |
|
|
|
} |
|
|
|
const mergedContent = matches.join(''); |
|
|
|
return mergedContent; |
|
|
|
}, |
|
|
|
handelClickShowSummarize() { |
|
|
|
this.summarizeDialog = true; |
|
|
|
}, |
|
|
@ -817,16 +854,36 @@ export default { |
|
|
|
this.displayedText = ''; |
|
|
|
}, |
|
|
|
initChart(url) { |
|
|
|
this.$http.get(url).then(({ data: { data } }) => { |
|
|
|
const chartDom = this.$refs.chart; |
|
|
|
const myChart = echarts.init(chartDom); |
|
|
|
const departmentNames = this.selectedIndex === 0 ? this.departmentList : this.communityList; |
|
|
|
let xData = departmentNames.map(item => item.assignOrgName) |
|
|
|
let responseRate = departmentNames.map(item => item.responseRate) |
|
|
|
let assignOrgName = departmentNames.map(item => item.assignOrgName) |
|
|
|
console.log(assignOrgName,"dsfkljldsk"); |
|
|
|
let returnRate = departmentNames.map(item => item.returnRate) |
|
|
|
let resolveRate = departmentNames.map(item => item.resolveRate) |
|
|
|
let satisfiedRate = departmentNames.map(item => item.satisfiedRate) |
|
|
|
const departmentNames = [ |
|
|
|
{ name: "部门A1", xiangying: "87.43", banjie: "64.22", zuizhong: "54", manyi: "200" }, |
|
|
|
{ name: "部门A2", xiangying: "45.31", banjie: "85.49", zuizhong: "78", manyi: "180" }, |
|
|
|
{ name: "部门A3", xiangying: "92.10", banjie: "48.56", zuizhong: "80", manyi: "250" }, |
|
|
|
{ name: "部门A4", xiangying: "76.32", banjie: "92.78", zuizhong: "85", manyi: "190" }, |
|
|
|
{ name: "部门A5", xiangying: "54.89", banjie: "77.34", zuizhong: "93", manyi: "210" }, |
|
|
|
{ name: "部门A6", xiangying: "80.45", banjie: "61.23", zuizhong: "88", manyi: "170" }, |
|
|
|
{ name: "部门A7", xiangying: "67.21", banjie: "90.12", zuizhong: "95", manyi: "220" }, |
|
|
|
{ name: "部门A8", xiangying: "48.76", banjie: "85.45", zuizhong: "78", manyi: "160" }, |
|
|
|
{ name: "部门A9", xiangying: "59.88", banjie: "73.67", zuizhong: "82", manyi: "230" }, |
|
|
|
{ name: "部门A10", xiangying: "88.34", banjie: "68.4", zuizhong: "89", manyi: "240" }, |
|
|
|
{ name: "部门A11", xiangying: "71.90", banjie: "80.1", zuizhong: "77", manyi: "195" }, |
|
|
|
{ name: "部门A12", xiangying: "64.78", banjie: "94.0", zuizhong: "92", manyi: "260" }, |
|
|
|
{ name: "部门A13", xiangying: "90.12", banjie: "79.3", zuizhong: "85", manyi: "280" }, |
|
|
|
{ name: "部门A14", xiangying: "53.34", banjie: "88.67", zuizhong: "76", manyi: "275" }, |
|
|
|
{ name: "部门A15", xiangying: "75.45", banjie: "69.87", zuizhong: "82", manyi: "245" }, |
|
|
|
{ name: "部门A16", xiangying: "66.78", banjie: "71.45", zuizhong: "79", manyi: "210" }, |
|
|
|
{ name: "部门A17", xiangying: "82.34", banjie: "95.23", zuizhong: "91", manyi: "265" }, |
|
|
|
{ name: "部门A18", xiangying: "77.98", banjie: "84.65", zuizhong: "89", manyi: "255" }, |
|
|
|
{ name: "部门A19", xiangying: "58.67", banjie: "75.34", zuizhong: "81", manyi: "190" }, |
|
|
|
{ name: "部门A20", xiangying: "63.22", banjie: "72.34", zuizhong: "88", manyi: "285" } |
|
|
|
]; |
|
|
|
let xData = departmentNames.map(item => item.name) |
|
|
|
let xiangying = departmentNames.map(item => item.xiangying) |
|
|
|
let banjie = departmentNames.map(item => item.banjie) |
|
|
|
let zuizhong = departmentNames.map(item => item.zuizhong) |
|
|
|
let manyi = departmentNames.map(item => item.manyi) |
|
|
|
const option = { |
|
|
|
tooltip: { trigger: "axis" }, |
|
|
|
legend: { |
|
|
@ -844,11 +901,11 @@ export default { |
|
|
|
}, |
|
|
|
series: [ |
|
|
|
{ |
|
|
|
name: "响应率", type: "bar", barWidth: 20, data: responseRate, color: "#3B82F6" |
|
|
|
name: "响应率", type: "bar", barWidth: 20, data: xiangying, color: "#3B82F6" |
|
|
|
}, |
|
|
|
{ name: "按时办结率", type: "bar", barWidth: 20, data: returnRate, color: "#22C55E" }, |
|
|
|
{ name: "最终解决率", type: "bar", barWidth: 20, data: resolveRate, color: "#FACC15" }, |
|
|
|
{ name: "最终满意率", type: "bar", barWidth: 20, data: satisfiedRate, color: "#FB923C" }, |
|
|
|
{ name: "按时办结率", type: "bar", barWidth: 20, data: banjie, color: "#22C55E" }, |
|
|
|
{ name: "最终解决率", type: "bar", barWidth: 20, data: zuizhong, color: "#FACC15" }, |
|
|
|
{ name: "最终满意率", type: "bar", barWidth: 20, data: manyi, color: "#FB923C" }, |
|
|
|
], |
|
|
|
grid: { left: "3%", right: "4%", bottom: "10%", containLabel: true }, |
|
|
|
dataZoom: [ |
|
|
@ -858,6 +915,9 @@ export default { |
|
|
|
show: true, |
|
|
|
start: 0, // 默认显示起点 |
|
|
|
end: 50, // 默认显示 50% |
|
|
|
// height:normalFontSize(12), |
|
|
|
// width:normalFontSize(112), |
|
|
|
// xAxisIndex: [0], // 绑定 X 轴 |
|
|
|
handleSize: 0, // 隐藏手柄 |
|
|
|
backgroundColor: "transparent", // 背景透明 |
|
|
|
fillerColor: "transparent", // 选中部分透明 |
|
|
@ -877,6 +937,7 @@ export default { |
|
|
|
}; |
|
|
|
myChart.setOption(option); |
|
|
|
window.addEventListener("resize", () => myChart.resize()); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
}, |
|
|
@ -886,9 +947,9 @@ export default { |
|
|
|
selectItem(index) { |
|
|
|
this.selectedIndex = index; // 选中点击的项 |
|
|
|
if (index === 0) { |
|
|
|
this.initChart(); |
|
|
|
this.initChart("/actual/base/residentIntegrity/resiCategoryStats/byOrg/query4Org"); |
|
|
|
} else { |
|
|
|
this.initChart(); |
|
|
|
this.initChart("/actual/base/residentIntegrity/resiCategoryStats/byOrg/query4Org"); |
|
|
|
} |
|
|
|
}, |
|
|
|
onEventNum(data) { |
|
|
@ -916,7 +977,6 @@ export default { |
|
|
|
|
|
|
|
}, |
|
|
|
initEcharts() { |
|
|
|
|
|
|
|
if (this.categoryCountShow) { |
|
|
|
this.categoryPie = echarts.init(document.getElementById("categoryPie")); |
|
|
|
this.categoryPie.setOption(this.categoryPieOption); |
|
|
@ -1074,7 +1134,8 @@ export default { |
|
|
|
if (this.formData.queryDateStart && this.formData.queryDateEnd) { |
|
|
|
this.starttime = this.formData.queryDateStart, |
|
|
|
this.endtime = this.formData.queryDateEnd |
|
|
|
}else{{ |
|
|
|
} else { |
|
|
|
{ |
|
|
|
this.getLastMonthRange() |
|
|
|
} |
|
|
|
} |
|
|
@ -1088,8 +1149,6 @@ export default { |
|
|
|
if (code === 0) { |
|
|
|
this.tableList = data |
|
|
|
// this.tableList=this.flattenTree(data); |
|
|
|
console.log(this.tableList); |
|
|
|
console.log(this.tableList,"lksdjfklj s"); |
|
|
|
} else { |
|
|
|
this.$message.error(msg); |
|
|
|
} |
|
|
@ -1127,7 +1186,8 @@ export default { |
|
|
|
if (this.formData.queryDateStart && this.formData.queryDateEnd) { |
|
|
|
this.starttime = this.formData.queryDateStart, |
|
|
|
this.endtime = this.formData.queryDateEnd |
|
|
|
}else{{ |
|
|
|
} else { |
|
|
|
{ |
|
|
|
this.getLastMonthRange() |
|
|
|
} |
|
|
|
} |
|
|
@ -1138,6 +1198,7 @@ export default { |
|
|
|
} |
|
|
|
const { data, code, msg } = await requestPost(url, param); |
|
|
|
if (code === 0) { |
|
|
|
|
|
|
|
data.map(item => { |
|
|
|
if (item.assignOrgType == "duty") { |
|
|
|
this.departmentList.push(item) |
|
|
@ -1145,7 +1206,6 @@ export default { |
|
|
|
this.communityList.push(item) |
|
|
|
} |
|
|
|
}) |
|
|
|
this.initChart(); |
|
|
|
} else { |
|
|
|
this.$message.error(msg); |
|
|
|
} |
|
|
@ -1195,7 +1255,8 @@ export default { |
|
|
|
if (this.formData.queryDateStart && this.formData.queryDateEnd) { |
|
|
|
this.starttime = this.formData.queryDateStart, |
|
|
|
this.endtime = this.formData.queryDateEnd |
|
|
|
}else{{ |
|
|
|
} else { |
|
|
|
{ |
|
|
|
this.getLastMonthRange() |
|
|
|
} |
|
|
|
} |
|
|
@ -1206,7 +1267,6 @@ export default { |
|
|
|
} |
|
|
|
const { data, code, msg } = await requestPost(url, params); |
|
|
|
if (code === 0) { |
|
|
|
console.log(data); |
|
|
|
this.analysisList = data[0]; |
|
|
|
console.log(this.analysisList); |
|
|
|
} else { |
|
|
@ -1371,7 +1431,6 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
clickAddressData(row, column) { |
|
|
|
console.log(row,"sdfkjlsdfkljdsf"); |
|
|
|
this.hiddenAllDialog(); |
|
|
|
this.showFormList = true; |
|
|
|
this.recId = row.categoryId; |
|
|
@ -1469,9 +1528,29 @@ export default { |
|
|
|
return [0, 0]; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
getLastWeekDateRange() { |
|
|
|
const today = new Date(); |
|
|
|
const dayOfWeek = today.getDay(); |
|
|
|
const startOfLastWeek = new Date(today); |
|
|
|
const endOfLastWeek = new Date(today); |
|
|
|
startOfLastWeek.setDate(today.getDate() - dayOfWeek - 6); |
|
|
|
endOfLastWeek.setDate(today.getDate() - dayOfWeek); |
|
|
|
const formatDate = (date) => { |
|
|
|
const year = date.getFullYear(); |
|
|
|
const month = String(date.getMonth() + 1).padStart(2, '0'); |
|
|
|
const day = String(date.getDate()).padStart(2, '0'); |
|
|
|
return `${year}-${month}-${day}`; |
|
|
|
}; |
|
|
|
return { |
|
|
|
queryDateStart: formatDate(startOfLastWeek), |
|
|
|
queryDateEnd: formatDate(endOfLastWeek), |
|
|
|
}; |
|
|
|
}, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
props: {}, |
|
|
|
}; |
|
|
|
</script> |
|
|
@ -1480,37 +1559,14 @@ export default { |
|
|
|
@import "@/assets/scss/modules/management/list-main.scss"; |
|
|
|
@import "@/assets/scss/modules/shequzhili/event-info.scss"; |
|
|
|
@import "./css/index.scss"; |
|
|
|
.header { |
|
|
|
background: url("@/assets/img/AI/渐变背景.png") no-repeat; |
|
|
|
height: 68px; |
|
|
|
background-size: 100% 100%; |
|
|
|
/* 固定背景图片的宽度和高度 */ |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
padding-left: 30px; |
|
|
|
margin: 10px 10px 0; |
|
|
|
|
|
|
|
div { |
|
|
|
background: url("@/assets/img/AI/文字背景.png") no-repeat; |
|
|
|
height: 34px; |
|
|
|
line-height: 30px; |
|
|
|
background-size: 100% 100%; |
|
|
|
/* 固定背景图片的宽度和高度 */ |
|
|
|
letter-spacing: 2px; |
|
|
|
} |
|
|
|
|
|
|
|
img { |
|
|
|
width: 55px; |
|
|
|
height: 55px; |
|
|
|
margin-right: 10px; |
|
|
|
} |
|
|
|
} |
|
|
|
table { |
|
|
|
width: 100%; |
|
|
|
border-collapse: collapse; |
|
|
|
} |
|
|
|
|
|
|
|
th, td { |
|
|
|
th, |
|
|
|
td { |
|
|
|
width: 40px; |
|
|
|
height: 20px; |
|
|
|
border: 1px solid #ccc; |
|
|
@ -1553,40 +1609,128 @@ thead { |
|
|
|
} |
|
|
|
|
|
|
|
.centered-title { |
|
|
|
text-align: center; /* 将文本水平居中对齐 */ |
|
|
|
font-size: 28px; /* 设置标题字体大小 */ |
|
|
|
font-weight: bold; /* 设置标题加粗 */ |
|
|
|
color: #333; /* 设置标题颜色 */ |
|
|
|
margin-bottom: 20px; /* 设置标题与下方内容的间距 */ |
|
|
|
text-align: center; |
|
|
|
/* 将文本水平居中对齐 */ |
|
|
|
font-size: 28px; |
|
|
|
/* 设置标题字体大小 */ |
|
|
|
font-weight: bold; |
|
|
|
/* 设置标题加粗 */ |
|
|
|
color: #333; |
|
|
|
/* 设置标题颜色 */ |
|
|
|
margin-bottom: 20px; |
|
|
|
/* 设置标题与下方内容的间距 */ |
|
|
|
} |
|
|
|
|
|
|
|
.no-data { |
|
|
|
display: flex; |
|
|
|
justify-content: center; |
|
|
|
align-items: center; |
|
|
|
height: 200px; /* 调整高度以适应你的需要 */ |
|
|
|
color: #888; /* 灰色字体颜色 */ |
|
|
|
font-size: 20px; /* 字体大小 */ |
|
|
|
height: 200px; |
|
|
|
/* 调整高度以适应你的需要 */ |
|
|
|
color: #888; |
|
|
|
/* 灰色字体颜色 */ |
|
|
|
font-size: 20px; |
|
|
|
/* 字体大小 */ |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.arrow-container { |
|
|
|
position: relative; |
|
|
|
width: 100px; /* 调整箭头容器的宽度 */ |
|
|
|
height: 100px; /* 调整箭头容器的高度 */ |
|
|
|
width: 100px; |
|
|
|
/* 调整箭头容器的宽度 */ |
|
|
|
height: 100px; |
|
|
|
/* 调整箭头容器的高度 */ |
|
|
|
} |
|
|
|
|
|
|
|
.header { |
|
|
|
background: url("@/assets/img/AI/渐变背景.png") no-repeat; |
|
|
|
height: 68px; |
|
|
|
background-size: 100% 100%; |
|
|
|
/* 固定背景图片的宽度和高度 */ |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
padding-left: 30px; |
|
|
|
margin: 10px 10px 0; |
|
|
|
|
|
|
|
div { |
|
|
|
background: url("@/assets/img/AI/文字背景.png") no-repeat; |
|
|
|
height: 34px; |
|
|
|
line-height: 30px; |
|
|
|
background-size: 100% 100%; |
|
|
|
/* 固定背景图片的宽度和高度 */ |
|
|
|
letter-spacing: 2px; |
|
|
|
} |
|
|
|
|
|
|
|
img { |
|
|
|
width: 55px; |
|
|
|
height: 55px; |
|
|
|
margin-right: 10px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.chatContent { |
|
|
|
width: 100%; |
|
|
|
/* 限制最大宽度,确保换行 */ |
|
|
|
word-wrap: break-word; |
|
|
|
// /* 确保长文本换行 */ |
|
|
|
overflow-wrap: break-word; |
|
|
|
white-space: pre-wrap; |
|
|
|
/* 保持空格和换行 */ |
|
|
|
max-height: 480px; |
|
|
|
overflow-y: scroll; |
|
|
|
} |
|
|
|
|
|
|
|
.flex { |
|
|
|
display: flex; |
|
|
|
justify-content: center; |
|
|
|
flex-direction: column; |
|
|
|
align-items: center; |
|
|
|
} |
|
|
|
|
|
|
|
.arrow { |
|
|
|
width: 0; |
|
|
|
height: 0; |
|
|
|
border-style: solid; |
|
|
|
border-width: 20px 0 20px 34.6px; /* 通过调整这里的数值可以改变箭头的大小 */ |
|
|
|
border-color: transparent transparent transparent #007bff; /* 改变箭头颜色 */ |
|
|
|
border-width: 20px 0 20px 34.6px; |
|
|
|
/* 通过调整这里的数值可以改变箭头的大小 */ |
|
|
|
border-color: transparent transparent transparent #007bff; |
|
|
|
/* 改变箭头颜色 */ |
|
|
|
position: absolute; |
|
|
|
top: 50%; |
|
|
|
transform: translateY(-50%); |
|
|
|
} |
|
|
|
|
|
|
|
</style> |
|
|
|
.f-align_item { |
|
|
|
cursor: pointer; |
|
|
|
font-size: 16px; |
|
|
|
margin-right: 20px; |
|
|
|
line-height: 32px; |
|
|
|
} |
|
|
|
|
|
|
|
.f-align_item.active { |
|
|
|
line-height: 32px; |
|
|
|
color: #427ee0; |
|
|
|
/* 点击时的文字颜色 */ |
|
|
|
font-weight: bold; |
|
|
|
border-bottom: 2px solid #427ee0; |
|
|
|
margin-right: 20px |
|
|
|
/* 点击时的下划线 */ |
|
|
|
} |
|
|
|
|
|
|
|
.f-align_item span { |
|
|
|
color: black; |
|
|
|
/* 默认文字颜色 */ |
|
|
|
} |
|
|
|
|
|
|
|
.chart-container { |
|
|
|
width: 100%; |
|
|
|
display: flex; |
|
|
|
justify-content: center; |
|
|
|
align-items: center; |
|
|
|
} |
|
|
|
|
|
|
|
.chart { |
|
|
|
width: 100%; |
|
|
|
height: 350px; |
|
|
|
} |
|
|
|
</style> |