城阳运营端pc前端代码
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.
 
 
 
 

417 lines
11 KiB

<template>
<div>
<div v-show="showDetail">
<el-card shadow="never"
class="aui-card--fill">
<div class="mod-demo__demo}">
<div class="div_info_item">
<span class="span_item_title">项目标题:</span>
<span>{{info.projectTitle}}</span>
</div>
<div class="div_info_item">
<span class="span_item_title">项目内容:</span>
<span v-if="info.projectContent">{{info.projectContent}}</span>
<span v-else>无</span>
</div>
<div class="div_info_item">
<span class="span_item_title">上报时间:</span>
<span v-if="info.reportTime">{{info.reportTime}}</span>
<span v-else>无</span>
</div>
<div class="div_info_item">
<span class="span_item_title">上报人:</span>
<span v-if="info.reportUserName">{{info.reportUserName}}</span>
<span v-else>无</span>
</div>
<div class="div_info_item">
<span class="span_item_title">电话:</span>
<span v-if="info.mobile">{{info.mobile}}</span>
<span v-else>无</span>
</div>
<div class="div_info_item">
<span class="span_item_title">地点:</span>
<span v-if="info.reportAddress">{{info.reportAddress}}</span>
<span v-else>无</span>
</div>
<div class="div_info_item">
<span class="span_item_title">所属分类:</span>
<span v-if="info.categoryName">{{info.categoryName}}</span>
<span v-else>无</span>
</div>
</div>
<div class="div_process">
<div class="m-list"
v-show="info.processList.length>0">
<div class="title">处理进展</div>
<div class="list">
<div :class="['item',{'z-on': index===0}]"
v-for="(item,index) in info.processList"
:key="index">
<div class="name">【{{ item.operationShow}}】</div>
<div class="date">
<span>{{ item.reponseTime }}</span>
</div>
<div class="detail">
<span class="detail-field">处理部门:</span>
<span class="detail-value">{{ item. handleDeptName }}</span>
</div>
<div class="detail">
<span class="detail-field">处理意见:</span>
<span class="detail-value">
<span>{{ item.suggestion}}</span>
</span>
</div>
<div class="detail">
<el-upload class="upload-demo"
:disabled="true"
action=""
:on-preview="handleFileDownload"
:limit="50"
:file-list="item.attachments">
</el-upload>
<!-- <attachment-list list="{{item.attachments}}" /> -->
</div>
</div>
</div>
</div>
</div>
</el-card>
</div>
<div v-show="!showDetail">
<el-button class="btn_close"
@click="closePic()"
type="primary">返回</el-button>
<img :src="previewPath"
alt=""
style="width:100%;height:100%" />
<!-- <vedio :src="previewPath"></vedio> -->
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // 引入Loading服务
import { requestPost } from '@/js/dai/request'
let loading // 加载动画
export default {
data () {
return {
projectId: "",//项目id
formData: {},
showDetail: true,
//查询条件标题宽度
labelWidth: '100px',
info: {
projectTitle: "",//标题
projectId: "",//项目id
projectContent: "",//议题内容,其实就是项目内容
imgList: "",//图片列表
reportTime: "",//上报时间,对应的是立项时间;格式:yyyy-MM-dd HH:mm
categoryName: "",//所属类别名称
reportUserId: "",//上报人Id
reportUserRoleSet: "",//上报人角色列表,grid_member:网格员;
reportUserName: "",//上报人名称;山东路-尹女士
mobile: "",//上报人电话
reportAddress: "",//上报位置
processList: [],//
},
previewPath: ''
}
},
mounted () {
},
methods: {
setShowDetail () {
if (!this.showDetail) {
this.showDetail = true
}
},
async initData (projectId) {
this.startLoading()
this.projectId = projectId
await this.loadDetail()//获取项目详情
this.endLoading()
},
async loadDetail () {
const url = '/data/report/screen/project/projectdetailv2'
const params = {
projectId: this.projectId
}
// const params = {
// projectId: "440dfb6f22d9860fb1c2d1fc044a901f"
// }
const { data, code, msg } = await requestPost(url, params)
if (msg === "success" && code === 0 && data.length > 0) {
this.info = data[0]
// info = copyKeyHave(info, data[0]);
this.info.processList.forEach(element => {
//关闭:close; 回应 response,结案closed_case,退回return,部门流转transfer,创建项目created
if (element.operation === 'close') {
element.operationShow = '关闭'
} else if (element.operation === 'response') {
element.operationShow = '回应'
} else if (element.operation === 'closed_case') {
element.operationShow = '结案'
} else if (element.operation === 'return') {
element.operationShow = '退回'
} else if (element.operation === 'transfer') {
element.operationShow = '部门流转'
} else if (element.operation === 'created') {
element.operationShow = '创建项目'
}
element.attachments.forEach(attachItem => {
attachItem.name = attachItem.fileName
attachItem.url = attachItem.attachmentUrl
attachItem.type = attachItem.attachmentType
attachItem.format = attachItem.attachmentFormat
});
});
}
},
//下载
handleFileDownload (file) {
// if (file.format === 'jpg' || file.format === 'png' || file.format === 'gif') {
// this.showDetail = false
// this.previewPath = file.url
// } else {
var a = document.createElement('a');
var event = new MouseEvent('click');
a.download = file.name;
a.target = "_blank"//打开新的标签页
a.href = file.url;
a.dispatchEvent(event);
// }
},
closePic () {
this.showDetail = true
},
// 开启加载动画
startLoading () {
loading = Loading.service({
lock: true, // 是否锁定
text: '正在加载……', // 加载中需要显示的文字
background: 'rgba(0,0,0,.7)' // 背景颜色
})
},
// 结束加载动画
endLoading () {
// clearTimeout(timer);
if (loading) {
loading.close()
}
}
},
computed: {
tableHeight () {
return this.clientHeight - 60 - 80 - 80 - 100
},
...mapGetters(['clientHeight', 'env'])
},
components: {},
activated () {
this.$nextTick(() => {
this.$refs.ref_table.doLayout() // 解决表格错位
})
},
}
</script>
<style lang="scss" scoped>
.div_info_item {
line-height: 25px;
padding: 10px;
font-size: 15px;
display: flex;
.span_item_title {
flex: 0 0 100px;
text-align: right;
display: inline-block;
}
}
.div_process {
padding: 0 10px 10px 10px;
}
.m-list {
position: relative;
margin-top: 10px;
padding-bottom: 15px;
background-color: #ffffff;
.title {
line-height: 40px;
border-bottom: 1px solid #e7eeee;
font-size: 18px;
font-family: PingFang SC;
font-weight: 500;
color: rgba(51, 51, 51, 1);
}
.more-btn {
position: absolute;
z-index: 1;
top: 10px;
right: 10px;
line-height: 25px;
font-size: 14px;
font-family: PingFang SC;
font-weight: 500;
color: rgba(12, 74, 157, 1);
}
.list {
position: relative;
box-sizing: border-box;
margin-top: 15px;
margin-left: 25px;
padding: 0 0 0 15px;
border-left: 1px solid #e7eeee;
&::before {
content: "";
position: absolute;
z-index: 1;
display: block;
top: -1px;
left: -1px;
width: 2px;
height: 10px;
background-color: #ffffff;
}
.item {
position: relative;
z-index: 2;
margin-bottom: 5px;
padding-bottom: 5px;
border-bottom: 1px solid #e7eeee;
&::before {
content: "";
display: block;
position: absolute;
top: 9px;
left: -20px;
width: 10px;
height: 10px;
background: #999;
border-radius: 100%;
}
&.z-on {
&::before {
background: rgba(230, 0, 0, 1);
}
}
&:last-child {
margin-bottom: 0;
padding-bottom: 0;
border-bottom: none;
}
.btn {
position: absolute;
top: 0;
right: 0;
width: 47px;
height: 20px;
line-height: 20px;
text-align: center;
background: rgba(255, 255, 255, 1);
border: 1px solid rgba(153, 153, 153, 1);
border-radius: 10px;
font-size: 13px;
font-family: PingFang SC;
font-weight: 500;
color: rgba(153, 153, 153, 1);
}
.name {
position: relative;
margin-bottom: 5px;
margin-left: -7px;
line-height: 25px;
font-size: 16px;
font-family: PingFang SC;
font-weight: 500;
color: rgba(51, 51, 51, 1);
}
.date {
line-height: 20px;
font-size: 13px;
font-family: PingFang SC;
font-weight: 500;
color: rgba(153, 153, 153, 1);
}
.detail {
font-size: 14px;
font-family: PingFang SC;
font-weight: 500;
line-height: 25px;
.detail-field {
width: 22%;
text-align: justify;
text-align-last: justify;
color: rgba(153, 153, 153, 1);
}
.detail-value {
width: 78%;
color: #333333;
.detail-link {
display: inline;
color: #0c4a9d;
}
}
}
}
}
}
.btn_close {
display: flex;
justify-content: flex-end;
margin-bottom: 10px;
}
</style>