You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
595 lines
17 KiB
595 lines
17 KiB
<template>
|
|
<div class="analyse-container">
|
|
<div class="analyse-wr list-wr">
|
|
|
|
<div class="analys-col">
|
|
<div class="analys-family">
|
|
<div class="family-title">(家属)</div>
|
|
<div v-for="(item, index) in userList"
|
|
:key="index"
|
|
class="family-item"
|
|
@click="handleUser(item)">{{item.icUserName}}</div>
|
|
<!-- <div class="family-item">王亚男哈</div>
|
|
<div class="family-item">王亚男</div>
|
|
<div class="family-item">王亚男哈</div>
|
|
<div class="family-item">王亚</div> -->
|
|
</div>
|
|
</div>
|
|
|
|
<div class="analys-col">
|
|
<img class="analys-arrow"
|
|
src="../../../../assets/img/shuju/measure/zuo@2x.png" />
|
|
</div>
|
|
|
|
<div class="analys-col">
|
|
<div class="analys-person">
|
|
<div class="personal-name">{{userName}}</div>
|
|
<div class="personal-tips">(案件居民)</div>
|
|
</div>
|
|
</div>
|
|
|
|
<template v-if="hasEvent">
|
|
<div class="analys-col analys-col-posi">
|
|
<img class="analys-up"
|
|
src="../../../../assets/img/shuju/measure/up-right.png" />
|
|
<img class="analys-up analys-down"
|
|
src="../../../../assets/img/shuju/measure/down-right.png" />
|
|
</div>
|
|
<div class="analys-col">
|
|
<div class="cate-list cate-list-more">
|
|
<div class="cate-row">
|
|
|
|
<div class="analys-col">
|
|
<div class="analys-cate"
|
|
@click="handleTabs('group')">
|
|
<div class="label">{{ singleTitle }}</div>
|
|
<div class="tips">(反应渠道)</div>
|
|
<div class="icon">
|
|
<img src="../../../../assets/img/shuju/measure/gantanhao.png" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div v-if="sourceTab === 'group'"
|
|
class="analys-col">
|
|
<img class="analys-arrow"
|
|
src="../../../../assets/img/shuju/measure/you@2x.png" />
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="cate-row">
|
|
|
|
<div class="analys-col">
|
|
<div class="analys-cate"
|
|
@click="handleTabs('event')">
|
|
<div class="label">{{ moreTitle }}</div>
|
|
<div class="tips">(反应渠道)</div>
|
|
<div class="icon">
|
|
<img src="../../../../assets/img/shuju/measure/gantanhao.png" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div v-if="sourceTab === 'event'"
|
|
class="analys-col">
|
|
<img class="analys-arrow"
|
|
src="../../../../assets/img/shuju/measure/you@2x.png" />
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="analys-col analys-col-wr analys-col-more list-wr"
|
|
id="scroll-wr">
|
|
<div class="cate-list cate-list-child" :style="'padding-top:' + computedPd(tempList)">
|
|
<div v-for="(item, index) in tempList"
|
|
:key="index"
|
|
class="cate-row">
|
|
|
|
<div class="cate-col">
|
|
<div class="analys-cate">
|
|
<div class="label">{{item.categoryName}}</div>
|
|
<div class="tips">(同类案件)</div>
|
|
<div class="icon"
|
|
@click="handleShow(item)">
|
|
<img src="../../../../assets/img/shuju/measure/gantanhao.png" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="cate-col cate-col-arrow">
|
|
<img v-show="item.showItem"
|
|
class="analys-arrow"
|
|
src="../../../../assets/img/shuju/measure/you@2x.png" />
|
|
</div>
|
|
|
|
<div class="cate-col cate-col-w100">
|
|
<div class="cate-list-w0"
|
|
:class="item.showItem && 'cate-list-w100'">
|
|
<div class="list list-wr">
|
|
<template v-if="item.projectList && item.projectList.length > 0">
|
|
<div v-for="(n, i) in item.projectList"
|
|
:key="i"
|
|
class="item"
|
|
@click="handleProject(n)">
|
|
<div class="item-status"
|
|
:class="'item-status-'+n.status">{{filterStatus(n.status)}}</div>
|
|
<div class="item-content">{{n.title}}</div>
|
|
</div>
|
|
</template>
|
|
<div v-else class="no-data">暂无数据</div>
|
|
<!-- <div class="item">
|
|
<div class="item-status">已结案</div>
|
|
<div class="item-content">合肥路与安宁路交合肥路与安宁路交</div>
|
|
</div> -->
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<template v-else>
|
|
<div class="analys-col">
|
|
<img class="analys-arrow"
|
|
src="../../../../assets/img/shuju/measure/you@2x.png" />
|
|
</div>
|
|
|
|
<div class="analys-col">
|
|
<div class="analys-cate">
|
|
<div class="label">{{ singleTitle }}</div>
|
|
<div class="tips">(反应渠道)</div>
|
|
<!-- <div class="icon">
|
|
<img src="../../../../assets/img/shuju/measure/gantanhao.png" />
|
|
</div> -->
|
|
</div>
|
|
</div>
|
|
|
|
<div class="analys-col">
|
|
<img v-if="tempList.length > 1"
|
|
class="analys-up"
|
|
src="../../../../assets/img/shuju/measure/up-right.png" />
|
|
<img v-if="tempList.length != 2"
|
|
class="analys-arrow"
|
|
src="../../../../assets/img/shuju/measure/you@2x.png" />
|
|
<img v-if="tempList.length > 1"
|
|
class="analys-up analys-down"
|
|
src="../../../../assets/img/shuju/measure/down-right.png" />
|
|
</div>
|
|
|
|
<div class="analys-col list-wr"
|
|
:class="tempList.length > 2 && 'analys-col-wr' || 'analys-single'"
|
|
:style="'padding-top:' + (tempList.length - 3) * 190 + 'px;'">
|
|
<div class="cate-list">
|
|
<div v-for="(item, index) in tempList"
|
|
:key="index"
|
|
class="cate-row">
|
|
|
|
<div class="cate-col">
|
|
<div class="analys-cate">
|
|
<div class="label">{{item.categoryName}}</div>
|
|
<div class="tips">(同类案件)</div>
|
|
<div class="icon"
|
|
@click="handleShow(item)">
|
|
<img src="../../../../assets/img/shuju/measure/gantanhao.png" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="cate-col cate-col-arrow">
|
|
<img v-show="item.showItem"
|
|
class="analys-arrow"
|
|
src="../../../../assets/img/shuju/measure/you@2x.png" />
|
|
</div>
|
|
|
|
<div class="cate-col cate-col-w100">
|
|
<div class="cate-list-w0"
|
|
:class="item.showItem && 'cate-list-w100'">
|
|
<div class="list list-wr">
|
|
<template v-if="item.projectList && item.projectList.length > 0">
|
|
<div v-for="(n, i) in item.projectList"
|
|
:key="i"
|
|
class="item"
|
|
@click="handleProject(n)">
|
|
<div class="item-status"
|
|
:class="'item-status-'+n.status">
|
|
{{ n.statusName || filterStatus(n.status)}}
|
|
</div>
|
|
<div class="item-content">{{n.title}}</div>
|
|
</div>
|
|
</template>
|
|
<div v-else class="no-data">暂无数据</div>
|
|
<!-- <div class="item">
|
|
<div class="item-status">已结案</div>
|
|
<div class="item-content">合肥路与安宁路交合肥路与安宁路交</div>
|
|
</div> -->
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
// singleList: [
|
|
// {
|
|
// categoryName: '辨明服务',
|
|
// categoryCode: '1',
|
|
// showItem: true,
|
|
// projectList: [
|
|
// {
|
|
// title: '不知道写了什么哈哈哈',
|
|
// status: 'closed',
|
|
// statusName: '',
|
|
// projectId: '1'
|
|
// }
|
|
// ]
|
|
// }
|
|
// ]
|
|
export default {
|
|
name: 'Analyse',
|
|
props: {
|
|
hasEvent: {
|
|
type: Boolean, // 楼院小组和事件上报同时存在时 为 true
|
|
default: false
|
|
},
|
|
moreTitle: String, // hasEvent 为true 时 传入
|
|
moreList: Array, // hasEvent 为true 时 传入
|
|
singleTitle: { // 默认,必传 单个来源或多个来源
|
|
type: String,
|
|
default: '楼院小组'
|
|
},
|
|
userList: Array, // 默认,必传 单个来源或多个来源
|
|
userName: String, // 默认,必传 单个来源或多个来源
|
|
singleList: Array, // 默认,必传 单个来源或多个来源
|
|
|
|
},
|
|
data () {
|
|
return {
|
|
sourceTab: 'group',
|
|
tempList: []
|
|
}
|
|
},
|
|
created () {
|
|
this.tempList = [...this.singleList]
|
|
|
|
},
|
|
methods: {
|
|
filterStatus (status) {
|
|
const statusObj = {
|
|
pending: '待处理',
|
|
closed: '已结案'
|
|
}
|
|
return statusObj[status]
|
|
},
|
|
computedPd(list) {
|
|
if (this.sourceTab == 'group') return '60px'
|
|
if (list.length == 1) return '330px'
|
|
else if (list.length == 2) return '240px'
|
|
else return '60px'
|
|
},
|
|
handleTabs (type) {
|
|
if (type === 'group') this.tempList = [...this.singleList]
|
|
else if (type === 'event') this.tempList = [...this.moreList]
|
|
this.sourceTab = type
|
|
const _dom = document.getElementById('scroll-wr')
|
|
_dom.scrollTop = 0
|
|
this.computedPd(this.tempList)
|
|
},
|
|
handleProject (item) {
|
|
this.$emit('project', item)
|
|
},
|
|
handleUser (item) {
|
|
this.$emit('user', item)
|
|
},
|
|
handleShow (item) {
|
|
item.showItem = !item.showItem
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.analyse-container {
|
|
color: #fff;
|
|
.analyse-wr {
|
|
display: flex;
|
|
align-items: center;
|
|
width: 100%;
|
|
max-height: 560px;
|
|
box-sizing: border-box;
|
|
overflow: auto;
|
|
|
|
.analys-col {
|
|
position: relative;
|
|
cursor: pointer;
|
|
.analys-family {
|
|
text-align: center;
|
|
.family-title {
|
|
margin-bottom: 8px;
|
|
}
|
|
.family-item {
|
|
width: 76px;
|
|
box-sizing: border-box;
|
|
margin-bottom: 28px;
|
|
padding: 8px 0;
|
|
font-size: 14px;
|
|
color: #fff;
|
|
text-align: center;
|
|
background: rgba(255, 255, 255, 0);
|
|
border: 1px solid #1257c9;
|
|
border-radius: 2px;
|
|
box-shadow: 0 0 5px 2px rgba(18, 87, 201, 1) inset;
|
|
}
|
|
}
|
|
.analys-up {
|
|
display: block;
|
|
width: 64px;
|
|
height: 99px;
|
|
box-sizing: border-box;
|
|
margin-bottom: 85px;
|
|
}
|
|
.analys-down {
|
|
margin-top: 85px;
|
|
margin-bottom: 0;
|
|
}
|
|
.analys-arrow {
|
|
display: block;
|
|
width: 32px;
|
|
height: 18px;
|
|
box-sizing: border-box;
|
|
margin: 0 6px;
|
|
}
|
|
|
|
.analys-person {
|
|
width: 154px;
|
|
height: 152px;
|
|
box-sizing: border-box;
|
|
padding-top: 60px;
|
|
color: #fff;
|
|
text-align: center;
|
|
background: url("../../../../assets/img/shuju/measure/zhuhu@2x.png")
|
|
no-repeat center;
|
|
background-size: cover;
|
|
.personal-name {
|
|
font-size: 18px;
|
|
font-weight: 500;
|
|
}
|
|
.personal-tips {
|
|
margin-top: 6px;
|
|
font-size: 14px;
|
|
}
|
|
}
|
|
|
|
.analys-cate {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
position: relative;
|
|
width: 120px;
|
|
min-height: 64px;
|
|
box-sizing: border-box;
|
|
padding: 14px 20px;
|
|
text-align: center;
|
|
color: #fff;
|
|
cursor: pointer;
|
|
background: rgba(255, 255, 255, 0);
|
|
border: 1px solid #1257c9;
|
|
border-radius: 4px;
|
|
box-shadow: 1px 1px 10px 5px rgba(18, 87, 201, 1) inset;
|
|
.label {
|
|
font-size: 18px;
|
|
font-weight: 500;
|
|
}
|
|
.tips {
|
|
margin-top: 6px;
|
|
font-size: 14px;
|
|
}
|
|
.icon {
|
|
position: absolute;
|
|
right: 4px;
|
|
bottom: 4px;
|
|
width: 12px;
|
|
height: 12px;
|
|
img {
|
|
display: block;
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
}
|
|
}
|
|
|
|
.cate-list {
|
|
// padding-top: 200px;
|
|
// display: flex;
|
|
// flex-direction: column;
|
|
// justify-content: space-between;
|
|
.cate-row {
|
|
display: flex;
|
|
align-items: center;
|
|
margin-bottom: 20px;
|
|
// margin-top: 0;
|
|
.cate-col-arrow {
|
|
width: 32px;
|
|
height: 18px;
|
|
// box-sizing: border-box;
|
|
margin: 0 6px;
|
|
.analys-arrow {
|
|
display: block;
|
|
width: 32px;
|
|
height: 100%;
|
|
box-sizing: border-box;
|
|
margin: 0 auto;
|
|
}
|
|
}
|
|
.cate-col-w100 {
|
|
width: 230px;
|
|
.cate-list-w0 {
|
|
width: 0;
|
|
transition: width 0.2s;
|
|
overflow: hidden;
|
|
// border: 0;
|
|
// padding: 0;
|
|
}
|
|
.cate-list-w100 {
|
|
width: 230px;
|
|
// padding: 4px 14px 10px;
|
|
// // background: rgba(255, 255, 255, 0);
|
|
// border: 1px solid #1257C9;
|
|
// overflow: auto;
|
|
transition: width 0.2s;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.cate-list-more {
|
|
// padding-top: 300px;
|
|
.cate-row {
|
|
margin-bottom: 200px;
|
|
// margin-top: 0;
|
|
}
|
|
.cate-row:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
}
|
|
.cate-list-child {
|
|
padding-top: 60px;
|
|
}
|
|
|
|
.list {
|
|
width: 230px;
|
|
height: 165px;
|
|
box-sizing: border-box;
|
|
padding: 4px 14px 10px;
|
|
background: rgba(255, 255, 255, 0);
|
|
border: 1px solid #1257c9;
|
|
overflow: auto;
|
|
border-radius: 4px;
|
|
box-shadow: 1px 1px 10px 5px rgba(18, 87, 201, 1) inset;
|
|
.item {
|
|
display: flex;
|
|
align-items: center;
|
|
width: 100%;
|
|
box-sizing: border-box;
|
|
padding: 8px 0;
|
|
color: #fff;
|
|
border-bottom: 1px dashed rgba(131, 152, 217, 1);
|
|
.item-status {
|
|
min-width: 50px;
|
|
// height: 15px;
|
|
box-sizing: border-box;
|
|
margin-right: 8px;
|
|
padding: 4px 0 2px;
|
|
font-size: 10px;
|
|
text-align: center;
|
|
// line-height: 15px;
|
|
background: #0c5cfe;
|
|
border-radius: 2px;
|
|
&-pending,
|
|
&-canceled {
|
|
background: rgba(224, 84, 0, 1);
|
|
}
|
|
&-assigned,
|
|
&-have_order {
|
|
background: rgba(9, 163, 125, 1);
|
|
}
|
|
}
|
|
.item-content {
|
|
font-size: 14px;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.analys-col-wr {
|
|
height: 100%;
|
|
box-sizing: border-box;
|
|
padding-right: 30px;
|
|
overflow: auto;
|
|
}
|
|
.analys-col-more {
|
|
height: 560px;
|
|
}
|
|
.analys-single {
|
|
.list {
|
|
height: 235px;
|
|
}
|
|
.cate-list {
|
|
.cate-row {
|
|
margin-bottom: 0;
|
|
}
|
|
}
|
|
}
|
|
.analys-col-posi {
|
|
// .analys-up, .analys-down {
|
|
// position: absolute;
|
|
// }
|
|
.analys-up {
|
|
// top: -200px;
|
|
// left: -30px;
|
|
// margin-bottom: 160px;
|
|
}
|
|
.analys-down {
|
|
// margin-top: 160px;
|
|
// margin-bottom: 0;
|
|
// top: unset;
|
|
// bottom: -200px;
|
|
// left: -30px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.no-data {
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
height: 100%;
|
|
color: #fff;
|
|
text-align: center;
|
|
line-height: 100%;
|
|
}
|
|
.pad10 {
|
|
padding-top: 10px;
|
|
}
|
|
.list-wr::-webkit-scrollbar {
|
|
width: 8px;
|
|
// background: linear-gradient(270deg, #0063FE, #0095FF);
|
|
}
|
|
|
|
.list-wr::-webkit-scrollbar-corner,
|
|
/* 滚动条角落 */
|
|
.list-wr::-webkit-scrollbar-thumb,
|
|
.list-wr::-webkit-scrollbar-track {
|
|
/*滚动条的轨道*/
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.list-wr::-webkit-scrollbar-corner,
|
|
.list-wr::-webkit-scrollbar-track {
|
|
/* 滚动条轨道 */
|
|
|
|
background: rgba(12, 129, 254, 0.24);
|
|
// box-shadow: inset 0 0 1px rgba(180, 160, 120, 0.5);
|
|
}
|
|
|
|
.list-wr::-webkit-scrollbar-thumb {
|
|
/* 滚动条手柄 */
|
|
background: linear-gradient(270deg, #0063fe, #0095ff);
|
|
}
|
|
</style>
|
|
|