384 lines
14 KiB
Vue
384 lines
14 KiB
Vue
<template>
|
|
<div>
|
|
|
|
<template name="提案基本信息">
|
|
<div class="van-cell-group__title">
|
|
<div class="van-sidebar-item van-sidebar-item--select">
|
|
提案基本信息
|
|
</div>
|
|
</div>
|
|
<van-cell-group>
|
|
<van-collapse v-model="secondedActiveNames" :border="false" accordion>
|
|
<van-collapse-item name="1">
|
|
<template #title>
|
|
<div>提案名称  {{ viewData.proposalName }}
|
|
<van-icon name="question-o"/>
|
|
</div>
|
|
</template>
|
|
<van-cell :value="viewData.proposalCode" title="提案编号"></van-cell>
|
|
<van-cell title="提案时间">{{ viewData.createTime }}</van-cell>
|
|
<van-cell title="教代会届次">{{ viewData.meetingName }}</van-cell>
|
|
<van-cell title="代表工会">{{ viewData.unionName }}</van-cell>
|
|
<van-cell title="代表团名称">{{ viewData.delegationName }}</van-cell>
|
|
<van-cell title="提案类型">{{ viewData.typeName }}</van-cell>
|
|
<van-cell title="提案方式">{{ viewData.mannerName }}</van-cell>
|
|
<van-cell title="立案结果">{{ viewData.resultName ? viewData.resultName : '暂无' }}</van-cell>
|
|
<van-cell title="建议落实部门">{{ viewData.implementUnitName || '暂无' }}</van-cell>
|
|
<van-cell title="提案状态"><span :style="'color:'+viewData.stateColor">{{ viewData.stateName }}</span>
|
|
</van-cell>
|
|
</van-collapse-item>
|
|
<van-cell title="提  案  人">
|
|
{{ viewData.createUserName }}({{ viewData.loginname }})
|
|
</van-cell>
|
|
|
|
|
|
<van-collapse-item v-if="viewData.undertake&&viewData.undertake.length>0" name="3" title="承办单位">
|
|
<span v-if="!viewData.undertake">暂未分配</span>
|
|
<van-cell v-for="(item,index) in viewData.undertake" v-else
|
|
:title="item.undertakeType === 1 ? '主办' : '协办'">
|
|
{{ item.unitName }}
|
|
</van-cell>
|
|
</van-collapse-item>
|
|
|
|
<van-collapse-item name="4" title="案  由">
|
|
<span v-html="viewData.brief"></span>
|
|
</van-collapse-item>
|
|
|
|
<van-collapse-item name="5" title="建议措施">
|
|
<span v-html="viewData.measures"></span>
|
|
</van-collapse-item>
|
|
|
|
</van-collapse>
|
|
|
|
|
|
<van-collapse v-model="createUserSignNames" :border="false" v-if="viewData.createUserSign">
|
|
<van-collapse-item name="1" title="签  字">
|
|
<van-image width="200" height="100" :src="viewData.createUserSign" v-if="viewData.createUserSign"/>
|
|
<span v-else>暂无</span>
|
|
</van-collapse-item>
|
|
</van-collapse>
|
|
|
|
|
|
<!-- <van-cell title="附件">
|
|
<div v-for="(obj,index) in viewData.files" class="text-nowrap color-puple"
|
|
@click="previewFile(obj.filepath,obj.filename,viewData.files,index)">
|
|
{{ obj.filename }}
|
|
</div>
|
|
</van-cell>-->
|
|
</van-cell-group>
|
|
</template>
|
|
|
|
<template v-if="viewData.seconded" name="附议信息">
|
|
<div class="van-cell-group__title">
|
|
<div class="van-sidebar-item van-sidebar-item--select">
|
|
附议信息
|
|
</div>
|
|
</div>
|
|
<van-collapse v-model="secondedNames" :border="false">
|
|
<van-collapse-item name="1" title="附  议  人">
|
|
<van-cell v-for="(item,index) in viewData.seconded"
|
|
:value="item.isAgree === true ? '同意' : item.isAgree === false ? '拒绝' : '未附议'">
|
|
<template #title>
|
|
<span>{{ item.username }}({{ item.unitname }})</span>
|
|
</template>
|
|
</van-cell>
|
|
</van-collapse-item>
|
|
</van-collapse>
|
|
</template>
|
|
|
|
|
|
<template v-if="viewData.delegationAudit&&viewData.delegationAudit.length>0" name="团长审核信息">
|
|
<div class="van-cell-group__title">
|
|
<div class="van-sidebar-item van-sidebar-item--select">
|
|
团长审核信息
|
|
</div>
|
|
</div>
|
|
<van-cell-group v-for="(item,index) in viewData.delegationAudit" class="info">
|
|
<van-cell title="审核时间">{{ item.auditTime }}</van-cell>
|
|
<van-cell title="审核结果">{{ item.flag ? '通过' : '退回' }}</van-cell>
|
|
<van-cell title="审核意见">{{ item.opinion }}</van-cell>
|
|
<van-cell title="签  字" v-if="item.auditSign">
|
|
<van-image width="200" height="100" :src="item.auditSign" v-if="item.auditSign"/>
|
|
<span v-else>暂无</span>
|
|
</van-cell>
|
|
|
|
</van-cell-group>
|
|
</template>
|
|
|
|
<template v-if="viewData.secretaryAudit&&viewData.secretaryAudit.length>0" name="提案委员会立案信息">
|
|
<div class="van-cell-group__title">
|
|
<div class="van-sidebar-item van-sidebar-item--select">
|
|
提案委员会立案信息
|
|
</div>
|
|
</div>
|
|
<van-cell-group v-for="item in viewData.secretaryAudit" class="info">
|
|
<van-cell title="审核时间">{{ item.auditTime }}</van-cell>
|
|
<van-cell title="立案编号">{{ viewData.caseCode }}</van-cell>
|
|
<van-cell title="审核结果">{{ viewData.resultName }}</van-cell>
|
|
<van-cell v-if="!viewData.undertake" title="承办单位">暂未分配</van-cell>
|
|
<van-collapse v-else v-model="undertakeActiveNames">
|
|
<van-collapse-item name="1" title="承办单位">
|
|
<van-cell v-for="(item,index) in viewData.undertake"
|
|
:title="item.undertakeType === 1 ? '主办' : '协办'">
|
|
{{ item.unitName }}
|
|
</van-cell>
|
|
</van-collapse-item>
|
|
</van-collapse>
|
|
<van-cell title="审核意见">{{ item.opinion }}</van-cell>
|
|
|
|
</van-cell-group>
|
|
</template>
|
|
|
|
<template v-if="viewData.caseAudit" name="确认承办单位">
|
|
<div class="van-cell-group__title">
|
|
<div class="van-sidebar-item van-sidebar-item--select">
|
|
确认承办单位
|
|
</div>
|
|
</div>
|
|
<van-cell-group class="info">
|
|
<van-cell title="审核时间">{{ viewData.caseAudit.auditTime }}</van-cell>
|
|
<van-cell title="立案结果">{{ viewData.resultName }}</van-cell>
|
|
<van-collapse v-model="undertakeActiveNames">
|
|
<van-collapse-item name="2" title="承办单位">
|
|
<span v-if="!viewData.undertake">暂未分配</span>
|
|
<van-cell v-for="(item,index) in viewData.undertake" v-else
|
|
:title="item.undertakeType === 1 ? '主办' : '协办'">
|
|
{{ item.unitName }}
|
|
</van-cell>
|
|
</van-collapse-item>
|
|
</van-collapse>
|
|
<van-cell title="审核意见">{{ viewData.caseAudit.opinion }}</van-cell>
|
|
|
|
</van-cell-group>
|
|
</template>
|
|
|
|
<template v-if="viewData.makeLeader" name="分管校领导批示信息">
|
|
<div class="van-cell-group__title">
|
|
<div class="van-sidebar-item van-sidebar-item--select">
|
|
分管校领导批示信息
|
|
</div>
|
|
</div>
|
|
<van-cell-group class="info">
|
|
<van-collapse v-model="undertakeActiveNames">
|
|
<van-collapse-item v-for="(v,k) in viewData.makeLeader" name="3">
|
|
<!--({{ v[0].undertakeType === 1 ? '主办' : '协办' }}) -->
|
|
<template #title>
|
|
{{ v[0].unitName }}
|
|
</template>
|
|
<template v-for="item in v">
|
|
<van-cell title="批示时间"> {{ item.auditTime }}</van-cell>
|
|
<van-cell title="批示意见"> {{ item.opinion }}</van-cell>
|
|
</template>
|
|
</van-collapse-item>
|
|
</van-collapse>
|
|
</van-cell-group>
|
|
</template>
|
|
|
|
<template v-if="viewData.replyInfo && viewData.replyInfo.length>0 && viewData.replyInfo.some(v=>v.isReply)"
|
|
name="承办单位答复">
|
|
<div class="van-cell-group__title">
|
|
<div class="van-sidebar-item van-sidebar-item--select">
|
|
承办单位答复信息
|
|
</div>
|
|
</div>
|
|
<van-cell-group class="info">
|
|
<van-collapse v-model="undertakeActiveNames">
|
|
<van-collapse-item v-for="item in viewData.replyInfo" :name="item.unitName">
|
|
<template #title>
|
|
{{ item.unitName }}
|
|
</template>
|
|
<van-cell title="答复时间"> {{ item.replyTime }}</van-cell>
|
|
<van-cell title="落实情况"> {{ item.implementState }}</van-cell>
|
|
<van-cell title="答复信息">
|
|
<span v-html="item.replyContent"></span>
|
|
</van-cell>
|
|
<van-panel>
|
|
<template #header>
|
|
<div class="van-cell van-panel__header">
|
|
<div class="van-cell__title">
|
|
附件
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<div style="padding: 5px 16px">
|
|
<upload v-if="item.replyFiles&&item.replyFiles.length>0" :del="false" :files.sync="item.files"
|
|
view></upload>
|
|
<span v-else>暂无</span>
|
|
</div>
|
|
</van-panel>
|
|
</van-collapse-item>
|
|
</van-collapse>
|
|
</van-cell-group>
|
|
</template>
|
|
|
|
<template v-if="viewData.feedback&&viewData.feedback.length>0" name="反馈评分信息">
|
|
<div class="van-cell-group__title">
|
|
<div class="van-sidebar-item van-sidebar-item--select">
|
|
反馈评分信息
|
|
</div>
|
|
</div>
|
|
<van-cell-group class="info">
|
|
<template v-for="item in viewData.feedback">
|
|
<van-cell title="反馈时间">{{ item.feedbackTime }}</van-cell>
|
|
<van-cell title="反馈结果">{{ item.feedbackResult }}</van-cell>
|
|
<van-cell title="反馈意见"><span v-html="item.feedbackOpinion"></span></van-cell>
|
|
<van-panel>
|
|
<template #header>
|
|
<div class="van-cell van-panel__header">
|
|
<div class="van-cell__title">
|
|
附件
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<div style="padding: 5px 16px">
|
|
<upload :del="false" :files.sync="item.files" view></upload>
|
|
</div>
|
|
</van-panel>
|
|
</template>
|
|
</van-cell-group>
|
|
</template>
|
|
|
|
<template v-if="handle">
|
|
<div id="wechat_proposal_handle">
|
|
<slot name="handle"></slot>
|
|
</div>
|
|
</template>
|
|
|
|
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
|
|
function removeHTMLTag(str) {
|
|
str = str.replace(/<\/?[^>]*>/g, ''); //去除HTML tag
|
|
str = str.replace(/[ | ]*\n/g, '\n'); //去除行尾空白
|
|
str = str.replace(/\n[\s| | ]*\r/g, '\n'); //去除多余空行
|
|
str = str.replace(/ /ig, '');//去掉
|
|
return str;
|
|
}
|
|
|
|
|
|
module.exports = {
|
|
data() {
|
|
return {
|
|
activeName: 1,
|
|
secondedActiveNames: '',
|
|
secondedNames: [],
|
|
createUserSignNames: [],
|
|
undertakeActiveNames: [],
|
|
briefActiveNames: [],
|
|
viewData: {},
|
|
}
|
|
},
|
|
props: {
|
|
handle: {
|
|
type: Boolean,
|
|
default: false,
|
|
},
|
|
title: {
|
|
type: String,
|
|
default: '审核'
|
|
},
|
|
proposal_id: String
|
|
// pid:String
|
|
},
|
|
mounted() {
|
|
|
|
},
|
|
components: {
|
|
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
|
|
'upload': httpVueLoader('/components/plugins/VantFileUpload.vue'),
|
|
},
|
|
methods: {
|
|
async openView(id) {
|
|
this.viewData = await getProposalInfo(id)
|
|
if (this.viewData.files) {
|
|
this.viewData.files = JSON.parse(this.viewData.files)
|
|
}
|
|
if (this.viewData.replyInfo) {
|
|
const keys = Object.keys(this.viewData.replyInfo)
|
|
|
|
keys.map(k => {
|
|
if (this.viewData.replyInfo[k].replyFiles != null) {
|
|
this.viewData.replyInfo[k].replyFiles = JSON.parse(this.viewData.replyInfo[k].replyFiles)
|
|
}
|
|
})
|
|
if (this.viewData.feedback && this.viewData.feedback.length > 0) {
|
|
this.viewData.feedback.map(v => {
|
|
v.files = JSON.parse(v.files)
|
|
})
|
|
}
|
|
}
|
|
|
|
this.activeName = this.handle ? "999" : "1"
|
|
},
|
|
previewFile(filepath, filename, fileList, index) {
|
|
const doctype = ['doc', 'docx', 'xls', 'xlsx'];
|
|
const pictype = ['jpg', 'png', 'gif', 'jpeg'];
|
|
let filetype = filepath.substring(filepath.lastIndexOf('.') + 1, filepath.length);
|
|
if (doctype.indexOf(filetype) > -1) {
|
|
const pdfpath = 'https://' + window.location.hostname + '/assets/platform/plugins/pdf/web/viewer.html?file=' +
|
|
encodeURIComponent("/platform/base/Common/preview?filepath=" + filepath + "&filename=" + filename);
|
|
window.open(pdfpath);
|
|
} else if (pictype.indexOf(filetype) > -1) {
|
|
let ele = document.createElement("div");
|
|
fileList.forEach(v => {
|
|
let fp = v.filepath.substring(v.filepath.lastIndexOf('.') + 1, v.filepath.length);
|
|
if (pictype.indexOf(fp) > -1) {
|
|
const image = new Image();
|
|
const src = FILE_DOMAIN + v.filepath
|
|
image.src = src
|
|
image.alt = v.filename
|
|
ele.appendChild(image);
|
|
}
|
|
})
|
|
const viewer = new Viewer(ele, {
|
|
title: function (img, obj) {
|
|
return img.getAttribute("alt");
|
|
}
|
|
});
|
|
viewer.show();
|
|
} else {
|
|
alert('该文件不支持在手机端预览')
|
|
}
|
|
}
|
|
},
|
|
watch: {
|
|
'handle'(val) {
|
|
if (val === true) {
|
|
this.$nextTick(() => {
|
|
window.scrollTo(0, document.getElementById('wechat_proposal_handle').offsetTop)
|
|
})
|
|
|
|
}
|
|
}
|
|
},
|
|
async created() {
|
|
await this.openView(this.proposal_id)
|
|
if (this.handle) {
|
|
window.scrollTo(0, document.getElementById('wechat_proposal_handle').offsetTop)
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
.van-cell__value {
|
|
color: #323233 !important;
|
|
}
|
|
|
|
.van-cell-group__title {
|
|
padding-left: 0 !important;
|
|
}
|
|
|
|
.van-sidebar-item {
|
|
font-size: 16px !important;
|
|
text-indent: 4px !important;
|
|
}
|
|
|
|
.van-sidebar-item--select::before {
|
|
left: 5px !important;
|
|
}
|
|
|
|
</style> |