Files
foton-laws-system-front/src/pages/regulatoryRepository/standardForComments/pags/consultationDetails.vue
T
2021-12-12 14:35:44 +08:00

547 lines
16 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!--征求意见详情-->
<template>
<div class="consultationDetails">
<div class="contentTitle">
<div class="back" title="返回" @click="back">
<i class="el-icon-back"></i>
</div>
<div class="title">征求意见详情<i class="el-icon-s-order" @click="heightShow = !heightShow"></i></div>
</div>
<transition name="el-zoom-in-top">
<div v-show="heightShow" class="transition-box">
<p class="transition-box-p">
<label class="transition-box-label">标准名称:</label>
<span class="transition-box-span table-jump"
@click="handlePreview(itemData)"
>
{{ this.$route.query.item.cid }}
</span>
</p>
<!-- <p class="transition-box-p">-->
<!-- <label class="transition-box-label">标准名称:</label>-->
<!-- <span class="transition-box-span table-jump"-->
<!-- @click="handlePreview(itemData)"-->
<!-- >-->
<!-- {{ this.$route.query.item.cname || '-' }}-->
<!-- </span>-->
<!-- </p>-->
<div class="transition-box-p">
<label class="transition-box-label">附件:</label>
<div class="file-box" v-if="fileInfoList.length > 0">
<div style="display: flex;">
<div v-for="(file,item) in fileInfoList"
target="_blank"
class="transition-box-span table-jump"
@click="handleQueryPdf(file)"
:key="item">
{{ file.name }}
<el-button type="primary" class="common-button-primary" size="mini" @click="downloadFile(file.attId)">下载</el-button>
</div>
</div>
</div>
<span class="transition-box-span" v-else>-</span>
</div>
<p class="transition-box-p">
<label class="transition-box-label">上传时间:</label>
<span class="transition-box-span">{{ this.$route.query.item.startTime || '-' }}</span>
</p>
<p class="transition-box-p">
<label class="transition-box-label">征求意见周期:</label>
<span class="transition-box-span" v-if="this.$route.query.item.startTime && this.$route.query.item.endTime">{{ this.$route.query.item.startTime + ' ~ ' + this.$route.query.item.endTime }}</span>
<span class="transition-box-span" v-else>-</span>
</p>
</div>
</transition>
<div class="effect">
<el-button v-if="ideaKey" type="primary" class="common-button-primary" size="mini" @click="selectStandardPro('add')">
添加
</el-button>
<el-button type="primary" class="common-button-primary" size="mini" @click="exportAll">导出</el-button>
</div>
<div class="container">
<el-table
:data="standinfoList"
height="100%"
border
style="width: 100%"
:default-sort = "{prop: 'partCode', order: 'ascending'}"
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
fontWeight: 'bold', height: '48px'}">
<el-table-column
type="index"
label="序号"
align="center"
width="50">
</el-table-column>
<el-table-column
prop="partCode"
label="章节编号"
sortable
align="center"
width="120">
</el-table-column>
<el-table-column
prop="content"
align="center"
label="修改意见内容(包括理由或依据)"
>
<el-table-column
prop="oldText"
align="center"
label="修改前"
>
</el-table-column>
<el-table-column
prop="newText"
align="center"
label="修改后"
>
</el-table-column>
<el-table-column
prop="reason"
align="center"
label="修改理由"
>
</el-table-column>
</el-table-column>
<el-table-column
prop="deptName"
align="center"
label="提出部门"
width="170"
>
</el-table-column>
<el-table-column
prop="userName"
align="center"
width="10 0"
label="提出人"
>
</el-table-column>
<el-table-column label="操作" align="center" width="50" fixed="right" v-if="ideaKey">
<template slot-scope="scope">
<div @click.stop style="display: inline-block">
<el-dropdown trigger="click" @command="handleCommand">
<i class="iconfont">&#xe61e;</i>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-if="scope.row.userId === $store.getters.userInfo.userId" :command="[scope.row, '编辑']">
编辑
</el-dropdown-item>
<el-dropdown-item v-if="scope.row.userId === $store.getters.userInfo.userId" :command="[scope.row, '删除']">
删除
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</template>
</el-table-column>
</el-table>
</div>
<pagination
style="position: static;width: 100%;"
:page="form.page"
:total="total"
@pageChange="handlePageChange"
@pageSizeChange="handlePageSizeChange"></pagination>
<el-drawer
:title=opiniontitle
:visible.sync="isDialog"
:wrapperClosable="false"
size="1050px"
destroy-on-close
:before-close="closeDrawer"
>
<div class="demo-drawer-content add-demo">
<div class="search-area">
<el-form style="width: 100%;" :model="opinionContent" ref="formAdd" :rules="opinionContentRules" class="label-input-form">
<el-form-item label="章节编号" label-width="" prop="partCode" class="add-form-item">
<el-input v-model="opinionContent.partCode" autocomplete="off" placeholder="请输入章节编号"></el-input>
</el-form-item>
<el-form-item label="修改前" prop="oldText" label-width="" class="add-form-item">
<el-input v-model="opinionContent.oldText" autocomplete="off" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="修改后" prop="newText" label-width="" class="add-form-item">
<el-input v-model="opinionContent.newText" autocomplete="off" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="修改理由" prop="reason" label-width="" class="add-form-item">
<el-input v-model="opinionContent.reason" autocomplete="off" placeholder="请输入修改理由"></el-input>
</el-form-item>
</el-form>
</div>
<div class="demo-drawer-footer">
<el-button :loading="isSubmit" size="mini" class="common-button-primary" icon="el-icon-check" type="primary" @click="saveUserInfo">
提交
</el-button>
<el-button size="mini" class="common-button-default" icon="el-icon-close" @click="closeDrawer">取消</el-button>
</div>
</div>
</el-drawer>
<loading :loading="spinShow">数据加载中……</loading>
</div>
</template>
<script>
export default {
name: 'consultationDetails',
data() {
return {
fileInfoList: [],
itemData: this.$route.query.item,
id: '', // 选中id
type: '', // 选中状态
spinShow: false,
total: 0, // 总数
opiniontitle: '新增意见', // 抽屉标题
isDialog: false, //新增抽屉状态
heightShow: true, // 高度
isSubmit: false,
opinionContent: { // 抽屉数据
partCode: '',
oldText: '',
newText: '',
reason: ''
},
opinionContentRules: {
partCode: [
{required: true, message: '请输入章节编号', trigger: 'blur'},
],
oldText: [
{required: true, message: '请输入修改前内容', trigger: 'blur'}
],
newText: [
{required: true, message: '请输入修改后内容', trigger: 'blur'}
],
reason: [
{required: true, message: '请输入修改理由', trigger: 'blur'}
],
},
standinfoList: [], // 详情列表
form: {
ideaId: this.$route.query.item.id,
cid: this.$route.query.item.cid,
page: 1,
size: this.$store.getters.userInfo.configContent,
userId: this.$store.getters.userInfo.userId,
endTime: this.$route.query.item.endTime
}, // 详情数据
ideaKey: false
}
},
methods: {
downloadFile (attId) {
window.location.href = '/api/att/attFile/downloadFileForSar?fileId=' + attId
},
// 点击查看
handlePreview(item) {
let routeUrl = this.$router.resolve({
name: 'OtherStandardDetails',
params: {
id: item.standId,
pageType: 'INLAND_STAND'
}
})
window.open(routeUrl.href, '_blank')
},
exportAll() {
window.open('/api/slrs/sar-public-idea-all/tuallStand?cid=' + this.$route.query.item.cid)
},
getIdeaKey() {
this.$http.get('slrs/sar-public-idea-all/checkIsShow', {
endTime: this.form.endTime
}, {}, res => {
if (res.message === '1') {
this.ideaKey = false
} else {
this.ideaKey = true
}
})
},
// 获取详情信息列表
getList() {
this.spinShow = true
this.$http.get('slrs/sar-public-idea-all/getAllStand', this.form, {
_this: this
}, res => {
this.standinfoList = res.data.records
this.total = res.data.total
this.spinShow = false
}, e => {
})
},
//分页数据改变
handlePageChange(page) {
this.form.page = page
this.getList()
},
handlePageSizeChange(pageSize) {
this.$store.getters.userInfo.configContent = pageSize
this.form.size = pageSize
this.getList()
},
back() {
this.$router.push({
name: 'standardForComments'
})
},
// 更多
handleCommand(command) {
switch (command[1]) {
case '编辑':
this.selectStandardPro('edit', command[0])
break
case '删除':
this.deleteStand(command[0].id)
break
}
},
//编辑
selectStandardPro(type, row) {
this.type = type
if (type === 'edit') {
this.id = row.id
this.opiniontitle = '编辑意见内容'
this.opinionContent.partCode = row.partCode
this.opinionContent.reason = row.reason
this.opinionContent.oldText = row.oldText
this.opinionContent.newText = row.newText
} else {
this.id = ''
this.opiniontitle = '新增意见'
this.opinionContent.partCode = ''
this.opinionContent.reason = ''
this.opinionContent.oldText = ''
this.opinionContent.newText = ''
}
this.isDialog = true
},
//删除
deleteStand(id) {
this.$confirm('确认删除这些意见?', '提示', {
confirmButtonText: '确定',
confirmButtonClass: 'common-button-primary',
cancelButtonText: '取消',
type: 'warning',
roundButton: false
}).then(() => {
var form = {
id: id,
autUserId: this.$store.getters.userInfo.userId,
userId: this.$store.getters.userInfo.userId
}
this.$http.get('slrs/sar-public-idea-all/deleteStand', form, {
_this: this
}, res => {
this.$message.warning(res.message)
this.form.page = 1
this.getList()
})
//确认事件
}).catch(() => {
this.$message.warning('取消删除')
//取消事件
})
},
//点击抽屉按钮提交事件
saveUserInfo() {
this.$refs['formAdd'].validate((valid) => {
if (valid) {
var url = ''
var form = {
ideaId: this.$route.query.item.id,
cid: this.$route.query.item.cid,
content: this.opinionContent.content,
oldText: this.opinionContent.oldText,
newText: this.opinionContent.newText,
reason: this.opinionContent.reason,
partCode: this.opinionContent.partCode,
userId: this.$store.getters.userInfo.userId || '',
userName: this.$store.getters.userInfo.userName || '',
deptName: this.$store.getters.userInfo.orgName || '',
deptId: this.$store.getters.userInfo.orgId || ''
}
if (this.type === 'edit') {
form.id = this.id
form.autUserId = this.$store.getters.userInfo.userId
url = 'slrs/sar-public-idea-all/updateStand'
} else {
url = 'slrs/sar-public-idea-all/insetStand'
}
this.$http.post(url, form, {
_this: this
}, res => {
if (res.respCode === '200') {
this.form.page = 1
this.getList()
}
})
this.isDialog = false
}
})
},
//点击抽屉按钮取消事件
closeDrawer() {
this.isDialog = false
},
getFileInfo() {
JSON.parse(this.$route.query.item.files).forEach(item=>{
this.fileInfoList.push({
attId: item.attId,
id: item.id,
name: item.fileName
})
})
},
handleQueryPdf(file){
window.open('/static/pdf/web/viewer.html?file=' + encodeURIComponent('/api/att/attFile/getFileInfo?fileId=' + file.attId))
}
},
mounted() {
this.getList()
this.getIdeaKey()
this.getFileInfo()
}
}
</script>
<style lang="less" scoped>
@import '~@/assets/styles/mixins';
@import '~@/assets/styles/style';
.consultationDetails {
height: 100%;
display: flex;
flex-direction: column;
.iconClass {
width: 18px;
height: 18px;
}
.contentTitle {
display: flex;
align-items: center;
padding: 0 10px;
height: 50px;
background: #ffffff;
.title {
flex: 1;
font-weight: bold;
font-size: 20px;
margin-left: 15px;
.el-icon-s-order {
font-size: 22px;
color: #4498F0;
cursor: pointer;
}
}
}
.transition-box {
padding: 0 10px;
background: #ffffff;
font-size: 14px;
.transition-box-p {
line-height: 35px;
.transition-box-label {
display: inline-block;
width: 100px;
vertical-align: top;
}
.transition-box-span {
display: inline-block;
width: calc(~'100% - 100px');
}
.file-box {
display: inline-block;
width: calc(~'100% - 100px');
.transition-box-span {
display: inline;
width: 100%;
cursor: pointer;
color: #4498f0;
}
p {
& > a {
cursor: pointer;
}
& > i {
display: inline-block;
margin-left: 3px;
width: 18px;
height: 16px;
background-repeat: no-repeat;
background-size: 100% 100%;
background-position: center center;
vertical-align: sub;
cursor: pointer;
}
.icon-download {
background-image: url("~assets/images/shangqi/img/download.png");
}
.icon-download2 {
background-image: url("~assets/images/shangqi/img/download2.png");
}
}
}
}
}
.effect {
margin: 10px 10px 0 0;
}
.container {
height: calc(~'100% - 52px - 55px - 50px');
flex: auto;
display: flex;
margin: 10px 0;
flex-direction: column;
padding: 0;
.el-tabs {
height: 100%;
display: flex;
flex-direction: column;
flex: auto;
/deep/ .el-tabs__content {
//height: calc(~'100% - 55px');
overflow-y: auto;
flex: auto;
display: flex;
flex-direction: column;
.el-tab-pane {
height: 100%;
flex: auto;
display: flex;
flex-direction: column;
}
}
}
}
.add-demo {
.search-area {
height: 100%;
}
::v-deep .el-textarea__inner {
width: 1000px;
}
}
}
</style>