You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1331 lines
42 KiB
1331 lines
42 KiB
<template> |
|
<div class="app-container circleButton"> |
|
<!-- 资讯项目页面 --> |
|
<el-form |
|
:model="queryParams" |
|
ref="queryForm" |
|
v-show="showSearch" |
|
label-width="100px" |
|
style="background-color: white;padding: 20px" |
|
> |
|
<el-row> |
|
<el-col :span="8"> |
|
<el-form-item label-width="100" prop="name"> |
|
<div style="float: left"> |
|
<span slot="label" class="font">咨询项目:</span> |
|
</div> |
|
<el-input style="width:260px;margin-left:10px;margin-right: 10px;" |
|
v-model="queryParams.searchValue" |
|
placeholder="请输入项目名称/项目编号" |
|
clearable |
|
size="small" |
|
@keyup.enter.native="handleQuery" |
|
@blur="handleQuery" |
|
/> |
|
<el-button |
|
type="cyan" |
|
icon="el-icon-search" |
|
size="mini" |
|
@click="handleNameQuery">图表</el-button> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="12"> |
|
<el-form-item label-width="100" prop="userName"> |
|
<div style="float:left;"> |
|
<span slot="label" class="font">项目负责人:</span> |
|
</div> |
|
<el-input style="width:260px;margin-left:10px;margin-right: 10px" |
|
v-model="queryParams.userName" |
|
placeholder="请输入负责人名称" |
|
clearable |
|
size="small" |
|
@keyup.enter.native="handleQuery" |
|
@blur="handleQuery"/> |
|
<el-button type="cyan" icon="el-icon-search" size="mini" @click="handleUserNameQuery">图表</el-button> |
|
<el-button type="info" icon="el-icon-upload2" size="mini" @click="handleImport" class="button-import">导入</el-button> |
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> |
|
|
|
</el-form-item> |
|
</el-col> |
|
|
|
</el-row> |
|
|
|
|
|
<el-form-item label-width="100" prop="yearRadio2"> |
|
<div class="lab"> |
|
<span slot="label" class="font">项目年份:</span> |
|
</div> |
|
<el-radio-group v-model="queryParams.yearRadio2" @change="handleQuery"> |
|
<el-radio-button label="0" border><span class="fontT">全部</span></el-radio-button> |
|
<el-radio-button label="999" border ><span class="fontT">2016年至今</span></el-radio-button> |
|
|
|
<el-radio-button |
|
v-for="dict in yearOptions" |
|
:key="dict" |
|
:label="dict" |
|
border |
|
><span class="fontT">{{ dict }}</span></el-radio-button |
|
> |
|
<el-radio-button label="2015" border><span class="fontT">2016年以前</span></el-radio-button> |
|
|
|
</el-radio-group> |
|
</el-form-item> |
|
<el-form-item label-width="100" prop="secrecyLevel" > |
|
<div class="lab"> |
|
<span slot="label" class="font">秘密级别:</span> |
|
</div> |
|
<el-radio-group v-model="queryParams.secrecyLevel" size="small" @change="handleQuery"> |
|
<el-radio-button label="0" border><span class="fontT">全部</span></el-radio-button> |
|
<el-radio-button label="1" border><span class="fontT">机密</span></el-radio-button> |
|
<el-radio-button label="2" border><span class="fontT">秘密</span></el-radio-button> |
|
<el-radio-button label="4" border><span class="fontT">内部</span></el-radio-button> |
|
<el-radio-button label="3" border><span class="fontT">非密</span></el-radio-button> |
|
</el-radio-group> |
|
</el-form-item> |
|
<el-form-item label-width="100" prop="departmentId"> |
|
<div class="lab"> |
|
<span slot="label" class="font">联系部门:</span> |
|
</div> |
|
<el-radio-group v-model="queryParams.departmentId" size="small" @change="handleQuery"> |
|
<el-radio-button label="0" border |
|
><span class="fontT">全部</span></el-radio-button> |
|
<el-radio-button label="25" border |
|
><span class="fontT">机械学部</span></el-radio-button |
|
> |
|
<el-radio-button label="26" border |
|
><span class="fontT">信息学部</span></el-radio-button |
|
> |
|
<el-radio-button label="27" border |
|
><span class="fontT">化工学部</span></el-radio-button |
|
> |
|
<el-radio-button label="28" border |
|
><span class="fontT">能源学部</span></el-radio-button |
|
> |
|
<el-radio-button label="29" border |
|
><span class="fontT">土木学部</span></el-radio-button |
|
> |
|
<el-radio-button label="30" border |
|
><span class="fontT">环境学部</span></el-radio-button |
|
> |
|
<el-radio-button label="31" border><span class="fontT">农业学部</span></el-radio-button> |
|
<el-radio-button label="32" border><span class="fontT">医药学部</span></el-radio-button> |
|
<el-radio-button label="33" border><span class="fontT">工管学部</span></el-radio-button> |
|
<el-radio-button label="149" border><span class="fontT">战略咨询中心</span></el-radio-button> |
|
<el-radio-button label="998" border><span class="fontT">行业研究院</span></el-radio-button> |
|
<el-radio-button label="40" border><span class="fontT">地方研究院</span></el-radio-button> |
|
<el-radio-button label="999" border><span class="fontT">其他</span></el-radio-button> |
|
</el-radio-group> |
|
</el-form-item> |
|
<el-form-item label-width="100" prop="type"> |
|
|
|
<div class="lab"> |
|
<span slot="label" class="font">项目类型:</span> |
|
</div> |
|
<el-radio-group v-model="queryParams.type" @change="handleQuery"> |
|
<el-radio-button label="0" border ><span class="fontT">全部</span></el-radio-button> |
|
<el-radio-button label="2" border ><span class="fontT">重点</span></el-radio-button> |
|
<el-radio-button label="1" border><span class="fontT">重大</span></el-radio-button> |
|
<el-radio-button label="17" border><span class="fontT">学部重大</span></el-radio-button> |
|
<el-radio-button label="19" border><span class="fontT">学部重点</span></el-radio-button> |
|
<el-radio-button label="18" border><span class="fontT">行业院重点</span></el-radio-button> |
|
<el-radio-button label="16" border><span class="fontT">行业院重大</span></el-radio-button> |
|
<el-radio-button label="6" border><span class="fontT">高端智库</span></el-radio-button> |
|
|
|
<el-radio-button label="20" border><span class="fontT">地方研究院重点</span></el-radio-button> |
|
<el-radio-button label="21" border><span class="fontT">地方研究院重大</span></el-radio-button> |
|
<el-radio-button label="22" border><span class="fontT">地方研究院</span></el-radio-button> |
|
<el-radio-button label="999" border><span class="fontT">其他</span></el-radio-button> |
|
</el-radio-group> |
|
</el-form-item> |
|
|
|
|
|
</el-form> |
|
<div class="dtable" style="margin-top: 25px"> |
|
<div style="height: 60px;background-color: rgb(242,247,253);margin-top: 20px;margin-bottom: 20px"> |
|
<div style="background-color: rgb(18,107,199);height:100%;width: 4px;float: left;"></div> |
|
<h2 style="margin-bottom: 20px;position: relative ;top: 18px;margin-left: 20px" class="color333"> |
|
<span>项目数 : <span style="color: #ce2700;">{{total}}</span></span> |
|
<span style="margin-left: 20px">项目经费(万元): <span style="color: #ce2700;">{{zjf}}</span></span> |
|
</h2> |
|
</div> |
|
|
|
<el-table |
|
v-loading="loading" |
|
:data="infoList" |
|
@selection-change="handleSelectionChange" |
|
@sort-change="sortChange" |
|
:header-cell-style="{background:'#fff'}" |
|
:row-class-name="tableRowClassName" |
|
> |
|
<el-table-column label="序号" align="center" type="index" width="80"> |
|
|
|
<template slot-scope="scope"> |
|
{{scope.$index+1}} |
|
</template> |
|
</el-table-column> |
|
<el-table-column |
|
label="项目编号" |
|
align="left" |
|
width="140" |
|
|
|
> |
|
<template slot-scope="scope"> |
|
<span >{{scope.row.code}}</span> |
|
<!-- <span @click="dialogFormVisible = true">{{scope.row.code}}</span>--> |
|
</template> |
|
</el-table-column> |
|
<el-table-column |
|
label="项目名称" |
|
align="left" |
|
prop="name" |
|
width="400" |
|
|
|
/> |
|
<el-table-column label="类型" align="left" prop="type" width="120" :formatter="typeFormat" /> |
|
<el-table-column |
|
label="密级" |
|
align="left" |
|
width="80" |
|
prop="secrecyLevel" |
|
:formatter="secretFormat" |
|
/> |
|
<el-table-column label="联系部门" align="left" prop="departmentName" /> |
|
<!-- <el-table-column label="项目联系部门" align="center" prop="departmentId" />--> |
|
<el-table-column label="负责人" align="left" prop="userName" width="110" /> |
|
|
|
<el-table-column |
|
label="经费" |
|
align="left" |
|
width="80" |
|
prop="totalBudget" |
|
/> |
|
<el-table-column label="依托单位" align="left" prop="yituoUnit" /> |
|
<el-table-column |
|
label="状态" |
|
align="left" |
|
prop="status" |
|
width="90" |
|
:formatter="statusFormat" |
|
/> |
|
|
|
<el-table-column label="成果" align="left" :show-overflow-tooltip="true" width="110" > |
|
<!-- <template slot-scope="scope" v-if="scope.row.annexName != null">--> |
|
<template slot-scope="scope" v-if="scope.row.annexName != null &&scope.row.annexName != '[]'"> |
|
<el-button |
|
size="mini" |
|
type="text" |
|
icon="el-icon-edit" |
|
@click="viewAnnexBookFile(scope.row)" |
|
>成果附件</el-button> |
|
</template> |
|
</el-table-column> |
|
</el-table> |
|
</div> |
|
<div class="explore_right_pages" style="background-color: white;height: 70px;border: 1px solid white"> |
|
<pagination |
|
|
|
v-show="total > 0" |
|
:total="total" |
|
:page.sync="queryParams.pageNum" |
|
:limit.sync="queryParams.pageSize" |
|
@pagination="getList" |
|
/> |
|
</div> |
|
<!-- 用户导入对话框 --> |
|
<el-dialog |
|
:title="uploadProject.title" |
|
:visible.sync="uploadProject.open" |
|
width="790px" |
|
append-to-body> |
|
<div style="margin-bottom: 20px;"> |
|
<el-radio-group v-model="uploadProject.type"> |
|
<el-radio-button v-for="(item) in excelType" :label="item.value" :key="item.id" class="import-btn" >{{item.name}}</el-radio-button> |
|
|
|
</el-radio-group> |
|
|
|
<div style="margin-top: 3%"> |
|
<el-radio v-model="uploadProject.option" :label="item.value" :key="item.id" border v-for="(item) in excelOption" @change="changUrl(item.url)">{{item.name}}</el-radio> |
|
|
|
</div> |
|
</div> |
|
<el-upload |
|
ref="uploadProject" |
|
:limit="1" |
|
accept=".xls,.xlsx" |
|
:headers="uploadProject.headers" |
|
:action=" |
|
uploadProject.url + '?updateSupport=' + uploadProject.updateSupport+'&exportName='+uploadProject.type |
|
" |
|
:disabled="uploadProject.isUploading" |
|
:on-progress="handleProjectFileUploadProgress" |
|
:on-success="handleProjectFileSuccess" |
|
:before-upload="beforeProjectFileUpload" |
|
:auto-upload="false" |
|
drag> |
|
<i class="el-icon-upload"></i> |
|
<div class="el-upload__text"> |
|
将文件拖到此处,或 |
|
<em>点击上传</em> |
|
</div> |
|
<div class="el-upload__tip" slot="tip"> |
|
<!--<el-checkbox v-model="uploadProject.updateSupport" />是否更新已经存在的用户数据--> |
|
<!--<el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>--> |
|
</div> |
|
<div class="el-upload__tip" style="color: red" slot="tip"> |
|
提示:仅允许导入excel文件! |
|
</div> |
|
</el-upload> |
|
<div slot="footer" class="dialog-footer"> |
|
<el-button type="primary" @click="submitFileForm">确 定</el-button> |
|
<el-button @click="uploadProject.open = false">取 消</el-button> |
|
</div> |
|
</el-dialog> |
|
|
|
<el-dialog title="附件" :visible.sync="upload.open" width="400px" append-to-body> |
|
<el-upload |
|
ref="upload" |
|
disabled |
|
:action="upload.url" |
|
:headers="upload.headers" |
|
:file-list="upload.fileList" |
|
:on-preview="handlePreview" |
|
> |
|
</el-upload> |
|
<div slot="footer" class="dialog-footer"> |
|
<el-button type="primary" @click="upload.open = false">关 闭</el-button> |
|
</div> |
|
</el-dialog> |
|
|
|
<el-dialog :modal="false" title="" :show-close="false" :close-on-click-modal="false" :visible="nameTuOpen" width="600px" class="rightDialog" > |
|
<el-row> |
|
<el-col> |
|
<div class="chart-wrapper" v-if="blSer.length"> |
|
<BarLineChart :blXData="blX" :blLgData="blLg" :otTitle="otTitle" :blSerData="blSer" @yearToPage="toYearPage"/> |
|
</div> |
|
</el-col> |
|
</el-row> |
|
<br/><br/> |
|
<el-row> |
|
<el-col > |
|
<div class="chart-wrapper" > |
|
<BLYiTuoChart :xAxisDataLeft7="xAxisCenter7" :otTitle="otTitle" :seriesData1="seriesCenter7" @yituoUnitPage="toyituoUnitPage"/> |
|
</div> |
|
</el-col> |
|
</el-row> |
|
<div slot="footer" class="dialog-footer"> |
|
<el-button type="primary" @click="nameTuOpen = false">关 闭</el-button> |
|
</div> |
|
</el-dialog> |
|
|
|
<el-dialog :modal="false" title="" :show-close="false" :close-on-click-modal="false" :visible="userNameTuOpen" width="600px" class="rightDialog" append-to-body> |
|
<el-row> |
|
<el-col > |
|
<div class="chart-wrapper" > |
|
<BarChart3 :xAxisDataLeft8="xAxisCenter8" :otTitle="otTitle" :seriesDataLeft8="seriesCenter8" @userNamePage="toUserNamePage"/> |
|
</div> |
|
</el-col> |
|
</el-row> |
|
<div slot="footer" class="dialog-footer"> |
|
<el-button type="primary" @click="userNameTuOpen = false">关 闭</el-button> |
|
</div> |
|
</el-dialog> |
|
|
|
<!-- Form --> |
|
|
|
|
|
<el-dialog title="项目详情" :visible.sync="dialogFormVisible"> |
|
<el-form ref="form" :model="formCounten" :label-width="formLabelWidth"> |
|
<el-form-item label="项目名称"> |
|
<el-col :span="20"> |
|
<el-input v-model="formCounten.name"></el-input> |
|
</el-col> |
|
</el-form-item> |
|
|
|
<el-col :span="9"> |
|
<el-form-item label="项目编号" style="margin-top: 10px"> |
|
<el-input v-model="formCounten.name"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-form-item label="类型" style="margin-top: 10px;"> |
|
<el-col :span="9" style="margin-left: 20px"> |
|
<el-input v-model="formCounten.name"></el-input> |
|
</el-col> |
|
</el-form-item> |
|
|
|
<el-col :span="9"> |
|
<el-form-item label="联系部门" style="margin-top: 10px"> |
|
<el-input v-model="formCounten.name"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-form-item label="依托单位" style="margin-top: 10px"> |
|
<el-col :span="9" style="margin-left: 20px"> |
|
<el-input v-model="formCounten.name"></el-input> |
|
</el-col> |
|
</el-form-item> |
|
|
|
<el-col :span="7"> |
|
<el-form-item label="负责人" style="margin-top: 10px"> |
|
<el-input v-model="formCounten.name"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
|
|
<el-col :span="6"> |
|
<el-form-item label="项目经费" style="margin-top: 10px"> |
|
<el-input v-model="formCounten.name"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-form-item label="状态" style="margin-top: 10px"> |
|
<el-col :span="5"> |
|
|
|
<el-input v-model="formCounten.name"></el-input> |
|
|
|
</el-col> |
|
</el-form-item> |
|
|
|
<el-form-item label="密级" style="margin-top: 10px"> |
|
<el-radio-group v-model="formCounten.resource" style="font-size: 50px"> |
|
<el-radio label="1" size="medium"><span class="font">秘密</span></el-radio> |
|
<el-radio label="2" size="medium "><span class="font">机密</span></el-radio> |
|
<el-radio label="3"><h2 class="font">非密</h2 ></el-radio> |
|
<el-radio label="4"><span class="font">内部</span></el-radio> |
|
</el-radio-group> |
|
</el-form-item> |
|
|
|
</el-form> |
|
<div slot="footer" class="dialog-footer"> |
|
<el-button @click="dialogFormVisible = false">取 消</el-button> |
|
<el-button type="primary" @click="dialogFormVisible = false">确 定</el-button> |
|
</div> |
|
</el-dialog> |
|
</div> |
|
</template> |
|
|
|
<script> |
|
import { |
|
listInfo, |
|
getInfo, |
|
delInfo, |
|
addInfo, |
|
updateInfo, |
|
exportInfo, |
|
importTemplate, |
|
} from "@/api/project/info2"; |
|
import { getToken } from "@/utils/auth"; |
|
import BLYiTuoChart from "../../dashboard/BLYiTuoChart"; |
|
import BarChart3 from "../../dashboard/BarChart3"; |
|
import BarLineChart from "../../dashboard/BarLineChart"; |
|
import {totalBugetData,left1Data, left7Data,center8Data,left7Data2,statistics} from "@/api/project/info3"; |
|
export default { |
|
name: "Info", |
|
components: { |
|
BLYiTuoChart, |
|
BarChart3, |
|
BarLineChart |
|
}, |
|
data() { |
|
return { |
|
zjf:0, |
|
// 上传参数 |
|
uploadProject: { |
|
// 是否显示弹出层(用户导入) |
|
open: false, |
|
// 弹出层标题(用户导入) |
|
title: "", |
|
// 是否禁用上传 |
|
isUploading: false, |
|
// 是否更新已经存在的用户数据 |
|
updateSupport: 0, |
|
// 设置上传的请求头部 |
|
headers: { Authorization: "Bearer " + getToken() }, |
|
// 上传的地址 |
|
url: process.env.VUE_APP_BASE_API + "/upload/addProject", |
|
|
|
type:'all', |
|
|
|
option:'inset', |
|
}, |
|
// 上传参数 |
|
upload: { |
|
title: "", |
|
open: false, |
|
// 是否禁用上传 |
|
isUploading: false, |
|
// 设置上传的请求头部 |
|
headers: { Authorization: "Bearer " + getToken() }, |
|
// 上传的地址 |
|
url: process.env.VUE_APP_BASE_API + "/project/info/common/upload", |
|
// 上传的文件列表 |
|
fileList: [], |
|
}, |
|
// 遮罩层 |
|
loading: true, |
|
// 选中数组 |
|
ids: [], |
|
// 非单个禁用 |
|
single: true, |
|
// 非多个禁用 |
|
multiple: true, |
|
// 显示搜索条件 |
|
showSearch: true, |
|
// 总条数 |
|
total: 0, |
|
// 【请填写功能名称】表格数据 |
|
infoList: [], |
|
// 弹出层标题 |
|
title: "", |
|
// 是否显示弹出层 |
|
open: false, |
|
nameTuOpen:false, |
|
userNameTuOpen:false, |
|
totalBuget:null, |
|
dialogFormVisible:false, |
|
statusOptions: [], |
|
typeOptions: [], |
|
secretOptions: [], |
|
sourceOptions: [], |
|
categoryOptions: [], |
|
yesNoOptions: [], |
|
yearOptions: [], |
|
xAxisCenter8:[], |
|
seriesCenter8:[], |
|
xAxisCenter7:[], |
|
seriesCenter7:[], |
|
blX:[], |
|
blLg:[], |
|
blSer:[], |
|
otTitle:"", |
|
// 查询参数 |
|
queryParams: { |
|
pageNum: 1, |
|
pageSize: 10, |
|
category: null, |
|
code: null, |
|
name: null, |
|
userName:null, |
|
type: null, |
|
departmentId: null, |
|
userId: null, |
|
deadline: null, |
|
totalOutlay: null, |
|
firstOutlay: null, |
|
secondOutlay: null, |
|
status: null, |
|
beginDate: null, |
|
completeDate: null, |
|
beginDateLX: null, |
|
completeDateLX: null, |
|
endDate: null, |
|
approvalDate: null, |
|
isSecrecy: null, |
|
secrecyLevel: null, |
|
secrecyTerm: null, |
|
isTopic: null, |
|
taskTarget: null, |
|
resultTarget: null, |
|
methodRoute: null, |
|
plan: null, |
|
spendExplain: null, |
|
relyId: null, |
|
lastDate: null, |
|
reviewStatusXb: null, |
|
reviewStatusCw: null, |
|
totalBudget: null, |
|
firstBudget: null, |
|
secondBudget: null, |
|
applyId: null, |
|
projectSource: null, |
|
projectSourceCompany: null, |
|
reviewStatusZwh: null, |
|
isAgreement: null, |
|
relyUnitHead: null, |
|
relyUnitHeadtocw: null, |
|
taskPeriod: null, |
|
otherplan: null, |
|
point: null, |
|
result: null, |
|
introduction: null, |
|
proprotion: null, |
|
term: null, |
|
pishiStatus: null, |
|
yearRadio2: null, |
|
proPeopName:null, |
|
yituoArea:null, |
|
isResult:null, |
|
importantKey:null, |
|
searchValue:null |
|
|
|
}, |
|
// 表单参数 |
|
form: {}, |
|
// 表单校验 |
|
rules: {}, |
|
formCounten: { |
|
name: '', |
|
region: '', |
|
date1: '', |
|
date2: '', |
|
delivery: false, |
|
type: [], |
|
resource: '', |
|
desc: '' |
|
}, |
|
formLabelWidth: '120px', |
|
excelType:[ |
|
{ |
|
name:'ALL', |
|
value: 'all' |
|
}, |
|
{ |
|
name:'项目', |
|
value:'projectExport' |
|
}, |
|
{ |
|
name:'课题', |
|
value:'topicExport', |
|
}, |
|
{ |
|
name:'专题', |
|
value: 'specialExport' |
|
}, |
|
{ |
|
name:'依托单位', |
|
value: 'deptExport' |
|
}, |
|
{ |
|
name:'参与人员信息', |
|
value: 'participantsExport' |
|
}, |
|
{ |
|
name:'管理报告', |
|
value: 'reportExport' |
|
}, |
|
{ |
|
name:'任务书', |
|
value:'bookExport' |
|
|
|
}, |
|
{ |
|
name:'管理报告补全', |
|
value:'complementReportExport' |
|
|
|
}, |
|
{ |
|
name:'成果详情导入', |
|
value:'achievementsExport' |
|
|
|
} |
|
|
|
], |
|
excelOption:[ |
|
{ |
|
name:'添加', |
|
value:'inset', |
|
url:'/upload/addProject' |
|
}, |
|
{ |
|
name:'修改', |
|
value:'update', |
|
url:'/upload/modifyData' |
|
} |
|
] |
|
|
|
|
|
}; |
|
}, |
|
created() { |
|
if(this.$route.query.yearRadio2 ){ |
|
this.queryParams.yearRadio2 = this.$route.query.yearRadio2 ; |
|
}else{ |
|
this.queryParams.yearRadio2 = "0" ; |
|
} |
|
|
|
if(this.$route.query.secrecyLevel){ |
|
this.queryParams.secrecyLevel = this.$route.query.secrecyLevel; |
|
}else{ |
|
this.queryParams.secrecyLevel = "0" ; |
|
} |
|
if(this.$route.query.type){ |
|
this.queryParams.type = this.$route.query.type; |
|
}else{ |
|
this.queryParams.type = "0" ; |
|
} |
|
if(this.$route.query.departmentId){ |
|
this.queryParams.departmentId = this.$route.query.departmentId; |
|
}else{ |
|
this.queryParams.departmentId = "0" ; |
|
} |
|
this.queryParams.yituoUnit = this.$route.query.yituoUnit; |
|
this.queryParams.userName = this.$route.query.userName; |
|
this.queryParams.importantKey = this.$route.query.importantKey; |
|
this.queryParams.yituoArea = this.$route.query.yituoArea; |
|
// this.queryParams.yearRadio = this.$route.query.yearRadio; |
|
// |
|
// this.queryParams.isResult = this.$route.query.isResult; |
|
// this.queryParams.status = this.$route.query.status; |
|
|
|
// |
|
|
|
// |
|
|
|
var date = new Date(); |
|
var year = date.getFullYear(); |
|
|
|
this.yearOptions[0] = year; |
|
this.yearOptions[1] = year - 1; |
|
this.yearOptions[2] = year - 2; |
|
this.yearOptions[3] = year - 3; |
|
this.yearOptions[4] = year - 4; |
|
this.yearOptions[5] = year - 5; |
|
this.getList(); |
|
|
|
this.getDicts("pro_type").then((response) => { |
|
this.typeOptions = response.data; |
|
}); |
|
this.getDicts("pro_secret_level").then((response) => { |
|
this.secretOptions = response.data; |
|
}); |
|
this.getDicts("pro_source").then((response) => { |
|
this.sourceOptions = response.data; |
|
}); |
|
this.getDicts("pro_category").then((response) => { |
|
this.categoryOptions = response.data; |
|
}); |
|
this.getDicts("pro_status").then((response) => { |
|
this.statusOptions = response.data; |
|
}); |
|
this.getDicts("sys_yes_no").then((response) => { |
|
this.yesNoOptions = response.data; |
|
}); |
|
|
|
}, |
|
methods: { |
|
tableRowClassName({ row, rowIndex }) { |
|
if ((rowIndex + 1) % 2 === 0) { |
|
return "warning-row"; //类名 |
|
} else { |
|
return "success-row"; //类名 |
|
} |
|
|
|
}, |
|
sortChange(column, prop, order) { |
|
if (column.prop == "category") { |
|
this.queryParams.categoryOrder = "1"; |
|
this.queryParams.codeOrder = ""; |
|
this.queryParams.nameOrder = ""; |
|
this.queryParams.typeOrder = ""; |
|
this.queryParams.deadlineOrder = ""; |
|
this.queryParams.totalOutlayOrder = ""; |
|
this.queryParams.projectSourceOrder = ""; |
|
} else if (column.prop == "code") { |
|
this.queryParams.categoryOrder = ""; |
|
this.queryParams.codeOrder = "1"; |
|
this.queryParams.nameOrder = ""; |
|
this.queryParams.typeOrder = ""; |
|
this.queryParams.deadlineOrder = ""; |
|
this.queryParams.totalOutlayOrder = ""; |
|
this.queryParams.projectSourceOrder = ""; |
|
} else if (column.prop == "name") { |
|
this.queryParams.categoryOrder = ""; |
|
this.queryParams.codeOrder = ""; |
|
this.queryParams.nameOrder = "1"; |
|
this.queryParams.typeOrder = ""; |
|
this.queryParams.deadlineOrder = ""; |
|
this.queryParams.totalOutlayOrder = ""; |
|
this.queryParams.projectSourceOrder = ""; |
|
} else if (column.prop == "type") { |
|
this.queryParams.categoryOrder = ""; |
|
this.queryParams.codeOrder = ""; |
|
this.queryParams.nameOrder = ""; |
|
this.queryParams.typeOrder = "1"; |
|
this.queryParams.deadlineOrder = ""; |
|
this.queryParams.totalOutlayOrder = ""; |
|
this.queryParams.projectSourceOrder = ""; |
|
} else if (column.prop == "deadline") { |
|
this.queryParams.categoryOrder = ""; |
|
this.queryParams.codeOrder = ""; |
|
this.queryParams.nameOrder = ""; |
|
this.queryParams.typeOrder = ""; |
|
this.queryParams.deadlineOrder = "1"; |
|
this.queryParams.totalOutlayOrder = ""; |
|
this.queryParams.projectSourceOrder = ""; |
|
} else if (column.prop == "totalOutlay") { |
|
this.queryParams.categoryOrder = ""; |
|
this.queryParams.codeOrder = ""; |
|
this.queryParams.nameOrder = ""; |
|
this.queryParams.typeOrder = ""; |
|
this.queryParams.deadlineOrder = ""; |
|
this.queryParams.totalOutlayOrder = "1"; |
|
this.queryParams.projectSourceOrder = ""; |
|
} else if (column.prop == "projectSource") { |
|
this.queryParams.categoryOrder = ""; |
|
this.queryParams.codeOrder = ""; |
|
this.queryParams.nameOrder = ""; |
|
this.queryParams.typeOrder = ""; |
|
this.queryParams.deadlineOrder = ""; |
|
this.queryParams.totalOutlayOrder = ""; |
|
this.queryParams.projectSourceOrder = "1"; |
|
} |
|
|
|
if (column.order == "ascending") { |
|
this.queryParams.orderSort = "asc"; |
|
} else if (column.order == "descending") { |
|
this.queryParams.orderSort = "desc"; |
|
} |
|
this.getList(); |
|
}, |
|
isTopicFormat(row, column) { |
|
return this.selectDictLabel(this.yesNoOptions, row.isTopic); |
|
}, |
|
isSecrecyFormat(row, column) { |
|
return this.selectDictLabel(this.yesNoOptions, row.isSecrecy); |
|
}, |
|
typeFormat(row, column) { |
|
return this.selectDictLabel(this.typeOptions, row.type); |
|
}, |
|
secretFormat(row, column) { |
|
return this.selectDictLabel(this.secretOptions, row.secrecyLevel); |
|
}, |
|
categoryFormat(row, column) { |
|
return this.selectDictLabel(this.categoryOptions, row.category); |
|
}, |
|
statusFormat(row, column) { |
|
return this.selectDictLabel(this.statusOptions, row.status); |
|
}, |
|
sourceFormat(row, column) { |
|
return this.selectDictLabel(this.sourceOptions, row.projectSource); |
|
}, |
|
getStatistics(queryParams){ |
|
|
|
statistics(queryParams).then(resp=>{ |
|
this.zjf=resp.data.zjf; |
|
|
|
}); |
|
}, |
|
/** 导入按钮操作 */ |
|
handleImport() { |
|
this.uploadProject.title = "项目导入"; |
|
this.uploadProject.open = true; |
|
}, |
|
/** 查询【请填写功能名称】列表 */ |
|
getList() { |
|
this.loading = true; |
|
|
|
listInfo(this.queryParams).then((response) => { |
|
this.infoList = response.rows; |
|
this.total = response.total; |
|
this.loading = false; |
|
}); |
|
this.getStatistics(this.queryParams) |
|
}, |
|
// 取消按钮 |
|
cancel() { |
|
this.open = false; |
|
this.reset(); |
|
}, |
|
// 表单重置 |
|
reset() { |
|
this.form = { |
|
id: null, |
|
category: null, |
|
code: null, |
|
name: null, |
|
type: null, |
|
departmentId: null, |
|
userId: null, |
|
deadline: null, |
|
totalOutlay: null, |
|
firstOutlay: null, |
|
secondOutlay: null, |
|
status: 0, |
|
beginDate: null, |
|
completeDate: null, |
|
endDate: null, |
|
approvalDate: null, |
|
isSecrecy: null, |
|
secrecyLevel: null, |
|
secrecyTerm: null, |
|
isTopic: null, |
|
taskTarget: null, |
|
resultTarget: null, |
|
methodRoute: null, |
|
plan: null, |
|
spendExplain: null, |
|
relyId: null, |
|
lastDate: null, |
|
reviewStatusXb: null, |
|
reviewStatusCw: null, |
|
totalBudget: null, |
|
firstBudget: null, |
|
secondBudget: null, |
|
applyId: null, |
|
projectSource: null, |
|
projectSourceCompany: null, |
|
reviewStatusZwh: null, |
|
isAgreement: null, |
|
relyUnitHead: null, |
|
relyUnitHeadtocw: null, |
|
taskPeriod: null, |
|
otherplan: null, |
|
point: null, |
|
result: null, |
|
introduction: null, |
|
proprotion: null, |
|
term: null, |
|
createBy: null, |
|
createTime: null, |
|
updateBy: null, |
|
updateTime: null, |
|
delFlag: null, |
|
}; |
|
this.resetForm("form"); |
|
}, |
|
async logout() { |
|
this.$confirm('确定注销并退出系统吗?', '提示', { |
|
confirmButtonText: '确定', |
|
cancelButtonText: '取消', |
|
type: 'warning' |
|
}).then(() => { |
|
this.$store.dispatch('LogOut').then(() => { |
|
location.href = '/index'; |
|
}) |
|
}) |
|
}, |
|
/** 搜索按钮操作 */ |
|
handleQuery() { |
|
this.queryParams.pageNum = 1; |
|
this.getList(); |
|
this.getLeft7(this.queryParams); |
|
this.getCenter8(this.queryParams); |
|
this.getLeft1(this.queryParams); |
|
}, |
|
handleNameQuery(){ |
|
this.nameTuOpen = true; |
|
this.queryParams.pageNum = 1; |
|
this.getList(); |
|
this.getLeft7(this.queryParams); |
|
this.getLeft1(this.queryParams); |
|
// this.getCenter8(this.queryParams); |
|
}, |
|
handleUserNameQuery(){ |
|
this.userNameTuOpen = true; |
|
this.queryParams.pageNum = 1; |
|
this.getList(); |
|
this.getTotalBuget(this.queryParams); |
|
|
|
this.getCenter8(this.queryParams); |
|
}, |
|
getTotalBuget(queryParams){ |
|
totalBugetData(queryParams).then( |
|
resp=>{ |
|
|
|
this.totalBuget = resp.data.totalBudget |
|
} |
|
); |
|
}, |
|
getLeft1(queryParams){ |
|
|
|
let param=queryParams.yearRadio2 |
|
if(param=='0'){ |
|
param='999' |
|
} |
|
left1Data({yearRadio2:param}).then( |
|
resp=>{ |
|
if(queryParams.yearRadio2 == '0'){ |
|
this.otTitle = '2016-今' |
|
} |
|
else if(queryParams.yearRadio2 =='2015'){ |
|
this.otTitle="2016年以前" |
|
}else { |
|
this.otTitle="2016-今" |
|
} |
|
this.blLg = ['项目数', '经费数']; |
|
this.blX =resp.data.yearArray; |
|
let temp = []; |
|
let item = {}; |
|
item.name = '项目数'; |
|
item.type='bar'; |
|
item.barWidth=50; |
|
item.data=resp.data.numArray; |
|
item.itemStyle={ |
|
normal: { |
|
//这里是重点 |
|
color: '#5470c6' |
|
} |
|
|
|
}; |
|
temp.push(item); |
|
let item1 = {}; |
|
item1.name = '经费数'; |
|
item1.type='line'; |
|
item1.yAxisIndex= 1; |
|
item1.data=resp.data.bugetArray; |
|
item1.itemStyle={ |
|
normal: { |
|
//这里是重点 |
|
color: '#ffa200' |
|
} |
|
|
|
}; |
|
temp.push(item1); |
|
this.blSer=temp; |
|
|
|
} |
|
); |
|
}, |
|
getLeft7(queryParams){ |
|
left7Data(queryParams).then( |
|
resp => { |
|
|
|
if(queryParams.yearRadio2 == '0'){ |
|
this.otTitle = "至今" |
|
} |
|
else if(queryParams.yearRadio2 =='2015'){ |
|
this.otTitle="2016年以前" |
|
}else if(queryParams.yearRadio2 =='999'){ |
|
this.otTitle="2016-今" |
|
}else{ |
|
this.otTitle=queryParams.yearRadio2 +"年" |
|
} |
|
|
|
let temp = []; |
|
let item = {}; |
|
item.name = '经费数'; |
|
item.type='bar'; |
|
item.barGap="-100%"; |
|
item.data=resp.data.yjfArray; |
|
item.itemStyle={ |
|
normal: { |
|
//这里是重点 |
|
color: '#f8622f' |
|
} |
|
|
|
}; |
|
temp.push(item); |
|
let item1 = {}; |
|
item1.name = '实际经费'; |
|
item1.type='bar'; |
|
item1.yAxisIndex= 1; |
|
item1.barGap="-100%"; |
|
item1.data=resp.data.ySjjfArray; |
|
item1.itemStyle={ |
|
normal: { |
|
//这里是重点 |
|
color: '#5470c6' |
|
} |
|
|
|
}; |
|
temp.push(item1); |
|
let item2 = {}; |
|
item2.name = '项目数'; |
|
item2.type='line'; |
|
item2.yAxisIndex= 2; |
|
item2.data=resp.data.yNumArray; |
|
item2.itemStyle={ |
|
normal: { |
|
//这里是重点 |
|
color: '#ffa200' |
|
} |
|
|
|
}; |
|
temp.push(item2); |
|
this.seriesCenter7 = temp; |
|
this.xAxisCenter7 = resp.data.xAxisArray; |
|
|
|
} |
|
); |
|
}, |
|
getCenter8(queryParams){ |
|
center8Data(queryParams).then( |
|
resp => { |
|
if(queryParams.yearRadio2 == '0'){ |
|
this.otTitle = "至今" |
|
} |
|
else if(queryParams.yearRadio2 =='2015'){ |
|
this.otTitle="2016年以前" |
|
}else if(queryParams.yearRadio2 =='999'){ |
|
this.otTitle="2016-今" |
|
}else{ |
|
this.otTitle=queryParams.yearRadio2 +"年" |
|
} |
|
this.seriesCenter8 = resp.data.xAxisArray; |
|
this.xAxisCenter8 = resp.data.yAxisArray; |
|
} |
|
); |
|
}, |
|
toYearPage(year){ |
|
// this.$router.push({path:"/project/infoShow/query",query:{yearRadio2:year}} ); |
|
}, |
|
toyituoUnitPage(unit){ |
|
// let yearRadio = this.yearRadio2; |
|
// this.$router.push({path:"/project/infoShow/query",query:{yituoUnit:unit,yearRadio2:yearRadio}} ); |
|
|
|
}, |
|
|
|
toUserNamePage(userName){ |
|
// let yearRadio = this.yearRadio2; |
|
// this.$router.push({path:"/project/infoShow/query",query:{userName:userName,yearRadio2:yearRadio}} ); |
|
|
|
}, |
|
/** 重置按钮操作 */ |
|
resetQuery() { |
|
this.resetForm("queryForm"); |
|
this.queryParams.yearRadio2 = "0" ; |
|
this.queryParams.secrecyLevel = "0" ; |
|
this.queryParams.type = "0" ; |
|
this.queryParams.departmentId = "0" ; |
|
this.queryParams.searchValue=null; |
|
this.handleQuery(); |
|
}, |
|
// 多选框选中数据 |
|
handleSelectionChange(selection) { |
|
this.ids = selection.map((item) => item.id); |
|
this.single = selection.length !== 1; |
|
this.multiple = !selection.length; |
|
}, |
|
/** 新增按钮操作 */ |
|
handleAdd() { |
|
this.reset(); |
|
this.open = true; |
|
this.title = "添加【请填写功能名称】"; |
|
}, |
|
/** 修改按钮操作 */ |
|
handleUpdate(row) { |
|
this.reset(); |
|
const id = row.id || this.ids; |
|
getInfo(id).then((response) => { |
|
this.form = response.data; |
|
this.open = true; |
|
this.title = "修改【请填写功能名称】"; |
|
}); |
|
}, |
|
/** 提交按钮 */ |
|
submitForm() { |
|
this.$refs["form"].validate((valid) => { |
|
if (valid) { |
|
if (this.form.id != null) { |
|
updateInfo(this.form).then((response) => { |
|
if (response.code === 200) { |
|
this.msgSuccess("修改成功"); |
|
this.open = false; |
|
this.getList(); |
|
} |
|
}); |
|
} else { |
|
addInfo(this.form).then((response) => { |
|
if (response.code === 200) { |
|
this.msgSuccess("新增成功"); |
|
this.open = false; |
|
this.getList(); |
|
} |
|
}); |
|
} |
|
} |
|
}); |
|
}, |
|
/** 删除按钮操作 */ |
|
handleDelete(row) { |
|
const ids = row.id; |
|
this.$confirm( |
|
'是否确认删除项目编号为"' + row.code + '"的数据项?', |
|
"警告", |
|
{ |
|
confirmButtonText: "确定", |
|
cancelButtonText: "取消", |
|
type: "warning", |
|
} |
|
) |
|
.then(function () { |
|
return delInfo(ids); |
|
}) |
|
.then(() => { |
|
this.getList(); |
|
this.msgSuccess("删除成功"); |
|
}) |
|
.catch(function () {}); |
|
}, |
|
/** 导出按钮操作 */ |
|
handleExport() { |
|
const queryParams = this.queryParams; |
|
this.$confirm("是否确认导出所有【请填写功能名称】数据项?", "警告", { |
|
confirmButtonText: "确定", |
|
cancelButtonText: "取消", |
|
type: "warning", |
|
}) |
|
.then(function () { |
|
return exportInfo(queryParams); |
|
}) |
|
.then((response) => { |
|
this.download(response.msg); |
|
}) |
|
.catch(function () {}); |
|
}, |
|
// 文件上传中处理 |
|
handleProjectFileUploadProgress(event, file, fileList) { |
|
this.uploadProject.isUploading = true; |
|
}, |
|
beforeProjectFileUpload(file) { |
|
const isLt200M = file.size / 1024 / 1024 < 300; |
|
if (!isLt200M) { |
|
this.$message.error("上传大小不能超过 200MB!"); |
|
} |
|
return isLt200M; |
|
}, |
|
// 文件上传成功处理 |
|
handleProjectFileSuccess: function(response, file, fileList) { |
|
this.uploadProject.open = false |
|
this.uploadProject.isUploading = false |
|
this.$refs.uploadProject.clearFiles() |
|
let msg='' |
|
response.msg.split(';').forEach( item=>{ |
|
msg +=item +`<br/>` |
|
}) |
|
this.$alert(msg, '导入结果', { dangerouslyUseHTMLString: true }) |
|
this.getList() |
|
}, |
|
// 提交上传文件 |
|
submitFileForm() { |
|
this.$refs.uploadProject.submit(); |
|
}, |
|
importTemplate() { |
|
importTemplate().then((response) => { |
|
this.download(response.msg); |
|
}); |
|
}, |
|
viewAnnexBookFile(row){ |
|
this.upload.fileList = []; |
|
this.formatUploadAnnex(row.annexName,row.annexPath); |
|
this.upload.open = true; |
|
}, |
|
//格式化上传附件 |
|
formatUploadAnnex(annexName,annexPath){ |
|
this.upload.fileList = []; |
|
if (annexPath != null && annexPath !== ''){ |
|
let a = [],b = []; |
|
try { |
|
a = JSON.parse(annexName) ; |
|
b = JSON.parse(annexPath) ; |
|
}catch (e){ |
|
a=[]; |
|
b=[]; |
|
} |
|
for (let i = 0;i<a.length;i++){ |
|
this.upload.fileList.push({ |
|
'name':a[i], |
|
'url':process.env.VUE_APP_BASE_API + b[i] |
|
}) |
|
} |
|
}else { |
|
this.upload.fileList = []; |
|
} |
|
|
|
|
|
}, |
|
handlePreview(file) { |
|
var a = document.createElement('a'); |
|
var event = new MouseEvent('click'); |
|
a.download = file.name; |
|
a.target = '_blank'; |
|
a.href = file.url; |
|
a.dispatchEvent(event); |
|
|
|
}, |
|
changUrl(url){ |
|
this.uploadProject.url= process.env.VUE_APP_BASE_API+url; |
|
} |
|
}, |
|
}; |
|
</script> |
|
<style lang="scss" scoped> |
|
.app-container{ |
|
background-color: rgb(246,247,251); |
|
|
|
} |
|
.circleButton { |
|
/deep/ .el-radio-button__inner { |
|
padding: 6px 17px; |
|
font-size: 20px; |
|
margin: 16px 10px 4px; |
|
border: 1px; |
|
border-radius: 17px !important; |
|
/*background-color: #f2f1f5;*/ |
|
} |
|
/deep/ .el-input__inner { |
|
border-color: #ddd !important; |
|
padding: 10px; |
|
} |
|
.el-form-item{ |
|
margin-bottom: 0; |
|
} |
|
/*修改提示文字的颜色*/ |
|
::-webkit-input-placeholder { |
|
color: #999 !important; |
|
font-size: 16px; |
|
} |
|
.import-btn /deep/ .el-radio-button--medium .el-radio-button__inner{ |
|
padding: 8.2px !important; |
|
} |
|
|
|
} |
|
// 分页 |
|
.explore_right_pages { |
|
|
|
|
|
/deep/.el-pagination .el-pagination__total { |
|
color: #999999; |
|
font-size: 18px; |
|
} |
|
|
|
/deep/.el-pagination .el-pagination__jump { |
|
color: #999999; |
|
font-size: 18px; |
|
|
|
.input{ |
|
margin-left: 10px; |
|
margin-right: 10px; |
|
} |
|
.el-pagination__editor{ |
|
margin-left: 10px; |
|
margin-right: 10px; |
|
.el-input__inner{ |
|
height: 26px; |
|
margin-top: 2px; |
|
} |
|
} |
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
.rightDialog{ |
|
right: 0; |
|
margin-right: 0; |
|
left:auto; |
|
} |
|
.font{ |
|
font-size: 18px; |
|
font-weight: 700; |
|
color: #333; |
|
} |
|
.lab{ |
|
float: left; |
|
margin-top: 10px |
|
} |
|
.fontT{ |
|
font-size: 18px; |
|
|
|
} |
|
|
|
/deep/ .dtable{ |
|
border: 1px solid white; |
|
background-color: white; |
|
.el-table .warning-row { |
|
background: white; |
|
} |
|
|
|
.el-table .success-row { |
|
background: #f5f6fa; |
|
} |
|
} |
|
</style>
|
|
|