This commit is contained in:
Paidax
2024-11-29 09:03:59 +08:00
commit 2ffadd89a7
3480 changed files with 879405 additions and 0 deletions
@@ -0,0 +1,877 @@
<template>
<el-tabs v-model="activeName" tab-position="top">
<el-tab-pane label="基本信息" name="1" v-if="showPaneBeforePwJtPs">
<el-card>
<table class="table table-bordered" style="border-top: 0">
<tr>
<td class="text-center" colspan="6" style="font-size: 20px;">
{{ kt.jbxx.xmmc }}
<el-tooltip content="点我可以导出申报表" effect="dark" placement="top-start">
<i class="el-icon-tickets text-primary pointer"
@click="()=>{ window.open(base+'/platform/syr/common/exportlxsbs?id='+this.kt.jbxx.id)}">
</i>
</el-tooltip>
</td>
</tr>
<tr>
<td class="td-title" width="11.1%">姓名</td>
<td class="td-content" width="22.2%">{{ kt.jbxx.username }}</td>
<td class="td-title" width="11.1%">性别</td>
<td td-content width="22.2%">{{ kt.jbxx.sex }}</td>
<td class="td-title" width="11.1%">出生年月</td>
<td td-content width="22.2%">{{ kt.jbxx.birthday }}</td>
</tr>
<tr>
<td class="td-title">职务/职称</td>
<td td-content>{{ kt.jbxx.zwzc }}</td>
<td class="td-title">所在单位</td>
<td td-content>{{ kt.jbxx.dwname }}</td>
<td class="td-title">手机</td>
<td td-content>{{ kt.jbxx.mobile }}</td>
</tr>
<tr>
<td class="text-center" colspan="6"
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
项目组成员
</td>
</tr>
<tr>
<td colspan="6" style="padding:0!important;border-top: none">
<table class="table table-bordered" style="border-top: 0;border-left: 0;border-right: 0">
<tr>
<td>姓名</td>
<td>职称</td>
<!-- <td>学历</td>-->
<td>工作单位及职务</td>
</tr>
<tr v-for="o in kt.jbxx.xmzcy">
<td>{{ o.username }}</td>
<td>{{ o.zc }}</td>
<!-- <td>{{ o.xl }}</td>-->
<td>{{ o.gzdw }}</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="text-center" colspan="6"
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
项目研究基础及条件
</td>
</tr>
<tr>
<td colspan="6">
<div class="text-left" v-html="kt.jbxx.yjjctj"></div>
</td>
</tr>
<tr>
<td class="text-center" colspan="6"
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
项目实施路径及方法
</td>
</tr>
<tr>
<td colspan="6">
<div class="text-left" v-html="kt.jbxx.xmssljff"></div>
</td>
</tr>
<tr>
<td class="text-center" colspan="6"
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
项目预期成果及应用推广价值
</td>
</tr>
<tr>
<td colspan="6">
<div class="text-left" v-html="kt.jbxx.yqcgtgjz"></div>
</td>
</tr>
</table>
</el-card>
</el-tab-pane>
<el-tab-pane v-if="kt.jbxx.state>20 && showPaneBeforePwJtPs" label="院级工会初审信息" name="2">
<el-card>
<el-form label-width="120px" label-suffix=":">
<el-row gutter="20">
<el-col :span="12">
<el-form-item label="审核人">
{{ kt.jbxx.stbmghfzr }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核时间">
{{ kt.jbxx.stbmghshsj }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="审核意见">
{{ kt.jbxx.stbmghyj }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="签字">
<div>
<el-image :src="kt.jbxx.stbmghfzrqz" style="width: 200px;height:auto"
v-if="kt.jbxx.stbmghfzrqz"></el-image>
<span v-else>暂无</span>
</div>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
</el-tab-pane>
<el-tab-pane v-if="kt.jbxx.state>30 && showPaneBeforePwJtPs" label="校工会初审信息" name="3">
<el-card>
<el-form label-width="120px" label-suffix=":">
<el-row gutter="20">
<el-col :span="12">
<el-form-item label="审核人">
{{ kt.jbxx.stxghfzr }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核时间">
{{ kt.jbxx.stxghshsj }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="审核意见">
{{ kt.jbxx.stxghyj }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="签字">
<div>
<el-image :src="kt.jbxx.stxghfzrqz" style="width: 200px;height:auto"
v-if="kt.jbxx.stxghfzrqz"></el-image>
<span v-else>暂无</span>
</div>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
</el-tab-pane>
<!--# if(@shiro.hasRole('superadmin') || @shiro.hasRole('A06')){ #-->
<el-tab-pane v-if="kt.jbxx.state>=40 && showPaneBeforePwJtPs" label="评委立项评审信息" name="4">
<div>
<el-card shadow="never">
<el-table :data="kt.lxpsxx" border>
<el-table-column label="评委姓名" prop="username"></el-table-column>
<el-table-column label="评委工号" prop="loginname"></el-table-column>
<el-table-column label="是否建议立项" prop="username">
<template scope="{row}">
{{ row.isjylx === 1 ? '√' : row.isjylx === 0 ? '×' : '' }}
</template>
</el-table-column>
<el-table-column label="立项等次" prop="username">
<template scope="{row}">
{{ row.lxlevel ? row.lxlevel + '元' : '' }}
</template>
</el-table-column>
<el-table-column label="评审意见" prop="psyj"></el-table-column>
<el-table-column label="评审时间" prop="pssj"></el-table-column>
<el-table-column label="是否评审" prop="username">
<template scope="{row}">
<i :class="row.pssj==null?'text-danger el-icon-circle-close':'text-success el-icon-circle-check'">
{{ row.pssj == null ? '未审' : '已审' }}
</i>
</template>
</el-table-column>
<el-table-column label="签字" prop="pwlxqz">
<template scope="{row}">
<el-image v-if="row.pwlxqz" :src="row.pwlxqz"
style="width: auto;height:50px;cursor:pointer"
title="查看签字"
@click="viewQz(row.pwlxqz)"></el-image>
<div v-else>暂无</div>
</template>
</el-table-column>
</el-table>
</el-card>
</div>
</el-tab-pane>
<!--# } #-->
<el-tab-pane v-if="kt.jbxx.state>50 && showPaneBeforePwJtPs" label="校工会立项评审信息" name="5">
<el-card>
<el-form label-width="120px" label-suffix=":">
<el-row gutter="20">
<el-col :span="12">
<el-form-item label="审核人">
{{ kt.jbxx.lxusername }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="立项审核时间">
{{ kt.jbxx.lxsj }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="立项结果">
{{ kt.jbxx.lxresult ? '立项' : '不予立项' }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="立项等次">
{{ kt.jbxx.lxlevel }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="签字">
<el-image :src="kt.jbxx.xghlxqz" style="width: 200px;height:auto"
v-if="kt.jbxx.xghlxqz"></el-image>
<div v-else>暂无</div>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
</el-tab-pane>
<el-tab-pane v-if="kt.jbxx.state>60 && kt.jbxx.lxresult===1 && showPaneBeforePwJtPs" label="中期检查提醒" name="6">
<el-card>
<el-form label-width="120px" label-suffix=":">
<el-row gutter="20">
<el-col :span="12">
<el-form-item label="提醒时间">
{{ kt.jbxx.zqtbtxsj }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="截止时间">
{{ kt.jbxx.zqtbjzsj }}
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
</el-tab-pane>
<el-tab-pane v-if="kt.jbxx.state>70 && kt.jbxx.lxresult===1 && showPaneBeforePwJtPs" label="中期检查表" name="7">
<el-card>
<el-form label-width="200px" label-suffix=":">
<el-row gutter="20">
<el-form-item label="项目的进展情况及存在的问题">
{{ kt.jbxx.zqxmjzqk }}
</el-form-item>
<el-form-item label="经费预算明细">
{{ kt.jbxx.zqjfysmx }}
</el-form-item>
<el-form-item label="备注">
{{ kt.jbxx.zqbz }}
</el-form-item>
<el-form-item label="附件">
<div class="pointer"
@click="()=>{window.location.href=base+'/platform/syr/common/exportzqjcb?id='+this.kt.jbxx.id}">
<svg id="icon-yunpanlogo-2" height="20" viewBox="0 0 1024 1024" width="20">
<path
d="M902.095238 314.514286V853.333333a97.52381 97.52381 0 0 1-97.523809 97.52381H219.428571a97.52381 97.52381 0 0 1-97.523809-97.52381V170.666667a97.52381 97.52381 0 0 1 97.523809-97.52381h441.295239z"
fill="#4997D9"></path>
<path d="M571.245714 720.944762h50.956191L707.047619 449.340952h-50.95619l-84.845715 271.60381z"
fill="#FFFFFF"></path>
<path
d="M660.72381 265.752381V73.142857l241.371428 241.371429h-192.609524a48.761905 48.761905 0 0 1-48.761904-48.761905z"
fill="#4B80CB"></path>
<path d="M622.201905 720.944762h-50.956191l-84.601904-237.470476h50.71238l84.845715 237.470476z"
fill="#FFFFFF"></path>
<path d="M401.798095 720.944762h50.956191l84.601904-237.470476h-50.71238l-84.845715 237.470476z"
fill="#FFFFFF"></path>
<path d="M452.754286 720.944762h-50.956191L316.952381 449.340952h50.95619l84.845715 271.60381z"
fill="#FFFFFF"></path>
</svg>
中期检查表.docx
</div>
</el-form-item>
</el-row>
</el-form>
</el-card>
</el-tab-pane>
<el-tab-pane v-if="kt.jbxx.state>80 && kt.jbxx.lxresult===1 && showPaneBeforePwJtPs" label="中期审核信息" name="8">
<el-card>
<el-form label-width="120px" label-suffix=":">
<el-row gutter="20">
<el-col :span="12">
<el-form-item label="审核人">
{{ kt.jbxx.zqxghfzr }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核时间">
{{ kt.jbxx.zqxghshsj }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="审核意见">
{{ kt.jbxx.zqxghyj }}
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
</el-tab-pane>
<el-tab-pane v-if="kt.jbxx.state>90 && kt.jbxx.lxresult===1" label="结题报告" name="9">
<el-card>
<table class="table table-bordered" style="border-top: 0">
<tr>
<td class="text-center" colspan="6" style="font-size: 20px;">
{{ kt.jbxx.xmmc }}
<!-- <el-tooltip content="点我可以导出申报表" effect="dark" placement="top-start">
<i class="el-icon-tickets text-primary pointer"
@click="()=>{ window.open(base+'/platform/syr/common/exportlxsbs?id='+this.kt.jbxx.id)}">
</i>
</el-tooltip>-->
</td>
</tr>
<tr>
<td class="td-title" width="11.1%">姓名</td>
<td class="td-content" width="22.2%">{{ kt.jbxx.username }}</td>
<td class="td-title" width="11.1%">性别</td>
<td td-content width="22.2%">{{ kt.jbxx.sex }}</td>
<td class="td-title" width="11.1%">立项资助金额</td>
<td td-content width="22.2%">{{ kt.jbxx.lxlevel }}</td>
</tr>
<tr>
<td class="td-title">职务/职称</td>
<td td-content>{{ kt.jbxx.zwzc }}</td>
<td class="td-title">所在单位</td>
<td td-content>{{ kt.jbxx.dwname }}</td>
<td class="td-title">手机</td>
<td td-content>{{ kt.jbxx.mobile }}</td>
</tr>
<tr>
<td class="text-center" colspan="6"
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
项目组成员
</td>
</tr>
<tr>
<td colspan="6" style="padding:0!important;border-top: none">
<table class="table table-bordered" style="border-top: 0;border-left: 0;border-right: 0">
<tr>
<td>姓名</td>
<td>职称</td>
<!-- <td>学历</td>-->
<td>工作单位及职务</td>
</tr>
<tr v-for="o in kt.jbxx.xmzcy">
<td>{{ o.username }}</td>
<td>{{ o.zc }}</td>
<!-- <td>{{ o.xl }}</td>-->
<td>{{ o.gzdw }}</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="text-center" colspan="6"
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
项目研究实践的主要内容及方法
</td>
</tr>
<tr>
<td colspan="6">
<div class="text-left" v-html="kt.jtbgs.zynr"></div>
</td>
</tr>
<tr>
<td class="text-center" colspan="6"
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
成果自我评价及应用范围或取得的社会效益
</td>
</tr>
<tr>
<td colspan="6">
<div class="text-left" v-html="kt.jtbgs.zwpjshxy"></div>
</td>
</tr>
<tr>
<td class="text-center" colspan="6"
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
主要成果介绍
</td>
</tr>
<tr>
<td colspan="6">
<div class="text-left" v-html="kt.jtbgs.zycgjs"></div>
</td>
</tr>
<tr>
<td class="text-center" colspan="6"
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
成果目录
</td>
</tr>
<tr>
<td colspan="6" style="padding:0!important;border-top: none">
<table class="table table-bordered" style="border-top: 0;border-left: 0;border-right: 0">
<tr>
<td>成果形式</td>
<td>成果名称</td>
<td>主要完成人</td>
</tr>
<tr v-for="o in JSON.parse(kt.jtbgs.cgml)">
<td>{{ o.cgmc }}</td>
<td>{{ o.cgxs }}</td>
<td>{{ o.zywcr }}</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="text-center" colspan="6"
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
经费使用情况
</td>
</tr>
<tr>
<td colspan="6">
<div class="text-left" v-html="kt.jtbgs.jfsyqk"></div>
</td>
</tr>
<tr>
<td class="text-center" colspan="6"
style="font-size: 15px;border-top: 1px solid #e3e6f3;font-weight: bold">
研究成果及佐证材料文件
</td>
</tr>
<tr>
<td colspan="6">
<div v-for="o in kt.yjcgfj" class="pointer text-left"
@click="dd3s.download(o.filepath,o.filename)">
<svg id="icon-yunpanlogo-2" height="20" viewBox="0 0 1024 1024" width="20">
<path
d="M902.095238 314.514286V853.333333a97.52381 97.52381 0 0 1-97.523809 97.52381H219.428571a97.52381 97.52381 0 0 1-97.523809-97.52381V170.666667a97.52381 97.52381 0 0 1 97.523809-97.52381h441.295239z"
fill="#4997D9"></path>
<path d="M571.245714 720.944762h50.956191L707.047619 449.340952h-50.95619l-84.845715 271.60381z"
fill="#FFFFFF"></path>
<path
d="M660.72381 265.752381V73.142857l241.371428 241.371429h-192.609524a48.761905 48.761905 0 0 1-48.761904-48.761905z"
fill="#4B80CB"></path>
<path d="M622.201905 720.944762h-50.956191l-84.601904-237.470476h50.71238l84.845715 237.470476z"
fill="#FFFFFF"></path>
<path d="M401.798095 720.944762h50.956191l84.601904-237.470476h-50.71238l-84.845715 237.470476z"
fill="#FFFFFF"></path>
<path d="M452.754286 720.944762h-50.956191L316.952381 449.340952h50.95619l84.845715 271.60381z"
fill="#FFFFFF"></path>
</svg>
{{ o.filename }}
</div>
</td>
</tr>
</table>
</el-card>
</el-tab-pane>
<el-tab-pane v-if="kt.jbxx.state>91 && kt.jbxx.lxresult===1" label="结题院级工会初审" name="9.1">
<el-card>
<el-form label-width="120px" label-suffix=":">
<el-row gutter="20">
<el-col :span="12">
<el-form-item label="审核人">
{{ kt.jbxx.jtfghcsfzr }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核时间">
{{ kt.jbxx.jtfghshcssj }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否通过">
<span v-if="kt.jbxx.jtfghcsispass==null"></span>
<span v-else>
{{ kt.jbxx.jtfghcsispass ? '' : '' }}
</span>
</el-form-item>
</el-col>
<el-col :span="12">
</el-col>
<el-col :span="24">
<el-form-item label="审核意见">
{{ kt.jbxx.jtfghcsyj }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="签字">
<div>
<el-image :src="kt.jbxx.jtfghcsqz" style="width: 200px;height:auto"
v-if="kt.jbxx.jtfghcsqz"></el-image>
<span v-else>暂无</span>
</div>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
</el-tab-pane>
<el-tab-pane v-if="kt.jbxx.state>92 && kt.jbxx.lxresult===1" label="结题校工会初审" name="9.2">
<el-card>
<el-form label-width="120px" label-suffix=":">
<el-row gutter="20">
<el-col :span="12">
<el-form-item label="审核人">
{{ kt.jbxx.jtxghcsfzr }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核时间">
{{ kt.jbxx.jtxghshcssj }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否通过">
{{ kt.jbxx.jtxghcsispass ? '是' : '否' }}
</el-form-item>
</el-col>
<el-col :span="12">
</el-col>
<el-col :span="24">
<el-form-item label="审核意见">
{{ kt.jbxx.jtxghcsyj }}
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
</el-tab-pane>
<!--# if(@shiro.hasRole('superadmin') || @shiro.hasRole('A06')){ #-->
<el-tab-pane v-if="kt.jbxx.state>=100 && kt.jbxx.lxresult===1" label="评委结题评审信息"
name="10">
<div>
<el-card shadow="never">
<el-table :data="kt.jtpsxx" border>
<el-table-column label="评委姓名" prop="username"></el-table-column>
<el-table-column label="评委工号" prop="loginname"></el-table-column>
<el-table-column label="是否同意结题">
<template scope="{row}">
{{ row.ispass === 1 ? '√' : row.ispass === 0 ? '×' : '' }}
</template>
</el-table-column>
<el-table-column label="是否优秀" prop="isgood">
<template scope="{row}">
{{ row.isgood === 1 ? '√' : row.isgood === 0 ? '×' : '' }}
</template>
</el-table-column>
<el-table-column label="评审意见" prop="psjy"></el-table-column>
<el-table-column label="评审时间" prop="pssj"></el-table-column>
<el-table-column label="是否评审">
<template scope="{row}">
<i :class="row.ispass==null?'text-danger el-icon-circle-close':'text-success el-icon-circle-check'">
{{ row.ispass == null ? '未审' : '已审' }}
</i>
</template>
</el-table-column>
<el-table-column label="签字" prop="pwjtqz">
<template scope="{row}">
<el-image v-if="row.pwjtqz" :src="row.pwjtqz"
style="width: auto;height:50px;cursor:pointer"
title="查看签字"
@click="viewQz(row.pwjtqz)"></el-image>
<div v-else>暂无</div>
</template>
</el-table-column>
</el-table>
</el-card>
</div>
</el-tab-pane>
<!--# } #-->
<el-tab-pane v-if="kt.jbxx.state>110 && kt.jbxx.lxresult===1" label="校工会结题评审信息"
name="11">
<el-card>
<el-form label-width="120px" label-suffix=":">
<el-row gutter="20">
<el-col :span="12">
<el-form-item label="评审人">
{{ kt.jbxx.jtxghfzr }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="评审时间">
{{ kt.jbxx.jtxghshsj }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否通过">
{{ kt.jbxx.ispass ? '是' : '否' }}
</el-form-item>
</el-col>
<el-col :span="12" v-if="kt.jbxx.ispass===1">
<el-form-item label="是否优秀">
{{ kt.jbxx.isgood ? '是' : '否' }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核意见">
{{ kt.jbxx.jtxghyj }}
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
</el-tab-pane>
<!--handle 主要是审核操作-->
<slot name="handle"></slot>
</el-tabs>
</template>
<script>
module.exports = {
props: {
activeName: {
type: String,
default: '1'
}
},
data() {
return {
kt: {
jbxx: {},
lxpsxx: {},
jtpsxx: {},
jtbgs: {},
yjcgfj: []
},
showPaneBeforePwJtPs: true
}
},
methods: {
async openView(id, activeName = '1') {
/*if (activeName === 'pwjtps' || activeName === '9' || activeName === 'jtsq' || activeName === 'jtcsyjsh'
|| activeName === 'jtcsxjsh' || activeName === 'xghpsjg') {
this.showPaneBeforePwJtPs = false
}*/
const resp = await $.get(base + '/platform/syr/common/findOne', {id})
this.activeName = activeName
/* if(activeName === 'pwjtps' || activeName === 'jtsq' || activeName === 'jtcsyjsh' || activeName === 'jtcsxjsh'
|| activeName === 'xghpsjg') {
this.activeName = '9'
}*/
if (resp.code === 0) {
this.$set(this, 'kt', resp.data)
if (resp.data.jbxx.state > 90 && resp.data.jbxx.state < 120 && resp.data.jbxx.lxresult === 1) {
this.showPaneBeforePwJtPs = false
}else if (resp.data.jbxx.state === 90 && resp.data.jbxx.lxresult === 1 && activeName !== 'jtsq'){
this.showPaneBeforePwJtPs = true
this.activeName = '1'
}else if (resp.data.jbxx.state === 120 && resp.data.jbxx.lxresult === 1){
this.showPaneBeforePwJtPs = false
this.activeName = '9'
}else {
this.showPaneBeforePwJtPs = true
}
/*if (resp.data.jbxx.state === 120){
this.showPaneBeforePwJtPs = false
this.activeName='9'
}*/
this.kt.jbxx.xmzcy = JSON.parse(resp.data.jbxx.xmzcy)
/*if (this.kt.jbxx.state >= 40) {
this.initPwLxPsPlot()
}
if (this.kt.jbxx.state > 100 && this.kt.jbxx.lxresult === 1) {
this.initPwJtPsPlot()
}*/
}
},
initPwLxPsPlot() {
//已评审的
let ypsList = this.kt.lxpsxx.filter(o => o.pssj !== null)
if (ypsList.length > 0) {
this.pwlxxxshow = true
}
//建议立项的
let jylxList = this.kt.lxpsxx.filter(o => o.isjylx === 1)
this.$nextTick(() => {
const jylxDiv = document.getElementById('jylxDiv')
const jylxChart = echarts.init(jylxDiv)
const value = (jylxList.length / ypsList.length) * 100;
const option = {
tooltip: {
formatter: '{a} <br/>{b} : {c}%'
},
series: [
{
name: 'Pressure',
type: 'gauge',
progress: {
show: true
},
detail: {
valueAnimation: true,
formatter: '{value}'
},
data: [
{
value: value,
name: '建议立项率'
}
]
}
]
};
jylxChart.setOption(option)
const level2List = this.kt.lxpsxx.filter(o => {
return o.lxlevel === '2000'
})
const level3List = this.kt.lxpsxx.filter(o => {
return o.lxlevel === '3000'
})
const level5List = this.kt.lxpsxx.filter(o => {
return o.lxlevel === '5000'
})
let roleData = [{name: '2000元', value: level2List.length}, {
name: '3000元',
value: level3List.length
}, {name: '5000元', value: level5List.length}]
const lxlevelChart = echarts.init(document.getElementById('lxlevelDiv'))
lxlevelChart.setOption({
legend: {
orient: 'vertical',
left: 'left'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '立项等次',
type: 'pie',
radius: '50%',
data: roleData,
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
})
})
},
initPwJtPsPlot() {
//已评审的
let ypsList = this.kt.jtpsxx.filter(o => o.pssj !== null)
//通过的
let passList = this.kt.jtpsxx.filter(o => o.ispass === 1)
//优秀的
let goodList = this.kt.jtpsxx.filter(o => o.isgood === 1)
this.$nextTick(() => {
const passChart = echarts.init(document.getElementById('passDiv'))
const passValue = (passList.length / ypsList.length) * 100
passChart.setOption({
tooltip: {
formatter: '{a} <br/>{b} : {c}%'
},
series: [
{
name: 'Pressure',
type: 'gauge',
progress: {
show: true
},
detail: {
valueAnimation: true,
formatter: '{value}'
},
data: [
{
value: passValue,
name: ''
}
]
}
]
})
const goodChart = echarts.init(document.getElementById('goodDiv'))
const goodValue = (goodList.length / passList.length) * 100
goodChart.setOption({
tooltip: {
formatter: '{a} <br/>{b} : {c}%'
},
series: [
{
name: 'Pressure',
type: 'gauge',
progress: {
show: true
},
detail: {
valueAnimation: true,
formatter: '{value}'
},
data: [
{
value: goodValue,
name: ''
}
]
}
]
})
})
},
viewQz(content) {
let image = new Image();
image.src = content
let viewer = new Viewer(image);
viewer.show();
}
}
}
</script>
<style scoped>
.pwlxTable td {
vertical-align: middle;
}
</style>
@@ -0,0 +1,354 @@
<template>
<transition name="el-zoom-in-center">
<div class="transition-item" v-show="smm.status==='detail'">
<el-card shadow="never" class="box-card">
<div slot="header" class="clearfix">
<el-button icon="el-icon-back" type="text" @click="changeStatus" style="font-size: 18px">返回</el-button>
</div>
</el-card>
</div>
</transition>
</template>
<script>
let passPlot = null
let goodPlot = null
let jylxPlot = null
let lxlevelPlot = null
module.exports = {
data() {
return {
kt: {
jbxx: {},
lxpsxx: {},
jtpsxx: {},
jtbgs: {},
yjcgfj: []
},
pwlxxxshow: false,
pwjtxxshow: false
}
},
props: {
smm: {
type: 'Object',
default: () => {
return {
status: 'table',
id: '',
active: '1',
showpane: [1],
request: ''
}
}
},
},
watch: {
smm(o) {
if (o.status === 'detail') {
this.getData(o.id)
}
}
},
methods: {
changeStatus() {
this.smm.status = 'table'
this.$emit('update:smm', this.smm)
},
getData(val) {
$.get(base + '/platform/syr/common/findOne', {id: val}).then(res => {
if (res.code === 0) {
this.kt = res.data
this.kt.jbxx.xmzcy = JSON.parse(res.data.jbxx.xmzcy)
if (this.kt.jbxx.state >= 40 && this.smm.showpane.includes(4)) {
this.initPwLxPsPlot()
}
if (this.kt.jbxx.state > 100 && this.kt.jbxx.lxresult === 1 && this.smm.showpane.includes(10)) {
this.initPwJtPsPlot()
}
}
})
},
initPwLxPsPlot() {
//已评审的
let ypsList = this.kt.lxpsxx.filter(o => o.pssj !== null)
if (ypsList.length > 0) {
this.pwlxxxshow = true
}
//建议立项的
let jylxList = this.kt.lxpsxx.filter(o => o.isjylx === 1)
this.$nextTick(() => {
const jylxDiv = document.getElementById('jylxDiv')
const jylxChart = echarts.init(jylxDiv)
const value = (jylxList.length / ypsList.length) * 100;
const option = {
tooltip: {
formatter: '{a} <br/>{b} : {c}%'
},
series: [
{
name: 'Pressure',
type: 'gauge',
progress: {
show: true
},
detail: {
valueAnimation: true,
formatter: '{value}'
},
data: [
{
value: value,
name: '建议立项率'
}
]
}
]
};
jylxChart.setOption(option)
const level2List = this.kt.lxpsxx.filter(o => {
return o.lxlevel === '2000'
})
const level3List = this.kt.lxpsxx.filter(o => {
return o.lxlevel === '3000'
})
const level5List = this.kt.lxpsxx.filter(o => {
return o.lxlevel === '5000'
})
let roleData = [{name: '2000元', value: level2List.length}, {
name: '3000元',
value: level3List.length
}, {name: '5000元', value: level5List.length}]
const lxlevelChart = echarts.init(document.getElementById('lxlevelDiv'))
lxlevelChart.setOption({
legend: {
orient: 'vertical',
left: 'left'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '立项等次',
type: 'pie',
radius: '50%',
data: roleData,
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
})
})
},
initPwJtPsPlot() {
//已评审的
let ypsList = this.kt.jtpsxx.filter(o => o.pssj !== null)
//通过的
let passList = this.kt.jtpsxx.filter(o => o.ispass === 1)
//优秀的
let goodList = this.kt.jtpsxx.filter(o => o.isgood === 1)
this.$nextTick(() => {
const passChart = echarts.init(document.getElementById('passDiv'))
const passValue = (passList.length / ypsList.length) * 100
passChart.setOption({
tooltip: {
formatter: '{a} <br/>{b} : {c}%'
},
series: [
{
name: 'Pressure',
type: 'gauge',
progress: {
show: true
},
detail: {
valueAnimation: true,
formatter: '{value}'
},
data: [
{
value: passValue,
name: ''
}
]
}
]
})
const goodChart = echarts.init(document.getElementById('goodDiv'))
const goodValue = (goodList.length / passList.length) * 100
goodChart.setOption({
tooltip: {
formatter: '{a} <br/>{b} : {c}%'
},
series: [
{
name: 'Pressure',
type: 'gauge',
progress: {
show: true
},
detail: {
valueAnimation: true,
formatter: '{value}'
},
data: [
{
value: goodValue,
name: ''
}
]
}
]
})
})
// if(passPlot){passPlot.destory()}
// this.$nextTick(()=>{
// passPlot = new G2Plot.Liquid(document.getElementById('passDiv'), {
// forceFit: false,
// width: 150,
// height: 150,
// min: 0,
// max: ypsList.length,
// value: passList.length,
// statistic: {
// formatter: (value) => ((100 * value) / ypsList.length).toFixed(1) + '%',
// }
// })
// passPlot.render()
// })
// if(goodPlot){goodPlot.destory()}
// this.$nextTick(()=>{
// goodPlot = new G2Plot.Liquid(document.getElementById('goodDiv'), {
// forceFit: false,
// width: 150,
// height: 150,
// min: 0,
// max: passList.length,
// value: goodList.length,
// statistic: {
// formatter: (value) => ((100 * value) / passList.length).toFixed(1) + '%',
// }
// })
// goodPlot.render()
// })
}
}
}
</script>
<style>
.td-title {
/*background-color: #EBEEF5;*/
}
.td-content {
color: gray;
}
.table-bordered > tbody > tr > td {
text-align: center;
}
.el-tab-pane {
height: 100%;
overflow-y: auto;
}
.el-collapse-item__header {
background-color: #317fca !important;
color: #fff !important;
padding-left: 10px !important;
height: 35px !important;
line-height: 35px !important;
font-size: 16px !important;
}
.table {
margin-bottom: 0px;
}
.table-bordered {
border: none !important;
}
.item-label {
width: 150px;
text-align: right;
vertical-align: middle;
float: left;
font-size: 14px;
color: #606266;
line-height: 40px;
padding: 0 12px 0 0;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
.item-label:after {
content: ':';
}
.item-content {
margin-left: 150px;
line-height: 40px;
position: relative;
font-size: 14px;
}
.level-span {
width: 20px;
height: 20px;
text-align: center;
display: inline-block;
border-radius: 10px;
}
.level-1 {
border: 1px solid #DC143C;
color: #DC143C;
}
.level-2 {
border: 1px solid #FF69B4;
color: #FF69B4;
}
.level-3 {
border: 1px solid #FF4500;
color: #FF4500;
}
.text-maxheight {
max-height: 200px;
overflow-y: auto;
}
.box-card-syr {
/*width: 50%;*/
/*margin: 10px;*/
}
</style>
@@ -0,0 +1,262 @@
<template>
<div>
<el-card shadow="never">
<div class="search">
<div class="search-item">
<div class="search-item-label yearDatePickerItemLabel" style="width: 100%;margin-right: 0">
<el-select v-model="yeartype" placeholder="年度类型"
style="width: 100%">
<el-option label="申报年度" value="sbyear"></el-option>
<el-option label="结题年度" value="jtyear"></el-option>
</el-select>
</div>
<div class="search-item-option yearDatePickerItemOption"
style="width: calc(100% - 160px);min-width:calc(100% - 160px)">
<el-date-picker
style="width: 100%"
v-model="page.year"
type="year"
value-format="yyyy">
</el-date-picker>
</div>
</div>
<div class="search-item">
<div class="search-item-label">项目名称:</div>
<div class="search-item-option">
<el-input v-model="page.xmmc" clearable placeholder="请输入项目名称查询" style="width: 100%;" @keyup.enter.native="doSearch"></el-input>
</div>
</div>
<div class="search-item">
<div class="search-item-label">申报人</div>
<div class="search-item-option">
<el-input v-model="page.searchKeyword" clearable placeholder="请输入内容" @keyup.enter.native="doSearch">
<el-select slot="prepend" v-model="page.searchName" placeholder="查询类型"
style="width: 120px;">
<el-option label="申报人姓名" value="u.username"></el-option>
<el-option label="申报人工号" value="u.loginname"></el-option>
</el-select>
</el-input>
</div>
</div>
<div class="search-item" v-show="!hasNotghdwUrl.includes(request)">
<div class="search-item-label">院级工会</div>
<div class="search-item-option">
<el-select v-model="page.unionid" clearable filterable placeholder="请选择院级工会" @change="getUnitList()"
style="width: 100%">
<el-option
v-for="item in unionList"
:key="item.id"
:label="item.unionname"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
<div class="search-item" v-show="!hasNotghdwUrl.includes(request)">
<div class="search-item-label">单位</div>
<div class="search-item-option">
<el-select v-model="page.unitid" clearable filterable placeholder="请选择单位" style="width: 100%">
<el-option
v-for="item in unitList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
<slot name="search-group">
<!--不同页面的查询条件自定义-->
</slot>
<div class="search-query">
<el-button icon="el-icon-search" type="primary" @click="doSearch"></el-button>
</div>
</div>
<!--<template v-show="!hasNotghdwUrl.includes(request)">
<div class="btn-group tool-button mt5">
<el-select v-model="page.unionid" clearable filterable placeholder="请选择院级工会" @change="getUnitList()">
<el-option
v-for="item in unionList"
:key="item.id"
:label="item.unionname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="btn-group tool-button mt5">
<el-select v-model="page.unitid" clearable filterable placeholder="请选择单位">
<el-option
v-for="item in unitList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
</template>-->
</el-card>
<el-card class="mt10" shadow="never">
<vi-title2 title="选题列表">
<template #func>
<div v-if="!isshow" class="pull-right offscreen-right mt5">
<el-radio-group v-model="page.isAudit" class="mr10" @change="doSearch" size="small">
<el-radio-button :label="null">全部</el-radio-button>
<el-radio-button :label="true">{{ auditval }}</el-radio-button>
<el-radio-button :label="false">{{ auditval }}</el-radio-button>
</el-radio-group>
<slot name="right"></slot>
<!-- <el-button v-if="request==='/platfotm/syr/info/zqtb/pageData'"size="medium" @click="doDeleteUsers"><i class="ti-plus"></i> 一键提醒</el-button>-->
</div>
</template>
</vi-title2>
<el-table :data="data" @sort-change='pageOrder'>
<el-table-column align="center" header-align="center" label="序号" type="index">
<template scope="scope">
<span>{{ scope.$index + (page.pageNumber - 1) * page.pageSize + 1 }} </span></template>
</el-table-column>
<el-table-column label="项目名称" prop="xmmc" show-overflow-tooltip width="400"></el-table-column>
<el-table-column v-if="request==='/platfotm/syr/info/zqtb/pageData'" label="中期检查截止时间" prop="zqtbjzsj"
width="200"></el-table-column>
<el-table-column label="申报人" prop="username"></el-table-column>
<el-table-column label="性别" prop="sex" sortable width="100"></el-table-column>
<el-table-column label="申报单位" prop="dwname" show-overflow-tooltip sortable width="150"></el-table-column>
<el-table-column label="院级工会" prop="ghname" show-overflow-tooltip sortable width="150"></el-table-column>
<!-- <el-table-column label="职务职称" prop="zwzc" show-overflow-tooltip sortable width="100"></el-table-column>-->
<el-table-column label="立项资助金额(元)" prop="lxlevel" width="150"></el-table-column>
<el-table-column label="状态" prop="statename" sortable sortable width="200"></el-table-column>
<el-table-column label="申报日期" prop="sbrq" sortable sortable width="100"></el-table-column>
<slot name="operation"></slot>
</el-table>
<el-row class="el-pagination-container">
<el-pagination
:current-page="page.pageNumber"
:page-size="page.pageSize"
:total="page.totalCount"
layout="total, prev, pager, next, jumper"
@current-change="pageNumberChange">
</el-pagination>
</el-row>
</el-card>
</div>
</template>
<script>
module.exports = {
data() {
return {
selection: [],
hasNotghdwUrl: ['/platfotm/syr/info/jtsq/pageData', '/platfotm/syr/info/mykt/pageData', '/platfotm/syr/info/zqtb/pageData'],
data: [],
unionList: [],
unitList: [],
page: {
yearType: 'sbyear',
year: moment().format('YYYY'),
isAudit: false,
pageNumber: 1,
pageSize: 10,
totalCount: 0,
pageOrderName: '',
pageOrderBy: '',
searchName: 'u.username',
searchKeyword: '',
xmmc: '',
unitid: '',
unionid: ''
}
}
},
props: {
yeartype: {
type: String,
default: 'sbyear'
},
smm: {
type: 'Object',
default: () => {
return {
status: '',
request: '',
rowsel: false,
}
}
},
request: {
type: String
},
auditval: {
type: String
},
isshow: {
type: Boolean
}
},
methods: {
async pageData() {
this.page.yearType = this.yeartype
const {data} = await $.post(base + this.request, this.page, true)
this.data = data.list
this.page.totalCount = data.totalCount
},
pageOrder(column) {
this.page.pageOrderName = column.prop
this.page.pageOrderBy = column.order
this.pageData()
},
pageNumberChange(val) {
this.page.pageNumber = val
this.pageData()
},
doSearch() {
this.page.pageNumber = 1
this.pageData()
},
async getUnitList() {
this.page.unitid = ''
this.unitList = await getUnits(this.page.unionid)
}
},
watch: {
smm: {
handler(o) {
let that = this
if (o.status === 'table') {
that.pageData()
}
},
deep: true,
immediate: true
}
},
async created() {
await this.pageData()
this.unionList = await getUnions(null)
}
}
</script>
<style scoped>
.yearDatePickerItemLabel .el-select {
background-color: #f5f7fa;
color: #909399;
}
.yearDatePickerItemLabel .el-input__inner {
border-bottom-right-radius: unset;
border-top-right-radius: unset;
/*border-right: 0;*/
}
.yearDatePickerItemOption .el-input__inner {
border-bottom-left-radius: unset;
border-top-left-radius: unset;
border-left: 0;
}
</style>