commit
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form ref="addform" :model="formData" label-width="120px">
|
||||
<el-form ref="addform" :model="formData" :rules="formRules" label-width="120px">
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="活动名称" prop="title">
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="formData.title" :disabled="title_disabled" clearable
|
||||
placeholder="请输入活动名称"></el-input>
|
||||
placeholder="请输入标题"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -256,13 +256,18 @@
|
||||
<el-form-item label="发送方式" prop="sendTypes">
|
||||
<el-checkbox-group v-model="formData.sendTypes" size="medium">
|
||||
<el-checkbox :disabled="hold" border label="DingTalk">钉钉</el-checkbox>
|
||||
<!-- <el-checkbox :disabled="hold" border label="1">PC门户</el-checkbox>-->
|
||||
<!-- <el-checkbox :disabled="hold" border label="2">移动校园</el-checkbox>-->
|
||||
<!-- <el-checkbox :disabled="hold" border label="4">短信</el-checkbox>-->
|
||||
<!-- <el-checkbox :disabled="hold" border label="5">微信企业号</el-checkbox>-->
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="发送链接" prop="link">
|
||||
<el-input
|
||||
:disabled="hold"
|
||||
v-model="formData.link"
|
||||
placeholder="请输入发送链接">
|
||||
</el-input>
|
||||
<div style="color:#ee0a24;">不填写发送链接发送文本消息,填写发送链接发送卡片消息</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="发送内容" prop="content">
|
||||
<el-input
|
||||
:disabled="hold"
|
||||
@@ -271,7 +276,6 @@
|
||||
placeholder="请输入内容"
|
||||
type="textarea">
|
||||
</el-input>
|
||||
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
@@ -406,6 +410,12 @@ module.exports = {
|
||||
fileList: [],
|
||||
},
|
||||
importLoading: false,
|
||||
|
||||
formRules: {
|
||||
title: [{required: true, message: '请输入发送标题', trigger: ['blur', 'change']}],
|
||||
sendTypes: [{required: true, message: '请输入发送方式', trigger: ['blur', 'change']}],
|
||||
content: [{required: true, message: '请输入发送内容', trigger: ['blur', 'change']}],
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
/**
|
||||
*Desc:
|
||||
*Create by: jug
|
||||
*Create time:2023/5/8/14:52
|
||||
*/
|
||||
<template>
|
||||
<div>
|
||||
<el-tabs class="customer-tab" type="card" @tab-click="jump" v-model="tabName">
|
||||
<el-tab-pane v-for="(tab, index) in tabs" :name="tab.refName" :key="index" :label="tab.name"
|
||||
v-if="tab.visible"
|
||||
></el-tab-pane>
|
||||
<el-tab-pane v-for="(tab, index) in tabs" :name="tab.refName" :key="index" :label="tab.name"></el-tab-pane>
|
||||
</el-tabs>
|
||||
<div class="scroll-content" @scroll="onScroll" :style="{height:h+'px'}">
|
||||
<div v-for="(item,index) in tabs" :key="item.refName" class="scroll-item" v-if="item.visible">
|
||||
<div v-for="(item,index) in tabs" :key="item.refName" class="scroll-item">
|
||||
<div class="line-name">
|
||||
<h5>{{ item.name }}</h5>
|
||||
</div>
|
||||
@@ -14,10 +17,6 @@
|
||||
<slot :name="item.refName"></slot>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="scroll-item">
|
||||
<slot name="audit"></slot>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -38,92 +37,100 @@ module.exports = {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tabName: null
|
||||
tabName: null,
|
||||
tabIndex: 0,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
jump(tab, event) {
|
||||
let target = document.querySelector('.scroll-content')
|
||||
let scrollItems = document.querySelectorAll('.scroll-item')
|
||||
// 判断滚动条是否滚动到底部
|
||||
if (target.scrollHeight <= target.scrollTop + target.clientHeight) {
|
||||
this.tabIndex = tab.index.toString()
|
||||
}
|
||||
let totalY = scrollItems[tab.index].offsetTop - scrollItems[0].offsetTop // 锚点元素距离其offsetParent(这里是body)顶部的距离(待滚动的距离)
|
||||
let distance = document.querySelector('.scroll-content').scrollTop // 滚动条距离滚动区域顶部的距离
|
||||
// let distance = document.body.scrollTop || document.documentElement.scrollTop || window.pageYOffset // 滚动条距离滚动区域顶部的距离(滚动区域为窗口)
|
||||
// 滚动动画实现, 使用setTimeout的递归实现平滑滚动,将距离细分为50小段,10ms滚动一次
|
||||
// 计算每一小段的距离
|
||||
let step = totalY / 50
|
||||
if (totalY > distance) {
|
||||
smoothDown(document.querySelector('.scroll-content'))
|
||||
} else {
|
||||
let newTotal = distance - totalY
|
||||
step = newTotal / 50
|
||||
smoothUp(document.querySelector('.scroll-content'))
|
||||
}
|
||||
const scrollItems = this.$el.querySelectorAll('.scroll-item')
|
||||
const targetItem = scrollItems[tab.index]
|
||||
|
||||
// 参数element为滚动区域
|
||||
function smoothDown(element) {
|
||||
if (distance < totalY) {
|
||||
distance += step
|
||||
element.scrollTop = distance
|
||||
setTimeout(smoothDown.bind(this, element), 10)
|
||||
} else {
|
||||
element.scrollTop = totalY
|
||||
}
|
||||
}
|
||||
|
||||
// 参数element为滚动区域
|
||||
function smoothUp(element) {
|
||||
if (distance > totalY) {
|
||||
distance -= step
|
||||
element.scrollTop = distance
|
||||
setTimeout(smoothUp.bind(this, element), 10)
|
||||
} else {
|
||||
element.scrollTop = totalY
|
||||
}
|
||||
}
|
||||
|
||||
console.log(this.tabName)
|
||||
// ✅ 用 scrollIntoView 替代手动计算,更可靠
|
||||
targetItem?.scrollIntoView({behavior: 'auto', block: 'start'})
|
||||
this.tabName = tab.name
|
||||
|
||||
},
|
||||
onScroll(e) {
|
||||
if (e.target.scrollTop === 0) {
|
||||
this.tabName = this.tabs[0].refName
|
||||
const container = e.target
|
||||
const {scrollTop, scrollHeight, clientHeight} = container
|
||||
|
||||
// ✅ 1. 优先判断:是否滚动到底部(预留 1px 容差)
|
||||
if (scrollTop + clientHeight >= scrollHeight - 1) {
|
||||
const lastIndex = this.tabs.length - 1
|
||||
if (this.tabIndex !== lastIndex) {
|
||||
this.tabIndex = lastIndex
|
||||
this.tabName = this.tabs[lastIndex]?.refName
|
||||
}
|
||||
return // ✅ 命中底部直接返回,避免后续逻辑干扰
|
||||
}
|
||||
|
||||
// ✅ 2. 顶部边界:scrollTop 为 0 时选中第一个
|
||||
if (scrollTop === 0) {
|
||||
if (this.tabIndex !== 0) {
|
||||
this.tabIndex = 0
|
||||
this.tabName = this.tabs[0]?.refName
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
$('#app > div.guava-main-content > span > div.el-card').each((idx, item) => {
|
||||
if ($(item).is(':visible')) {
|
||||
const scrollItems = $(item).find('.scroll-item')
|
||||
for (let i = scrollItems.length - 1; i >= 0; i--) {
|
||||
let judge = e.target.scrollTop >= scrollItems[i].offsetTop - scrollItems[0].offsetTop - 300
|
||||
if (judge) {
|
||||
this.tabIndex = i.toString()
|
||||
this.tabName = this.tabs[this.tabIndex].refName
|
||||
break
|
||||
}
|
||||
// ✅ 3. 中间区域:正常遍历匹配(移除 jQuery,用 this.$el 局部查询)
|
||||
const scrollItems = this.$el.querySelectorAll('.scroll-item')
|
||||
const threshold = 100 // 可视区域偏移阈值
|
||||
|
||||
for (let i = scrollItems.length - 1; i >= 0; i--) {
|
||||
const itemTop = scrollItems[i].offsetTop - scrollItems[0].offsetTop
|
||||
if (scrollTop + threshold >= itemTop) {
|
||||
if (this.tabIndex !== i) {
|
||||
this.tabIndex = i
|
||||
this.tabName = this.tabs[i]?.refName
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
},
|
||||
scrollToTop(){
|
||||
const tryScroll = () => {
|
||||
const scrollEl = this.$el.querySelector('.scroll-content')
|
||||
if (!scrollEl) return
|
||||
|
||||
// 检查内容是否已渲染(scrollHeight > clientHeight 说明有滚动空间)
|
||||
if (scrollEl.scrollHeight <= scrollEl.clientHeight) {
|
||||
// 内容还没加载完,100ms 后重试
|
||||
setTimeout(tryScroll, 100)
|
||||
return
|
||||
}
|
||||
|
||||
// ✅ 内容就绪,执行滚动
|
||||
scrollEl.scrollTo({ top: 0, behavior: 'auto' })
|
||||
this.tabIndex = 0
|
||||
this.tabName = this.tabs[0]?.refName
|
||||
}
|
||||
|
||||
this.$nextTick(() => {
|
||||
setTimeout(tryScroll, 200)
|
||||
})
|
||||
},
|
||||
|
||||
scrollEnd() {
|
||||
this.$nextTick(() => {
|
||||
// 等待 slot 内容渲染(根据内容复杂度调整 200~400ms)
|
||||
setTimeout(() => {
|
||||
$('#app > div.guava-main-content > span > div.el-card').each((idx, item) => {
|
||||
if ($(item).is(':visible')) {
|
||||
const scrollContent = $(item).find('.scroll-content')[0]
|
||||
scrollContent.scrollTop = scrollContent.scrollHeight
|
||||
}
|
||||
})
|
||||
// document.querySelector('.scroll-content').scrollTop = document.querySelector('.scroll-content').scrollHeight
|
||||
this.tabName = 'audit'
|
||||
const scrollEl = this.$el.querySelector('.scroll-content')
|
||||
if (!scrollEl || !this.tabs?.length) return
|
||||
|
||||
// ✅ 1. 滚动到底部
|
||||
scrollEl.scrollTop = scrollEl.scrollHeight
|
||||
|
||||
// ✅ 2. 选中最后一个 tab
|
||||
const lastIndex = this.tabs.length - 1
|
||||
this.tabIndex = lastIndex
|
||||
this.tabName = this.tabs[lastIndex].refName
|
||||
|
||||
// ✅ 3. 可选:强制触发一次 onScroll 同步状态(节流场景下更可靠)
|
||||
this.onScroll?.({ target: scrollEl })
|
||||
}, 250)
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
},
|
||||
created() {
|
||||
|
||||
@@ -175,7 +182,7 @@ module.exports = {
|
||||
.line-name::before {
|
||||
content: "";
|
||||
width: 5px;
|
||||
background: #11879f;
|
||||
background: rgb(24, 103, 176);
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
@@ -207,4 +214,4 @@ module.exports = {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
</style>
|
||||
</style>
|
||||
|
||||
@@ -1,471 +1,523 @@
|
||||
<template>
|
||||
<el-tabs tab-position="top" v-model="activeName" v-loading="loading">
|
||||
<div>
|
||||
<el-tab-plus :tabs="tabs" :h="elTabPlusScrollHeight" ref="etp">
|
||||
<template #basic-info>
|
||||
<el-descriptions border class="custom-desc">
|
||||
<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-tab-pane label="提案基础信息" name="1">
|
||||
<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="提案类型">{{ 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">
|
||||
<file-upload v-if="viewData.files&&viewData.files.length"
|
||||
:files="viewData.files" :view="true"></file-upload>
|
||||
<span v-else>无</span>
|
||||
</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>
|
||||
|
||||
<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">
|
||||
<file-upload v-if="viewData.files&&viewData.files.length"
|
||||
:files="viewData.files" :view="true"></file-upload>
|
||||
<span v-else>无</span>
|
||||
</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>
|
||||
<slot name="seconded"></slot>
|
||||
</template>
|
||||
|
||||
<slot name="seconded"></slot>
|
||||
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="提案并案信息" name="99" v-if="viewData.isConjoin !== 0">
|
||||
<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}">
|
||||
<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>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="附议信息" name="2" v-if="viewData.seconded">
|
||||
<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>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="团长审核" name="3" v-if="viewData.delegationAudit&&viewData.delegationAudit.length>0">
|
||||
<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>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="提案工作组意见" name="4"
|
||||
v-if="viewData.membersOpinions && viewData.membersOpinions.length>0">
|
||||
<template v-for="(o,i) in viewData.membersOpinions">
|
||||
<el-descriptions border :column="3">
|
||||
<el-descriptions-item label="审核人">
|
||||
{{ o.username + "-" + o.loginName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="立案意见">
|
||||
{{ o.dictName || "暂无" }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ o.auditTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见" span="3">{{ o.opinion }}</el-descriptions-item>
|
||||
<el-descriptions-item label="签字" span="3">
|
||||
<el-image v-if="o.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="o.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</template>
|
||||
</el-tab-pane>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
|
||||
|
||||
<el-tab-pane v-if="viewData.caseAuditId && viewData.caseAudit" label="提案工作组立案审核" name="5">
|
||||
<template v-for="(o,i) in viewData.caseAudit">
|
||||
<el-descriptions border :column="3">
|
||||
<el-descriptions-item label="审核人">
|
||||
{{ o.username + "-" + o.loginName }}
|
||||
</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="立案结果">
|
||||
{{ viewData.resultName ? viewData.resultName : '暂无' }}
|
||||
<!– {{ viewData.determineTypeCode ? '(' + viewData.laLevelName + ')' : '' }}–>
|
||||
</el-descriptions-item>-->
|
||||
<el-descriptions-item label="审核结果">
|
||||
{{ o.flag ? "通过" : "退回修改" }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ o.auditTime }}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item v-if="hostUnit!=''" label="承办单位" span="3">
|
||||
{{ hostUnit }}(主办)
|
||||
<template v-if="helpUnit&&helpUnit.length>0">
|
||||
,{{ helpUnit }}(协办)
|
||||
</template>
|
||||
</el-descriptions-item>
|
||||
|
||||
<!-- <el-descriptions-item label="承办单位" span="3" v-if="hostUnit!=''">
|
||||
{{ hostUnit }}(主办),
|
||||
{{ helpUnit }}(协办)
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item v-if="viewData.resultCode!=='notGive'" label="承办单位" span="3">
|
||||
<template v-for="(item,index) in viewData.undertake">
|
||||
{{ item.unitName }}
|
||||
({{ item.undertakeType === 1 ? '主办' : '协办' }})
|
||||
{{ index + 1 === viewData.undertake.length ? '' : '、' }}
|
||||
</template>
|
||||
</el-descriptions-item>-->
|
||||
<el-descriptions-item label="审核意见" span="3">{{ o.opinion }}</el-descriptions-item>
|
||||
<el-descriptions-item label="签字" span="3">
|
||||
<el-image v-if="o.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="o.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<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-tab-pane>
|
||||
</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>
|
||||
</template>
|
||||
|
||||
<el-tab-pane label="承办单位意见" name="6"
|
||||
v-if="viewData.underTakeFirstOpinion&&viewData.underTakeFirstOpinion.length>0">
|
||||
<el-descriptions border>
|
||||
<template v-for="(o,i) in viewData.underTakeFirstOpinion">
|
||||
<el-descriptions-item label="承办单位">{{ o.underTakeName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="时间">{{ o.opionTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核结果">
|
||||
<el-tag v-if="o.canTake">同意承办</el-tag>
|
||||
<el-tag v-else type="danger">无法承办</el-tag>
|
||||
|
||||
<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>
|
||||
|
||||
<template #members-opinions-info>
|
||||
<template v-for="(o,i) in viewData.membersOpinions">
|
||||
<el-descriptions border :column="3">
|
||||
<el-descriptions-item label="审核人">
|
||||
{{ o.username + "-" + o.loginName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="立案意见">
|
||||
{{ o.dictName || "暂无" }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ o.auditTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见" span="3">{{ o.opinion }}</el-descriptions-item>
|
||||
<el-descriptions-item label="签字" span="3">
|
||||
<el-image v-if="o.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="o.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
<template #case-audit-info>
|
||||
<template v-for="(o,i) in viewData.caseAudit">
|
||||
<el-descriptions border :column="3">
|
||||
<el-descriptions-item label="审核人">
|
||||
{{ o.username + "-" + o.loginName }}
|
||||
</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="立案结果">
|
||||
{{ viewData.resultName ? viewData.resultName : '暂无' }}
|
||||
<!– {{ viewData.determineTypeCode ? '(' + viewData.laLevelName + ')' : '' }}–>
|
||||
</el-descriptions-item>-->
|
||||
<el-descriptions-item label="审核结果">
|
||||
{{ o.flag ? "通过" : "退回修改" }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ o.auditTime }}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item v-if="hostUnit!=''" label="承办单位" span="3">
|
||||
{{ hostUnit }}(主办)
|
||||
<template v-if="helpUnit&&helpUnit.length>0">
|
||||
,{{ helpUnit }}(协办)
|
||||
</template>
|
||||
</el-descriptions-item>
|
||||
|
||||
<!-- <el-descriptions-item label="承办单位" span="3" v-if="hostUnit!=''">
|
||||
{{ hostUnit }}(主办),
|
||||
{{ helpUnit }}(协办)
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3" label="意见">{{ o.opinion }}</el-descriptions-item>
|
||||
</template>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="提案工作组确认承办单位" name="10" v-if="viewData.caseUnitAuditId && viewData.caseUnitAudit">
|
||||
<el-descriptions border>
|
||||
<el-descriptions-item label="审核人">
|
||||
{{ viewData.caseUnitAudit.username + "-" + viewData.caseUnitAudit.loginName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核结果">{{ viewData.resultName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ viewData.caseUnitAudit.auditTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="承办单位" span="3" v-if="viewData.resultCode!=='notGive'">
|
||||
<template v-for="(item,index) in viewData.undertake">
|
||||
<el-descriptions-item v-if="viewData.resultCode!=='notGive'" label="承办单位" span="3">
|
||||
<template v-for="(item,index) in viewData.undertake">
|
||||
{{ item.unitName }}
|
||||
({{ item.undertakeType === 1 ? "主办" : "协办" }})
|
||||
{{ index + 1 === viewData.undertake.length ? "" : "、" }}
|
||||
</template>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见" span="3">{{ viewData.caseUnitAudit.opinion }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="签字" span="3">
|
||||
<el-image v-if="viewData.caseUnitAudit.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.caseUnitAudit.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
({{ item.undertakeType === 1 ? '主办' : '协办' }})
|
||||
{{ index + 1 === viewData.undertake.length ? '' : '、' }}
|
||||
</template>
|
||||
</el-descriptions-item>-->
|
||||
<el-descriptions-item label="审核意见" span="3">{{ o.opinion }}</el-descriptions-item>
|
||||
<el-descriptions-item label="签字" span="3">
|
||||
<el-image v-if="o.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="o.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
<el-tab-pane label="分管校领导批示" name="8" v-if="viewData.branchLeaderOpinion && viewData.branchLeaderOpinion.length>0">
|
||||
{{ viewData.branchLeaderOpinion }}
|
||||
<template v-if="viewData.branchLeaderOpinion && viewData.branchLeaderOpinion.length>0">
|
||||
<el-descriptions :column="2" border class="wrap-table">
|
||||
<template v-for="(o,i) in viewData.branchLeaderOpinion">
|
||||
<el-descriptions-item label="审批人">{{ o.username }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审批时间">{{ o.auditTime }}</el-descriptions-item>
|
||||
<el-descriptions-item span="4" label="审批意见">{{ o.opinion }}</el-descriptions-item>
|
||||
<el-descriptions-item span="4" label="分管校领导签字">
|
||||
<el-image v-if="o.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="o.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
</el-descriptions>
|
||||
<template #undertake-first-audit-info>
|
||||
<el-descriptions border>
|
||||
<template v-for="(o,i) in viewData.underTakeFirstOpinion">
|
||||
<el-descriptions-item label="承办单位">{{ o.underTakeName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="时间">{{ o.opionTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核结果">
|
||||
<el-tag v-if="o.canTake">同意承办</el-tag>
|
||||
<el-tag v-else type="danger">无法承办</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3" label="意见">{{ o.opinion }}</el-descriptions-item>
|
||||
</template>
|
||||
</el-descriptions>
|
||||
</template>
|
||||
|
||||
<template #case-unit-audit-info>
|
||||
<el-descriptions border>
|
||||
<el-descriptions-item label="审核人">
|
||||
{{ viewData.caseUnitAudit.username + "-" + viewData.caseUnitAudit.loginName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核结果">{{ viewData.resultName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ viewData.caseUnitAudit.auditTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="承办单位" span="3" v-if="viewData.resultCode!=='notGive'">
|
||||
<template v-for="(item,index) in viewData.undertake">
|
||||
{{ item.unitName }}
|
||||
({{ item.undertakeType === 1 ? "主办" : "协办" }})
|
||||
{{ index + 1 === viewData.undertake.length ? "" : "、" }}
|
||||
</template>
|
||||
</el-tab-pane>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见" span="3">{{ viewData.caseUnitAudit.opinion }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="签字" span="3">
|
||||
<el-image v-if="viewData.caseUnitAudit.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="viewData.caseUnitAudit.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</template>
|
||||
|
||||
<el-tab-pane label="承办单位办理" name="11"
|
||||
v-if="viewData.replyInfo && viewData.replyInfo.length>0 && viewData.replyInfo.some(v=>v.isReply || v.leaderCheckResult!=null)">
|
||||
<template v-for="(o,i) in viewData.replyInfo.filter(v=>v.isReply || v.leaderCheckResult!=null)">
|
||||
<el-descriptions border column="3" style="margin-top: 10px">
|
||||
<el-descriptions-item label="承办单位">{{
|
||||
o.unitName
|
||||
}}({{ o.undertakeType === 1 ? "主办" : "协办" }})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="办理人">{{ o.dfrUserName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="办理时间">{{ o.replyTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="办理次数">{{ o.replyNumber }}</el-descriptions-item>
|
||||
<el-descriptions-item label="落实情况" span="2">{{ o.implementState }}</el-descriptions-item>
|
||||
<el-descriptions-item label="办理内容" span="3">
|
||||
<div class="text-left" v-html="o.replyContent"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="承办单位签字" span="3">
|
||||
<el-image v-if="o.replySignData"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="o.replySignData"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="附件" span="3">
|
||||
<file-upload v-if="JSON.parse(o.replyFiles)&&JSON.parse(o.replyFiles).length"
|
||||
:files="JSON.parse(o.replyFiles)" :view="true"></file-upload>
|
||||
<span v-else>无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<template #undertake-reply-audit-info>
|
||||
<template v-for="(o,i) in viewData.replyInfo.filter(v=>v.isReply || v.leaderCheckResult!=null)">
|
||||
<el-descriptions border column="3" style="margin-top: 10px">
|
||||
<el-descriptions-item label="承办单位">{{
|
||||
o.unitName
|
||||
}}({{ o.undertakeType === 1 ? "主办" : "协办" }})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="办理人">{{ o.dfrUserName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="办理时间">{{ o.replyTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="办理次数">{{ o.replyNumber }}</el-descriptions-item>
|
||||
<el-descriptions-item label="落实情况" span="2">{{ o.implementState }}</el-descriptions-item>
|
||||
<el-descriptions-item label="办理内容" span="3">
|
||||
<div class="text-left" v-html="o.replyContent"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="承办单位签字" span="3">
|
||||
<el-image v-if="o.replySignData"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="o.replySignData"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="附件" span="3">
|
||||
<file-upload v-if="JSON.parse(o.replyFiles)&&JSON.parse(o.replyFiles).length"
|
||||
:files="JSON.parse(o.replyFiles)" :view="true"></file-upload>
|
||||
<span v-else>无</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
<template #branch-leader-reply-opinion-audit-info>
|
||||
<template
|
||||
v-if="viewData.branchLeaderSuffixAuditOpinion && viewData.branchLeaderSuffixAuditOpinion.length>0">
|
||||
<el-descriptions :column="2" border class="wrap-table">
|
||||
<template v-for="(o,i) in viewData.branchLeaderSuffixAuditOpinion">
|
||||
<el-descriptions-item label="审批人">{{ o.username }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审批时间">{{ o.auditTime }}</el-descriptions-item>
|
||||
<el-descriptions-item span="4" label="审批意见">{{ o.opinion }}</el-descriptions-item>
|
||||
<el-descriptions-item span="4" label="分管校领导签字">
|
||||
<el-image v-if="o.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="o.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
</el-tab-pane>
|
||||
</el-descriptions>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
<el-tab-pane label="分管校领导审批" name="14"
|
||||
v-if="viewData.branchLeaderSuffixAuditOpinion && viewData.branchLeaderSuffixAuditOpinion.length>0">
|
||||
<template
|
||||
v-if="viewData.branchLeaderSuffixAuditOpinion && viewData.branchLeaderSuffixAuditOpinion.length>0">
|
||||
<el-descriptions :column="2" border class="wrap-table">
|
||||
<template v-for="(o,i) in viewData.branchLeaderSuffixAuditOpinion">
|
||||
<el-descriptions-item label="审批人">{{ o.username }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审批时间">{{ o.auditTime }}</el-descriptions-item>
|
||||
<el-descriptions-item span="4" label="审批意见">{{ o.opinion }}</el-descriptions-item>
|
||||
<el-descriptions-item span="4" label="分管校领导签字">
|
||||
<el-image v-if="o.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="o.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
</el-descriptions>
|
||||
<template #feedback-audit-info>
|
||||
<el-descriptions border column="4">
|
||||
<template v-for="(o,i) in viewData.feedback">
|
||||
<el-descriptions-item label="反馈人">{{ o.username }}({{ o.loginname }})</el-descriptions-item>
|
||||
<el-descriptions-item label="反馈时间">{{ o.feedbackTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="反馈次数">{{ o.feedbackNumber }}</el-descriptions-item>
|
||||
<el-descriptions-item label="对办理结果评价">{{ o.feedbackResult }}</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="对承办单位办理态度评价">{{ o.feedbackCodeByUnderTake }}</el-descriptions-item>-->
|
||||
<el-descriptions-item label="反馈意见" span="5">
|
||||
<div class="text-left" v-html="o.feedbackOpinion"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="反馈人签字" span="4">
|
||||
<el-image v-if="o.scoreSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="o.scoreSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
</el-descriptions>
|
||||
</template>
|
||||
|
||||
<template #audit>
|
||||
<slot name="handle"></slot>
|
||||
</template>
|
||||
</el-tab-plus>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- <el-tabs tab-position="top" v-model="activeName" v-loading="loading">
|
||||
<el-tab-pane label="分管校领导批示" name="8"
|
||||
v-if="viewData.branchLeaderOpinion && viewData.branchLeaderOpinion.length>0">
|
||||
{{ viewData.branchLeaderOpinion }}
|
||||
<template v-if="viewData.branchLeaderOpinion && viewData.branchLeaderOpinion.length>0">
|
||||
<el-descriptions :column="2" border class="wrap-table">
|
||||
<template v-for="(o,i) in viewData.branchLeaderOpinion">
|
||||
<el-descriptions-item label="审批人">{{ o.username }}</el-descriptions-item>
|
||||
<el-descriptions-item label="审批时间">{{ o.auditTime }}</el-descriptions-item>
|
||||
<el-descriptions-item span="4" label="审批意见">{{ o.opinion }}</el-descriptions-item>
|
||||
<el-descriptions-item span="4" label="分管校领导签字">
|
||||
<el-image v-if="o.auditSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="o.auditSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
</el-tab-pane>
|
||||
</el-descriptions>
|
||||
</template>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="反馈评分信息" name="13" v-if="viewData.feedback&&viewData.feedback.length>0">
|
||||
<el-descriptions border column="4">
|
||||
<template v-for="(o,i) in viewData.feedback">
|
||||
<el-descriptions-item label="反馈人">{{ o.username }}({{ o.loginname }})</el-descriptions-item>
|
||||
<el-descriptions-item label="反馈时间">{{ o.feedbackTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="反馈次数">{{ o.feedbackNumber }}</el-descriptions-item>
|
||||
<el-descriptions-item label="对办理结果评价">{{ o.feedbackResult }}</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="对承办单位办理态度评价">{{ o.feedbackCodeByUnderTake }}</el-descriptions-item>-->
|
||||
<el-descriptions-item label="反馈意见" span="5">
|
||||
<div class="text-left" v-html="o.feedbackOpinion"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="反馈人签字" span="4">
|
||||
<el-image v-if="o.scoreSign"
|
||||
style="width: 300px; height: 100px"
|
||||
:src="o.scoreSign"
|
||||
fit="contain"></el-image>
|
||||
<span v-else>暂无</span>
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
</el-tabs>-->
|
||||
|
||||
|
||||
<el-tab-pane v-if="handle" :label="label" name="999">
|
||||
<slot name="handle"></slot>
|
||||
</el-tab-pane>
|
||||
|
||||
|
||||
</el-tabs>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
module.exports = {
|
||||
props: {
|
||||
id: String,
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: "审核"
|
||||
},
|
||||
panes: {
|
||||
type: Array,
|
||||
default: []
|
||||
}
|
||||
props: {
|
||||
id: String,
|
||||
handle: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
hostUnit: "",
|
||||
helpUnit: [],
|
||||
unitOptions: [],
|
||||
activeName: "1",
|
||||
activeCollapse: "",
|
||||
loading: true,
|
||||
viewData: {},
|
||||
config: {}
|
||||
}
|
||||
label: {
|
||||
type: String,
|
||||
default: "审核"
|
||||
},
|
||||
components: {
|
||||
"file-upload": httpVueLoader("/components/plugins/FileUpload.vue")
|
||||
},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async openView(id, activeName = "1") {
|
||||
this.loading = true
|
||||
this.viewData = await proposal.getProposalInfo(id)
|
||||
|
||||
console.log(this.viewData)
|
||||
|
||||
if (!this.viewData) {
|
||||
this.$notify.error({ title: "失败", message: "获取提案信息失败" })
|
||||
this.loading = false
|
||||
return
|
||||
}
|
||||
|
||||
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" : activeName
|
||||
this.loading = false
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.config = await proposal.getProposalConfig()
|
||||
this.unitOptions = await proposal.getProposalUndertake()
|
||||
panes: {
|
||||
type: Array,
|
||||
default: []
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
hostUnit: "",
|
||||
helpUnit: [],
|
||||
unitOptions: [],
|
||||
activeName: "1",
|
||||
activeCollapse: "",
|
||||
loading: true,
|
||||
viewData: {},
|
||||
config: {},
|
||||
tabs: [],
|
||||
elTabPlusScrollHeight: 700,
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'el-tab-plus': httpVueLoader('/components/plugins/ELTabPlus.vue'),
|
||||
"file-upload": httpVueLoader("/components/plugins/FileUpload.vue")
|
||||
},
|
||||
methods: {
|
||||
hasPane(name) {
|
||||
if (!this.handle) {
|
||||
return true
|
||||
}
|
||||
return this.panes.includes(name)
|
||||
},
|
||||
async openView(id) {
|
||||
this.loading = true
|
||||
this.viewData = await proposal.getProposalInfo(id)
|
||||
|
||||
if (!this.viewData) {
|
||||
this.$notify.error({title: "失败", message: "获取提案信息失败"})
|
||||
this.loading = false
|
||||
return
|
||||
}
|
||||
|
||||
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.formatTab()
|
||||
this.loading = false
|
||||
},
|
||||
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'})
|
||||
}
|
||||
if (this.viewData.membersOpinions && this.viewData.membersOpinions.length > 0) {
|
||||
tabs.push({name: '提案工作组意见', refName: 'members-opinions-info'})
|
||||
}
|
||||
if (this.viewData.caseAuditId && this.viewData.caseAudit) {
|
||||
tabs.push({name: '提案工作组立案审核', refName: 'case-audit-info'})
|
||||
}
|
||||
if (this.viewData.underTakeFirstOpinion && this.viewData.underTakeFirstOpinion.length > 0) {
|
||||
tabs.push({name: '承办单位意见', refName: 'undertake-first-audit-info'})
|
||||
}
|
||||
if (this.viewData.caseUnitAuditId && this.viewData.caseUnitAudit) {
|
||||
tabs.push({name: '提案工作组确认承办单位', refName: 'case-unit-audit-info'})
|
||||
}
|
||||
if (this.viewData.replyInfo && this.viewData.replyInfo.length > 0 && this.viewData.replyInfo.some(v => v.isReply || v.leaderCheckResult != null)) {
|
||||
tabs.push({name: '承办单位办理', refName: 'undertake-reply-audit-info'})
|
||||
}
|
||||
if (this.viewData.branchLeaderSuffixAuditOpinion && this.viewData.branchLeaderSuffixAuditOpinion.length > 0) {
|
||||
tabs.push({name: '分管校领导审批', refName: 'branch-leader-reply-opinion-audit-info'})
|
||||
}
|
||||
if (this.viewData.feedback && this.viewData.feedback.length > 0) {
|
||||
tabs.push({name: '反馈评分信息', refName: 'feedback-audit-info'})
|
||||
}
|
||||
|
||||
//如果是审核让页面跳到最下面并且选中最后一个
|
||||
if (this.handle) {
|
||||
tabs.push({name: this.label, refName: 'audit'})
|
||||
if (this.$refs.etp) {
|
||||
this.$refs.etp.scrollEnd()
|
||||
}
|
||||
} else {
|
||||
//如果是查看让页面跳到最上面并且选中第一个
|
||||
if (this.$refs.etp) {
|
||||
this.$refs.etp.scrollToTop()
|
||||
}
|
||||
}
|
||||
this.tabs = tabs
|
||||
},
|
||||
getHeight() {
|
||||
const h = window.innerHeight - 50 - 20 - 54 - 40 - 50 - 10 - 10
|
||||
this.elTabPlusScrollHeight = h
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.config = await proposal.getProposalConfig()
|
||||
this.unitOptions = await proposal.getProposalUndertake()
|
||||
this.getHeight()
|
||||
window.addEventListener('resize', this.getHeight)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
.el-descriptions__table {
|
||||
table-layout: fixed !important;
|
||||
table-layout: fixed !important;
|
||||
}
|
||||
|
||||
.el-descriptions-item__cell {
|
||||
text-align: center !important;
|
||||
text-align: center !important;
|
||||
}
|
||||
|
||||
|
||||
.item-center {
|
||||
text-align: center;
|
||||
font-weight: 700;
|
||||
margin-right: 110px;
|
||||
text-align: center;
|
||||
font-weight: 700;
|
||||
margin-right: 110px;
|
||||
}
|
||||
|
||||
.item-center .el-form-item__content {
|
||||
font-size: 18px;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.item-sign {
|
||||
width: 200px;
|
||||
height: 130px;
|
||||
width: 200px;
|
||||
height: 130px;
|
||||
}
|
||||
|
||||
.item-form {
|
||||
padding: 0 25px;
|
||||
padding: 0 25px;
|
||||
}
|
||||
|
||||
.el-collapse-item__wrap {
|
||||
padding: 10px 10px;
|
||||
padding: 10px 10px;
|
||||
}
|
||||
|
||||
.el-collapse-item__header {
|
||||
border-bottom: 1px solid #eee;
|
||||
font-weight: 700;
|
||||
border-bottom: 1px solid #eee;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.item-number {
|
||||
color: red;
|
||||
font-weight: 600
|
||||
color: red;
|
||||
font-weight: 600
|
||||
}
|
||||
|
||||
.el-collapse-item__header {
|
||||
position: relative;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.el-collapse-item__arrow {
|
||||
color: #1582dc;
|
||||
font-weight: 800 !important;
|
||||
color: #1582dc;
|
||||
font-weight: 800 !important;
|
||||
}
|
||||
|
||||
/*.el-tabs__header{*/
|
||||
@@ -504,15 +556,22 @@ module.exports = {
|
||||
/*}*/
|
||||
|
||||
.wrap-table tbody:nth-child(3n+3):after {
|
||||
content: '';
|
||||
display: block;
|
||||
height: 15px;
|
||||
content: '';
|
||||
display: block;
|
||||
height: 15px;
|
||||
}
|
||||
|
||||
.wrap-table-4 tbody:nth-child(4n+4):after {
|
||||
content: '';
|
||||
display: block;
|
||||
height: 15px;
|
||||
content: '';
|
||||
display: block;
|
||||
height: 15px;
|
||||
}
|
||||
|
||||
.custom-desc .el-descriptions-item__label {
|
||||
width: 15% !important;
|
||||
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user