first commit
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,245 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-tab-plus :tabs="tabs">
|
||||
<template #basic-info>
|
||||
<el-descriptions border>
|
||||
<el-descriptions-item label="提案名称" span="3">
|
||||
<div style="font-weight:bold;">
|
||||
{{ viewData.proposalName }}
|
||||
</div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="提案编号">{{ viewData.proposalCode }}</el-descriptions-item>
|
||||
<el-descriptions-item label="提案人">{{
|
||||
viewData.createUserName + '-' + viewData.loginname
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="提案时间">{{ viewData.createTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="教代会届次"> {{ viewData.meetingName || '暂无' }}</el-descriptions-item>
|
||||
<el-descriptions-item label="提案人工会">{{ viewData.unionName }}</el-descriptions-item>
|
||||
<el-descriptions-item :label="viewData.mannerCode!=='W03'?'代表团名称':'委员会名称'">
|
||||
{{ viewData.mannerCode !== 'W03' ? viewData.delegationName : viewData.committeeName }}
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="提案类型">{{ viewData.typeName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="立案结果" span="2"> {{
|
||||
viewData.resultName ? viewData.resultName : '暂无'
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="提案方式" >{{ viewData.mannerName }}</el-descriptions-item>-->
|
||||
<!-- <el-descriptions-item label="建议落实部门" >{{ viewData.implementUnitName }}</el-descriptions-item>-->
|
||||
|
||||
<el-descriptions-item label="提案内容" span="3">
|
||||
<div class="text-left" v-html="viewData.brief"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="可行性分析" span="3">
|
||||
<div class="text-left" v-html="viewData.measures"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="签  字" span="3">
|
||||
<el-image v-if="viewData.createUserSign" :src="viewData.createUserSign" class="item-sign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<file-upload v-if="viewData.files&&viewData.files.length"
|
||||
:files="viewData.files" :view="true"></file-upload>
|
||||
<slot name="seconded"></slot>
|
||||
</template>
|
||||
<template #conjoin-info>
|
||||
<el-table :data="viewData.conJoinList" border>
|
||||
<el-table-column prop="proposalCode" label="提案编号"></el-table-column>
|
||||
<el-table-column prop="username" label="提案人"></el-table-column>
|
||||
<el-table-column prop="proposalName" label="提案名称">
|
||||
<template slot-scope="{row}">
|
||||
<span @click="openView(row.id)"
|
||||
style="color: #236eb4; cursor: pointer; text-decoration: underline">{{ row.proposalName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
<template #seconded-info>
|
||||
<el-table :data="viewData.seconded" border>
|
||||
<el-table-column prop="username" label="姓名"></el-table-column>
|
||||
<el-table-column prop="unitname" label="单位"></el-table-column>
|
||||
<el-table-column label="邀请时间" prop="inviteTime">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.inviteTime }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="secondedTime" label="附议时间"></el-table-column>
|
||||
<el-table-column prop="isAgree" label="附议结果">
|
||||
<template slot-scope="{row}">
|
||||
<template v-if="row.isAgree==null">
|
||||
<span class="text-muted">未附议</span>
|
||||
</template>
|
||||
<template v-else>
|
||||
<span v-if="row.isAgree" class="text-success">同意</span>
|
||||
<span v-else class="text-danger">拒绝</span>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column header-align="center" align="center" prop="signData" label="附议人签字">
|
||||
<template slot-scope="{row}">
|
||||
<el-image class="item-sign" :src="row.signData" fit="contain" v-if="row.signData"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
<template #delegation-audit-info>
|
||||
<el-descriptions border>
|
||||
<template v-for="(o,i) in viewData.delegationAudit">
|
||||
<el-descriptions-item label="审核人">{{ o.username + '-' + o.loginName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ o.auditTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核结果">
|
||||
{{ o.flag ? '通过' : '退回' }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3" label="审核意见">{{ o.opinion }}</el-descriptions-item>
|
||||
<el-descriptions-item span="3" label="团长签字">
|
||||
<template>
|
||||
<image class="item-sign" :src="o.auditSign " fit="contain" v-if="o.auditSign"></image>
|
||||
<span v-else>暂无</span>
|
||||
</template>
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
</el-descriptions>
|
||||
</template>
|
||||
</el-tab-plus>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
name: "ProposalInfoPlus",
|
||||
props: {},
|
||||
components: {
|
||||
'el-tab-plus': httpVueLoader('/components/plugins/ELTabPlus.vue'),
|
||||
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tabs: [
|
||||
{
|
||||
name: '用户管理',
|
||||
refName: 'one',
|
||||
},
|
||||
{
|
||||
name: '配置管理',
|
||||
refName: 'two',
|
||||
},
|
||||
{
|
||||
name: '角色管理',
|
||||
refName: 'three',
|
||||
},
|
||||
{
|
||||
name: '角色管理2',
|
||||
refName: 'four',
|
||||
},
|
||||
],
|
||||
tabName: 'one',
|
||||
hostUnit: '',
|
||||
helpUnit: [],
|
||||
unitOptions: [],
|
||||
activeName: '1',
|
||||
activeCollapse: '',
|
||||
loading: true,
|
||||
viewData: {},
|
||||
config: {}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async openView(id) {
|
||||
this.viewData = await proposal.getProposalInfo(id)
|
||||
const {files, feedback, caseAudit, resultCode} = this.viewData
|
||||
this.helpUnit = []
|
||||
if (caseAudit != null && resultCode !== "notGive" && caseAudit.other != null) {
|
||||
const other = JSON.parse(caseAudit.other)
|
||||
if (this.unitOptions.find(v => v.id === other.hostUnit)) {
|
||||
this.hostUnit = this.unitOptions.find(v => v.id === other.hostUnit).unitName
|
||||
if (other.helpUnit && other.helpUnit.length > 0) {
|
||||
other.helpUnit.forEach((v, i) => {
|
||||
const helpUnit = this.unitOptions.find(z => other.helpUnit[i] === z.id).unitName
|
||||
this.helpUnit.push(helpUnit)
|
||||
})
|
||||
this.helpUnit = this.helpUnit.join('、')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (files) {
|
||||
this.viewData.files = JSON.parse(files)
|
||||
}
|
||||
|
||||
if (feedback) {
|
||||
this.viewData.feedback.map(v => {
|
||||
v.files = JSON.parse(v.files)
|
||||
})
|
||||
}
|
||||
|
||||
this.activeName = this.handle ? "999" : "1"
|
||||
|
||||
this.formatTab()
|
||||
|
||||
},
|
||||
formatTab() {
|
||||
let tabs = []
|
||||
tabs.push({name: '提案基础信息', refName: 'basic-info'})
|
||||
if (this.viewData.isConjoin !== 0) {
|
||||
tabs.push({name: '提案并案信息', refName: 'conjoin-info'})
|
||||
}
|
||||
if (this.viewData.seconded) {
|
||||
tabs.push({name: '附议信息', refName: 'seconded-info'})
|
||||
}
|
||||
if (this.viewData.delegationAudit && this.viewData.delegationAudit.length > 0) {
|
||||
tabs.push({name: '团长审核', refName: 'delegation-audit-info'})
|
||||
}
|
||||
|
||||
|
||||
this.tabs = tabs
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.config = await proposal.getProposalConfig()
|
||||
this.unitOptions = await proposal.getProposalUndertake()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.scroll-content {
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.customer-tab {
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
background-color: #f5f7fa;
|
||||
padding: 4px;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.el-tabs--card > .el-tabs__header {
|
||||
border-bottom: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.el-tabs--card > .el-tabs__header .el-tabs__nav {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.el-tabs--card > .el-tabs__header .el-tabs__nav .el-tabs__item {
|
||||
width: 25%;
|
||||
text-align: center;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.el-tabs--card > .el-tabs__header .el-tabs__nav .is-active {
|
||||
border-radius: 4px;
|
||||
background-color: #1867b0;
|
||||
color: #fff;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,186 @@
|
||||
<template>
|
||||
<el-card shadow="never" style="position:relative;">
|
||||
|
||||
<div class="d-search-item btn-group tool-button">
|
||||
<el-input placeholder="请输入内容" clearable v-model="page.searchKeyword"
|
||||
@keyup.enter.native="$emit('doSearch')">
|
||||
<el-select v-model="page.searchName" slot="prepend" placeholder="查询类型"
|
||||
style="width: 110px;">
|
||||
<el-option label="提案名称" value="proposalName"></el-option>
|
||||
<el-option label="提案编号" value="proposalCode"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="d-search-item btn-group tool-button">
|
||||
<el-input placeholder="请输入提案人的姓名或工号" clearable v-model="page.createUser"
|
||||
@keyup.enter.native="$emit('doSearch')">
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="d-search-item btn-group tool-button">
|
||||
<el-select v-model="page.meetingId" filterable clearable @change="meetingChange" placeholder="根据教代会查询">
|
||||
<el-option
|
||||
v-for="item in allJdhOptions"
|
||||
:label="item.jdhallname"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="d-search-item btn-group tool-button">
|
||||
<el-select v-model="page.delegationId" filterable clearable placeholder="所属代表团" @change="delegationChange">
|
||||
<el-option v-for="item in delegationOptions" :key="item.id" :label="item.dbtname"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="mt10">
|
||||
<div class="d-search-item btn-group tool-button">
|
||||
<el-select clearable v-model="page.unionId" filterable placeholder="请选择工会" @change="unionChange">
|
||||
<el-option
|
||||
v-for="item in unionOptions"
|
||||
:key="item.id"
|
||||
:label="item.unionname"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="d-search-item btn-group tool-button">
|
||||
<el-select clearable v-model="page.unitId" filterable placeholder="请选择单位">
|
||||
<el-option
|
||||
v-for="item in unitOptions"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="d-search-item btn-group tool-button" v-if="has_seconded">
|
||||
<el-select clearable v-model="page.resultCode" filterable placeholder="请选择立案结果">
|
||||
<el-option
|
||||
v-for="item in resultOptions"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="btn-group tool-button" style="margin-left: 10px">
|
||||
<el-button type="primary" icon="el-icon-search" @click="$emit('search')"></el-button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div style="position: absolute;right: 20px;top: 20px;">
|
||||
|
||||
|
||||
<template v-if="has_add">
|
||||
<el-button class="ml5" icon="el-icon-upload2" plain type="primary"
|
||||
@click="$emit('import')">导入提案
|
||||
</el-button>
|
||||
</template>
|
||||
|
||||
<template v-if="has_add">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="$emit('add')">新建提案</el-button>
|
||||
</template>
|
||||
|
||||
<template v-if="audit">
|
||||
<el-radio-group v-model="page.isAudit" @change="$emit('search')">
|
||||
<el-radio-button :label="null">全部</el-radio-button>
|
||||
<el-radio-button :label="true">已{{ title }}</el-radio-button>
|
||||
<el-radio-button :label="false">未{{ title }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
</template>
|
||||
|
||||
<slot name="column"></slot>
|
||||
</div>
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
page: {
|
||||
type: Object,
|
||||
default: {}
|
||||
},
|
||||
has_add: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
has_seconded: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
audit: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: '审核'
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
allJdhOptions: [],
|
||||
delegationOptions: [],
|
||||
unionOptions: [],
|
||||
unitOptions: [],
|
||||
resultOptions: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async meetingChange(val) {
|
||||
this.page.delegationId = null
|
||||
this.delegationOptions = await proposal.getDelegation(val)
|
||||
},
|
||||
async delegationChange(val) {
|
||||
this.unionOptions = await getUnions(val)
|
||||
},
|
||||
async unionChange(val) {
|
||||
this.unitOptions = await getUnits(val)
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
this.resultOptions = await getDictByCode("proposal_result")
|
||||
this.allJdhOptions = await proposal.getOpenMeeting()
|
||||
this.page.meetingId = this.allJdhOptions.length > 0 ? this.allJdhOptions[0].id : null
|
||||
this.delegationOptions = await proposal.getDelegation(this.page.meetingId)
|
||||
this.unionOptions = await getUnions(null)
|
||||
this.unitOptions = await getUnits(null)
|
||||
this.$emit('finished', null)
|
||||
},
|
||||
async created() {
|
||||
// this.resultOptions = await getDictByCode("proposal_result")
|
||||
// this.allJdhOptions = await proposal.getOpenMeeting()
|
||||
// this.page.meetingId = this.allJdhOptions.length > 0 ? this.allJdhOptions[0].id : null
|
||||
// this.delegationOptions = await proposal.getDelegation(this.page.meetingId)
|
||||
// this.unionOptions = await getUnions(null)
|
||||
// this.unitOptions = await getUnits(null)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.el-select {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
line-height: 3;
|
||||
}
|
||||
|
||||
.btn-group {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.d-search-item {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.search-op {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,61 @@
|
||||
<template>
|
||||
<el-card shadow="never" class="mt20">
|
||||
|
||||
<slot name="operation"></slot>
|
||||
|
||||
<el-table :data="data" align="center" header-align="center" :row-key="rowkeyFunc" v-loading="loading"
|
||||
@sort-change="(c)=>{$emit('order',c)}" @selection-change="(s)=>{$emit('selection',s)}">
|
||||
<el-table-column v-if="selection" type="selection" width="55"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index" width="80">
|
||||
<template scope="scope">
|
||||
<span>{{ scope.$index + (page.pageNumber - 1) * page.pageSize + 1 }} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="提案编号" prop="proposalCode" align="center" header-align="center" sortable width="120"></el-table-column>
|
||||
<el-table-column label="提案名称" prop="proposalName" align="center" header-align="center" width="300px">
|
||||
<template scope="{row}">
|
||||
<el-link type="primary" @click="$emit('view',row)">{{ row.proposalName }}</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="提案人" prop="username" align="center" header-align="center"></el-table-column>
|
||||
<!-- <el-table-column label="提案时间" prop="createTime" align="center" header-align="center" sortable></el-table-column>-->
|
||||
<el-table-column label="提案类型" prop="typeName" align="center" header-align="center" sortable></el-table-column>
|
||||
<el-table-column label="届次" prop="meetingName" align="center" header-align="center"
|
||||
sortable></el-table-column>
|
||||
<el-table-column label="所属代表团" prop="delegationName" align="center" header-align="center"
|
||||
sortable></el-table-column>
|
||||
<el-table-column label="提案状态" prop="stateName" align="center" header-align="center" sortable></el-table-column>
|
||||
|
||||
<slot name="column"></slot>
|
||||
|
||||
</el-table>
|
||||
|
||||
<slot name="pagination"></slot>
|
||||
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {
|
||||
page: '',
|
||||
data: {
|
||||
type: Array,
|
||||
default: []
|
||||
},
|
||||
loading: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
selection: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
rowkeyFunc(row) {
|
||||
return new Date().getTime()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,384 @@
|
||||
<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 === 1 ? '同意' : item.isAgree === 0 ? '拒绝' : '未附议'">
|
||||
<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>
|
||||
Reference in New Issue
Block a user