Browse Source

对接接口及页面修改

feature
战立标 2 years ago
parent
commit
6c554aea86
  1. 159
      src/views/dataBoard/cpts/homeDetails/index.vue
  2. 1
      src/views/dataBoard/cpts/map/index.vue
  3. 22
      src/views/dataBoard/overview/components/EventDetail.vue
  4. 382
      src/views/dataBoard/overview/components/EventDispatchOrder.vue
  5. 56
      src/views/dataBoard/overview/components/MapDialog/List12345.vue
  6. 10
      src/views/dataBoard/overview/components/MapDialog/index.vue
  7. 4
      src/views/dataBoard/overview/components/wtqd.vue
  8. 2
      src/views/dataBoard/overview/index.vue
  9. 85
      src/views/dataBoard/satisfactionEval/Problem/tddtlxsj/detail.vue
  10. 30
      src/views/dataBoard/satisfactionEval/Problem/tddtlxsj/list.vue
  11. 87
      src/views/dataBoard/satisfactionEval/Problem/tyqybtlx/detail.vue
  12. 48
      src/views/dataBoard/satisfactionEval/Problem/tyqybtlx/list.vue
  13. 86
      src/views/dataBoard/satisfactionEval/Problem/tyry/detail.vue
  14. 28
      src/views/dataBoard/satisfactionEval/Problem/tyry/list.vue
  15. 199
      src/views/dataBoard/satisfactionEval/modules/eventAnalysis/index.vue

159
src/views/dataBoard/cpts/homeDetails/index.vue

@ -13,20 +13,55 @@
]"
/>
</div>
<div class="top-nav-list" v-if="$route.query.typeB == 'building'">
<div
v-for="item in buildingList"
:key="item.id"
:class="[item.ifActive ? 'top-nav-itemAC' : 'top-nav-item']"
@click="chooseNav(item)"
<el-select
popper-class="selectPopClass"
clearable
v-model="buildingId"
size="small"
placeholder="请选择楼栋"
@change="getList"
style="width: 220px;margin-bottom: 20px;"
>
<el-option
v-for="item in buildingLists"
:key="item.value"
:label="item.label"
:value="item.value"
>
{{ item.buildingName }}{{ item.unitName }}
</div>
</div>
</el-option>
</el-select>
<el-row :gutter="48">
<el-col :span="8">
<div class="bg">
<Title :text="homeText ? homeText : ''">
<!-- v-if="$route.query.typeB == 'building'"-->
<div class="top-nav-list" >
<div
v-for="item in buildingList"
:key="item.id"
:class="[item.ifActive ? 'top-nav-itemAC' : 'top-nav-item']"
@click="chooseNav(item)"
>
{{ item.buildingName }}{{ item.unitName }}
</div>
</div>
<!-- <div class="statistics">
<div class="statistics-item">
<div class="label">老年人数</div>
<div class="value blue">52</div>
</div>
<div class="statistics-item">
<div class="label">残疾人数</div>
<div class="value green">28</div>
</div>
<div class="statistics-item">
<div class="label">满意度风险家庭</div>
<div class="value red">13</div>
</div>
</div>-->
<!-- <Title :text="homeText ? homeText : ''">
<span
v-if="homeMsg && homeMsg.type"
:class="[
@ -44,7 +79,7 @@
: "绿"
}}色微网格</span
>
</Title>
</Title>-->
</div>
<!-- <div class="mount">
<people-mount />
@ -402,6 +437,8 @@ export default {
homeText: "",
searchId: "",
buildingList: [],
buildingLists: [],
buildingId: "",
houseMountArr: [
[
// { doorName: 101, riskyNum: 0, importanceNum: 0, rentFlag: "0" },
@ -417,12 +454,27 @@ export default {
},
watch: {},
mounted() {
const buId = this.$route.query.buId || null;
this.getList(buId);
// const buId = this.$route.query.buId || null;
// this.getList(buId);
// this.getTableData(this.$route.query.id);
this.getPeopleTypeList();
this.listBuildings()
},
methods: {
listBuildings() {
let params = {"pageSize":100,"pageNo":1,"sortType":"asc","neighborHoodId":this.$route.query.id}
this.$http.post('/actual/base/communityBuilding/listBuildings?'+this.$paramsFormat(params),params).then(({data: {data}}) => {
this.buildingLists = data.list.map(item => {
return {
label: item.neighborHoodName + '-'+item.buildingName,
value: item.buildingId
}
})
this.buildingId = data.list[0].buildingId
this.getList(this.buildingId);
})
},
getDoorNameList(list) {
const doorNameList = [];
const doorNameArr = [];
@ -527,14 +579,14 @@ export default {
},
getList(buid) {
const homeType = this.$route.query.typeB;
if (homeType === "building") {
// const homeType = this.$route.query.typeB;
// if (homeType === "building") {
// 1514914015259979777
this.$http
.get(
`/actual/base/streetOverview/getUnitListByBuilding?buildingId=` +
this.$route.query.id
)
let params = {
buildingId: this.buildingId,
pageSize: 100
}
this.$http.get(`/actual/base/streetOverview/getUnitListByBuilding?` + this.$paramsFormat(params))
.then((res) => {
const { code, data } = res.data;
if (code === 0) {
@ -554,7 +606,8 @@ export default {
item.ifActive = false;
}
});
} else {
this.chooseNav(this.buildingList[0])
} /*else {
this.buildingList.forEach((item, i) => {
if (i === 0) {
item.ifActive = true;
@ -565,18 +618,18 @@ export default {
item.ifActive = false;
}
});
}
}*/
}
this.loading = false;
} else {
this.loading = false;
}
});
} else {
/* } else {
this.getUnitList(this.$route.query.id);
this.searchId = this.$route.query.id;
this.getTableData(this.$route.query.id);
}
}*/
},
getRentFlag(type) {
@ -855,23 +908,23 @@ export default {
.mount {
margin-top: 25px;
}
.el-select,
.el-input {
width: 150px;
margin-right: 4px;
border: 1px solid #126ac5;
border-radius: 2px;
/deep/ .el-input__inner {
background: none;
border: none;
color: #fff;
}
}
.screen {
margin: 5px 0 40px;
.el-select,
.el-input {
width: 150px;
margin-right: 4px;
border: 1px solid #126ac5;
border-radius: 2px;
/deep/ .el-input__inner {
background: none;
border: none;
color: #fff;
}
}
.searchSelect {
width: 200px;
@ -887,4 +940,34 @@ export default {
}
}
}
.statistics {
display: flex;
align-items: center;
margin-top: 36px;
.statistics-item {
display: flex;
margin-right: 40px;
align-items: center;
.label {
font-size: 16px;
font-weight: 400;
color: #FFFFFF;
}
.value {
font-size: 24px;
font-weight: bold;
margin-left: 10px;
}
.blue {
color: #3CF5FF;
}
.green {
color: #08EBAE;
}
.red {
color: #F95619;
}
}
}
</style>

1
src/views/dataBoard/cpts/map/index.vue

@ -560,6 +560,7 @@ export default {
if (this.level === "grid") {
return;
}
console.log(e)
if (numMarker) {
scene.removeMarkerLayer(numMarker);
}

22
src/views/dataBoard/overview/components/EventDetail.vue

@ -47,7 +47,7 @@
<span>{{ item.categoryName }}</span>
</div>
<div class="eventItem">
<span>时间</span>
<span>时间</span>
<span>{{ item.happenTime }}</span>
</div>
<div class="eventItem">
@ -191,8 +191,9 @@
</div>
</el-dialog>
<ResourceScheduling ref="ResourceScheduling" :currentLevelData="currentLevelData"/>
<ResourceScheduling ref="ResourceScheduling" @handle="dispatchOrder" :currentLevelData="currentLevelData"/>
<Supervision ref="supervision" :currentLevelData="currentLevelData"/>
<EventDispatchOrder ref="EventDispatchOrder" v-if="isEventDispatchOrder" @ok="handleSure" @close="isEventDispatchOrder = false"/>
</div>
</template>
@ -201,6 +202,9 @@ import Title from "@/views/dataBoard/satisfactionEval/components/Title";
import CallPhone from "@/views/dataBoard/cpts/CallPhone.vue";
import ResourceScheduling from "@/views/dataBoard/overview/components/ResourceScheduling.vue";
import Supervision from "@/views/dataBoard/overview/components/Supervision.vue";
import EventDispatchOrder from "@/views/dataBoard/overview/components/EventDispatchOrder.vue";
export default {
name: "EventDetail",
@ -208,7 +212,8 @@ export default {
CallPhone,
Title,
ResourceScheduling,
Supervision
Supervision,
EventDispatchOrder
},
props: {
currentLevelData: {
@ -232,6 +237,7 @@ export default {
loading: false,
loading1: false,
activities: [],
isEventDispatchOrder: false
};
},
@ -258,6 +264,10 @@ export default {
this.$emit("close", false);
this.item = {};
},
handleSure() {
this.$emit("ok");
this.handleClose()
},
handleDispatch() {
this.$refs.ResourceScheduling.open()
},
@ -302,6 +312,12 @@ export default {
}
});
},
dispatchOrder(data) {
this.isEventDispatchOrder = true
this.$nextTick(() => {
this.$refs.EventDispatchOrder.open(this.item);
})
}
},
};
</script>

382
src/views/dataBoard/overview/components/EventDispatchOrder.vue

@ -14,43 +14,75 @@
<div class="main-title main-title2">
<Title text="事件派单"/>
</div>
<div class="contents">
<div class="contents" v-if="dialogVisible">
<el-row>
<el-col :span="12">
<div class="items">
<div class="label">需求类别</div>
<div class="value">教育讲座类-健康知识专业讲座</div>
<div class="label">事件类型</div>
<div class="value">{{ detail.categoryName }}</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">需求标题</div>
<div class="value">教育讲座类共性需求</div>
<div class="label">接收时间</div>
<div class="value">{{ detail.happenTime }}</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">发生地点</div>
<div class="value">{{ detail.address }}</div>
</div>
</el-col>
<el-col :span="24">
<div class="items">
<div class="label">详细说明</div>
<div class="label">事件描述</div>
<div class="value">
健康生活方式是指有益于健康的习惯化的行为方式主要表现为生活有规律没有不良嗜好讲求个人卫生环境卫生饮食卫生讲科学不迷
平时注意保健生病及时就医积极参加健康有益的文体活动和社会活动等等
{{ detail.eventContent }}
</div>
</div>
</el-col>
<el-col :span="12">
<div class="items" style="align-items: center">
<div class="label">处理方式</div>
<el-radio-group v-model="form.noticeType" class="select" popper-class="selectPopClass"
<el-radio-group v-model="form.operationType" class="select" popper-class="selectPopClass"
text-color="#fff">
<el-radio label="指派" value="1"/>
<el-radio label="转财务" value="2"/>
<el-radio label="5" value="5">指派</el-radio>
<!-- <el-radio disabled label="" value="">转财务</el-radio>-->
</el-radio-group>
</div>
</el-col>
<el-col :span="12">
<div class="items" style="align-items: center">
<div class="label">事件分类</div>
<el-cascader
:key="iscascaderShow"
ref="myCascader"
v-model="selCategoryArray"
:options="casOptions"
:props="optionProps"
:show-all-levels="false"
class="select"
clearable
popper-class="selectPopClass"
@change="handleChangeCate"
/>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">处理部门</div>
<div class="value">XX社区第一网格 杨军网格员</div>
<el-cascader
ref="agencyIdArray"
v-model="agencyIdArray"
:options="orgOptions"
:props="orgOptionProps"
:show-all-levels="false"
class="select"
popper-class="selectPopClass"
@change="handleChangeAgency"
/>
<!-- <div class="value">{{ detail.gridName }} {{ detail.name }}</div>-->
</div>
</el-col>
<el-col :span="24">
@ -62,7 +94,7 @@
<el-col :span="24">
<div class="items">
<el-input
v-model="form.explain"
v-model="form.content"
:autosize="{ minRows: 5, maxRows: 10}"
class="input"
maxlength="500"
@ -78,46 +110,59 @@
</el-col>
<el-col :span="24">
<div class="items">
<!-- <el-upload
:auto-upload="false"
action="#"
list-type="picture-card">
<div slot="default">
<i class="el-icon-plus"></i>
<div class="text">添加图片</div>
</div>
<div slot="file" slot-scope="{file}">
<img
:src="file.url"
alt="" class="el-upload-list__item-thumbnail"
>
<span class="el-upload-list__item-actions">
<span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
<i class="el-icon-zoom-in"></i>
</span>
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleDownload(file)">
<i class="el-icon-download"></i>
</span>
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemove(file)">
<i class="el-icon-delete"></i>
</span>
</span>
</div>
</el-upload>-->
<el-upload
:auto-upload="false"
action="#"
list-type="picture-card">
<div slot="default">
<i class="el-icon-plus"></i>
<div class="text">添加图片</div>
</div>
<div slot="file" slot-scope="{file}">
<img
:src="file.url"
alt="" class="el-upload-list__item-thumbnail"
>
<span class="el-upload-list__item-actions">
<span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
<i class="el-icon-zoom-in"></i>
</span>
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleDownload(file)">
<i class="el-icon-download"></i>
</span>
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemove(file)">
<i class="el-icon-delete"></i>
</span>
</span>
</div>
:action="uploadUlr"
:before-upload="beforeUpload"
:file-list="fileList"
:headers="$getElUploadHeaders()"
:limit="3"
:on-preview="handleFileDownload"
:on-remove="handleFileRemove"
:on-success="handleFileSuccess"
accept=".doc,.pdf,.xls,.docx,.xlsx,.jpg,.png,.jpeg,.bmp,.mp4,.wma,.m4a,.mp3"
class="upload-demo">
<el-button :disabled="fileList.length === 3" size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">支持图片wordpdf</div>
</el-upload>
</div>
</el-col>
<el-col :span="24">
<div class="items">
<div class="label">办结时限</div>
<el-date-picker
v-model="form.date"
v-model="form.timeLimit"
:append-to-body="false"
format="yyyy-MM-dd"
placeholder="开始日期"
popper-class="date-current-weiyi"
value-format="yyyy-MM-dd"
value-format="yyyy-MM-dd HH:mm:ss"
/>
</div>
</el-col>
@ -141,6 +186,7 @@
<script>
import Title from "@/views/dataBoard/satisfactionEval/components/Title";
import CallPhone from "@/views/dataBoard/cpts/CallPhone";
import {requestPost} from "@/js/dai/request";
export default {
name: "EventDispatchOrder",
@ -149,45 +195,246 @@ export default {
return {
dialogVisible: false,
form: {
roles: "",
user: "",
operationType: "5", //[0: 5 6]
content: "",//
timeLimit: "",//
categoryId: "",//
deptId: "", //
deptName: "",
categoryList: [],
files: [] //
},
dialogImageUrl: '',
imageVisible: false,
disabled: false
disabled: false,
detail: {},
orgOptions: [],
orgOptionProps: {
multiple: false,
value: 'agencyId',
label: 'agencyName',
children: 'subAgencyList',
checkStrictly: true
},
agencyIdArray: [],
status: false,
okflag: false,
eventDetailCopy: {},
selCategoryArray: [],
casOptions: [],
fileList: [],
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadvariedfile",
iscascaderShow: 0,
optionProps: {
multiple: false,
value: "id",
label: "categoryName",
children: "children",
checkStrictly: true
},
dataRule: {
content: [
{required: true, message: "回复内容不能为空", trigger: "blur"},
],
categoryId: [
{required: true, message: "事件分类不能为空", trigger: "blur"},
],
deptId: [
{required: true, message: "处理部门不能为空", trigger: "blur"},
],
timeLimit: [
{required: true, message: "办结时限不能为空", trigger: "blur"},
],
categoryList: [
{required: true, message: '事件分类不能为空', trigger: 'blur'},
]
},
selCateObj: {
id: ""
},
};
},
async mounted() {
},
methods: {
handleClose(done) {
this.dialogVisible = false;
this.$emit('close')
},
open(id) {
open(detail) {
this.dialogVisible = true;
this.getDetail(id);
},
getDetail(id) {
},
handleSupervision() {
this.$refs.supervision.open()
this.detail = detail
const {user} = this.$store.state;
this.agencyId = user.agencyId;
this.getOrgTreeList();
this.getCategoryList();
},
handleCancel() {
this.handleClose()
},
handleSure() {
console.log(this.form)
this.$http.post('/governance/icEvent/reply', {
...this.form,
files: this.fileList,
icEventId: this.detail.icEventId
}).then(res => {
this.handleClose()
this.$message.success('操作成功')
this.$emit('ok')
})
},
handleRemove(file) {
console.log(file);
beforeUpload(file) {
const array = file.name.split(".");
const extension = array[array.length - 1];
const formatarray = [
"jpg",
"png",
"jpeg",
"bmp",
"mp4",
"wma",
"m4a",
"mp3",
"doc",
"docx",
"xls",
"xlsx",
"pdf",
];
if (formatarray.indexOf(extension) === -1) {
this.$message.error("只支持图片、word、pdf");
return false;
}
},
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.imageVisible = true;
handleFileRemove(file) {
if (file && file.status === "success") {
this.fileList.splice(
this.fileList.findIndex((item) => item.uid === file.uid),
1
);
}
},
handleFileSuccess(res, file) {
if (res.code === 0 && res.msg === "success") {
const array = file.name.split(".");
const fileType = array[array.length - 1];
const picArray = ["jpg", "png", "jpeg", "bmp"];
const videoarray = ["mp4", "wma", "m4a"];
const docArray = ["doc", "docx", "xls", "xlsx", "pdf"];
const mp3Array = ["mp3"];
if (picArray.indexOf(fileType) > -1) {
file.attachmentFormat = "image";
} else if (videoarray.indexOf(fileType) > -1) {
file.attachmentFormat = "video";
} else if (docArray.indexOf(fileType) > -1) {
file.attachmentFormat = "doc";
} else if (mp3Array.indexOf(fileType) > -1) {
file.attachmentFormat = "voice";
}
file.url = res.data.url;
file.type = fileType;
file.attachmentName = file.name;
file.attachmentType = file.type;
file.attachmentUrl = file.url;
this.fileList.push(file);
} else this.$message.error(res.msg);
},
//
handleFileDownload(file) {
var a = document.createElement("a");
var event = new MouseEvent("click");
a.download = file.name;
a.target = '_blank';
a.href = file.url;
a.dispatchEvent(event);
},
handleChangeCate() {
if (this.selCateObj = this.$refs["myCascader"].getCheckedNodes()[0]) {
this.selCateObj = this.$refs["myCascader"].getCheckedNodes()[0].data
this.form.categoryList = this.selCateObj
this.form.categoryId = this.selCateObj.id
} else {
this.selCateObj = {}
}
},
handleChangeAgency(val) {
let obj = this.$refs["agencyIdArray"].getCheckedNodes()[0].data
if (obj) {
this.form.orgType = obj.level === 'grid' ? 'grid' : 'agency'
this.form.deptId = obj.agencyId
this.form.deptName = obj.agencyName
} else {
this.form.orgType = ''
this.form.orgId = ''
}
},
//
async getOrgTreeList() {
const url = "/gov/org/customeragency/agencygridtree"
let params = {
agencyId: this.agencyId,
purpose: "query"
}
const {data, code, msg} = await requestPost(url, params)
if (code === 0) {
this.orgOptions = []
this.orgOptions.push(data)
} else {
this.$message.error(msg)
}
},
async getCategoryList() {
const url = '/governance/icEvent/getCategoryTree';
let params = {};
const {data, code, msg} = await requestPost(url, params);
if (code === 0) {
let treeDataNew = this.deepTree(data, "children");
++this.iscascaderShow;
this.casOptions = [];
this.casOptions = treeDataNew;
} else {
this.$message.error(msg);
}
if (this.eventDetailCopy.parentCategoryId) {
const pids = this.eventDetailCopy.parentCategoryId.split(',');
pids.push(this.eventDetailCopy.categoryId);
let nodes = this.casOptions;
for (let i = 0; i < pids.length; i++) {
nodes = this.buildNode(nodes, pids[i])
}
if (nodes) {
this.form.categoryList.push(nodes)
this.selCateObj = nodes
}
}
},
//
deepTree(arr, children) {
if (Array.isArray(arr) && arr.length > 0) {
return arr.map((item) => {
return {
...item,
[children]:
(item[children] &&
item[children].length > 0 &&
this.deepTree(item[children], children)) ||
null,
};
});
}
},
handleDownload(file) {
console.log(file);
}
},
};
</script>
@ -332,16 +579,17 @@ export default {
}
/deep/ .el-upload--picture-card {
color: #fff;
border: 1px solid #0E3978;
border-radius: 2px;
background: rgb(0, 23, 66);
line-height: normal;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
opacity: 0.72;
opacity: 0.72;
color: #fff;
border: 1px solid #0E3978;
border-radius: 2px;
background: rgb(0, 23, 66);
.text {
margin-top: 10px;
}

56
src/views/dataBoard/overview/components/MapDialog/List12345.vue

@ -4,13 +4,17 @@
<el-table v-loading="loading" :data="list" height="600px"
element-loading-background="rgba(0, 0, 0, 0.3)">
<el-table-column label="序号" type="index" width="80"/>
<el-table-column label="所属网格" prop="key" width="120"/>
<el-table-column label="接收时间" prop="key" width="180"/>
<el-table-column label="问题描述" prop="key" width="120"/>
<el-table-column label="办结时限" prop="key" width="120"/>
<el-table-column label="联系人" prop="key" width="120"/>
<el-table-column label="联系电话" prop="key" width="120"/>
<el-table-column label="状态" prop="name" width="120"/>
<el-table-column label="所属网格" show-overflow-tooltip prop="gridName" width="120"/>
<el-table-column label="接收时间" prop="happenTime" width="180"/>
<el-table-column label="问题描述" show-overflow-tooltip prop="eventContent" width="120"/>
<el-table-column label="办结时限" prop="timeLimit" width="180"/>
<el-table-column label="联系人" prop="name" width="120"/>
<el-table-column label="联系电话" prop="mobile" width="120">
<template slot-scope="scope">
{{ $sensitive(scope.row.mobile, 3, 7) }}
</template>
</el-table-column>
<el-table-column label="状态" prop="statusName" width="120"/>
<el-table-column label="操作" prop="op" width="250">
<template slot-scope="scope">
<CallPhone text="拨打电话"/>
@ -27,36 +31,68 @@
@pagination="getList"
/>
</div>
<EventDetails
:currentLevelData="currentLevelData"
:id="rowId"
:showDialog="showDialog"
@close="showDialog = false"
@ok="getList"
/>
</div>
</template>
<script>
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import CallPhone from "@/views/dataBoard/cpts/CallPhone";
import EventDetails from "@/views/dataBoard/overview/components/EventDetail.vue";
export default {
name: "List12345",
components: {Pagination,CallPhone},
components: {Pagination,CallPhone,EventDetails},
props: {
catVal: {
type: [String,Number],
default: ""
},
currentLevelData: {
type: Object,
default: () => {
},
}
},
data() {
return {
showDialog: false,
rowId: "",
total: 10,
queryParams: {},
queryParams: {
pageNo: 1,
pageSize: 10,
},
list: [],
loading: false,
}
},
mounted() {
this.getList()
},
methods: {
getList() {
this.loading = true;
let params = {
...this.queryParams,
}
this.$http.post("/governance/icEvent/list",params).then(({data: {data}}) => {
this.total = data.total;
this.list = data.list;
this.loading = false;
});
},
handleViews({icEventId}) {
this.showDialog = true;
this.rowId = icEventId;
},
}
}

10
src/views/dataBoard/overview/components/MapDialog/index.vue

@ -65,9 +65,9 @@
<img :height="18" :width="18" src="@/assets/images/manyidu/tc-title-icon.png"/>
不满意事项列表
</div>
<List12345 v-if="catVal === 1" :catVal="catVal"/>
<CommunityList v-if="catVal === 2" :catVal="catVal"/>
<SatisfactionList v-if="catVal === 3" :catVal="catVal"/>
<List12345 :currentLevelData="currentLevelData" v-if="catVal === 1" :catVal="catVal"/>
<CommunityList :currentLevelData="currentLevelData" v-if="catVal === 2" :catVal="catVal"/>
<SatisfactionList :currentLevelData="currentLevelData" v-if="catVal === 3" :catVal="catVal"/>
</template>
<template v-if="type === 'xqwwcqk'">
@ -209,6 +209,7 @@ export default {
},
getDetail({orgId}) {
if (this.type === 'njjwtqk') {
this.catVal = 1
this.$http.post('/governance/icEventOld/getMarkersByMarkType', {
agencyId: orgId,
type: 2
@ -219,6 +220,9 @@ export default {
if (this.type === 'xqwwcqk') {
this.getDemandOptions(orgId)
}
if (this.type === 'bmysxqk') {
this.catVal = 1
}
},
handleViews() {
this.$refs.ResourceInfo.open()

4
src/views/dataBoard/overview/components/wtqd.vue

@ -131,7 +131,6 @@
</div>
</div>
<EventDetails :id="this.rowId" :showDialog="showDialog" @close="close"/>
<EventDispatchOrder ref="EventDispatchOrder"/>
</div>
</template>
@ -141,7 +140,6 @@ import "swiper/dist/css/swiper.css";
import {swiper, swiperSlide} from "vue-awesome-swiper";
import {requestPost} from "@/js/dai/request";
import EventDetails from "@/views/dataBoard/overview/components/EventDetail.vue";
import EventDispatchOrder from "@/views/dataBoard/overview/components/EventDispatchOrder.vue";
export default {
name: "wtqd",
@ -150,7 +148,6 @@ export default {
swiper,
swiperSlide,
EventDetails,
EventDispatchOrder
},
props: {
currentLevelData: {
@ -209,7 +206,6 @@ export default {
this.getData();
this.fetchDataAndProcess()
this.getSatisfactionEvent()
// this.$refs.EventDispatchOrder.open()
},
//

2
src/views/dataBoard/overview/index.vue

@ -135,7 +135,7 @@
-- bmysxqk = 不满意事项情况
-- xqwwcqk = 需求未完成情况
-->
<MapDialog ref="MapDialog" type="xqwwcqk" />
<MapDialog ref="MapDialog" type="njjwtqk" />
<cpt-loading v-show="false"/>
</div>
</template>

85
src/views/dataBoard/satisfactionEval/Problem/tddtlxsj/detail.vue

@ -10,15 +10,21 @@
element-loading-text="加载中..."
>
<el-table-column label="序号" type="index" width="80"/>
<el-table-column label="地点" prop="key"/>
<el-table-column label="工单号" prop="key"/>
<el-table-column label="所属社区" prop="key"></el-table-column>
<el-table-column label="事件分类" prop="key"></el-table-column>
<el-table-column label="投诉内容" prop="key"></el-table-column>
<el-table-column label="接收时间" prop="key"></el-table-column>
<el-table-column label="联系人" prop="key"></el-table-column>
<el-table-column label="联系电话" prop="key"></el-table-column>
<el-table-column label="状态" prop="key"></el-table-column>
<el-table-column label="地点" prop="address"/>
<el-table-column label="工单号" prop="workOrderNum" show-overflow-tooltip/>
<el-table-column label="所属社区" prop="gridName"></el-table-column>
<el-table-column label="事件分类" prop="categoryName" show-overflow-tooltip></el-table-column>
<el-table-column label="投诉内容" prop="eventContent" show-overflow-tooltip min-width="220px"></el-table-column>
<el-table-column label="接收时间" prop="happenTime"></el-table-column>
<el-table-column label="联系人" prop="name"></el-table-column>
<el-table-column label="联系电话" prop="mobile"></el-table-column>
<el-table-column label="状态" prop="status">
<template slot-scope="scope">
<span v-if="scope.row.status === 'processing'">处理中</span>
<span v-else-if="scope.row.status === 'closed_case'">已完成</span>
<span v-else>--</span>
</template>
</el-table-column>
<el-table-column align="center" label="详情">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
@ -38,6 +44,7 @@ import Breadcrumb from "@/views/dataBoard/satisfactionEval/components/Breadcrumb
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import Title from "@/views/dataBoard/satisfactionEval/components/Title";
import EventDetails from "@/views/dataBoard/overview/components/EventDetail.vue";
import {requestPost} from "@/js/dai/request";
export default {
name: "TddtlxsjDetail",
@ -48,7 +55,7 @@ export default {
rowId: "",
queryParams: {
pageNo: 1,
pageSize: 10,
pageSize: 13,
},
total: 0,
orgOptions: [],
@ -66,18 +73,21 @@ export default {
name: "详情",
},
],
list: [{}, {}, {}],
list: [],
title: "",
loading: false,
recId: "",
departId: "",
address: "",
mobile: "",
};
},
activated() {
this.title = this.$route.query.title;
let searchParams = JSON.parse(this.$route.query.searchParams);
this.queryParams = {
...this.queryParams,
...searchParams,
};
// this.breadcrumbList[2].name = this.address + ''
this.recId = this.$route.query.recId;
this.departId = this.$route.query.departId;
this.address = this.$route.query.address;
this.mobile = this.$route.query.mobile;
this.getList();
},
methods: {
@ -85,21 +95,46 @@ export default {
this.queryParams.pageNo = 1;
this.getList();
},
getList() {
async getList() {
this.loading = true;
let params = {
...this.queryParams,
}
try {
const url = "/governance/dwdEvent/list";
if(this.recId){
params.secondIdList = [this.recId];
}
if(this.departId){
params.departId = this.departId;
}
this.$http.get("?" + this.$paramsFormat(params)).then(({data: {data}}) => {
this.total = data.total;
this.list = data.list;
this.loading = false;
});
if(this.address){
params.content = this.address;
}
if(this.mobile){
params.mobile = this.mobile;
}
const { data, code, msg } = await requestPost(url, {
...params,
});
if (code == 0) {
this.total = data.total;
this.list = data.list;
this.loading = false;
} else {
console.log(err);
}
} catch (err) {
console.log(err);
}
},
handleView({id}) {
handleView({icEventId}) {
this.showDialog = true;
this.rowId = id;
this.rowId = icEventId;
},
},
};

30
src/views/dataBoard/satisfactionEval/Problem/tddtlxsj/list.vue

@ -9,7 +9,6 @@
placeholder="请选择"
popper-class="selectPopClass"
size="small"
@change="timeChange"
>
<el-option
v-for="item in typeConditionList"
@ -24,10 +23,10 @@
<div class="table">
<el-table v-loading="loading" :data="list" element-loading-background="rgba(0,0,0,0.5)"
element-loading-spinner="el-icon-loading" element-loading-text="加载中...">
<el-table-column label="序号" type="index"/>
<el-table-column label="地点" prop="key"/>
<el-table-column label="类型" prop="gridName"/>
<el-table-column label="投诉次数" prop="restName"></el-table-column>
<el-table-column label="序号" width="50" type="index"/>
<el-table-column label="地点" prop="address"/>
<el-table-column label="类型" prop="categoryName"/>
<el-table-column label="投诉次数" prop="amount"/>
<el-table-column align="center" label="详情">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
@ -44,6 +43,7 @@
import Breadcrumb from "@/views/dataBoard/satisfactionEval/components/Breadcrumb";
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import Title from "@/views/dataBoard/satisfactionEval/components/Title";
import { requestPost } from "@/js/dai/request";
export default {
name: "tddtlxsjList",
@ -55,6 +55,7 @@ export default {
agencyId: "",
pageNo: 1,
pageSize: 10,
type: 1
},
typeCondition: 5,
typeConditionList: [
@ -94,18 +95,18 @@ export default {
monthOptions: new Array(12).fill(0).map((_, index) => {
return {label: index - 0 + 1 + "月", value: index - 0 + 1};
}),
list: [{}, {}, {}],
list: [],
title: "",
loading: false,
};
},
activated() {
this.title = this.$route.query.title;
let searchParams = JSON.parse(this.$route.query.searchParams);
/* let searchParams = JSON.parse(this.$route.query.searchParams);
this.queryParams = {
...this.queryParams,
...searchParams,
};
};*/
this.getList();
},
methods: {
@ -119,8 +120,7 @@ export default {
...this.queryParams,
...this.timeChange(this.typeCondition)
}
this.$http.get("?" + this.$paramsFormat(params)).then(({data: {data}}) => {
requestPost('/governance/dwdEvent/eventList',params).then(({data}) => {
this.total = data.total;
this.list = data.list;
this.loading = false;
@ -152,9 +152,13 @@ export default {
}
return {startTime, endTime};
},
handleView(id) {
this.id = id;
this.$router.push('/dataBoard/satisfactionEval/Problem/tddtlxsj/detail?id='+id)
handleView(row) {
let params = {
recId: row.categoryId,
address: row.address
}
this.$router.push('/dataBoard/satisfactionEval/Problem/tddtlxsj/detail?'+this.$paramsFormat(params))
},
},
};

87
src/views/dataBoard/satisfactionEval/Problem/tyqybtlx/detail.vue

@ -10,15 +10,21 @@
element-loading-text="加载中..."
>
<el-table-column label="序号" type="index" width="80"/>
<el-table-column label="地点" prop="key"/>
<el-table-column label="工单号" prop="key"/>
<el-table-column label="所属社区" prop="key"></el-table-column>
<el-table-column label="事件分类" prop="key"></el-table-column>
<el-table-column label="投诉内容" prop="key"></el-table-column>
<el-table-column label="接收时间" prop="key"></el-table-column>
<el-table-column label="联系人" prop="key"></el-table-column>
<el-table-column label="联系电话" prop="key"></el-table-column>
<el-table-column label="状态" prop="key"></el-table-column>
<el-table-column label="地点" prop="address"/>
<el-table-column label="工单号" prop="workOrderNum" show-overflow-tooltip/>
<el-table-column label="所属社区" prop="gridName"></el-table-column>
<el-table-column label="事件分类" prop="categoryName" show-overflow-tooltip></el-table-column>
<el-table-column label="投诉内容" prop="eventContent" show-overflow-tooltip min-width="220px"></el-table-column>
<el-table-column label="接收时间" prop="happenTime"></el-table-column>
<el-table-column label="联系人" prop="name"></el-table-column>
<el-table-column label="联系电话" prop="mobile"></el-table-column>
<el-table-column label="状态" prop="status">
<template slot-scope="scope">
<span v-if="scope.row.status === 'processing'">处理中</span>
<span v-else-if="scope.row.status === 'closed_case'">已完成</span>
<span v-else>--</span>
</template>
</el-table-column>
<el-table-column align="center" label="详情">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
@ -38,9 +44,10 @@ import Breadcrumb from "@/views/dataBoard/satisfactionEval/components/Breadcrumb
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import Title from "@/views/dataBoard/satisfactionEval/components/Title";
import EventDetails from "@/views/dataBoard/overview/components/EventDetail.vue";
import {requestPost} from "@/js/dai/request";
export default {
name: "tyrydetail",
name: "TddtlxsjDetail",
components: {Breadcrumb, Pagination, Title, EventDetails},
data() {
return {
@ -48,7 +55,7 @@ export default {
rowId: "",
queryParams: {
pageNo: 1,
pageSize: 10,
pageSize: 13,
},
total: 0,
orgOptions: [],
@ -66,18 +73,21 @@ export default {
name: "详情",
},
],
list: [{}, {}, {}],
list: [],
title: "",
loading: false,
recId: "",
departId: "",
address: "",
mobile: "",
};
},
activated() {
this.title = this.$route.query.title;
let searchParams = JSON.parse(this.$route.query.searchParams);
this.queryParams = {
...this.queryParams,
...searchParams,
};
// this.breadcrumbList[2].name = this.address + ''
this.recId = this.$route.query.recId;
this.departId = this.$route.query.departId;
this.address = this.$route.query.address;
this.mobile = this.$route.query.mobile;
this.getList();
},
methods: {
@ -85,21 +95,46 @@ export default {
this.queryParams.pageNo = 1;
this.getList();
},
getList() {
async getList() {
this.loading = true;
let params = {
...this.queryParams,
}
try {
const url = "/governance/dwdEvent/list";
if(this.recId){
params.secondIdList = [this.recId];
}
if(this.departId){
params.departId = this.departId;
}
this.$http.get("?" + this.$paramsFormat(params)).then(({data: {data}}) => {
this.total = data.total;
this.list = data.list;
this.loading = false;
});
if(this.address){
params.content = this.address;
}
if(this.mobile){
params.mobile = this.mobile;
}
const { data, code, msg } = await requestPost(url, {
...params,
});
if (code == 0) {
this.total = data.total;
this.list = data.list;
this.loading = false;
} else {
console.log(err);
}
} catch (err) {
console.log(err);
}
},
handleView({id}) {
handleView({icEventId}) {
this.showDialog = true;
this.rowId = id;
this.rowId = icEventId;
},
},
};

48
src/views/dataBoard/satisfactionEval/Problem/tyqybtlx/list.vue

@ -30,10 +30,14 @@
element-loading-spinner="el-icon-loading"
element-loading-text="加载中..."
>
<el-table-column label="序号" prop="number" width="80"/>
<el-table-column label="地点" prop="column1"/>
<el-table-column label="类型" prop="column3"/>
<el-table-column label="投诉次数" prop="column2"/>
<el-table-column label="序号" prop="number" width="80">
<template slot-scope="{$index}">
{{$index - 0 + 1}}
</template>
</el-table-column>
<el-table-column label="地点" prop="address"/>
<el-table-column label="类型" prop="categoryName"/>
<el-table-column label="投诉次数" prop="amount"/>
<el-table-column align="center" label="详情">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
@ -50,6 +54,7 @@
import Breadcrumb from "@/views/dataBoard/satisfactionEval/components/Breadcrumb";
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import Title from "@/views/dataBoard/satisfactionEval/components/Title";
import {requestPost} from "@/js/dai/request";
export default {
name: "tyryList",
@ -61,6 +66,7 @@ export default {
agencyId: "",
pageNo: 1,
pageSize: 10,
type: 3
},
typeCondition: 5,
typeConditionList: [
@ -100,36 +106,30 @@ export default {
monthOptions: new Array(12).fill(0).map((_, index) => {
return {label: index - 0 + 1 + "月", value: index - 0 + 1};
}),
data: [
{number: 1, column1: '市北区清江路100号', column2: '10', column3: '100'},
{number: 2, column1: '市北区清江路100号', column2: '10', column3: '100'},
{number: 3, column1: '市北区清江路100号', column2: '10', column3: '100'},
{number: 4, column1: '市北区清江路**号', column2: '10', column3: '100'},
{number: 5, column1: '市北区清江路**号', column2: '10', column3: '100'},
],
data: [],
data1: [
"number",
"column1",
"column2",
"column3"
"address",
"categoryName",
"amount"
],
title: "",
loading: false,
};
},
activated() {
this.title = this.$route.query.title;
/* this.title = this.$route.query.title;
let searchParams = JSON.parse(this.$route.query.searchParams);
this.queryParams = {
...this.queryParams,
...searchParams,
};
};*/
this.getList();
},
methods: {
objectSpanMethod({row, column, rowIndex, columnIndex}) {
if (columnIndex === 1 || columnIndex === 0 || columnIndex === 4) {
if (rowIndex > 0 && row.column1 === this.data[rowIndex - 1].column1) {
if (rowIndex > 0 && row.address === this.data[rowIndex - 1].address) {
return {
rowspan: 0,
colspan: 0,
@ -137,14 +137,12 @@ export default {
} else {
let rowspan = 1;
for (let i = rowIndex + 1; i < this.data.length; i++) {
if (row.column1 === this.data[i].column1) {
if (row.address === this.data[i].address) {
rowspan++;
} else {
//else "Name" 退
break;
}
}
// { rowspan, colspan: 1 } rowspan colspan: 1
return {
rowspan,
colspan: 1,
@ -162,10 +160,9 @@ export default {
...this.queryParams,
...this.timeChange(this.typeCondition)
}
this.$http.get("?" + this.$paramsFormat(params)).then(({data: {data}}) => {
requestPost('/governance/dwdEvent/eventList',params).then(({data}) => {
this.total = data.total;
this.list = data.list;
this.data = data.list;
this.loading = false;
});
},
@ -195,9 +192,8 @@ export default {
}
return {startTime, endTime};
},
handleView(id) {
this.id = id;
this.$router.push('/dataBoard/satisfactionEval/Problem/tyqybtlx/detail?id=' + id)
handleView({address}) {
this.$router.push('/dataBoard/satisfactionEval/Problem/tyqybtlx/detail?address=' + address)
},
},
};

86
src/views/dataBoard/satisfactionEval/Problem/tyry/detail.vue

@ -10,14 +10,21 @@
element-loading-text="加载中..."
>
<el-table-column label="序号" type="index" width="80"/>
<el-table-column label="工单号" prop="key"/>
<el-table-column label="所属社区" prop="key"></el-table-column>
<el-table-column label="事件分类" prop="key"></el-table-column>
<el-table-column label="投诉内容" prop="key"></el-table-column>
<el-table-column label="接收时间" prop="key"></el-table-column>
<el-table-column label="联系人" prop="key"></el-table-column>
<el-table-column label="联系电话" prop="key"></el-table-column>
<el-table-column label="状态" prop="key"></el-table-column>
<el-table-column label="地点" prop="address"/>
<el-table-column label="工单号" prop="workOrderNum" show-overflow-tooltip/>
<el-table-column label="所属社区" prop="gridName"></el-table-column>
<el-table-column label="事件分类" prop="categoryName" show-overflow-tooltip></el-table-column>
<el-table-column label="投诉内容" prop="eventContent" show-overflow-tooltip min-width="220px"></el-table-column>
<el-table-column label="接收时间" prop="happenTime"></el-table-column>
<el-table-column label="联系人" prop="name"></el-table-column>
<el-table-column label="联系电话" prop="mobile"></el-table-column>
<el-table-column label="状态" prop="status">
<template slot-scope="scope">
<span v-if="scope.row.status === 'processing'">处理中</span>
<span v-else-if="scope.row.status === 'closed_case'">已完成</span>
<span v-else>--</span>
</template>
</el-table-column>
<el-table-column align="center" label="详情">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
@ -37,9 +44,10 @@ import Breadcrumb from "@/views/dataBoard/satisfactionEval/components/Breadcrumb
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import Title from "@/views/dataBoard/satisfactionEval/components/Title";
import EventDetails from "@/views/dataBoard/overview/components/EventDetail.vue";
import {requestPost} from "@/js/dai/request";
export default {
name: "tyrydetail",
name: "TddtlxsjDetail",
components: {Breadcrumb, Pagination, Title, EventDetails},
data() {
return {
@ -47,7 +55,7 @@ export default {
rowId: "",
queryParams: {
pageNo: 1,
pageSize: 10,
pageSize: 13,
},
total: 0,
orgOptions: [],
@ -65,18 +73,21 @@ export default {
name: "详情",
},
],
list: [{}, {}, {}],
list: [],
title: "",
loading: false,
recId: "",
departId: "",
address: "",
mobile: "",
};
},
activated() {
this.title = this.$route.query.title;
let searchParams = JSON.parse(this.$route.query.searchParams);
this.queryParams = {
...this.queryParams,
...searchParams,
};
// this.breadcrumbList[2].name = this.address + ''
this.recId = this.$route.query.recId;
this.departId = this.$route.query.departId;
this.address = this.$route.query.address;
this.mobile = this.$route.query.mobile;
this.getList();
},
methods: {
@ -84,21 +95,46 @@ export default {
this.queryParams.pageNo = 1;
this.getList();
},
getList() {
async getList() {
this.loading = true;
let params = {
...this.queryParams,
}
try {
const url = "/governance/dwdEvent/list";
if(this.recId){
params.secondIdList = [this.recId];
}
if(this.departId){
params.departId = this.departId;
}
this.$http.get("?" + this.$paramsFormat(params)).then(({data: {data}}) => {
this.total = data.total;
this.list = data.list;
this.loading = false;
});
if(this.address){
params.content = this.address;
}
if(this.mobile){
params.mobile = this.mobile;
}
const { data, code, msg } = await requestPost(url, {
...params,
});
if (code == 0) {
this.total = data.total;
this.list = data.list;
this.loading = false;
} else {
console.log(err);
}
} catch (err) {
console.log(err);
}
},
handleView({id}) {
handleView({icEventId}) {
this.showDialog = true;
this.rowId = id;
this.rowId = icEventId;
},
},
};

28
src/views/dataBoard/satisfactionEval/Problem/tyry/list.vue

@ -24,9 +24,13 @@
<div class="table">
<el-table v-loading="loading" :data="list" element-loading-background="rgba(0,0,0,0.5)"
element-loading-spinner="el-icon-loading" element-loading-text="加载中...">
<el-table-column label="序号" type="index"/>
<el-table-column label="联系方式" prop="key"/>
<el-table-column label="投诉次数" prop="restName"></el-table-column>
<el-table-column label="序号" type="index" width="50"/>
<el-table-column label="联系方式" prop="mobile">
<template slot-scope="scope">
{{ $sensitive(scope.row.mobile, 3, 7) }}
</template>
</el-table-column>
<el-table-column label="投诉次数" prop="amount"></el-table-column>
<el-table-column align="center" label="详情">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
@ -43,6 +47,7 @@
import Breadcrumb from "@/views/dataBoard/satisfactionEval/components/Breadcrumb";
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import Title from "@/views/dataBoard/satisfactionEval/components/Title";
import {requestPost} from "@/js/dai/request";
export default {
name: "tyryList",
@ -54,6 +59,7 @@ export default {
agencyId: "",
pageNo: 1,
pageSize: 10,
type: 2
},
typeCondition: 5,
typeConditionList: [
@ -93,18 +99,18 @@ export default {
monthOptions: new Array(12).fill(0).map((_, index) => {
return {label: index - 0 + 1 + "月", value: index - 0 + 1};
}),
list: [{}, {}, {}],
list: [],
title: "",
loading: false,
};
},
activated() {
this.title = this.$route.query.title;
/* this.title = this.$route.query.title;
let searchParams = JSON.parse(this.$route.query.searchParams);
this.queryParams = {
...this.queryParams,
...searchParams,
};
};*/
this.getList();
},
methods: {
@ -114,12 +120,12 @@ export default {
},
getList() {
this.loading = true;
let params = {
...this.queryParams,
...this.timeChange(this.typeCondition)
}
this.$http.get("?" + this.$paramsFormat(params)).then(({data: {data}}) => {
requestPost('/governance/dwdEvent/eventList',params).then(({data}) => {
this.total = data.total;
this.list = data.list;
this.loading = false;
@ -151,9 +157,9 @@ export default {
}
return {startTime, endTime};
},
handleView(id) {
this.id = id;
this.$router.push('/dataBoard/satisfactionEval/Problem/tyry/detail?id='+id)
handleView(row) {
this.$router.push('/dataBoard/satisfactionEval/Problem/tyry/detail?mobile='+row.mobile)
},
},
};

199
src/views/dataBoard/satisfactionEval/modules/eventAnalysis/index.vue

@ -19,15 +19,19 @@
<div>类型</div>
<div>投诉次数</div>
</div>
<div
v-for="(item, index) in list"
:key="index"
:class="['item', 'f-flex']"
>
<div>{{ index - 0 + 1 }}</div>
<div>{{ item.location }}</div>
<div>{{ item.type }}</div>
<div>{{ item.count }}</div>
<div class="list-con">
<div
v-for="(item, index) in list"
:key="index"
:class="['item', 'f-flex']"
@click="goTddlxDetail(item)"
>
<div>{{ index - 0 + 1 }}</div>
<div>{{ item.address }}</div>
<div>{{ item.categoryName }}</div>
<div>{{ item.amount }}</div>
</div>
</div>
</div>
@ -49,14 +53,17 @@
<div>联系方式</div>
<div>投诉次数</div>
</div>
<div
v-for="(item, index) in list"
:key="index"
class="item f-flex bto-border"
>
<div>{{ index - 0 + 1 }}</div>
<div>{{ item.tel }}</div>
<div>{{ item.count }}</div>
<div class="list-con">
<div
v-for="(item, index) in list2"
:key="index"
class="item f-flex bto-border"
@click="goTryDetail(item)"
>
<div>{{ index - 0 + 1 }}</div>
<div>{{ item.mobile }}</div>
<div>{{ item.amount }}</div>
</div>
</div>
</div>
@ -73,11 +80,15 @@
</template>
</title-small>
<div class="table">
<el-table :data="data" :span-method="objectSpanMethod">
<el-table-column align="center" label="序号" prop="number" width="80"></el-table-column>
<el-table-column label="地点" prop="column1"></el-table-column>
<el-table-column label="类型" prop="column2"></el-table-column>
<el-table-column label="投诉次数" prop="column3" width="120"></el-table-column>
<el-table :data="data" :span-method="objectSpanMethod" height="300" @row-click="rowClick">
<el-table-column align="center" label="序号" prop="number" width="80">
<template slot-scope="{$index}">
{{ $index - 0 + 1 }}
</template>
</el-table-column>
<el-table-column label="地点" prop="address"></el-table-column>
<el-table-column label="类型" prop="categoryName"></el-table-column>
<el-table-column label="投诉次数" prop="amount" width="120"></el-table-column>
</el-table>
</div>
</div>
@ -92,36 +103,10 @@ export default {
},
data() {
return {
typeCondition: '',
typeCondition: 5,
startTime: '',
endTime: '',
list: [
{
location: '市北区清江路139号门口道路···',
type: '城市综合-交通运输',
count: 5,
tel: '173*****327'
}, {
location: '市北区清江路139号门口道路···',
type: '城市综合-交通运输',
count: 5,
tel: '173*****327'
}, {
location: '市北区清江路139号门口道路···',
type: '城市综合-交通运输',
count: 5,
tel: '173*****327'
}, {
location: '市北区清江路139号门口道路···',
type: '城市综合-交通运输',
count: 5,
tel: '173*****327'
}, {
location: '市北区清江路139号门口道路···',
type: '城市综合-交通运输',
count: 5,
tel: '173*****327'
},],
list: [],
typeConditionList: [
{
label: "本月",
@ -144,18 +129,13 @@ export default {
value: 5,
},
],
data: [
{number: 1, column1: '市北区清江路100号', column2: '10', column3: '100'},
{number: 2, column1: '市北区清江路100号', column2: '10', column3: '100'},
{number: 3, column1: '市北区清江路100号', column2: '10', column3: '100'},
{number: 4, column1: '市北区清江路**号', column2: '10', column3: '100'},
{number: 5, column1: '市北区清江路**号', column2: '10', column3: '100'},
],
list2: [],
data: [],
data1: [
"number",
"column1",
"column2",
"column3"
"address",
"categoryName",
"amount"
],
spanArr: [],
};
@ -164,37 +144,27 @@ export default {
created() {
},
mounted() {
this.getSpanArr()
this.timeChange()
this.getList()
},
computed: {},
methods: {
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
objectSpanMethod({row, column, rowIndex, columnIndex}) {
if (columnIndex === 1) {
//
// "Name" "Name"
// "Name" { rowspan: 0, colspan: 0 }
//使
if (rowIndex > 0 && row.column1 === this.data[rowIndex - 1].column1) {
if (rowIndex > 0 && row.address === this.data[rowIndex - 1].address) {
return {
rowspan: 0,
colspan: 0,
};
} else {
// "Name"
//使 let rowspan = 1; rowspan
//使 "Name"
let rowspan = 1;
for (let i = rowIndex + 1; i < this.data.length; i++) {
// "Name"
// "Name" rowspan
if (row.column1 === this.data[i].column1) {
if (row.address === this.data[i].address) {
rowspan++;
} else {
//else "Name" 退
break;
}
}
// { rowspan, colspan: 1 } rowspan colspan: 1
return {
rowspan,
colspan: 1,
@ -202,9 +172,6 @@ export default {
}
}
},
/*objectSpanMethod({row, column, rowIndex, columnIndex}) {
return this.spanArr[rowIndex * this.colFields.length + columnIndex];
},*/
timeChange() {
let startTime = "",
endTime = "";
@ -232,52 +199,34 @@ export default {
this.startTime = startTime;
this.endTime = endTime;
// this.getData();
this.getList()
},
// ,if,
getSpanArr() {
console.log(this.tableData, 'this.tableData')
for (let i = 0; i < this.tableData.length; i++) {
let row = i;
// let col = i % this.colCount;
if (row === 0) {
// i j
for (let j = 0; j < this.colFields.length; j++) {
this.spanArr[i * this.colFields.length + j] = {
rowspan: 1,
colspan: 1,
};
}
} else {
for (let j = 0; j < this.colFields.length; j++) {
//
//
if (
this.colFields[j] == "column1"
) { //
if (
this.tableData[row][this.colFields[j]] ===
this.tableData[row - 1][this.colFields[j]]
) {
let beforeItem =
this.spanArr[(row - 1) * this.colFields.length + j];
this.spanArr[row * this.colFields.length + j] = {
rowspan: 1 + beforeItem.rowspan,
colspan: 1,
};
beforeItem.rowspan = 0;
beforeItem.colspan = 0;
} else {
// rowspan colspan 1
this.spanArr[row * this.colFields.length + j] = {
rowspan: 1,
colspan: 1,
};
}
}
}
}
getList() {
this.$http.post('/governance/dwdEvent/report', {
"queryDateStart": this.startTime,
"queryDateEnd": this.endTime
}).then(({data: {data}}) => {
this.list = data.addressMobileEvents
this.list2 = data.mobileEvent
this.data = data.addressEvent
})
},
rowClick({address}) {
console.log(address,'addressaddress')
this.$router.push('/dataBoard/satisfactionEval/Problem/tyqybtlx/detail?address=' + address)
},
goTddlxDetail(row) {
let params = {
recId: row.categoryId,
address: row.address
}
}
this.$router.push('/dataBoard/satisfactionEval/Problem/tddtlxsj/detail?'+this.$paramsFormat(params))
},
goTryDetail(row) {
this.$router.push('/dataBoard/satisfactionEval/Problem/tyry/detail?mobile='+row.mobile)
},
},
}
</script>
@ -321,7 +270,6 @@ export default {
position: relative;
flex: 1;
width: 100%;
margin-bottom: 20px;
.item {
@ -377,4 +325,9 @@ export default {
box-sizing: unset !important;
}
}
.list-con {
overflow: auto;
height: 200px;
}
</style>

Loading…
Cancel
Save