Browse Source

Merge branch 'luckysheet_xiaowang' into luckysheet

luckysheet_xiaowang
是小王呀\24601 1 year ago
parent
commit
5b381e4bb6
  1. 55
      src/views/modules/base/smartExcel/cpts/picture-add.vue
  2. 12
      src/views/modules/base/smartExcel/cpts/picture-collection.vue
  3. 4
      src/views/modules/base/smartExcel/cpts/picture-list.vue
  4. 59
      src/views/modules/base/smartExcel/sharedSpace.vue
  5. 4
      src/views/modules/shequzhili/analysis/css/index.scss
  6. BIN
      src/views/modules/shequzhili/analysis/img/completed.png
  7. BIN
      src/views/modules/shequzhili/analysis/img/returnTheItem.png
  8. 521
      src/views/modules/shequzhili/analysis/index.vue
  9. 1
      src/views/modules/shequzhili/eventHandling/index.vue
  10. 292
      src/views/modules/workSys/sysConfigure/cpts/custom-type.vue
  11. 87
      src/views/modules/workSys/sysConfigure/index.vue

55
src/views/modules/base/smartExcel/cpts/picture-add.vue

@ -6,8 +6,8 @@
<el-col :span="24">
<el-form-item label="图片集名称" prop="albumName" label-width="150px">
<el-input v-model.trim="formData.albumName" size="small" clearable placeholder="请输入图片集名称(30字以内)"
class="u-item-width-normal"></el-input>
<el-input v-model.trim="formData.albumName" size="small" clearable
placeholder="请输入图片集名称(30字以内)" class="u-item-width-normal"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
@ -18,14 +18,17 @@
</template>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label-width="150px" label="共享范围" prop="sharedScope">
<el-select v-model="formData.sharedScope" placeholder="仅本组织内共享" clearable>
<el-option v-for="item in sharingScopeList" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-form-item label-width="150px" label="共享范围" prop="agencyIdArray">
<el-cascader class="cell-width-1" ref="agencyIdArray" :clearable="false" filterable
:filter-method="filter" v-model.trim="formData.agencyIdArray" :options="orgOptions"
:props="orgOptionProps" :show-all-levels="false" @change="handleChangeAgency"
:disabled="isCascaderDisabled">
<template v-slot:tag="{ value, label, index }">
<!-- 自定义标签渲染去掉叉号 -->
<span>{{ label }}</span>
</template></el-cascader>
</el-form-item>
</el-col>
</el-row>
@ -33,8 +36,7 @@
</div>
<div class="div_btn">
<el-button size="small" @click="handleCancle"> </el-button>
<el-button size="small" type="primary"
@click="handleComfirm"> </el-button>
<el-button size="small" type="primary" @click="handleComfirm"> </el-button>
</div>
</div>
@ -61,6 +63,14 @@
export default {
data() {
return {
orgOptionProps: {
multiple: true,
value: 'orgId',
label: 'orgName',
children: 'subOrgList',
checkStrictly: true
},
orgOptions: [],
fileList:[],
sharingScopeList: [
{
@ -87,7 +97,7 @@
formType:"add",
formData:
{
agencyIdArray: [],
coverPicture:"",
albumName:"",
sharedScope:""
@ -107,6 +117,23 @@
},
methods: {
filter(node, keyword) {
console.log('data111', node, keyword)
return node.data.agencyName.includes(keyword)
},
async listServerOrg() {
const url = "/data/aggregator/org/agencyAllTree";
const { data, code, msg } = await requestPost(url, {
agencyId: this.$store.state.user.agencyId,
});
if (code === 0) {
this.total = data.total || 0;
this.orgOptions = data
} else {
this.$message.error(msg);
}
},
removedImg() {
this.formData.coverPicture = ''
},
@ -151,7 +178,7 @@
if(!this.formData.coverPicture){
return this.$message.error("请上传封面图片")
}
if(!this.formData.sharedScope){
if(!this.formData.agencyIdArray){
return this.$message.error("请选择共享范围")
}
this.addActivity()
@ -213,7 +240,7 @@
albumName: [
{ required: true, message: '请输入图片集名称', trigger: 'blur' }
],
sharedScope: [
agencyIdArray: [
{ required: true, message: '请选择共享范围', trigger: 'blur' }
],
coverPicture: [

12
src/views/modules/base/smartExcel/cpts/picture-collection.vue

@ -81,6 +81,18 @@ mounted() {
this.getTableData()
},
methods: {
// async getTableData() {
// const url = "/gov/org/customeragency/organizetree?agencyId="+this.$store.state.user.agencyId;
// const { data, code, msg } = await requestPost(url, {
// agencyId: this.$store.state.user.agencyId,
// });
// if (code === 0) {
// this.total = data.total || 0;
// this.pictureList = data.list
// } else {
// this.$message.error(msg);
// }
// },
async getTableData() {
const url = "/actual/base/albums/page";
const { data, code, msg } = await requestGet(url, {

4
src/views/modules/base/smartExcel/cpts/picture-list.vue

@ -102,8 +102,8 @@ methods: {
async handleDelete(row) {
const url = "/actual/base/albums/deleteByIds"
const params={
ids : [row.albumsId],
albumsId:this.formedate.id
ids : [row.id],
albumsId:row.albumsId
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {

59
src/views/modules/base/smartExcel/sharedSpace.vue

@ -85,6 +85,7 @@
import exportShared from "./cpts/export-shared.vue"
import dataSharing from "./cpts/data-sharing.vue"
import pictureCollection from "./cpts/picture-collection.vue"
import * as echarts from "echarts";
export default {
components: { exportShared,dataSharing,pictureCollection,shareExcel},
@ -331,37 +332,53 @@
}
.yellow{
.yellow {
color: #ddaa5d;
}
.blue{
.blue {
color: #4e89ec;
}
.red{
.red {
color: #fc2b3b;
}
.green{
.green {
color: #2fcbbd;
}
.f-align_item {
width: 100px;
padding: 10px;
cursor: pointer;
font-size: 16px;
}
width: 100px;
padding: 10px;
cursor: pointer;
font-size: 16px;
}
.f-align_item.active {
width: 100px;
color: blue;
/* 点击时的文字颜色 */
font-weight: bold;
border-bottom: 5px solid blue;
/* 点击时的下划线 */
}
.f-align_item.active {
width: 100px;
color: blue;
/* 点击时的文字颜色 */
font-weight: bold;
border-bottom: 5px solid blue;
/* 点击时的下划线 */
}
.f-align_item span {
color: black;
/* 默认文字颜色 */
}
.f-align_item span {
color: black;
/* 默认文字颜色 */
}
.chart-container {
width: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.chart {
width: 100%;
height: 350px;
}
</style>

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

@ -93,8 +93,8 @@ border-left: #777 solid 1px;
margin-left: 20px;
margin-bottom: 10px;
.item {
width: 188px;
height: 280px;
width: 190px;
height: 350px;
display: flex;
flex-direction: column;
background: #f3f9ff;

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

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

@ -72,9 +72,16 @@
<div class="item_category">
<img src="./img/eventSumNum.png" alt />
<div class="row_left">{{ analysisList.total}}</div>
<div class="item_content">收件数<img class="img_describe" src="./img/describe1.png"></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.total}}</div>
<div class="item_content">派件数<img class="img_describe" src="./img/describe1.png"></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>
</div>
@ -85,38 +92,44 @@
<div class="item_category">
<img src="./img/perp.png" alt />
<div class="row_left">{{ analysisList.total}}</div>
<div class="item_content">已联系当事人(初访)件数<img class="img_describe" src="./img/describe1.png"></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.total}}</div>
<div class="item_content">办理中件数<img class="img_describe" src="./img/describe1.png"></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>
</div>
</div>
<div style="display: flex; justify-content: center; flex-direction: column; align-items: center;">
<div>办结</div>
<div class="item" @click="onEventNum()" style="background-color: #f4fdff; width: 280px;">
<div class="item" @click="onEventNum()" style="background-color: #f4fdff; ">
<div class="item_category">
<img src="@/assets/images/category/perpon.png" alt />
<div style=" display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; ">
<div class="flex">
<div class="row_left">{{ analysisList.total}}</div>
<div class="item_content">收件数<img class="img_describe" src="./img/describe1.png"></div>
</div>
<div class="flex">
<div class="row_left">{{ analysisList.total}}</div>
<div class="item_content">收件数<img class="img_describe" src="./img/describe1.png"></div>
</div>
<div class="flex">
<div class="row_left">{{ analysisList.total}}</div>
<div class="item_content">收件数<img class="img_describe" src="./img/describe1.png"></div>
</div>
<div class="flex">
<div class="row_left">{{ analysisList.total}}</div>
<div class="item_content">收件数<img class="img_describe" src="./img/describe1.png"></div>
</div>
</div>
<img src="./img/completed.png" alt />
<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.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}}</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}}</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>
</div>
</div>
@ -124,13 +137,29 @@
<div>退件/不合规申请件</div>
<div class="item" @click="onEventNum()" style="background-color:#fffdf0;">
<div class="item_category">
<img src="@/assets/images/category/perpon.png" alt />
<div class="row_left">{{ analysisList.total}}</div>
<div class="item_content">收件数<img class="img_describe" src="./img/describe1.png"></div>
<img src="./img/returnTheItem.png" alt />
<div class="row_left">{{ analysisList.total}}</div>
<div class="item_content">收件数<img class="img_describe" src="./img/describe1.png"></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.total}}</div>
<div class="item_content">收件数<img class="img_describe" src="./img/describe1.png"></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}}</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:#FF3641 ;">{{ 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>
</div>
</div>
@ -140,14 +169,21 @@
<div class="item_category">
<img src="./img/acttive.png" alt />
<div class="row_left">{{ analysisList.total }}</div>
<div class="item_content">收件数<img class="img_describe" src="./img/describe1.png"></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.total }}</div>
<div class="item_content">收件数<img class="img_describe" src="./img/describe1.png"></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>
</div>
</div>
</div>
<div style="display: flex;justify-content: space-between;flex-direction:row;">
<h1 style="font-size: 24px; font-weight: bold;"> 事件类型统计 </h1>
</div>
@ -163,136 +199,208 @@
</template>
</el-table-column>
</el-table>
<div style="display: flex;justify-content: space-between;flex-direction:row; height:500px">
<div style="display: flex;width: 49%; flex-direction:column;">
<h1 style="font-size: 24px; font-weight: bold; margin: 20px 0;"> 部门科室工单量统计 </h1>
<el-table :data="departmentList" height="250" border class="m-table-item" style="width: 100%">
<el-table-column prop="assignOrgName" align="center" label="部门科室"
<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>
</div>
</div>
<div style="height:300px;margin:10px ">
<div v-if="selectedIndex===0">
<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="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="联系当事人超期数"
<el-table-column prop="illegalConnectRate" 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 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="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 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="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 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>
<h1 style="font-size: 24px; font-weight: bold;"> 存在主要问题 </h1>
<h2 style="font-size: 20px; font-weight: bold;"> 同地点同类型事件重复投诉 </h2>
<div style="margin: 20px;">
<div class="chart-container">
<div ref="chart" class="chart"></div>
</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">
<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>
<h1 style="font-size: 24px; font-weight: bold;"> 存在主要问题 </h1>
</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 style="display: flex;justify-content: space-between;flex-direction:row; height:300px">
<div style="display: flex;width: 49%; flex-direction:column;">
<h2 style="font-size: 20px; font-weight: bold;"> 同地点同类型事件重复投诉 </h2>
<el-table :data="addressData" height="250" border class="m-table-item" style="width: 100%">
<el-table-column label="序号" fixed="left" type="index" align="center" width="50" />
<el-table-column prop="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">
</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(row)" type="text" size="small">查看</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div style="display: flex;width: 49%;flex-direction:column;">
<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="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 cell-style="#fff0f0" 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="操作" fixed="right" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-button @click="clickMobileData(row)" type="text" size="small">查看</el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
<div style="display: flex;justify-content: space-between;flex-direction:row; height:500px">
<div style="display: flex;width: 49%; flex-direction:column;">
<h2 style="font-size: 20px; font-weight: bold;"> 同一区域不同类型投诉 </h2>
<el-table :data="addressMobileData" height="250" border class="m-table-item" style="width: 100%">
<el-table-column label="序号" fixed="left" type="index" align="center" width="50" />
<el-table-column prop="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 cell-style="#fff0f0" 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="操作" fixed="right" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-button @click="clickAddressMobileData(row)" type="text" size="small">查看</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div style="display: flex;width: 49%;flex-direction:column;">
<h2 style="font-size: 20px; font-weight: bold;"> 同一工单追加内容投诉</h2>
<el-table :data="addComplainData" height="300" border class="m-table-item" style="">
<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 cell-style="#fff0f0" 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="操作" fixed="right" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-button @click="clickAwoFlagData(row)" type="text" size="small">查看</el-button>
</template>
</el-table-column>
</el-table>
</div>
</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>
</div>
@ -357,6 +465,17 @@ export default {
components: {TableRow,formList,eventInfo,areaSameList,mobileList,areaNoSameList,addComplainList},
data() {
return {
selectedIndex:0,
titleList:[
{
value:0,
label:'部门科室办件情况'
},
{
value:1,
label:'社区办件情况'
},
],
starttime: "",
endtime: "",
level: 1,
@ -382,7 +501,8 @@ export default {
departHotline: "",
hotDemand: "",
},
addressData: [],
addressData: [
],
mobileData: [],
addressMobileData: [],
addComplainData: [],
@ -687,8 +807,109 @@ export default {
this.EventCategoryAnalysis();
this.EventCate();
this.getCategoryTree()
this.initChart("/actual/base/residentIntegrity/resiCategoryStats/byOrg/query4Org");
},
methods: {
initChart(url) {
this.$http.get(url).then(({ data: { data } }) => {
const chartDom = this.$refs.chart;
const myChart = echarts.init(chartDom);
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)
console.log(xiangying,"dsfll;dsfj");
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: {
bottom: -5,
data: ["响应率", "按时办结率", "最终解决率", "最终满意率"],
},
xAxis: {
type: "category",
data: xData,
},
yAxis: {
type: "value",
name: "占比(%)",
max: 100,
},
series: [
{
name: "响应率", type: "bar", barWidth: 20, data:xiangying, color: "#3B82F6"
},
{ 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: [
{
type: "slider", //
realtime:true,
show: true,
start: 0, //
end: 50, // 50%
// height:normalFontSize(12),
// width:normalFontSize(112),
// xAxisIndex: [0], // X
handleSize: 0, //
backgroundColor: "transparent", //
fillerColor: "transparent", //
borderColor: "transparent", //
dataBackground: {
lineStyle: {
color: "transparent", // 线
width: 0
}
}
},
{
type: "inside", //
xAxisIndex: [0],
},
],
};
myChart.setOption(option);
window.addEventListener("resize", () => myChart.resize());
});
},
randomData() {
return Array(10).fill(0).map(() => Math.floor(Math.random() * 20) + 80);
},
selectItem(index) {
this.selectedIndex = index; //
if(index===0){
this.initChart("/actual/base/residentIntegrity/resiCategoryStats/byOrg/query4Org");
}else{
this.initChart("/actual/base/residentIntegrity/resiCategoryStats/byOrg/query4Org");
}
},
onEventNum(data){
if (data=="resolve") {
this.$router.push({ name: 'eventHandling',params:{params:data} });
@ -714,7 +935,6 @@ export default {
},
initEcharts() {
if(this.categoryCountShow){
this.categoryPie= echarts.init(document.getElementById("categoryPie"));
this.categoryPie.setOption(this.categoryPieOption);
@ -1369,6 +1589,37 @@ thead {
transform: translateY(-50%);
}
.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>

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

@ -627,7 +627,6 @@ export default {
if (this.eventTypeCheck) {
this.formData.secondIdList = this.eventTypeCheck
}
const { pageSize, pageNo, formData } = this;
// formData
const newFormData = { ...formData };

292
src/views/modules/workSys/sysConfigure/cpts/custom-type.vue

@ -0,0 +1,292 @@
<template >
<div class="g-main">
<div class="m-table">
<div class="u-table-btn2">
<div class="u-table-btn2-left">
<el-button style=""
size="small"
class="diy-button--blue"
icon="el-icon-plus"
@click="handlereturn()">返回</el-button>
<el-button style=""
size="small"
class="diy-button--blue"
icon="el-icon-plus"
@click="handleAdd({},'add')">新增分类</el-button>
</div>
</div>
<div class="m-table-item">
<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="事件类型">
</el-table-column>
<el-table-column label="操作"
fixed="right"
header-align="center"
align="center"
class="operate">
<template slot-scope="scope">
<el-button
v-if="scope.row.pid==0"
type="text"
class="div-table-button--blue"
size="small"
@click="handleAdd(scope.row,'add0')">添加二级分类</el-button>
<el-button
type="text"
class="div-table-button--blue"
size="small"
@click="handleAdd(scope.row,'edit')">修改</el-button>
<el-button
type="text"
class="div-table-button--blue"
size="small"
@click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<div>
<el-pagination @size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pageNo"
:page-sizes="[20, 50, 100, 200]"
:page-size="pageSize"
layout="sizes, prev, pager, next, total"
:total="total">
</el-pagination>
</div>
</div>
</div>
<el-dialog :visible.sync="formShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="formTitle"
width="670px"
top="5vh"
class="dialog-h"
@closed="diaClose">
</el-dialog>
</div>
</template>
<script>
import { requestPost,requestGet } from "@/js/dai/request";
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // Loading
import axios from 'axios'
let loading //
export default {
data () {
return {
searchHeight: 0,//,
pageNo:0,
pageSize:20,
total:0,
formTitle:"",
formShow:false,
tableData: [],
tableList:[]
}
},
activated () {
},
async mounted () {
console.log("dsfjsdklf");
this.getCategoryTree()
},
methods: {
//
async getCategoryTree() {
const url = "/governance/icEvent/getCategoryTree";
let param = {
endDate : "2025-12-31 23:59:59",
startDate : "2025-01-01 00:00:00",
usableFlag: true
}
const { data, code, msg } = await requestPost(url, param);
if (code === 0) {
this.tableList = data
// this.tableList=this.flattenTree(data);
console.log(this.tableList);
console.log(this.tableList, "lksdjfklj s");
} else {
this.$message.error(msg);
}
},
handlereturn(){
this.$emit('close')
},
async loadTable () {
const url = "/governance/commonServiceType/treeList"
let {data,msg,code } = await requestGet(url)
if(code == 0){
this.tableData = data
}else{
this.$message.error(msg)
}
},
diaClose () {
this.$refs.ref_form.resetData()
this.formShow = false
},
addFormOk () {
this.formShow = false
this.loadTable()
},
addFormCancle () {
this.formShow = false
},
async handleDetail (row) {
this.detailShow = true
const _data = await this.detail(row)
this.$nextTick(() => {
this.$refs.ref_form_detail.initForm(_data)
})
},
handleAdd (row,type) {
if(type=="add"){
console.log(row.id);
this.formTitle = '新增分类'
this.formShow = true
this.$nextTick(() => {
this.$refs.ref_form.initForm(type, row)
})
} else if(type=="add0"){
this.formTitle = '新增分类'
this.formShow = true
this.$nextTick(() => {
this.$refs.ref_form.initForm(type, row)
})
} else if (type == 'edit') {
this.formTitle = '修改分类'
this.formShow = true
this.$nextTick(() => {
this.$refs.ref_form.initForm(type, row)
})
}
},
selectAll (selection) {
this.selection = selection
},
selectionChange (selection) {
this.selection = selection
},
async handleDelete (row) {
this.$confirm("确认删除?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.deleteDemand(row)
})
.catch(err => {
if (err == "cancel") {
this.$message({
type: "info",
message: "已取消删除"
});
}
});
},
async deleteDemand (row) {
const url = `/governance/commonServiceType/delete/${row.id}`
const { data, code, msg } = await requestPost(url)
if (code === 0) {
this.$message({
type: "success",
message: "删除成功"
});
this.loadTable()
} else if (code > 8000) {
this.$message({
message: msg,
duration: 0
})
this.loadTable()
} else {
this.$message.error(msg)
}
},
handleDiyClose () {
this.diyDialog = false;
},
handleClose (done) {
this.diyDialog = false
},
handleSizeChange (val) {
this.pageSize = val
this.pageNo = 1
this.loadTable()
},
handleCurrentChange (val) {
this.pageNo = val
this.loadTable()
},
//
startLoading () {
loading = Loading.service({
lock: true, //
text: '正在加载……', //
background: 'rgba(0,0,0,.7)' //
})
},
//
endLoading () {
// clearTimeout(timer);
if (loading) {
loading.close()
}
}
},
computed: {
tableHeight () {
console.log(this.searchHeight)
let height = this.searchHeight + 270
return this.$store.state.inIframe ? this.clientHeight - height + this.iframeHeight : this.clientHeight - height
},
...mapGetters(['clientHeight', 'iframeHeight'])
},
watch: {
},
props: {
}
}
</script>
<style lang="scss" scoped >
@import "@/assets/scss/modules/management/list-main.scss";
</style>
<style >
.el-message.is-closable .el-message__content {
line-height: 20px;
}
</style>

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

@ -1,14 +1,14 @@
<template>
<div class="g-main">
<div>
<div class="m-table">
<div class="g-main">
<div class="m-table"v-if="!customTypeShow">
<h2>系统高级配置</h2>
<div style="width: 100%; display: flex; align-items: center;">
<div class=""
style="width: 100%; display: flex; flex-direction: column;margin-left: 50px;align-items: center;justify-content: center ">
<div style="width: 100%; display: flex; flex-direction: column; justify-content: center">
<h3>12345政务热线</h3>
<div class="m-table1" style=" width: 50%; display: flex; flex-direction:column;align-items: center;justify-content: space-between;">
<div class="m-table1"
style=" width: 50%; display: flex; flex-direction:column;align-items: center;justify-content: space-between;">
<div style="display: flex; flex-direction: column;">
<div
style="display: flex;border-bottom: 1px dotted rgba(0, 0, 0, 0.3); flex-direction: row; align-items: center; justify-content: space-between;">
@ -167,7 +167,7 @@
是否需要开启答复情况选项
</div>
</div>
<div
<div
style=" margin: 20px;font-size: 14px; display: flex; align-items: center;">
若开启答复情况选项事件办结时需要填写相应的答复信息
</div>
@ -186,14 +186,14 @@
是否需要开启办理中选项
</div>
</div>
<div
<div
style=" margin: 20px;font-size: 14px; display: flex; align-items: center;">
若开启办理中选项事件办理状态中需要加上办理中选项
</div>
</div>
<el-switch v-model="sysAdvancedList.eventState"
active-color="#13ce66" :active-value=3 :inactive-value=1
inactive-color="#eaecf0" @change="handleChange()">
<el-switch v-model="sysAdvancedList.eventState" active-color="#13ce66"
:active-value=3 :inactive-value=1 inactive-color="#eaecf0"
@change="handleChange()">
</el-switch>
</div>
<div
@ -205,14 +205,14 @@
是否需要开启回访情况选项
</div>
</div>
<div
<div
style=" margin: 20px;font-size: 14px; display: flex; align-items: center;">
若开启回访情况选项事件办结时需要填写相应的回访信息
</div>
</div>
<el-switch v-model="sysAdvancedList.columnsIgnore"
active-color="#13ce66" :active-value=0 :inactive-value=1
inactive-color="#eaecf0" @change="handleChange()">
<el-switch v-model="sysAdvancedList.columnsIgnore" active-color="#13ce66"
:active-value=0 :inactive-value=1 inactive-color="#eaecf0"
@change="handleChange()">
</el-switch>
</div>
<div
@ -256,42 +256,80 @@
</el-select>
</div>
</div>
<!-- <el-switch v-model="sysAdvancedList" active-color="#13ce66"
inactive-color="#eaecf0">
</el-switch> -->
</div>
<div
style=" margin-top: 20px;display: flex; flex-direction: row; align-items: center; justify-content: space-between;">
<div>
<div style="display: flex; flex-direction: row; align-items: center;">
<div style="width: 10px; height: 10px; background-color: #4e89ec"></div>
<div style="font-weight:800;font-size: 14px; margin-left: 10px;">
分析报告统计时间段默认设置
</div>
</div>
<div
style=" margin: 20px;font-size: 14px; display: flex; align-items: center;">
<div style="margin-right: 10px;">
统计时间段(默认):
</div>
<el-radio v-model="statisticalTimeReport" label="1">当年</el-radio>
<el-radio v-model="statisticalTimeReport" label="2">当月</el-radio>
<el-radio v-model="statisticalTimeReport" label="3">本周</el-radio>
</div>
</div>
</div>
<div
style=" margin-top: 20px;display: flex; flex-direction: row; align-items: center; justify-content: space-between;">
<div>
<div style="display: flex; flex-direction: row; align-items: center;">
<div style="width: 10px; height: 10px; background-color: #4e89ec"></div>
<div style="font-weight:800;font-size: 14px; margin-left: 10px;">
分析报告自定义类型统计设置
</div>
</div>
<div
style=" margin: 20px;font-size: 14px; display: flex; align-items: center;">
<div style="margin-right: 10px;">
请设置自定义类型:
</div>
<el-button type="primary" @click="handleClose()">开始自定义</el-button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<custom-type ref="ref_form" v-if="customTypeShow" @close="close" >
</custom-type>
</div>
</template>
<script>
import { requestPost,requestGet } from '@/js/dai/request';
import nextTick from 'dai-js/tools/nextTick';
import { mapGetters } from 'vuex';
// import addForm from './residentCategoryComponents/addForm.vue';
import customType from './cpts/custom-type.vue';
import axios from 'axios';
export default {
data() {
return {
customTypeShow:false,
radio:"",
num:"",
HotlineShow:1,
customerId:"",
govroleList:[],
statisticalTimeReport:"",
sysAdvancedList:{
}
};
},
components: { },
components: {customType },
created() {},
computed: {
maxTableHeight() {
@ -308,6 +346,12 @@ export default {
this.getGovroleList()
},
methods: {
close(){
this.customTypeShow=false
},
handleClose(){
this.customTypeShow=true
},
handleSwitch(row){
console.log(row,this.num,"sdgmlsdlgjk");
const url = '/sys/sysAdvanced/update';
@ -434,5 +478,6 @@ export default {
position: relative;
}
}
</style>

Loading…
Cancel
Save