commit
This commit is contained in:
@@ -1,223 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.dialog-footer .el-button {
|
||||
padding: 12px 30px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<div class="btn-group tool-button ">
|
||||
<el-date-picker
|
||||
v-model="pageForm.year"
|
||||
type="year"
|
||||
@change="doSearch"
|
||||
value-format="yyyy"
|
||||
placeholder="选择年">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
<div class="btn-group tool-button">
|
||||
<el-input placeholder="请输入项目名称" clearable v-model="pageForm.projectName"
|
||||
@keyup.enter.native="doSearch">
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="btn-group tool-button">
|
||||
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
|
||||
</div>
|
||||
|
||||
<div class="pull-right offscreen-right">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="openAdd">添加项目</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
<el-card shadow="never" class="mt20">
|
||||
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
|
||||
v-loading="tabLoading">
|
||||
<el-table-column align="center" header-align="center" label="序号" width="120px">
|
||||
<template scope="scope">
|
||||
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目名称" prop="projectName" header-align="center"
|
||||
align="center"></el-table-column>
|
||||
<el-table-column label="创建时间" prop="createTime" header-align="center"
|
||||
align="center"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="操作" fixed="right"
|
||||
width="160px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openEdit(row)" type="primary" size="mini">编辑</el-button>
|
||||
<el-button @click="doDelete(row)" type="danger" size="mini">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
|
||||
<template #edit>
|
||||
<vi-title title="项目信息"></vi-title>
|
||||
<div>
|
||||
<el-form :model="formData" ref="addForm" :rules="formRules" label-width="100px">
|
||||
<el-row :gutter="20">
|
||||
<el-col>
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input type="text" v-model="formData.projectName" maxlength="50" placeholder="请填写项目名称"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col>
|
||||
<el-form-item prop="groupId" label="面向对象">
|
||||
<div style="display: flex; justify-content: space-between">
|
||||
<div style="width: 99%">
|
||||
<el-select prop="groupId" placeholder="人员范围"
|
||||
v-model="formData.groupId"
|
||||
style="width: 99%;"
|
||||
clearable
|
||||
filterable>
|
||||
<el-option v-for="item in activityGroupList"
|
||||
:label="item.groupName"
|
||||
:value="item.groupId"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div>
|
||||
<el-button
|
||||
@click="$refs.drawerUserScope.userScopeDialog = true"
|
||||
type="primary">设置
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
<div style="float: right;margin: 20px 0">
|
||||
<el-button type="primary" :disabled="subDis" @click="operation">确 定</el-button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
</guava>
|
||||
|
||||
<drawer-user-scope
|
||||
@group_change="getActivityGroup"
|
||||
ref="drawerUserScope"
|
||||
:group_id.sync="formData.groupId"
|
||||
></drawer-user-scope>
|
||||
|
||||
<!-- <el-dialog :title="title" :visible.sync="DialogVisible" :close-on-click-modal="false" width="40%">-->
|
||||
<!-- <el-form :model="formData" ref="addForm" :rules="formRules"-->
|
||||
<!-- label-width="100px">-->
|
||||
<!-- <el-form-item label="项目名称" prop="projectName">-->
|
||||
<!-- <el-input type="text" v-model="formData.projectName" maxlength="50" placeholder="请填写项目名称"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-form>-->
|
||||
|
||||
<!-- <span slot="footer" class="dialog-footer">-->
|
||||
<!-- <el-button @click="DialogVisible = false">取 消</el-button>-->
|
||||
<!-- <el-button type="primary" :disabled="subDis" @click="operation">确 定</el-button>-->
|
||||
<!-- </span>-->
|
||||
<!-- </el-dialog>-->
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
title: "",
|
||||
subDis: false,
|
||||
DialogVisible: false,
|
||||
tabLoading: false,
|
||||
pageForm: {},
|
||||
formRules: {
|
||||
projectName: [{required: true, message: '必选', trigger: ['blur', 'change']}],
|
||||
groupId: [{required: true, message: '必选', trigger: ['blur', 'change']}],
|
||||
},
|
||||
formData:{},
|
||||
activityGroupList: [],
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||
'drawer-user-scope': httpVueLoader('/components/plugins/DrawerUserScope.vue'),
|
||||
},
|
||||
methods: {
|
||||
openAdd() {
|
||||
this.title = "添加项目"
|
||||
this.formData = {}
|
||||
// this.DialogVisible = true;
|
||||
if (this.$refs['addForm']) {
|
||||
this.$refs['addForm'].resetFields()
|
||||
}
|
||||
this.$refs.guava.edit()
|
||||
},
|
||||
openEdit(data) {
|
||||
this.title = "编辑项目"
|
||||
this.formData = data
|
||||
// this.DialogVisible = true;
|
||||
this.$refs.guava.edit()
|
||||
},
|
||||
async operation() {
|
||||
let method = this.formData.id ? "/doEdit" : "/doAdd"
|
||||
this.$refs["addForm"].validate(async (valid) => {
|
||||
if (valid) {
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '正在提交...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: COVER_LAYER_COLOR
|
||||
});
|
||||
const resp = await $.post(loc() + method, this.formData)
|
||||
|
||||
if(resp.code===0){
|
||||
// this.DialogVisible = false
|
||||
this.$refs.guava.index()
|
||||
this.notifySuccess(resp.msg)
|
||||
this.pageData()
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
loading.close()
|
||||
}
|
||||
});
|
||||
},
|
||||
async doDelete(row) {
|
||||
let self = this
|
||||
this.$confirm('确定要删除吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: async (a, b) => {
|
||||
if ("confirm" === a) {
|
||||
const resp = await $.get(loc() + "/doDelete", {id: row.id})
|
||||
|
||||
if(resp.code===0){
|
||||
this.notifySuccess(resp.msg)
|
||||
this.pageData()
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
async getActivityGroup() {
|
||||
const resp = await $.get('/platform/activity/basic/scope/getActivityUserScopeGroup')
|
||||
this.activityGroupList = resp.data
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.pageData()
|
||||
this.getActivityGroup()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,241 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-input clearable placeholder="请输入姓名或工号查询"
|
||||
@keyup.enter.native="doSearch" v-model="pageForm.keyword">
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-select
|
||||
clearable
|
||||
@change="doSearch"
|
||||
placeholder="请选择分组"
|
||||
style="width: 100%"
|
||||
v-model="pageForm.groupName">
|
||||
<el-option
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item"
|
||||
v-for="item in groupNameOptions">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-button type="primary" @click="doSearch" icon="el-icon-search"></el-button>
|
||||
</div>
|
||||
<div class="pull-right offscreen-right mt5">
|
||||
<el-button @click="openAdd" size="medium" type="primary"><i class="ti-plus"></i>新增评委</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
<el-card shadow="never" class="mt10">
|
||||
<el-table :data="tableData" @sort-change='pageOrder'>
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index">
|
||||
<template scope="scope">
|
||||
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="评委姓名" prop="username"></el-table-column>
|
||||
<el-table-column label="评委工号" prop="loginname"></el-table-column>
|
||||
<el-table-column label="职务" prop="zw" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="职称" prop="zc" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="所在单位" prop="dwname" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="负责选题数" prop="xxnum"></el-table-column>
|
||||
<el-table-column label="期数" prop="period" sortable></el-table-column>
|
||||
<el-table-column label="组别" prop="groupName" sortable></el-table-column>
|
||||
<el-table-column label="操作" width="200px">
|
||||
<template slot-scope="scope">
|
||||
<el-button @click="openEdit(scope.row)" size="mini" type="primary">编辑</el-button>
|
||||
<el-button @click="doDelete(scope.row)" size="mini" type="danger">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
@current-change="pageNumberChange"
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-size="pageForm.pageSize"
|
||||
layout="total, prev, pager, next, jumper"
|
||||
:total="pageForm.totalCount">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</guava>
|
||||
|
||||
<el-dialog :title="userDialogTitle" :visible.sync="userDialogVisible" width="30%">
|
||||
<el-form :model="formData" label-width="100px" ref="userForm">
|
||||
<el-form-item :rules="[{required: true, message: '请选择期数或输入一个新期数', trigger: ['blur', 'change']}]" label="期数"
|
||||
prop="period">
|
||||
<el-select
|
||||
allow-create
|
||||
default-first-option
|
||||
filterable
|
||||
placeholder="请选择期数或输入一个新期数"
|
||||
style="width: 100%"
|
||||
v-model="formData.period">
|
||||
<el-option
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item"
|
||||
v-for="item in periodOptions">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :rules="[{required: true, message: '请先搜素并选择要新增的评委', trigger: ['blur', 'change']}]" label="姓名"
|
||||
prop="userid">
|
||||
<el-select
|
||||
:disabled="formData.id"
|
||||
v-model="formData.userid"
|
||||
clearable
|
||||
filterable
|
||||
remote
|
||||
placeholder="请输入姓名或者工号查询"
|
||||
style="width: 100%"
|
||||
:remote-method="queryUser">
|
||||
<el-option
|
||||
v-for="u in userOptions"
|
||||
:key="u.id"
|
||||
:label="u.username + '-' +u.loginname"
|
||||
:value="u.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :rules="[{required: true, message: '请选择分组或输入一个新分组', trigger: ['blur', 'change']}]" label="组别"
|
||||
prop="groupName">
|
||||
<el-select
|
||||
allow-create
|
||||
default-first-option
|
||||
filterable
|
||||
placeholder="请选择分组或输入一个新分组"
|
||||
style="width: 100%"
|
||||
v-model="formData.groupName">
|
||||
<el-option
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item"
|
||||
v-for="item in groupNameOptions">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row slot="footer">
|
||||
<el-button @click="userDialogVisible = false">取消</el-button>
|
||||
<el-button @click="doSubmit" type="primary">确定</el-button>
|
||||
</el-row>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
let vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
tableData: [],
|
||||
userDialogVisible: false,
|
||||
userOptions: [],
|
||||
formData: {
|
||||
id: null,
|
||||
userid: null,
|
||||
groupName: null
|
||||
},
|
||||
groupNameOptions: [],
|
||||
periodOptions:[],
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
userDialogTitle() {
|
||||
return this.formData.id ? '编辑评委' : '新增评委'
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async queryUser(val) {
|
||||
if (val) {
|
||||
const resp = await $.get(loc() + '/queryUser/' + val)
|
||||
if (resp.code === 0) {
|
||||
this.userOptions = resp.data
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
}
|
||||
},
|
||||
openAdd() {
|
||||
this.userDialogVisible = true
|
||||
this.userOptions = []
|
||||
if (this.$refs['userForm']) {
|
||||
this.$refs['userForm'].resetFields()
|
||||
}
|
||||
this.formData.id = null
|
||||
},
|
||||
async doSubmit() {
|
||||
const valid = await this.$refs['userForm'].validate()
|
||||
if (!valid) return
|
||||
const methodName = this.formData.id ? '/doEdit' : '/doAdd'
|
||||
const resp = await $.post(loc() + methodName, this.formData)
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
this.userDialogVisible = false
|
||||
this.doSearch()
|
||||
this.getGroupNameOptions()
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
},
|
||||
openEdit(row) {
|
||||
this.userDialogVisible = true
|
||||
this.userOptions = [{
|
||||
id: row.userid,
|
||||
username: row.username,
|
||||
loginname: row.loginname
|
||||
}]
|
||||
this.$nextTick(() => {
|
||||
this.formData = {...row}
|
||||
})
|
||||
},
|
||||
|
||||
async doDelete(row) {
|
||||
const confirm = await this.$confirm('确定删除该评委, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if ('confirm' !== confirm) return
|
||||
const resp = await $.post(loc() + '/doDelete/' + row.id)
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
this.doSearch()
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
},
|
||||
async getGroupNameOptions() {
|
||||
const resp = await $.get(loc() + '/getGroupNameOptions')
|
||||
if (resp.code === 0) {
|
||||
this.groupNameOptions = resp.data
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
},
|
||||
async getPeriodOptions() {
|
||||
const resp = await $.get('/platform/syr/basic/pwgl/getPeriodOptions')
|
||||
if (resp.code === 0) {
|
||||
this.periodOptions = resp.data
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.pageData()
|
||||
this.getGroupNameOptions()
|
||||
this.getPeriodOptions();
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,236 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.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>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
|
||||
<el-card shadow="never">
|
||||
<div class="search">
|
||||
<div class="search-item">
|
||||
<div class="search-item-label yearDatePickerItemLabel" style="width: 150px;margin-right: 0">
|
||||
<el-select v-model="pageForm.yearType" placeholder="年度类型"
|
||||
style="width: 150px;">
|
||||
<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="pageForm.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="pageForm.xmmc" placeholder="请输入项目名称查询" style="width: 100%;"></el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">申报人:</div>
|
||||
<div class="search-item-option">
|
||||
<el-input v-model="pageForm.searchKeyword" placeholder="请输入内容" @keyup.enter.native="doSearch">
|
||||
<el-select slot="prepend" v-model="pageForm.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">
|
||||
<div class="search-item-label">院级工会:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select v-model="pageForm.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">
|
||||
<div class="search-item-label">单位:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select v-model="pageForm.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="pageForm.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="pageForm.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">
|
||||
<el-table :data="tableData" @sort-change='pageOrder'>
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index">
|
||||
<template scope="scope">
|
||||
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目名称" prop="xmmc" show-overflow-tooltip width="400"></el-table-column>
|
||||
<el-table-column label="申报人" prop="username"></el-table-column>
|
||||
<el-table-column label="性别" prop="sex" width="100"></el-table-column>
|
||||
<el-table-column label="申报单位" prop="dwname" show-overflow-tooltip width="150"></el-table-column>
|
||||
<el-table-column label="院级工会" prop="ghname" show-overflow-tooltip width="150"></el-table-column>
|
||||
<el-table-column label="职务职称" prop="zwzc" width="100"></el-table-column>
|
||||
<el-table-column label="状态" prop="statename" sortable width="200"></el-table-column>
|
||||
<el-table-column label="申报日期" prop="sbrq" sortable width="100"></el-table-column>
|
||||
<el-table-column fixed="right" label="操作" width="200">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini">查看</el-button>
|
||||
<!--# if(@shiro.hasRole('sysadmin')){ #-->
|
||||
<el-button @click="doDelete(row.id)" size="mini" type="danger">删除
|
||||
</el-button>
|
||||
<!--# } #-->
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-size="pageForm.pageSize"
|
||||
:total="pageForm.totalCount"
|
||||
@current-change="pageNumberChange"
|
||||
layout="total, prev, pager, next, jumper">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
<template #view>
|
||||
<syr-info-new ref="viewInfo"></syr-info-new>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
<script>
|
||||
let vm = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
smm: {
|
||||
status: 'table'
|
||||
},
|
||||
unionList: [],
|
||||
unitList: [],
|
||||
tableShow: true,
|
||||
pageForm: {
|
||||
searchName: 'u.username',
|
||||
searchKeyword: '',
|
||||
xmmc: '',
|
||||
unionid: '',
|
||||
unitid: '',
|
||||
year: new Date().getFullYear().toString(),
|
||||
yearType: 'sbyear'
|
||||
},
|
||||
tableData: [],
|
||||
xmid: '',
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'syr-info-new': httpVueLoader('/components/syr/SyrInfoNew.vue'),
|
||||
},
|
||||
methods: {
|
||||
async pageData() {
|
||||
const {data} = await $.post('/platform/syr/cxtj/dgncx/pageData', this.pageForm, true)
|
||||
this.tableData = data.list
|
||||
this.pageForm.totalCount = data.totalCount
|
||||
},
|
||||
async openView(row) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.viewInfo.openView(row.id)
|
||||
},
|
||||
async getUnitList() {
|
||||
this.unitList = []
|
||||
this.pageForm.unitid = ''
|
||||
this.unitList = await getUnits(this.pageForm.unionid)
|
||||
},
|
||||
doDelete(id) {
|
||||
this.$confirm('是否确定删除?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(async () => {
|
||||
$.post('/platfotm/syr/info/mykt/doDelete', {id: id})
|
||||
this.doSearch()
|
||||
}).catch(() => {
|
||||
})
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.pageData()
|
||||
this.unionList = await getUnions(null)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,197 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.aa > div {
|
||||
flex-direction: row;
|
||||
flex-wrap: nowrap;
|
||||
white-space: nowrap;
|
||||
margin: 5px;
|
||||
}
|
||||
</style>
|
||||
<div id="app" v-cloak>
|
||||
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<div class="search">
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">年份:</div>
|
||||
<el-date-picker style="width: 100%"
|
||||
clearable="false"
|
||||
placeholder="选择年份"
|
||||
type="year"
|
||||
v-model="pageForm.year"
|
||||
value-format="yyyy">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<el-input @keyup.enter.native="doSearch" placeholder="请输入内容" v-model="pageForm.searchKeyword">
|
||||
<el-select placeholder="查询类型" slot="prepend" style="width: 120px;"
|
||||
v-model="pageForm.searchName">
|
||||
<el-option label="申报人姓名" value="u.username"></el-option>
|
||||
<el-option label="申报人工号" value="u.loginname"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">工会:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select v-model="pageForm.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">
|
||||
<div class="search-item-label">单位:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select v-model="pageForm.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>
|
||||
|
||||
</el-card>
|
||||
<el-card class="mt10" shadow="never">
|
||||
<vi-title2 title="优秀课题汇总">
|
||||
<template #func>
|
||||
<el-button @click="exportSummary" type="primary">
|
||||
<i aria-hidden="true" class="fa fa-file-word-o"></i>
|
||||
优秀课题汇总表
|
||||
</el-button>
|
||||
</template>
|
||||
</vi-title2>
|
||||
<el-table :data="tableData" @sort-change='pageOrder'>
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index">
|
||||
<template scope="scope">
|
||||
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目名称" prop="xmmc" show-overflow-tooltip width="400"></el-table-column>
|
||||
<el-table-column label="申报人" prop="username"></el-table-column>
|
||||
<el-table-column label="性别" prop="sex" width="100"></el-table-column>
|
||||
<el-table-column label="申报单位" prop="dwname" show-overflow-tooltip width="150"></el-table-column>
|
||||
<el-table-column label="院级工会" prop="ghname" show-overflow-tooltip width="150"></el-table-column>
|
||||
<el-table-column label="职务职称" prop="zwzc" width="100"></el-table-column>
|
||||
<el-table-column label="状态" prop="statename" sortable width="200"></el-table-column>
|
||||
<el-table-column label="申报日期" prop="sbrq" sortable width="100"></el-table-column>
|
||||
<el-table-column fixed="right" label="操作" width="100">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini">查看</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-size="pageForm.pageSize"
|
||||
:total="pageForm.totalCount"
|
||||
@current-change="pageNumberChange"
|
||||
layout="total, prev, pager, next, jumper">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
<template #view>
|
||||
<syr-info-new ref="viewInfo"></syr-info-new>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
<script>
|
||||
let vm = new Vue({
|
||||
el: '#app',
|
||||
data() {
|
||||
return {
|
||||
unionList: [],
|
||||
unitList: [],
|
||||
tableShow: true,
|
||||
pageForm: {
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
pageOrderName: '',
|
||||
pageOrderBy: '',
|
||||
searchName: 'u.username',
|
||||
searchKeyword: '',
|
||||
xmmc: '',
|
||||
unionid: '',
|
||||
unitid: '',
|
||||
year: ''
|
||||
},
|
||||
tableData: [],
|
||||
xmid: '',
|
||||
hasAdminRole:${@shiro.hasRole('sysadmin')}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'syr-info-new': httpVueLoader('/components/syr/SyrInfoNew.vue'),
|
||||
},
|
||||
methods: {
|
||||
async pageData() {
|
||||
const {data} = await $.post('/platform/syr/cxtj/goodkt/pageData', this.pageForm, true)
|
||||
this.tableData = data.list
|
||||
this.pageForm.totalCount = data.totalCount
|
||||
},
|
||||
pageOrder(column) {
|
||||
this.pageForm.pageOrderName = column.prop
|
||||
this.pageForm.pageOrderBy = column.order
|
||||
this.pageData()
|
||||
},
|
||||
pageNumberChange(val) {
|
||||
this.pageForm.pageNumber = val
|
||||
this.pageData()
|
||||
},
|
||||
doSearch() {
|
||||
this.pageForm.pageNumber = 1
|
||||
this.pageData()
|
||||
},
|
||||
async openView(row) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.viewInfo.openView(row.id)
|
||||
},
|
||||
async getUnitList() {
|
||||
this.unitList = []
|
||||
this.pageForm.unitid = ''
|
||||
this.unitList = await getUnits(this.pageForm.unionid)
|
||||
},
|
||||
exportSummary() {
|
||||
if (this.pageForm.year === '') {
|
||||
this.$message.info('请先选择年份!')
|
||||
return
|
||||
}
|
||||
window.location.href = '/platform/syr/cxtj/goodkt/exportSummary?year=' + this.pageForm.year
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.pageData()
|
||||
this.unionList = await getUnions(null)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,262 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.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>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
|
||||
<el-card shadow="never">
|
||||
<div class="search">
|
||||
<div class="search-item">
|
||||
<div class="search-item-label yearDatePickerItemLabel" style="width: 150px;margin-right: 0">
|
||||
<el-select v-model="pageForm.yearType" placeholder="年度类型"
|
||||
style="width: 150px;">
|
||||
<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="pageForm.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="pageForm.xmmc" placeholder="请输入项目名称查询" style="width: 100%;"></el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">申报人:</div>
|
||||
<div class="search-item-option">
|
||||
<el-input v-model="pageForm.searchKeyword" placeholder="请输入内容" @keyup.enter.native="doSearch">
|
||||
<el-select slot="prepend" v-model="pageForm.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">
|
||||
<div class="search-item-label">院级工会:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select v-model="pageForm.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">
|
||||
<div class="search-item-label">单位:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select v-model="pageForm.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="pageForm.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="pageForm.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>
|
||||
<el-button @click="exportLxhz" size="small" type="primary">导出立项申报汇总表</el-button>
|
||||
<el-button @click="exportLxpshz" size="small" type="primary">导出立项评审汇总表</el-button>
|
||||
<el-button @click="exportJtpshz" size="small" type="primary">导出结题评审汇总表</el-button>
|
||||
<el-button @click="exportGoodProject" size="small" type="primary">导出结题汇总表</el-button>
|
||||
</template>
|
||||
</vi-title2>
|
||||
<el-table :data="tableData" @sort-change='pageOrder'>
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index">
|
||||
<template scope="scope">
|
||||
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目名称" prop="xmmc" show-overflow-tooltip width="400"></el-table-column>
|
||||
<el-table-column label="申报人" prop="username"></el-table-column>
|
||||
<el-table-column label="性别" prop="sex" width="100"></el-table-column>
|
||||
<el-table-column label="申报单位" prop="dwname" show-overflow-tooltip width="150"></el-table-column>
|
||||
<el-table-column label="院级工会" prop="ghname" show-overflow-tooltip width="150"></el-table-column>
|
||||
<el-table-column label="职务职称" prop="zwzc" width="100"></el-table-column>
|
||||
<el-table-column label="状态" prop="statename" sortable width="200"></el-table-column>
|
||||
<el-table-column label="申报日期" prop="sbrq" sortable width="100"></el-table-column>
|
||||
<el-table-column fixed="right" label="操作" width="100">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini">查看</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-size="pageForm.pageSize"
|
||||
:total="pageForm.totalCount"
|
||||
@current-change="pageNumberChange"
|
||||
layout="total, prev, pager, next, jumper">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
<template #view>
|
||||
<syr-info-new ref="viewInfo"></syr-info-new>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
<script>
|
||||
let vm = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
smm: {
|
||||
status: 'table'
|
||||
},
|
||||
unionList: [],
|
||||
unitList: [],
|
||||
tableShow: true,
|
||||
pageForm: {
|
||||
searchName: 'u.username',
|
||||
searchKeyword: '',
|
||||
xmmc: '',
|
||||
unionid: '',
|
||||
unitid: '',
|
||||
year: new Date().getFullYear().toString(),
|
||||
yearType: 'sbyear'
|
||||
},
|
||||
tableData: [],
|
||||
xmid: '',
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'syr-info-new': httpVueLoader('/components/syr/SyrInfoNew.vue'),
|
||||
},
|
||||
methods: {
|
||||
async pageData() {
|
||||
const {data} = await $.post('/platform/syr/cxtj/dgncx/pageData', this.pageForm, true)
|
||||
this.tableData = data.list
|
||||
this.pageForm.totalCount = data.totalCount
|
||||
},
|
||||
async openView(row) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.viewInfo.openView(row.id)
|
||||
},
|
||||
async getUnitList() {
|
||||
this.unitList = []
|
||||
this.pageForm.unitid = ''
|
||||
this.unitList = await getUnits(this.pageForm.unionid)
|
||||
},
|
||||
exportLxhz() {
|
||||
const {year} = this.pageForm
|
||||
if (!year) {
|
||||
this.notifyWarning('请先选择年度')
|
||||
return
|
||||
}
|
||||
window.open(loc() + '/export?year=' + year)
|
||||
},
|
||||
exportLxpshz() {
|
||||
const {year} = this.pageForm
|
||||
if (!year) {
|
||||
this.notifyWarning('请先选择年度')
|
||||
return
|
||||
}
|
||||
window.open(loc() + '/exportLxpshz?year=' + year)
|
||||
},
|
||||
exportJtpshz() {
|
||||
const {year} = this.pageForm
|
||||
if (!year) {
|
||||
this.notifyWarning('请先选择年度')
|
||||
return
|
||||
}
|
||||
window.open(loc() + '/exportJtpshz?year=' + year)
|
||||
},
|
||||
exportGoodProject() {
|
||||
const {year} = this.pageForm
|
||||
if (!year) {
|
||||
this.notifyWarning('请先选择年度')
|
||||
return
|
||||
}
|
||||
window.open(loc() + '/exportGoodProject?year=' + year)
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.pageData()
|
||||
this.unionList = await getUnions(null)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,170 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.nav-card .el-card__body {
|
||||
padding: 5px !important;
|
||||
}
|
||||
</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/echarts@4.1.0/dist/echarts.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/vue-echarts@4.0.2"></script>
|
||||
<div id="app">
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<div class="btn-group tool-button mt5" style="width: 100%">
|
||||
<el-date-picker
|
||||
clearable="false"
|
||||
placeholder="选择年份"
|
||||
type="year"
|
||||
v-model="pageForm.year"
|
||||
value-format="yyyy">
|
||||
</el-date-picker>
|
||||
<el-button @click="doSearch" icon="el-icon-search" type="primary"></el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-card class="mt10" shadow="never">
|
||||
<div ref="Dpie" id="Dpie" class="echarts" style="width: 100%; height: 300px"></div>
|
||||
</el-card>
|
||||
|
||||
<el-card class="mt10" shadow="never">
|
||||
<el-row class="pl5 pr5">
|
||||
<el-table :data="tableData">
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index">
|
||||
<template scope="scope">
|
||||
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目名称" prop="xmmc" show-overflow-tooltip width="400"></el-table-column>
|
||||
<el-table-column label="申报人" prop="username"></el-table-column>
|
||||
<el-table-column label="性别" prop="sex" width="100"></el-table-column>
|
||||
<el-table-column label="申报单位" prop="dwname" show-overflow-tooltip width="150"></el-table-column>
|
||||
<el-table-column label="院级工会" prop="ghname" show-overflow-tooltip width="150"></el-table-column>
|
||||
<el-table-column label="职务职称" prop="zwzc" width="100"></el-table-column>
|
||||
<el-table-column label="状态" prop="statename" sortable width="200"></el-table-column>
|
||||
<el-table-column label="申报日期" prop="sbrq" sortable width="100"></el-table-column>
|
||||
<el-table-column fixed="right" label="操作">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini">查看</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-row>
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-size="pageForm.pageSize"
|
||||
:total="pageForm.totalCount"
|
||||
@current-change="pageNumberChange"
|
||||
layout="total, prev, pager, next, jumper">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</el-card>
|
||||
<template #view>
|
||||
<syr-info-new ref="viewInfo"></syr-info-new>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
<script>
|
||||
|
||||
let vue = new Vue({
|
||||
el: '#app',
|
||||
data() {
|
||||
return {
|
||||
smm: {
|
||||
status: 'table'
|
||||
},
|
||||
statePlotData: [],
|
||||
tableData: [],
|
||||
pageForm: {
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
state: null,
|
||||
year: ''
|
||||
},
|
||||
dataList: [],
|
||||
stateOptions: {
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
formatter: '{a} <br/>{b} : {c} ({d}%)'
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 'left',
|
||||
data: []
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '状态',
|
||||
type: 'pie',
|
||||
radius: '55%',
|
||||
center: ['50%', '60%'],
|
||||
data: [],
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'syr-info-new': httpVueLoader('/components/syr/SyrInfoNew.vue'),
|
||||
},
|
||||
methods: {
|
||||
async initStatePlot() {
|
||||
const {data} = await $.get('/platform/syr/cxtj/statetj/statePlotData', {year: this.pageForm.year})
|
||||
this.dataList = data
|
||||
let legendData = []
|
||||
for (let o of data) {
|
||||
legendData.push(o.name)
|
||||
}
|
||||
this.stateOptions.legend.data = legendData
|
||||
this.stateOptions.series[0].data = data
|
||||
|
||||
var myChart = echarts.init(document.getElementById('Dpie'));
|
||||
myChart.setOption(this.stateOptions)
|
||||
},
|
||||
stateClick(e) {
|
||||
let stateObj = this.dataList.find(o => {
|
||||
return o.name === e.data.name
|
||||
})
|
||||
this.pageForm.state = stateObj.id
|
||||
this.pageData()
|
||||
},
|
||||
async pageData() {
|
||||
const {data} = await $.post('/platform/syr/cxtj/statetj/pageData', this.pageForm, true)
|
||||
this.tableData = data.list
|
||||
this.pageForm.totalCount = data.totalCount
|
||||
},
|
||||
pageNumberChange(val) {
|
||||
this.pageForm.pageNumber = val
|
||||
this.pageData()
|
||||
},
|
||||
doSearch() {
|
||||
this.pageForm.state = null
|
||||
this.pageData()
|
||||
this.initStatePlot()
|
||||
},
|
||||
async openView(row) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.viewInfo.openView(row.id)
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initStatePlot()
|
||||
},
|
||||
created() {
|
||||
this.pageForm.year = moment().format('YYYY')
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,164 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<script src="https://cdn.jsdelivr.net/npm/echarts@4.1.0/dist/echarts.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/vue-echarts@4.0.2"></script>
|
||||
<style>
|
||||
/*.el-card__body{*/
|
||||
/* height: 100%;*/
|
||||
/*}*/
|
||||
.echarts {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
<div id="app" v-cloak class="p10">
|
||||
<el-card>
|
||||
<v-chart style="width: 100%;height: 800px" theme="mine" :options="yearOptions2"></v-chart>
|
||||
</el-card>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
|
||||
let vm = new Vue({
|
||||
el:'#app',
|
||||
data(){
|
||||
return{
|
||||
yearOptions2:{
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: { // 坐标轴指示器,坐标轴触发有效
|
||||
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
|
||||
}
|
||||
},
|
||||
legend: {
|
||||
data: ['结题优秀','结题通过','立项','总申报']
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '3%',
|
||||
bottom: '15%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: []
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '结题优秀',
|
||||
type: 'bar',
|
||||
stack: '结题优秀数',
|
||||
label: {
|
||||
show: true,
|
||||
position: 'insideRight'
|
||||
},
|
||||
data: []
|
||||
},
|
||||
{
|
||||
name: '结题通过',
|
||||
type: 'bar',
|
||||
stack: '结题通过数',
|
||||
label: {
|
||||
show: true,
|
||||
position: 'insideRight'
|
||||
},
|
||||
data: []
|
||||
},
|
||||
{
|
||||
name: '立项',
|
||||
type: 'bar',
|
||||
stack: '立项数',
|
||||
label: {
|
||||
show: true,
|
||||
position: 'insideRight'
|
||||
},
|
||||
data: []
|
||||
},
|
||||
{
|
||||
name: '总申报',
|
||||
type: 'bar',
|
||||
stack: '总申报数',
|
||||
label: {
|
||||
show: true,
|
||||
position: 'insideRight'
|
||||
},
|
||||
data: []
|
||||
}
|
||||
]
|
||||
},
|
||||
unionList:[],
|
||||
yearList:[],
|
||||
dataList:[]
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
dataFormatter(year){
|
||||
let o = {}
|
||||
let totalArr = []
|
||||
for (let y of this.yearList){
|
||||
for (let d of this.dataList[y]){
|
||||
const v = {name:d.unionname,value:d.totalnum}
|
||||
totalArr.push(v)
|
||||
}
|
||||
}
|
||||
o.total = totalArr
|
||||
let lxArr = []
|
||||
for (let y of this.yearList){
|
||||
for (let d of this.dataList[y]){
|
||||
const v = {name:d.unionname,value:d.lxnum}
|
||||
lxArr.push(v)
|
||||
}
|
||||
}
|
||||
o.lx = lxArr
|
||||
let passArr = []
|
||||
for (let y of this.yearList){
|
||||
for (let d of this.dataList[y]){
|
||||
const v = {name:d.unionname,value:d.passnum}
|
||||
passArr.push(v)
|
||||
}
|
||||
}
|
||||
o.pass = passArr
|
||||
let goodArr = []
|
||||
for (let y of this.yearList){
|
||||
for (let d of this.dataList[y]){
|
||||
const v = {name:d.unionname,value:d.goodnum}
|
||||
goodArr.push(v)
|
||||
}
|
||||
}
|
||||
o.good = goodArr
|
||||
console.log(o)
|
||||
return o
|
||||
},
|
||||
async getUnionList(){
|
||||
const {data} = await $.get('/platform/syr/cxtj/yeartj/getUnionList',{})
|
||||
for (let o of data){
|
||||
this.unionList.push(o.unionname)
|
||||
}
|
||||
},
|
||||
async getDataList(){
|
||||
const {data} = await $.get('/platform/syr/cxtj/yeartj/data',{})
|
||||
this.yearList = Object.keys(data)
|
||||
this.dataList = data
|
||||
},
|
||||
async inita(){
|
||||
this.yearOptions2.yAxis.data = this.unionList
|
||||
this.yearOptions2.series[0].data = this.dataFormatter(2020).good
|
||||
this.yearOptions2.series[1].data = this.dataFormatter(2020).pass
|
||||
this.yearOptions2.series[2].data = this.dataFormatter(2020).lx
|
||||
this.yearOptions2.series[3].data = this.dataFormatter(2020).total
|
||||
}
|
||||
},
|
||||
async created(){
|
||||
await this.getUnionList()
|
||||
await this.getDataList()
|
||||
await this.inita()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,833 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.el-divider {
|
||||
background-color: #409EFF;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.el-divider__text {
|
||||
color: #409EFF;
|
||||
}
|
||||
|
||||
.el-form-item__error {
|
||||
font-size: 16px;
|
||||
}
|
||||
</style>
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<syr-table :smm.sync="smm" auditval="申请" ref="syrTable" request="/platfotm/syr/info/jtsq/pageData"
|
||||
yeartype="jtyear">
|
||||
<template slot="operation">
|
||||
<el-table-column label="操作" fixed="right" width="400">
|
||||
<template slot-scope="{row}">
|
||||
<el-button size="mini" :type="row.state>90?null:'primary'"
|
||||
@click="openView(row,row.state>90)">
|
||||
{{row.state>90?'查看':'结题申请'}}
|
||||
</el-button>
|
||||
<el-button size="mini" type="primary" @click="doRevoke(row.id)" v-if="row.state==91">
|
||||
撤回
|
||||
</el-button>
|
||||
<el-button size="mini" type="primary" @click="openView(row,row.state>90)" v-if="row.state==91">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button size="mini" v-if="row.state>90" type="primary" @click="exportjtBgs(row.id)">
|
||||
导出结题报告书
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</syr-table>
|
||||
|
||||
<template #edit>
|
||||
<syr-info-new ref="auditInfo">
|
||||
<template slot="handle">
|
||||
<el-tab-pane label="结题申请" name="jtsq">
|
||||
<el-form :model="formData" :rules="rules" label-position="top" ref="Form">
|
||||
|
||||
<h3>基本信息</h3>
|
||||
<div style="margin-bottom: 30px">
|
||||
<el-form-item label="项目名称" prop="xmmc">
|
||||
<el-input maxlength="50" placeholder="项目名称" v-model="formData.xmmc"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<el-divider content-position="left">申报人信息</el-divider>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :lg="8" :sm="24">
|
||||
<el-form-item label="申请人">
|
||||
<el-input placeholder="姓名" readonly
|
||||
:value="formData.username"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="8" :sm="24">
|
||||
<el-form-item label="性别">
|
||||
<el-input placeholder="性别" readonly
|
||||
:value="formData.sex"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="8" :sm="24">
|
||||
<el-form-item label="出生年月" prop="birthday">
|
||||
<el-date-picker
|
||||
placeholder="出生年月"
|
||||
type="date"
|
||||
v-model="formData.birthday"
|
||||
value-format="yyyy-MM-dd">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :lg="8" :sm="24">
|
||||
<!-- <el-form-item label="职务/职称" prop="zwzc">-->
|
||||
<!-- <el-input v-model="formData.zwzc"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="立项资助金额">
|
||||
<el-input :value="formData.lxlevel" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="8" :sm="24">
|
||||
<el-form-item label="申报单位" prop="dwname">
|
||||
<el-input readonly :value="formData.dwname"></el-input>
|
||||
</el-form-item>
|
||||
</el-col><!--
|
||||
<el-col :lg="8" :sm="24">
|
||||
<el-form-item label="学历/学位" prop="xlxw">
|
||||
<el-input v-model="formData.xlxw"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
|
||||
<el-col :lg="8" :sm="24">
|
||||
<el-form-item label="手机" prop="mobile">
|
||||
<el-input v-model="formData.mobile"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="8" :sm="24">
|
||||
<el-form-item label="院级工会" prop="ghname">
|
||||
<el-input :value="formData.ghname"
|
||||
readonly></el-input>
|
||||
</el-form-item>
|
||||
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-divider content-position="left">项目组成员</el-divider>
|
||||
<div>
|
||||
<div class="text-right">
|
||||
<el-button @click="addXmzcy" round
|
||||
size="mini"
|
||||
type="primary">添加成员
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<el-table :data="formData.xmzcy" max-height="300">
|
||||
<el-table-column label="序号" type="index" width="50"></el-table-column>
|
||||
<el-table-column label="工号" prop="loginname">
|
||||
<template slot-scope="scope">
|
||||
<el-select clearable
|
||||
size="mini"
|
||||
v-model="scope.row.userId" filterable remote
|
||||
placeholder="输入工号或者姓名查找" :remote-method="queryUser"
|
||||
@change="userChange(scope)" style="width: 100%">
|
||||
<el-option v-for="o in userList"
|
||||
:label="o.username+'('+o.loginname+')'"
|
||||
:value="o.id"
|
||||
:key="o.id"></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="姓名" prop="username">
|
||||
<template slot-scope="scope">
|
||||
<el-input size="mini" v-model="scope.row.username"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="职称" prop="zc">
|
||||
<template slot-scope="scope">
|
||||
<el-input size="mini" v-model="scope.row.zc"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="学历" prop="xl">
|
||||
<template slot-scope="scope">
|
||||
<el-input size="mini" v-model="scope.row.xl"></el-input>
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
<el-table-column label="工作单位及职务" prop="gzdw">
|
||||
<template slot-scope="scope">
|
||||
<el-input size="mini" v-model="scope.row.gzdw"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="150">
|
||||
<template slot-scope="scope">
|
||||
<el-button @click="formData.xmzcy.splice(scope.$index, 1)"
|
||||
icon="el-icon-delete" round
|
||||
size="mini"
|
||||
type="danger"></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
<!-- <el-divider content-position="left" ref="yjjctjdivider">
|
||||
项目研究基础及条件(最多填写400字,当前字数
|
||||
<span :style="{color:(yanjiujichuLength>400?'red':'')}"> {{yanjiujichuLength}})</span>
|
||||
</el-divider>
|
||||
<el-form-item label-width="0" prop="yjjctj" style="margin-bottom: 40px;">
|
||||
<div ref="yjjctj" style="width: 100%;"></div>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="left" ref="xmssljffdivider">
|
||||
项目实施路径及方法(最多填写400字,当前字数
|
||||
<span :style="{color:(xmssljffLength>400?'red':'')}"> {{xmssljffLength}})</span>
|
||||
</el-divider>
|
||||
<el-form-item label-width="0" prop="xmssljff" style="margin-bottom: 40px;">
|
||||
<div ref="xmssljff" style="width: 100%;"></div>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-divider content-position="left">
|
||||
项目预期成果及应用推广价值(最多填写300字,当前字数
|
||||
<span :style="{color:(yqcgtgjzLength>400?'red':'')}">{{yqcgtgjzLength}})</span>
|
||||
</el-divider>
|
||||
<el-form-item label-width="0" prop="yqcgtgjz">
|
||||
<div ref="yqcgtgjz" style="width: 100%;"></div>
|
||||
</el-form-item>-->
|
||||
|
||||
<h3>结题申请信息</h3>
|
||||
<el-divider content-position="left">
|
||||
项目研究实践的主要内容及方法(最多填写400字,当前字数
|
||||
<span :style="{color:(zynrLength>400?'red':'')}">{{zynrLength}})</span>
|
||||
</el-divider>
|
||||
<el-form-item label-width="0" prop="zynr">
|
||||
<div ref="zynr" style="width: 100%;"></div>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="left">
|
||||
成果自我评价及应用范围或取得的社会效益(最多填写1000字,当前字数
|
||||
<span :style="{color:(zwpjshxyLength>1000?'red':'')}">{{zwpjshxyLength}})</span>
|
||||
</el-divider>
|
||||
<el-form-item label-width="0" prop="zwpjshxy">
|
||||
<div ref="zwpjshxy" style="width: 100%;"></div>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="left">
|
||||
主要成果介绍(突出重点、论点或创新部分,最多填写400字,当前字数
|
||||
<span :style="{color:(zycgjsLength>400?'red':'')}">{{zycgjsLength}})</span>
|
||||
</el-divider>
|
||||
<el-form-item label-width="0" prop="zycgjs">
|
||||
<div ref="zycgjs" style="width: 100%;"></div>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="left">
|
||||
成果目录(总结报告、论文、多媒体课件等)(成果以附件形式上传)
|
||||
</el-divider>
|
||||
<div>
|
||||
<div class="text-right">
|
||||
<el-button @click="formData.cgml.push({'cgxs': '', 'cgmc': '', 'zywcr': ''})" round
|
||||
size="mini"
|
||||
type="primary">添加成果
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<el-table :data="formData.cgml" max-height="300">
|
||||
<el-table-column label="序号" type="index" width="50"></el-table-column>
|
||||
<el-table-column label="成果形式" prop="cgxs">
|
||||
<template slot-scope="scope">
|
||||
<el-input size="mini" v-model="scope.row.cgxs"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="成果名称" prop="cgmc">
|
||||
<template slot-scope="scope">
|
||||
<el-input size="mini" v-model="scope.row.cgmc"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="主要完成人" prop="zywcr">
|
||||
<template slot-scope="scope">
|
||||
<el-input size="mini" v-model="scope.row.zywcr"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="150">
|
||||
<template slot-scope="scope">
|
||||
<el-button @click="formData.cgml.splice(scope.$index, 1)"
|
||||
icon="el-icon-delete" round
|
||||
size="mini"
|
||||
type="danger"></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
|
||||
<el-divider content-position="left">
|
||||
经费使用情况(最多填写200字,当前字数
|
||||
<span :style="{color:(jfsyqkLength>200?'red':'')}">{{jfsyqkLength}})</span>
|
||||
</el-divider>
|
||||
<el-form-item label-width="0" prop="jfsyqk">
|
||||
<div ref="jfsyqk" style="width: 100%;"></div>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="left">项目成果及其佐证材料(不超过5个文件。其中,总结报告和论文须上传PDF版)</el-divider>
|
||||
<el-form-item label="">
|
||||
<wp-upload
|
||||
@on-delete="onDeleteFile"
|
||||
:file-list="fileList"
|
||||
:max-file-number="5"
|
||||
:upload-auto="false"
|
||||
ref="upload"></wp-upload>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row class="mt20 text-center">
|
||||
<el-button @click="$refs.guava.index()">返回</el-button>
|
||||
<el-button @click="doSave" type="primary">保存</el-button>
|
||||
<el-button @click="doHandle(true)" type="primary">提交</el-button>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
</template>
|
||||
</syr-info-new>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<syr-info-new ref="viewInfo"></syr-info-new>
|
||||
</template>
|
||||
</guava>
|
||||
|
||||
|
||||
</div>
|
||||
<script>
|
||||
let yjjctjEditor = null
|
||||
let yqcgtgjzEditor = null
|
||||
let xmssljffEditor = null
|
||||
|
||||
let zynrEditor = null
|
||||
let cgzwpjshxyEditor = null
|
||||
let cgjsEditor = null
|
||||
let jfsyqkEditor = null
|
||||
|
||||
const o = {'username': '', 'zc': '', 'xl': '', 'gzdw': ''}
|
||||
const o2 = {'cgxs': '', 'cgmc': '', 'zywcr': ''}
|
||||
|
||||
let vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
const validatorYjjctj = (rule, value, callback) => {
|
||||
if (value === '' || value == null) {
|
||||
callback(new Error('请填写'))
|
||||
} else if (removeHTMLTag(value).length > 400) {
|
||||
callback(new Error('字数太多,无法提交。'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
const validatorYqcgtgjz = (rule, value, callback) => {
|
||||
if (value === '' || value == null) {
|
||||
callback(new Error('请填写'))
|
||||
} else if (removeHTMLTag(value).length > 300) {
|
||||
callback(new Error('字数太多,无法提交。'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
|
||||
const validatorXmssljff = (rule, value, callback) => {
|
||||
if (value === '' || value == null) {
|
||||
callback(new Error('请填写'))
|
||||
} else if (removeHTMLTag(value).length > 400) {
|
||||
callback(new Error('字数太多,无法提交。'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
|
||||
const validatorZynr = (rule, value, callback) => {
|
||||
if (value === '' || value == null) {
|
||||
callback(new Error('请填写'))
|
||||
} else if (removeHTMLTag(value).length > 400) {
|
||||
callback(new Error('字数太多,无法提交。'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
|
||||
const validatorZwpjshxy = (rule, value, callback) => {
|
||||
if (value === '' || value == null) {
|
||||
callback(new Error('请填写'))
|
||||
} else if (removeHTMLTag(value).length > 1000) {
|
||||
callback(new Error('字数太多,无法提交。'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
|
||||
const validatorZycgjs = (rule, value, callback) => {
|
||||
if (value === '' || value == null) {
|
||||
callback(new Error('请填写'))
|
||||
} else if (removeHTMLTag(value).length > 400) {
|
||||
callback(new Error('字数太多,无法提交。'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
|
||||
const validatorJfsyqk = (rule, value, callback) => {
|
||||
if (value === '' || value == null) {
|
||||
callback(new Error('请填写'))
|
||||
} else if (removeHTMLTag(value).length > 500) {
|
||||
callback(new Error('字数太多,无法提交。'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
fileList: [],
|
||||
smm: {
|
||||
status: 'table'
|
||||
},
|
||||
formData: {
|
||||
xmzcy: [],
|
||||
yjjctj: '',
|
||||
yqcgtgjz: '',
|
||||
xmssljff: '',
|
||||
zynr: '',
|
||||
zwpjshxy: '',
|
||||
zycgjs: '',
|
||||
jfsyqk: ''
|
||||
|
||||
},
|
||||
handleShow: false,
|
||||
rules: {
|
||||
//birthday: [{required: true, message: '请选择出生年月', trigger: ['blur', 'change']}],
|
||||
zwzc: [{required: true, message: '请填写职务职称', trigger: ['blur', 'change']}],
|
||||
//mobile: [{required: true, message: '请填写手机号', trigger: ['blur', 'change']}],
|
||||
|
||||
yjjctj: [{validator: validatorYjjctj, trigger: ['blur', 'change']}],
|
||||
xmssljff: [{validator: validatorXmssljff, trigger: ['blur', 'change']}],
|
||||
yqcgtgjz: [{validator: validatorYqcgtgjz, trigger: ['blur', 'change']}],
|
||||
zynr: [{validator: validatorZynr, trigger: ['blur', 'change']}],
|
||||
zwpjshxy: [{validator: validatorZwpjshxy, trigger: ['blur', 'change']}],
|
||||
zycgjs: [{validator: validatorZycgjs, trigger: ['blur', 'change']}],
|
||||
jfsyqk: [{validator: validatorJfsyqk, trigger: ['blur', 'change']}],
|
||||
},
|
||||
pageForm: {
|
||||
yearType: 'sbyear'
|
||||
},
|
||||
delFile: [],
|
||||
userList: []
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
||||
// yanjiujichuLength() {
|
||||
// if (this.formData.yjjctj) {
|
||||
// return removeHTMLTag(this.formData.yjjctj).length
|
||||
// }
|
||||
// return 0
|
||||
// },
|
||||
// yqcgtgjzLength() {
|
||||
// if (this.formData.yqcgtgjz) {
|
||||
// return removeHTMLTag(this.formData.yqcgtgjz).length
|
||||
// } else {
|
||||
// return 0
|
||||
// }
|
||||
// },
|
||||
// xmssljffLength() {
|
||||
// if (this.formData.xmssljff) {
|
||||
// return removeHTMLTag(this.formData.xmssljff).length
|
||||
// } else {
|
||||
// return 0
|
||||
// }
|
||||
// },
|
||||
zynrLength() {
|
||||
if (this.formData.zynr) {
|
||||
return removeHTMLTag(this.formData.zynr).length
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
},
|
||||
zwpjshxyLength() {
|
||||
if (this.formData.zwpjshxy) {
|
||||
return removeHTMLTag(this.formData.zwpjshxy).length
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
},
|
||||
zycgjsLength() {
|
||||
if (this.formData.zycgjs) {
|
||||
return removeHTMLTag(this.formData.zycgjs).length
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
},
|
||||
jfsyqkLength() {
|
||||
if (this.formData.jfsyqk) {
|
||||
return removeHTMLTag(this.formData.jfsyqk).length
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
components: {
|
||||
'syr-table': httpVueLoader('/components/syr/syrtable.vue'),
|
||||
'syr-info': httpVueLoader('/components/syr/syrinfo.vue'),
|
||||
'syr-info-new': httpVueLoader('/components/syr/SyrInfoNew.vue'),
|
||||
},
|
||||
methods: {
|
||||
async doRevoke(id) {
|
||||
const confirm = await this.$confirm('您确定要撤回吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if ('confirm' !== confirm) return
|
||||
const resp = await $.post(loc() + '/doRevoke', {xmid: id})
|
||||
if (resp.code === 0) {
|
||||
this.$refs.syrTable.pageData()
|
||||
this.notifySuccess(resp.msg)
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
console.log(id)
|
||||
},
|
||||
|
||||
onDeleteFile(file) {
|
||||
console.log(file)
|
||||
if (file.fileDes) {
|
||||
this.delFile.push(file.fileDes.filepath)
|
||||
}
|
||||
},
|
||||
addXmzcy() {
|
||||
this.formData.xmzcy.push({'username': '', 'zc': '', 'xl': '', 'gzdw': ''})
|
||||
},
|
||||
async queryUser(val) {
|
||||
const data = await searchUser(val)
|
||||
this.userList = data
|
||||
},
|
||||
userChange(scope) {
|
||||
const userList = clone(this.userList)
|
||||
const user = userList.find(v => v.id == scope.row.userId)
|
||||
if (user) {
|
||||
scope.row.username = user.username
|
||||
scope.row.zc = user.zc
|
||||
scope.row.gzdw = user.dwname
|
||||
}
|
||||
|
||||
},
|
||||
async initEditor() {
|
||||
return await new Promise((resolve, reject) => {
|
||||
this.$nextTick(() => {
|
||||
setTimeout(() => {
|
||||
// if (yjjctjEditor) {
|
||||
// yjjctjEditor.destroy()
|
||||
// }
|
||||
// if (xmssljffEditor) {
|
||||
// xmssljffEditor.destroy()
|
||||
// }
|
||||
// if (yqcgtgjzEditor) {
|
||||
// yqcgtgjzEditor.destroy()
|
||||
// }
|
||||
if (zynrEditor) {
|
||||
zynrEditor.destroy()
|
||||
}
|
||||
if (cgzwpjshxyEditor) {
|
||||
cgzwpjshxyEditor.destroy()
|
||||
}
|
||||
if (cgjsEditor) {
|
||||
cgjsEditor.destroy()
|
||||
}
|
||||
if (jfsyqkEditor) {
|
||||
jfsyqkEditor.destroy()
|
||||
}
|
||||
|
||||
// yjjctjEditor = new wangEditor(this.$refs.yjjctj)
|
||||
// yjjctjEditor.config.onchange = (html) => {
|
||||
// if (removeHTMLTag(html).length > 400) {
|
||||
// this.$message.info('项目研究基础及条件最多填写400字')
|
||||
// }
|
||||
// this.$refs.Form.validateField('yjjctj', (errMsg) => {
|
||||
// })
|
||||
// this.formData.yjjctj = html
|
||||
// }
|
||||
// yjjctjEditor.config.uploadImgShowBase64 = true
|
||||
// yjjctjEditor.create()
|
||||
//
|
||||
// xmssljffEditor = new wangEditor(this.$refs.xmssljff)
|
||||
// xmssljffEditor.config.onchange = (html) => {
|
||||
// if (removeHTMLTag(html).length > 400) {
|
||||
// this.$message.info('项目实施路径及方法最多填写400字')
|
||||
// }
|
||||
// this.$refs.Form.validateField('xmssljff', (errMsg) => {
|
||||
// })
|
||||
// this.formData.xmssljff = html
|
||||
// }
|
||||
// xmssljffEditor.config.uploadImgShowBase64 = true
|
||||
// xmssljffEditor.create()
|
||||
//
|
||||
// yqcgtgjzEditor = new wangEditor(this.$refs.yqcgtgjz)
|
||||
// yqcgtgjzEditor.config.onchange = (html) => {
|
||||
// if (removeHTMLTag(html).length > 300) {
|
||||
// this.$message.info('项目预期成果及应用推广价值最多填写300字')
|
||||
// }
|
||||
// this.$refs.Form.validateField('yqcgtgjz', (errMsg) => {
|
||||
// })
|
||||
// this.formData.yqcgtgjz = html
|
||||
// }
|
||||
// yqcgtgjzEditor.config.uploadImgShowBase64 = true
|
||||
// yqcgtgjzEditor.create()
|
||||
|
||||
zynrEditor = new wangEditor(this.$refs.zynr)
|
||||
zynrEditor.config.onchange = (html) => {
|
||||
if (removeHTMLTag(html).length > 400) {
|
||||
this.$message.info('项目研究实践的主要内容及方法(不超过400字)')
|
||||
}
|
||||
this.$refs.Form.validateField('zynr', (errMsg) => {
|
||||
})
|
||||
this.formData.zynr = html
|
||||
}
|
||||
zynrEditor.config.uploadImgShowBase64 = true
|
||||
zynrEditor.create()
|
||||
|
||||
cgzwpjshxyEditor = new wangEditor(this.$refs.zwpjshxy)
|
||||
cgzwpjshxyEditor.config.onchange = (html) => {
|
||||
if (removeHTMLTag(html).length > 1000) {
|
||||
this.$message.info('成果自我评价及应用范围或取得的社会效益(不超过1000字)')
|
||||
}
|
||||
this.$refs.Form.validateField('zwpjshxy', (errMsg) => {
|
||||
})
|
||||
this.formData.zwpjshxy = html
|
||||
}
|
||||
cgzwpjshxyEditor.config.uploadImgShowBase64 = true
|
||||
cgzwpjshxyEditor.create()
|
||||
|
||||
cgjsEditor = new wangEditor(this.$refs.zycgjs)
|
||||
cgjsEditor.config.onchange = (html) => {
|
||||
if (removeHTMLTag(html).length > 400) {
|
||||
this.$message.info('主要成果介绍(突出重点、论点或创新部分,不超过400字)')
|
||||
}
|
||||
this.$refs.Form.validateField('zycgjs', (errMsg) => {
|
||||
})
|
||||
this.formData.zycgjs = html
|
||||
}
|
||||
cgjsEditor.config.uploadImgShowBase64 = true
|
||||
cgjsEditor.create()
|
||||
|
||||
jfsyqkEditor = new wangEditor(this.$refs.jfsyqk)
|
||||
jfsyqkEditor.config.onchange = (html) => {
|
||||
if (removeHTMLTag(html).length > 200) {
|
||||
this.$message.info('经费使用情况(不超过200字)')
|
||||
}
|
||||
this.$refs.Form.validateField('jfsyqk', (errMsg) => {
|
||||
})
|
||||
this.formData.jfsyqk = html
|
||||
}
|
||||
jfsyqkEditor.config.uploadImgShowBase64 = true
|
||||
jfsyqkEditor.create()
|
||||
|
||||
resolve()
|
||||
}, 600)
|
||||
})
|
||||
})
|
||||
},
|
||||
async openView(row, isView) {
|
||||
if (isView) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.viewInfo.openView(row.id, row.state > 90 ? '9' : '1')
|
||||
} else {
|
||||
this.$refs.guava.edit()
|
||||
this.$refs.auditInfo.openView(row.id, 'jtsq')
|
||||
this.formData = {
|
||||
id: row.id,
|
||||
userid: row.userid,
|
||||
xmid: row.id,
|
||||
xmmc: row.xmmc,
|
||||
username: row.username,
|
||||
sex: row.sex,
|
||||
birthday: row.birthday,
|
||||
zwzc: row.zwzc,
|
||||
dwname: row.dwname,
|
||||
mobile: row.mobile,
|
||||
ghname: row.ghname,
|
||||
xmzcy: [{'username': '', 'zc': '', 'xl': '', 'gzdw': ''}],
|
||||
yjjctj: row.yjjctj,
|
||||
yqcgtgjz: row.yjjctj,
|
||||
xmssljff: row.xmssljff,
|
||||
zynr: row.zynr,
|
||||
zwpjshxy: row.zwpjshxy,
|
||||
zycgjs: row.zycgjs,
|
||||
jfsyqk: row.jfsyqk,
|
||||
cgml: [{'cgxs': '', 'cgmc': '', 'zywcr': ''}],
|
||||
lxlevel: row.lxlevel
|
||||
|
||||
}
|
||||
if (row.yjcgfj && row.yjcgfj.length > 0) {
|
||||
for (let f of row.yjcgfj) {
|
||||
f.name = f.filename
|
||||
f.url = FILE_DOMAIN + '/fileStreamPreview?id=' + f.filepath
|
||||
}
|
||||
this.fileList = row.yjcgfj
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.$refs.upload.refreshFileList()
|
||||
})
|
||||
}
|
||||
await this.initEditor()
|
||||
// yjjctjEditor.txt.html(this.formData.yjjctj)
|
||||
// yqcgtgjzEditor.txt.html(this.formData.yqcgtgjz)
|
||||
// xmssljffEditor.txt.html(this.formData.xmssljff)
|
||||
zynrEditor.txt.html(this.formData.zynr)
|
||||
cgzwpjshxyEditor.txt.html(this.formData.zwpjshxy)
|
||||
cgjsEditor.txt.html(this.formData.zycgjs)
|
||||
jfsyqkEditor.txt.html(this.formData.jfsyqk)
|
||||
if (row.xmzcy) {
|
||||
this.formData.xmzcy = JSON.parse(row.xmzcy)
|
||||
this.formData.xmzcy.forEach(v => {
|
||||
this.queryUser(v.username)
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
if (row.cgml) {
|
||||
this.formData.cgml = JSON.parse(row.cgml)
|
||||
}
|
||||
}
|
||||
},
|
||||
async doHandle(res) {
|
||||
const valid = await this.$refs['Form'].validate()
|
||||
if (!valid) return
|
||||
|
||||
const xmcyHasEmpty = this.formData.xmzcy.some(v => v['username'] === '' || v['zc'] === '' || v['gzdw'] === '')
|
||||
if (xmcyHasEmpty) {
|
||||
this.$message.info('项目成员信息填写不完整')
|
||||
return
|
||||
}
|
||||
|
||||
const cgmlHasEmpty = this.formData.cgml.some(v => v['cgmc'] === '' || v['cgxs'] === '' || v['zywcr'] === '')
|
||||
if (cgmlHasEmpty) {
|
||||
this.$message.info('成果目录信息填写不完整')
|
||||
return
|
||||
}
|
||||
|
||||
const fd = new FormData()
|
||||
const jbxx = {
|
||||
id: this.formData.xmid,
|
||||
userid: this.formData.userid,
|
||||
birthday: this.formData.birthday,
|
||||
zwzc: this.formData.zwzc,
|
||||
mobile: this.formData.mobile,
|
||||
xmzcy: JSON.stringify(this.formData.xmzcy),
|
||||
yjjctj: this.formData.yjjctj,
|
||||
xmssljff: this.formData.xmssljff,
|
||||
yqcgtgjz: this.formData.yqcgtgjz
|
||||
}
|
||||
fd.append("jbxx", JSON.stringify(jbxx))
|
||||
const jtxx = {
|
||||
xmid: this.formData.xmid,
|
||||
zynr: this.formData.zynr,
|
||||
zwpjshxy: this.formData.zwpjshxy,
|
||||
zycgjs: this.formData.zycgjs,
|
||||
jfsyqk: this.formData.jfsyqk,
|
||||
cgml: this.formData.cgml
|
||||
}
|
||||
fd.append("jtxx", JSON.stringify(jtxx))
|
||||
for (let f of this.$refs.upload.fileShowArray) {
|
||||
fd.append("files", f.file)
|
||||
}
|
||||
|
||||
fd.append("delFile", JSON.stringify(this.delFile))
|
||||
$.ajax({
|
||||
url: base + '/platfotm/syr/info/jtsq/doHandle',
|
||||
type: "post",
|
||||
data: fd,
|
||||
processData: false,
|
||||
contentType: false
|
||||
}).then(resp => {
|
||||
if (resp.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.notifySuccess(resp.msg)
|
||||
this.$refs['syrTable'].doSearch()
|
||||
this.formData = {
|
||||
cgml: [],
|
||||
xmzcy: [],
|
||||
yjjctj: '',
|
||||
yqcgtgjz: '',
|
||||
xmssljff: '',
|
||||
zynr: '',
|
||||
zwpjshxy: '',
|
||||
zycgjs: '',
|
||||
jfsyqk: ''
|
||||
}
|
||||
this.$refs.upload.fileShowArray = []
|
||||
}
|
||||
})
|
||||
},
|
||||
doSave() {
|
||||
const fd = new FormData()
|
||||
const jbxx = {
|
||||
id: this.formData.xmid,
|
||||
userid: this.formData.userid,
|
||||
birthday: this.formData.birthday,
|
||||
zwzc: this.formData.zwzc,
|
||||
mobile: this.formData.mobile,
|
||||
xmzcy: JSON.stringify(this.formData.xmzcy),
|
||||
yjjctj: this.formData.yjjctj,
|
||||
xmssljff: this.formData.xmssljff,
|
||||
yqcgtgjz: this.formData.yqcgtgjz
|
||||
}
|
||||
fd.append("jbxx", JSON.stringify(jbxx))
|
||||
const jtxx = {
|
||||
xmid: this.formData.xmid,
|
||||
zynr: this.formData.zynr,
|
||||
zwpjshxy: this.formData.zwpjshxy,
|
||||
zycgjs: this.formData.zycgjs,
|
||||
jfsyqk: this.formData.jfsyqk,
|
||||
cgml: this.formData.cgml
|
||||
}
|
||||
fd.append("jtxx", JSON.stringify(jtxx))
|
||||
for (let f of this.$refs.upload.fileShowArray) {
|
||||
fd.append("files", f.file)
|
||||
}
|
||||
|
||||
fd.append("delFile", JSON.stringify(this.delFile))
|
||||
$.ajax({
|
||||
url: base + '/platfotm/syr/info/jtsq/doSave',
|
||||
type: "post",
|
||||
data: fd,
|
||||
processData: false,
|
||||
contentType: false
|
||||
}).then(resp => {
|
||||
if (resp.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.notifySuccess(resp.msg)
|
||||
this.$refs['syrTable'].doSearch()
|
||||
this.formData = {
|
||||
cgml: [],
|
||||
xmzcy: [],
|
||||
yjjctj: '',
|
||||
yqcgtgjz: '',
|
||||
xmssljff: '',
|
||||
zynr: '',
|
||||
zwpjshxy: '',
|
||||
zycgjs: '',
|
||||
jfsyqk: ''
|
||||
}
|
||||
this.$refs.upload.fileShowArray = []
|
||||
}
|
||||
})
|
||||
},
|
||||
exportjtBgs(id) {
|
||||
window.open(loc() + '/exportjtBgs?id=' + id)
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
|
||||
@@ -1,432 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.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>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
|
||||
<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="pageForm.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="pageForm.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="pageForm.xmmc" placeholder="请输入项目名称查询" style="width: 100%;"></el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">申报人:</div>
|
||||
<div class="search-item-option">
|
||||
<el-input v-model="pageForm.searchKeyword" placeholder="请输入内容" @keyup.enter.native="doSearch">
|
||||
<el-select slot="prepend" v-model="pageForm.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">
|
||||
<div class="search-item-label">院级工会:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select v-model="pageForm.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">
|
||||
<div class="search-item-label">单位:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select v-model="pageForm.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="pageForm.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="pageForm.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">
|
||||
<table-tool :app="this" label="选题列表">
|
||||
<template #func>
|
||||
<el-radio-group @change="doSearch" class="mr10" size="small" v-model="pageForm.isAudit">
|
||||
<el-radio-button :label="null">全部</el-radio-button>
|
||||
<el-radio-button :label="true">已审核</el-radio-button>
|
||||
<el-radio-button :label="false">未审核</el-radio-button>
|
||||
</el-radio-group>
|
||||
|
||||
<el-dropdown @command="groupClick" size="small" split-button type="primary">
|
||||
分配评委
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item command="batch">批量分组</el-dropdown-item>
|
||||
<!-- <el-dropdown-item command="auto">自动分组</el-dropdown-item>-->
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
|
||||
</template>
|
||||
</table-tool>
|
||||
|
||||
<el-table :data="tableData" @sort-change="pageOrder" ref="table">
|
||||
<el-table-column
|
||||
:selectable="(row)=>{return row.isaudit && row.state === 100 && row.pwhasauditcount === 0}"
|
||||
type="selection"
|
||||
width="55">
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column :index="indexMethod" align="center" header-align="center" label="序号" type="index"
|
||||
width="80px"></el-table-column>
|
||||
|
||||
<el-table-column
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
align="center"
|
||||
header-align="center"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns"
|
||||
></el-table-column>
|
||||
<el-table-column label="操作" width="200px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button size="mini" :type="row.state>92?null:'primary'"
|
||||
@click="openView(row,row.state>92)">
|
||||
{{row.state>92?'查看':'审核'}}
|
||||
</el-button>
|
||||
<el-button size="mini" type="danger" v-if="row.state===100"
|
||||
@click="doRollBack(row)">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<!-- <syr-table :smm.sync="smm" auditval="审核" ref="syrTable" request="/platfotm/syr/info/jtsqxjcs/pageData">
|
||||
<template slot="operation">
|
||||
<el-table-column label="操作" fixed="right" width="100">
|
||||
<template slot-scope="{row}">
|
||||
<el-button size="mini" :type="row.state>92?null:'primary'"
|
||||
@click="openView(row,row.state>92)">
|
||||
{{row.state>92?'查看':'审核'}}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</syr-table>-->
|
||||
|
||||
<template #edit>
|
||||
<syr-info-new ref="auditInfo">
|
||||
<template #handle>
|
||||
<el-tab-pane label="校工会结题初审" name="jtcsxjsh">
|
||||
<el-form :model="formData" label-suffix=":" label-width="100px" ref="Form" :rules="rules">
|
||||
<el-form-item label="审核人">
|
||||
${@shiro.getPrincipalProperty('username')}
|
||||
</el-form-item>
|
||||
<el-form-item label="审核时间">
|
||||
{{moment().format('YYYY-MM-DD')}}
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="同意结题" prop="jtxghcsIspass">
|
||||
<el-radio-group v-model="formData.jtxghcsIspass" size="mini">
|
||||
<el-radio :label="true" border>是</el-radio>
|
||||
<el-radio :label="false" border>否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="审核意见" prop="jtxghcsyj">
|
||||
<el-input maxlength="300" rows="5" type="textarea"
|
||||
v-model="formData.jtxghcsyj"></el-input>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="签字" prop="jtfghcsQz">-->
|
||||
<!-- <sign :qz.sync="formData.jtfghcsQz" prefix="syrjtyjsh"></sign>-->
|
||||
<!-- </el-form-item>-->
|
||||
</el-form>
|
||||
<el-row class="mt20 text-center">
|
||||
<el-button @click="$refs.guava.index()">取消</el-button>
|
||||
<el-button @click="doHandle(true)" type="primary">提交</el-button>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
</template>
|
||||
</syr-info-new>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<syr-info-new ref="viewInfo"></syr-info-new>
|
||||
</template>
|
||||
</guava>
|
||||
|
||||
<el-dialog :close-on-click-modal="false" :visible.sync="distributionDialogVisible" title="批量分配评委" width="45%">
|
||||
<vi-title title="勾选选题"></vi-title>
|
||||
<el-table :data="tableSelection" max-height="300px">
|
||||
<el-table-column header-align="center" label="序号" type="index" width="80px"></el-table-column>
|
||||
<el-table-column header-align="center" label="项目名称" prop="xmmc"></el-table-column>
|
||||
<el-table-column header-align="center" label="申报人" prop="username"></el-table-column>
|
||||
</el-table>
|
||||
|
||||
<vi-title class="mt10" title="评委期数"></vi-title>
|
||||
<el-select v-model="distributionPeriod" clearable filterable placeholder="请选择评委期数"
|
||||
@change="getGroupNameOptions(distributionPeriod)"
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in periodOptions"
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item">
|
||||
</el-option>
|
||||
</el-select>
|
||||
<vi-title class="mt10" title="评委组别"></vi-title>
|
||||
<el-radio-group size="small" v-model="distributionGroupName">
|
||||
<el-radio :label="item" border v-for="item in groupNameOptions">{{item}}</el-radio>
|
||||
</el-radio-group>
|
||||
|
||||
<!--<vi-title class="mt10" title="评委组别"></vi-title>
|
||||
<el-radio-group size="small" v-model="distributionGroupName">
|
||||
<el-radio :label="item" border v-for="item in groupNameOptions">{{item}}</el-radio>
|
||||
</el-radio-group>-->
|
||||
|
||||
<div slot="footer">
|
||||
<el-button @click="distributionDialogVisible = false">取消</el-button>
|
||||
<el-button @click="doBatchDistribution" type="primary">确定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
let vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
smm: {
|
||||
status: 'table'
|
||||
},
|
||||
formData: {
|
||||
id: null,
|
||||
jtxghcsIspass: true,
|
||||
jtxghcsyj: null,
|
||||
// jtfghcsQz: null
|
||||
},
|
||||
handleShow: false,
|
||||
rules: {
|
||||
jtxghcsIspass: [{required: true, message: '请选择是否同意结题', trigger: ['blur', 'change']}],
|
||||
jtxghcsyj: [{required: true, message: '请输入审核意见', trigger: ['blur', 'change']}],
|
||||
// jtfghcsQz: [{required: false, message: '请签字', trigger: ['blur', 'change']}],
|
||||
},
|
||||
distributionPeriod:null,
|
||||
distributionGroupName: null,
|
||||
distributionDialogVisible: false,
|
||||
tableSelection: [],
|
||||
groupNameOptions: [],
|
||||
periodOptions:[],
|
||||
pageForm: {
|
||||
year: moment().format('YYYY'),
|
||||
isAudit: false,
|
||||
yearType: 'jtyear',
|
||||
searchName: 'u.username'
|
||||
},
|
||||
unionList: [],
|
||||
unitList: [],
|
||||
tableColumns: [
|
||||
{prop: 'xmmc', label: '项目名称'},
|
||||
{prop: 'username', label: '申报人', sortable: true},
|
||||
{prop: 'sex', label: '性别', sortable: true},
|
||||
{prop: 'dwname', label: '申报单位', sortable: true},
|
||||
{prop: 'ghname', label: '院级工会', sortable: true},
|
||||
{prop: 'lxlevel', label: '立项资助金额', sortable: true},
|
||||
{prop: 'statename', label: '状态', sortable: true},
|
||||
{prop: 'sbrq', label: '申报日期', sortable: true},
|
||||
{prop: 'period', label: '评委期数', sortable: true},
|
||||
{prop: 'groupname', label: '评委分组', sortable: true}
|
||||
],
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'syr-table': httpVueLoader('/components/syr/syrtable.vue'),
|
||||
'syr-info': httpVueLoader('/components/syr/syrinfo.vue'),
|
||||
'syr-info-new': httpVueLoader('/components/syr/SyrInfoNew.vue'),
|
||||
},
|
||||
methods: {
|
||||
openView(row, isView) {
|
||||
if (isView) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.viewInfo.openView(row.id, row.state > 90 ? '9' : '1')
|
||||
} else {
|
||||
this.$refs.guava.edit()
|
||||
this.$refs.auditInfo.openView(row.id, 'jtcsxjsh')
|
||||
this.formData = {
|
||||
id: row.id,
|
||||
jtxghcsIspass: true,
|
||||
jtxghcsyj: null,
|
||||
jtfghcsQz: null
|
||||
}
|
||||
}
|
||||
},
|
||||
async doHandle(res) {
|
||||
const valid = await this.$refs.Form.validate()
|
||||
if (!valid) return
|
||||
|
||||
const resp = await $.post('/platfotm/syr/info/jtsqxjcs/doAudit', this.formData)
|
||||
if (resp.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.notifySuccess(resp.msg)
|
||||
this.pageData();
|
||||
}
|
||||
},
|
||||
groupClick(command) {
|
||||
if ('batch' === command) {
|
||||
const selection = this.$refs.table.selection
|
||||
if (selection.length === 0) {
|
||||
this.notifyWarning('请先勾选需要批量分配评委的选题')
|
||||
return
|
||||
}
|
||||
this.tableSelection = selection
|
||||
this.distributionGroupName = null
|
||||
this.distributionDialogVisible = true
|
||||
}
|
||||
},
|
||||
async doBatchDistribution() {
|
||||
const distributionPeriod = this.distributionPeriod
|
||||
const distributionGroupName = this.distributionGroupName
|
||||
if (!distributionPeriod) {
|
||||
this.notifyWarning('请选择需要分配的评委期数')
|
||||
return
|
||||
}
|
||||
if (!distributionGroupName) {
|
||||
this.notifyWarning('请选择需要分配的评委组别')
|
||||
return
|
||||
}
|
||||
const projectIds = this.$refs.table.selection.map(v => v.id)
|
||||
|
||||
const resp = await $.post(loc() + '/doBatchDistribution', {
|
||||
distributionPeriod,
|
||||
distributionGroupName,
|
||||
projectIds: JSON.stringify(projectIds)
|
||||
})
|
||||
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
this.tableSelection = []
|
||||
this.distributionGroupName = null
|
||||
this.distributionDialogVisible = false
|
||||
this.$refs.table.clearSelection()
|
||||
this.pageData()
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
},
|
||||
async doRollBack(row) {
|
||||
const resp = await $.get('/platfotm/syr/info/yjsh/doRollBack', {id: row.id, state: row.state})
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
this.pageData();
|
||||
}
|
||||
},
|
||||
async getGroupNameOptions(distributionPeriod) {
|
||||
const resp = await $.get('/platform/syr/basic/pwgl/getGroupNameOptions',{period:distributionPeriod})
|
||||
if (resp.code === 0) {
|
||||
this.groupNameOptions = resp.data
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
},
|
||||
async getPeriodOptions() {
|
||||
const resp = await $.get('/platform/syr/basic/pwgl/getPeriodOptions')
|
||||
if (resp.code === 0) {
|
||||
this.periodOptions = resp.data
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.pageData()
|
||||
this.unionList = await getUnions(null)
|
||||
await this.getPeriodOptions();
|
||||
//this.getGroupNameOptions()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,134 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<syr-table :smm.sync="smm" auditval="审核" ref="syrTable" request="/platfotm/syr/info/jtsqyjcs/pageData"
|
||||
yeartype="jtyear">
|
||||
<template slot="operation">
|
||||
<el-table-column label="操作" fixed="right" width="200">
|
||||
<template slot-scope="{row}">
|
||||
<el-button size="mini" :type="row.state>91?null:'primary'"
|
||||
@click="openView(row,row.state>91)">
|
||||
{{row.state>91?'查看':'审核'}}
|
||||
</el-button>
|
||||
<el-button size="mini" type="danger" v-if="row.state===92"
|
||||
@click="doRollBack(row)">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</syr-table>
|
||||
|
||||
<template #edit>
|
||||
<syr-info-new ref="auditInfo">
|
||||
<template #handle>
|
||||
<el-tab-pane label="院级工会结题初审" name="jtcsyjsh">
|
||||
<el-form :model="formData" label-suffix=":" label-width="100px" ref="Form" :rules="rules">
|
||||
<el-form-item label="审核人">
|
||||
${@shiro.getPrincipalProperty('username')}
|
||||
</el-form-item>
|
||||
<el-form-item label="审核时间">
|
||||
{{moment().format('YYYY-MM-DD')}}
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="同意结题" prop="jtfghcsIspass">
|
||||
<el-radio-group v-model="formData.jtfghcsIspass" size="mini">
|
||||
<el-radio :label="true" border>是</el-radio>
|
||||
<el-radio :label="false" border>否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="审核意见" prop="jtfghcsyj">
|
||||
<el-input maxlength="300" rows="5" type="textarea"
|
||||
v-model="formData.jtfghcsyj"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="签字" prop="jtfghcsQz">
|
||||
<sign :qz.sync="formData.jtfghcsQz" prefix="syrjtyjsh"></sign>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row class="mt20 text-center">
|
||||
<el-button @click="$refs.guava.index()">取消</el-button>
|
||||
<el-button @click="doHandle(true)" type="primary">提交</el-button>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
</template>
|
||||
</syr-info-new>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<syr-info-new ref="viewInfo"></syr-info-new>
|
||||
</template>
|
||||
|
||||
</guava>
|
||||
</div>
|
||||
<script>
|
||||
let vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
smm: {
|
||||
status: 'table'
|
||||
},
|
||||
formData: {
|
||||
id: null,
|
||||
jtfghcsIspass: true,
|
||||
jtfghcsyj: null,
|
||||
jtfghcsQz: null
|
||||
},
|
||||
handleShow: false,
|
||||
rules: {
|
||||
jtfghcsIspass: [{required: true, message: '请选择是否同意结题', trigger: ['blur', 'change']}],
|
||||
jtfghcsyj: [{required: true, message: '请输入审核意见', trigger: ['blur', 'change']}],
|
||||
jtfghcsQz: [{required: false, message: '请签字', trigger: ['blur', 'change']}],
|
||||
}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'syr-table': httpVueLoader('/components/syr/syrtable.vue'),
|
||||
'syr-info': httpVueLoader('/components/syr/syrinfo.vue'),
|
||||
'syr-info-new': httpVueLoader('/components/syr/SyrInfoNew.vue'),
|
||||
},
|
||||
methods: {
|
||||
openView(row, isView) {
|
||||
if (isView) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.viewInfo.openView(row.id, row.state > 90 ? '9' : '1')
|
||||
} else {
|
||||
this.$refs.guava.edit()
|
||||
this.$refs.auditInfo.openView(row.id, 'jtcsyjsh')
|
||||
this.formData = {
|
||||
id: row.id,
|
||||
jtfghcsIspass: true,
|
||||
jtfghcsyj: null,
|
||||
jtfghcsQz: null
|
||||
}
|
||||
}
|
||||
},
|
||||
async doHandle(res) {
|
||||
const valid = await this.$refs.Form.validate()
|
||||
if (!valid) return
|
||||
|
||||
const resp = await $.post('/platfotm/syr/info/jtsqyjcs/doAudit', this.formData)
|
||||
if (resp.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.notifySuccess(resp.msg)
|
||||
this.$refs['syrTable'].doSearch()
|
||||
}
|
||||
},
|
||||
async doRollBack(row) {
|
||||
const resp = await $.get('/platfotm/syr/info/yjsh/doRollBack', {id: row.id, state: row.state})
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
this.$refs['syrTable'].doSearch()
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,231 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<!--校工会立项结果-->
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<syr-table :smm.sync="smm" auditval="审核" ref="syrTable" request="/platfotm/syr/info/lxresult/pageData">
|
||||
<template slot="operation">
|
||||
<el-table-column label="操作" fixed="right" width="200px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button size="mini" :type="row.state>50?null:'primary'"
|
||||
@click="openView(row,row.state>50)">
|
||||
{{row.state>50?'查看':'评审'}}
|
||||
</el-button>
|
||||
<el-button size="mini" type="danger" v-if="row.state>50 && row.state<=60"
|
||||
@click="doRollBack(row)">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</syr-table>
|
||||
|
||||
|
||||
<template #edit>
|
||||
<syr-info-new ref="auditInfo">
|
||||
<template #handle>
|
||||
<el-tab-pane label="校工会立项评审" name="xghlxsh">
|
||||
<el-form :model="formData" label-width="120px" ref="Form">
|
||||
<el-form-item label="审核人">
|
||||
${@shiro.getPrincipalProperty('username')}
|
||||
</el-form-item>
|
||||
<el-form-item label="审核时间">
|
||||
{{moment().format('YYYY-MM-DD')}}
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="评委评审统计">-->
|
||||
<!-- <div style="display: flex">-->
|
||||
<!-- <div id="jylxDiv2" class="text-center" style="width: 300px;height: 300px"></div>-->
|
||||
<!-- <div id="lxlevelDiv2" class="text-center" style="width: 300px;height: 300px"></div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="立项结果" prop="lxresult">
|
||||
<el-radio-group size="mini" v-model="formData.lxresult">
|
||||
<el-radio label="1">立项</el-radio>
|
||||
<el-radio label="0">不予立项</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="立项等次" prop="lxlevel" v-if="formData.lxresult==='1'">
|
||||
<el-radio-group size="mini" v-model="formData.lxlevel">
|
||||
<el-radio label="2000" value="2000">2000元</el-radio>
|
||||
<el-radio label="3000" value="3000">3000元</el-radio>
|
||||
<el-radio label="5000" value="5000">5000元</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="签字" prop="xghlxqz">
|
||||
<sign :qz.sync="formData.xghlxqz" prefix="xghlxqz"></sign>
|
||||
</el-form-item>-->
|
||||
</el-form>
|
||||
<el-row class="mt20 text-center">
|
||||
<el-button @click="smm.status='table'">返 回</el-button>
|
||||
<el-button @click="doHandle(true)" type="primary">提 交</el-button>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
</template>
|
||||
</syr-info-new>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<syr-info-new ref="viewInfo"></syr-info-new>
|
||||
</template>
|
||||
|
||||
</guava>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
let jylxPlot = null
|
||||
let lxlevelPlot = null
|
||||
|
||||
let vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
smm: {
|
||||
status: 'table'
|
||||
},
|
||||
formData: {},
|
||||
handleShow: false,
|
||||
pwlxpstj: {
|
||||
lxl: '',
|
||||
blxl: '',
|
||||
twotl: '',
|
||||
threetl: '',
|
||||
fivetl: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'syr-table': httpVueLoader('/components/syr/syrtable.vue'),
|
||||
// 'syr-info': httpVueLoader('/components/syr/syrinfo.vue'),
|
||||
'syr-info-new': httpVueLoader('/components/syr/SyrInfoNew.vue'),
|
||||
},
|
||||
methods: {
|
||||
openView(row, isView) {
|
||||
if (isView) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.viewInfo.openView(row.id)
|
||||
} else {
|
||||
this.$refs.guava.edit()
|
||||
this.$refs.auditInfo.openView(row.id, 'xghlxsh')
|
||||
this.formData = {
|
||||
id: row.id,
|
||||
lxresult: '1',
|
||||
lxlevel: '2000'
|
||||
}
|
||||
}
|
||||
|
||||
// this.handleShow = row.state === 50
|
||||
// this.smm = {
|
||||
// status: 'detail',
|
||||
// id: row.id,
|
||||
// showpane: [1, 2, 3, 4, 5],
|
||||
// active: this.handleShow ? 'xghlxsh' : '1'
|
||||
// }
|
||||
// this.initPlot()
|
||||
},
|
||||
async doHandle() {
|
||||
if (this.formData.xghlxqz === '') {
|
||||
this.$message.info('请扫描二维码签字')
|
||||
return
|
||||
}
|
||||
console.log(this.formData)
|
||||
const resp = await $.post('/platfotm/syr/info/lxresult/doHandle', this.formData)
|
||||
if (resp.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$refs['syrTable'].doSearch()
|
||||
this.notifySuccess(resp.msg)
|
||||
}
|
||||
},
|
||||
async doRollBack(row){
|
||||
const resp = await $.get('/platfotm/syr/info/yjsh/doRollBack',{id:row.id,state:row.state})
|
||||
if (resp.code === 0){
|
||||
this.notifySuccess(resp.msg)
|
||||
this.$refs['syrTable'].doSearch()
|
||||
}
|
||||
},
|
||||
initPlot() {
|
||||
$.get(base + '/platform/syr/common/findOne', {id: this.formData.id}).then(({data}) => {
|
||||
this.$nextTick(() => {
|
||||
let pxlxpsArr = data.lxpsxx
|
||||
let jylxArr = pxlxpsArr.filter(o => o.isjylx === 1)
|
||||
let bjylxArr = pxlxpsArr.filter(o => o.isjylx === 0)
|
||||
|
||||
const jylxChart = echarts.init(document.getElementById('jylxDiv2'))
|
||||
const value = (jylxArr.length / pxlxpsArr.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 = pxlxpsArr.filter(o => o.lxlevel === '2000')
|
||||
const level3List = pxlxpsArr.filter(o => o.lxlevel === '3000')
|
||||
const level5List = pxlxpsArr.filter(o => o.lxlevel === '5000')
|
||||
|
||||
let levelData = [
|
||||
{name: '2000元', value: level2List.length},
|
||||
{name: '3000元', value: level3List.length},
|
||||
{
|
||||
name: '5000元', value: level5List.length
|
||||
}]
|
||||
|
||||
const lxlevelChart = echarts.init(document.getElementById('lxlevelDiv2'))
|
||||
lxlevelChart.setOption({
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 'left'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '立项等次',
|
||||
type: 'pie',
|
||||
radius: '50%',
|
||||
data: levelData,
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
|
||||
})
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
|
||||
|
||||
@@ -1,113 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.inline-flex {
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
.flexbox {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.flexbox .el-form-item {
|
||||
width: 33.3%;
|
||||
}
|
||||
|
||||
.el-form .el-select, .el-form .el-date-editor {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.el-divider {
|
||||
background-color: #409EFF;
|
||||
}
|
||||
|
||||
.el-divider__text {
|
||||
color: #409EFF;
|
||||
}
|
||||
|
||||
.w-e-text-container {
|
||||
height: 250px !important;
|
||||
}
|
||||
</style>
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<!-- <syr-info :smm.sync="smm"></syr-info>-->
|
||||
<syr-table :smm.sync="smm" isshow ref="syrTable" request="/platfotm/syr/info/mykt/pageData">
|
||||
<template slot="operation">
|
||||
<el-table-column label="操作" fixed="right" width="300">
|
||||
<template slot-scope="{row}">
|
||||
<el-button size="mini" @click="openView(row)">查看</el-button>
|
||||
<el-button size="mini" @click="exportlxsbs(row.id)">导出</el-button>
|
||||
<el-button @click="openEdit(row)" size="mini" type="primary"
|
||||
v-if="[5,10,20].includes(row.state)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button @click="doDelete(row.id)" size="mini" type="danger"
|
||||
v-if="[5,10,20].includes(row.state)">删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</syr-table>
|
||||
|
||||
<template #view>
|
||||
<syr-info-new ref="viewInfo"></syr-info-new>
|
||||
</template>
|
||||
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
let vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
smm: {
|
||||
status: 'table',
|
||||
id: '',
|
||||
active: '1',
|
||||
showpane: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
||||
},
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'syr-table': httpVueLoader('/components/syr/syrtable.vue'),
|
||||
'syr-info-new': httpVueLoader('/components/syr/SyrInfoNew.vue'),
|
||||
},
|
||||
methods: {
|
||||
openView(row) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.viewInfo.openView(row.id)
|
||||
},
|
||||
openEdit(row) {
|
||||
sublime.jumpPagePjax('/platfotm/syr/info/xtsb?id=' + row.id)
|
||||
},
|
||||
async doDelete(id) {
|
||||
const confirm = await this.$confirm('此操作将永久删除该记录, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (confirm === 'confirm') {
|
||||
const resp = await $.post('/platfotm/syr/info/mykt/doDelete', {id: id})
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
this.$refs.syrTable.doSearch()
|
||||
}
|
||||
}
|
||||
},
|
||||
exportlxsbs(id) {
|
||||
window.open('/platform/syr/common/exportlxsbs?id=' + id)
|
||||
}
|
||||
},
|
||||
created() {
|
||||
//this.pageData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,140 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<!--校工会评审结果-->
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<syr-table :smm.sync="smm" auditval="评审" ref="syrTable" request="/platfotm/syr/info/psjg/pageData"
|
||||
yeartype="jtyear">
|
||||
<template slot="operation">
|
||||
<el-table-column label="操作" fixed="right" width="200px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button size="mini" :type="row.state>110?null:'primary'"
|
||||
@click="openView(row,row.state>110)">
|
||||
{{row.state>110?'查看':'评审'}}
|
||||
</el-button>
|
||||
<el-button size="mini" type="danger" v-if="row.state>110 && row.state<=120"
|
||||
@click="doRollBack(row)">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</syr-table>
|
||||
|
||||
<template #edit>
|
||||
<syr-info-new ref="auditInfo">
|
||||
<template slot="handle">
|
||||
<el-tab-pane label="校工会评审结果" name="xghpsjg">
|
||||
<el-form :model="formData" label-width="100px" ref="Form" :rules="rules">
|
||||
<el-form-item label="审核人">
|
||||
${@shiro.getPrincipalProperty('username')}
|
||||
</el-form-item>
|
||||
<el-form-item label="审核时间">
|
||||
{{moment().format('YYYY-MM-DD')}}
|
||||
</el-form-item>
|
||||
<el-form-item label="是否通过" prop="ispass">
|
||||
<el-radio-group v-model="formData.ispass" size="mini">
|
||||
<el-radio :label="true" border>是</el-radio>
|
||||
<el-radio :label="false" border>否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否优秀" prop="isgood" v-if="formData.ispass">
|
||||
<el-radio-group v-model="formData.isgood" size="mini">
|
||||
<el-radio :label="true" border>是</el-radio>
|
||||
<el-radio :label="false" border>否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="审核意见" prop="jtxghyj">
|
||||
<el-input maxlength="100" rows="5" type="textarea"
|
||||
v-model="formData.jtxghyj"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<el-row class="mt20 text-center">
|
||||
<el-button @click="$refs.guava.index()">返 回</el-button>
|
||||
<el-button @click="doHandle(true)" type="primary">提 交</el-button>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
</template>
|
||||
</syr-info-new>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<syr-info-new ref="viewInfo"></syr-info-new>
|
||||
</template>
|
||||
</guava>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
let vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
smm: {
|
||||
status: 'table'
|
||||
},
|
||||
unionList: [],
|
||||
unitList: [],
|
||||
searchData: {
|
||||
unionid: '',
|
||||
unitid: ''
|
||||
},
|
||||
formData: {},
|
||||
handleShow: false,
|
||||
rules: {
|
||||
ispass: [{required: true, message: '请选择是否通过', trigger: ['blur', 'change']}],
|
||||
isgood: [{required: true, message: '请选择是否优秀', trigger: ['blur', 'change']}],
|
||||
jtxghyj: [{required: true, message: '请输入审核意见', trigger: ['blur', 'change']}],
|
||||
}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'syr-table': httpVueLoader('/components/syr/syrtable.vue'),
|
||||
'syr-info': httpVueLoader('/components/syr/syrinfo.vue'),
|
||||
'syr-info-new': httpVueLoader('/components/syr/SyrInfoNew.vue'),
|
||||
},
|
||||
methods: {
|
||||
openView(row, isView) {
|
||||
if (isView) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.viewInfo.openView(row.id, 'xghpsjg')
|
||||
} else {
|
||||
this.$refs.guava.edit()
|
||||
this.$refs.auditInfo.openView(row.id, 'xghpsjg')
|
||||
this.$set(this.formData, 'id', row.id)
|
||||
this.$set(this.formData, 'ispass', null)
|
||||
this.$set(this.formData, 'isgood', null)
|
||||
this.$set(this.formData, 'isgood', null)
|
||||
this.$set(this.formData, 'isgood', null)
|
||||
|
||||
}
|
||||
},
|
||||
async doHandle() {
|
||||
const valid = await this.$refs.Form.validate()
|
||||
if (!valid) return
|
||||
const resp = await $.post('/platfotm/syr/info/psjg/doHandle', this.formData)
|
||||
if (resp.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.notifySuccess(resp.msg)
|
||||
this.$refs['syrTable'].doSearch()
|
||||
}
|
||||
},
|
||||
async doRollBack(row) {
|
||||
const resp = await $.get('/platfotm/syr/info/yjsh/doRollBack', {id: row.id, state: row.state})
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
this.$refs['syrTable'].doSearch()
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
|
||||
|
||||
|
||||
@@ -1,233 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.el-radio-group {
|
||||
vertical-align: unset !important;
|
||||
}
|
||||
</style>
|
||||
<div id="app" v-clock>
|
||||
<guava ref="guava">
|
||||
<syr-table :smm.sync="smm" auditval="评审" ref="syrTable" request="/platfotm/syr/info/pwjtps/pageData"
|
||||
yeartype="jtyear">
|
||||
<template slot="operation">
|
||||
<el-table-column label="操作" fixed="right" width="300">
|
||||
<template slot-scope="{row}">
|
||||
<!--如果是超管 根据状态来判断评委是否都评审完-->
|
||||
<template v-if="hasAdminRole">
|
||||
<el-button size="mini"
|
||||
:type="row.state>100?null:'primary'"
|
||||
@click="openView(row,row.state>100)">
|
||||
{{row.state>100?'查看':'评审'}}
|
||||
</el-button>
|
||||
</template>
|
||||
<!--如果是评委-->
|
||||
<template v-else>
|
||||
<el-button
|
||||
:type="row.isps>0?null:'primary'"
|
||||
@click="openView(row,row.isps>0)"
|
||||
size="mini">
|
||||
{{row.isps>0?'查看':'评审'}}
|
||||
</el-button>
|
||||
<el-button
|
||||
:type="row.isps>0?'primary':''"
|
||||
@click="openEdit(row)"
|
||||
size="mini"
|
||||
v-if="[100,110].includes(row.state)">
|
||||
修改
|
||||
</el-button>
|
||||
</template>
|
||||
<el-button size="mini" type="danger" v-if="row.state>100 && row.state<=110"
|
||||
@click="doRollBack(row)">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</syr-table>
|
||||
|
||||
<template #edit>
|
||||
<syr-info-new ref="auditInfo">
|
||||
<template slot="handle">
|
||||
<el-tab-pane label="评委结题评审" name="pwjtps">
|
||||
<el-form :model="formData" :rules="rules" label-width="100px" ref="Form">
|
||||
<el-row type="flex">
|
||||
<el-col>
|
||||
<el-form-item label="评委" prop="pwid">
|
||||
<span v-if="hasAdminRole">
|
||||
<el-select v-model="formData.pwid">
|
||||
<el-option v-for="u in userList"
|
||||
:value="u.userid"
|
||||
:key="u.userid"
|
||||
:label="u.username + '-' +u.loginname">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</span>
|
||||
<span v-else>
|
||||
${@shiro.getPrincipalProperty('username')}
|
||||
</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col>
|
||||
<el-form-item label="审核时间">
|
||||
{{moment().format('YYYY-MM-DD')}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row type="flex">
|
||||
<el-col>
|
||||
<el-form-item label="是否通过" prop="ispass">
|
||||
<el-radio-group v-model="formData.ispass" size="mini">
|
||||
<el-radio :label="true" border>是</el-radio>
|
||||
<el-radio :label="false" border>否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col>
|
||||
<el-form-item label="是否优秀" prop="isgood" v-if="formData.ispass">
|
||||
<el-radio-group v-model="formData.isgood" size="mini">
|
||||
<el-radio :label="true" border>是</el-radio>
|
||||
<el-radio :label="false" border>否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="评审建议" prop="psjy">
|
||||
<el-input maxlength="100" rows="5" type="textarea"
|
||||
v-model="formData.psjy"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="签字" prop="pwjtqz">
|
||||
<sign :qz.sync="formData.pwjtqz" prefix="pwjtqz"></sign>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row class="mt20 text-center">
|
||||
<el-button @click="$refs.guava.index()">返 回</el-button>
|
||||
<el-button @click="doHandle" type="primary">提 交</el-button>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
</template>
|
||||
</syr-info-new>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<syr-info-new ref="viewInfo"></syr-info-new>
|
||||
</template>
|
||||
</guava>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
let vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
isEdit: false,
|
||||
smm: {
|
||||
status: 'table'
|
||||
},
|
||||
formData: {},
|
||||
handleShow: false,
|
||||
userList: [],
|
||||
rules: {
|
||||
pwid: [{required: true, message: '请选择评委', trigger: ['blur', 'change']}],
|
||||
psjy: [
|
||||
{required: true, message: '请填写评审建议', trigger: ['blur', 'change']},
|
||||
{max: 100, message: '最多填写100个字', trigger: ['blur', 'change']}],
|
||||
ispass: [{required: true, message: '请选择是否通过', trigger: ['blur', 'change']}],
|
||||
isgood: [{required: true, message: '请选择是否优秀', trigger: ['blur', 'change']}],
|
||||
pwjtqz: [{required: true, message: '请签字', trigger: ['blur', 'change']}],
|
||||
},
|
||||
//拥有其它权限吗 校管 超管
|
||||
hasAdminRole: false
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'syr-table':
|
||||
httpVueLoader('/components/syr/syrtable.vue'),
|
||||
'syr-info':
|
||||
httpVueLoader('/components/syr/syrinfo.vue'),
|
||||
'syr-info-new':
|
||||
httpVueLoader('/components/syr/SyrInfoNew.vue'),
|
||||
}
|
||||
,
|
||||
methods: {
|
||||
openView(row, isView) {
|
||||
if (isView) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.viewInfo.openView(row.id, '9')
|
||||
} else {
|
||||
this.isEdit = false
|
||||
this.$refs.guava.edit()
|
||||
this.$refs.auditInfo.openView(row.id, 'pwjtps')
|
||||
this.$set(this.formData, 'xmid', row.id)
|
||||
this.$set(this.formData, 'ispass', null)
|
||||
this.$set(this.formData, 'isgood', null)
|
||||
this.$set(this.formData, 'psjy', null)
|
||||
this.$set(this.formData, 'pwid', this.hasAdminRole ? '' : "${@shiro.getPrincipalProperty('id')}")
|
||||
}
|
||||
this.getWpsPwList(row.id)
|
||||
},
|
||||
async openEdit(row) {
|
||||
this.isEdit = true
|
||||
this.$refs.guava.edit()
|
||||
this.$refs.auditInfo.openView(row.id, 'pwjtps')
|
||||
const resp = await $.get(loc() + '/getJtpsInfo', {
|
||||
xmId: row.id,
|
||||
pwId: "${@shiro.getPrincipalProperty('id')}"
|
||||
})
|
||||
if (resp.code === 0) {
|
||||
this.$set(this.formData, 'xmid', resp.data.xmid)
|
||||
this.$set(this.formData, 'ispass', resp.data.ispass)
|
||||
this.$set(this.formData, 'isgood', resp.data.isgood)
|
||||
this.$set(this.formData, 'pssj', resp.data.pssj)
|
||||
this.$set(this.formData, 'psjy', resp.data.psjy)
|
||||
this.$set(this.formData, 'pwid', resp.data.pwid)
|
||||
this.$set(this.formData, 'pwjtqz', resp.data.pwjtqz)
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
this.getWpsPwList(row.id)
|
||||
/*console.log(resp.data)
|
||||
this.formData = {
|
||||
xmid: row.id,
|
||||
isjylx: '1',
|
||||
lxlevel: '2000',
|
||||
psyj: '',
|
||||
pwid: this.hasAdminRole ? '' : "${@shiro.getPrincipalProperty('id')}"
|
||||
}*/
|
||||
|
||||
},
|
||||
async doHandle() {
|
||||
const valid = await this.$refs['Form'].validate()
|
||||
if (!valid) return
|
||||
const reqUrl = this.isEdit ? '/platfotm/syr/info/pwjtps/doEdit' : '/platfotm/syr/info/pwjtps/doHandle'
|
||||
const resp = await $.post(reqUrl, this.formData)
|
||||
if (resp.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.notifySuccess(resp.msg)
|
||||
this.$refs['syrTable'].doSearch()
|
||||
}
|
||||
}
|
||||
,
|
||||
async getWpsPwList(xmid) {
|
||||
const {data} = await $.get('/platfotm/syr/info/pwjtps/getWpsPwList', {xmid: xmid})
|
||||
this.userList = data
|
||||
},
|
||||
async doRollBack(row) {
|
||||
const resp = await $.get('/platfotm/syr/info/yjsh/doRollBack', {id: row.id, state: row.state})
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
this.$refs['syrTable'].doSearch()
|
||||
}
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
if (${@shiro.hasRole('sysadmin')} || ${@shiro.hasRole('A06')}) {
|
||||
this.hasAdminRole = true
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,258 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.el-radio-group {
|
||||
vertical-align: unset !important;
|
||||
}
|
||||
</style>
|
||||
<div id="app" v-clock>
|
||||
<guava ref="guava">
|
||||
<syr-table auditval="审核" ref="syrTable" request="/platfotm/syr/info/pwlxps/pageData">
|
||||
<template slot="operation">
|
||||
<el-table-column fixed="right" label="操作" width="300">
|
||||
<template slot-scope="{row}">
|
||||
<!--如果是超管 根据状态来判断评委是否都评审完-->
|
||||
<template v-if="hasAdminRole">
|
||||
<el-button size="mini"
|
||||
:type="row.state>40?null:'primary'"
|
||||
@click="openView(row,row.state>40)">
|
||||
{{row.state>40?'查看':'评审'}}
|
||||
</el-button>
|
||||
|
||||
</template>
|
||||
<!--如果是评委-->
|
||||
<template v-else>
|
||||
<el-button
|
||||
:type="row.isps>0?null:'primary'"
|
||||
@click="openView(row,row.isps>0)"
|
||||
size="mini">
|
||||
{{row.isps>0?'查看':'评审'}}
|
||||
</el-button>
|
||||
<el-button
|
||||
:type="row.isps>0?'primary':''"
|
||||
@click="openEdit(row)"
|
||||
size="mini"
|
||||
v-if="[50].includes(row.state)">
|
||||
修改
|
||||
</el-button>
|
||||
</template>
|
||||
<el-button size="mini" type="danger" v-if="row.state>40 && row.state<=50"
|
||||
@click="doRollBack(row)">撤回
|
||||
</el-button>
|
||||
|
||||
<!--<el-button
|
||||
size="mini"
|
||||
:type="row.state>40?null:'primary'"
|
||||
@click="openView(row,row.state>40)">
|
||||
{{row.state>40?'查看':'评审'}}
|
||||
</el-button>-->
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</syr-table>
|
||||
|
||||
|
||||
<template #edit>
|
||||
<syr-info-new ref="auditInfo">
|
||||
<template #handle>
|
||||
<el-tab-pane label="评委立项评审" name="pwlxps">
|
||||
<el-form :model="formData" :rules="rules" label-suffix=":" label-width="100px" ref="form">
|
||||
<el-row type="flex">
|
||||
<el-col>
|
||||
<el-form-item label="评委" prop="pwid">
|
||||
<span v-if="hasAdminRole">
|
||||
<el-select v-model="formData.pwid">
|
||||
<el-option v-for="u in userList"
|
||||
:value="u.userid"
|
||||
:key="u.userid"
|
||||
:label="u.username + '-' +u.loginname">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</span>
|
||||
<span v-else>
|
||||
${@shiro.getPrincipalProperty('username')}
|
||||
</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col>
|
||||
<el-form-item label="审核时间">
|
||||
{{moment().format('YYYY-MM-DD')}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row type="flex">
|
||||
<el-col>
|
||||
<el-form-item label="建议立项" prop="isjylx">
|
||||
<el-radio-group v-model="formData.isjylx">
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col>
|
||||
<el-form-item label="立项等次" prop="lxlevel" v-if="formData.isjylx===1">
|
||||
<el-radio-group v-model="formData.lxlevel">
|
||||
<el-radio label="2000" value="2000">2000元</el-radio>
|
||||
<el-radio label="3000" value="3000">3000元</el-radio>
|
||||
<el-radio label="5000" value="5000">5000元</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="评审意见" prop="psyj">
|
||||
<el-input maxlength="50" rows="5" show-word-limit type="textarea"
|
||||
v-model="formData.psyj"></el-input>
|
||||
</el-form-item>
|
||||
<!--<el-form-item label="签字" prop="pwlxqz">
|
||||
<sign :qz.sync="formData.pwlxqz" prefix="pwlxqz"></sign>
|
||||
</el-form-item>-->
|
||||
</el-form>
|
||||
<el-row class="mt20 text-center">
|
||||
<el-button @click="$refs.guava.index()">返 回</el-button>
|
||||
<el-button @click="doHandle" type="primary">确 定</el-button>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
</template>
|
||||
</syr-info-new>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<syr-info-new ref="viewInfo"></syr-info-new>
|
||||
</template>
|
||||
|
||||
</guava>
|
||||
</div>
|
||||
<script>
|
||||
let vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
smm: {
|
||||
status: 'table'
|
||||
},
|
||||
formData: {},
|
||||
searchData: {
|
||||
unionid: '',
|
||||
unitid: ''
|
||||
},
|
||||
userList: [],
|
||||
rules: {
|
||||
pwid: [{required: true, message: '请选择评委', trigger: ['blur', 'change']}],
|
||||
psyj: [{required: true, message: '请输入评审意见(最多填写50个字)', trigger: ['blur', 'change']}],
|
||||
pwlxqz: [{required: true, message: '请签字', trigger: ['blur', 'change']}],
|
||||
},
|
||||
//拥有其它权限吗 校管 超管
|
||||
hasAdminRole: false,
|
||||
isEdit: false
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'syr-table': httpVueLoader('/components/syr/syrtable.vue'),
|
||||
'syr-info': httpVueLoader('/components/syr/syrinfo.vue'),
|
||||
'syr-info-new': httpVueLoader('/components/syr/SyrInfoNew.vue'),
|
||||
},
|
||||
methods: {
|
||||
openView(row, isView) {
|
||||
if (isView) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.viewInfo.openView(row.id)
|
||||
} else {
|
||||
this.isEdit = false
|
||||
this.$refs.guava.edit()
|
||||
this.$refs.auditInfo.openView(row.id, 'pwlxps')
|
||||
this.formData = {
|
||||
xmid: row.id,
|
||||
isjylx: 1,
|
||||
lxlevel: '2000',
|
||||
psyj: '',
|
||||
pwid: this.hasAdminRole ? '' : "${@shiro.getPrincipalProperty('id')}"
|
||||
}
|
||||
this.getWpsPwList(row.id)
|
||||
}
|
||||
},
|
||||
async openEdit(row) {
|
||||
this.isEdit = true
|
||||
this.$refs.guava.edit()
|
||||
this.$refs.auditInfo.openView(row.id, 'pwlxps')
|
||||
const resp = await $.get(loc() + '/getLxpsInfo', {
|
||||
xmId: row.id,
|
||||
pwId: "${@shiro.getPrincipalProperty('id')}"
|
||||
})
|
||||
if (resp.code === 0) {
|
||||
this.$set(this.formData, 'xmid', resp.data.xmid)
|
||||
this.$set(this.formData, 'isjylx', resp.data.isjylx ? 1 : 0)
|
||||
this.$set(this.formData, 'lxlevel', resp.data.lxlevel)
|
||||
this.$set(this.formData, 'psyj', resp.data.psyj)
|
||||
this.$set(this.formData, 'pwid', resp.data.pwid)
|
||||
this.$set(this.formData, 'pwlxqz', resp.data.pwlxqz)
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
this.getWpsPwList(row.id)
|
||||
/*console.log(resp.data)
|
||||
this.formData = {
|
||||
xmid: row.id,
|
||||
isjylx: '1',
|
||||
lxlevel: '2000',
|
||||
psyj: '',
|
||||
pwid: this.hasAdminRole ? '' : "${@shiro.getPrincipalProperty('id')}"
|
||||
}*/
|
||||
|
||||
},
|
||||
async doHandle() {
|
||||
try {
|
||||
const valid = await this.$refs['form'].validate()
|
||||
if (valid) {
|
||||
if (this.formData.pwlxqz === '') {
|
||||
this.$message.info('请扫描二维码签字')
|
||||
return
|
||||
}
|
||||
const reqUrl = this.isEdit ? '/platfotm/syr/info/pwlxps/doEdit' : '/platfotm/syr/info/pwlxps/doHandle'
|
||||
|
||||
const resp = await $.post(reqUrl, this.formData)
|
||||
if (resp.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.notifySuccess(resp.msg)
|
||||
this.$refs['syrTable'].doSearch()
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
|
||||
// this.$refs['form'].validate(async valid => {
|
||||
// if (valid) {
|
||||
// await POST('/platfotm/syr/info/pwlxps/doHandle', this.formData)
|
||||
// this.smm = {
|
||||
// status: 'table',
|
||||
// showpane: [1, 2, 3, 4]
|
||||
// }
|
||||
// }
|
||||
// })
|
||||
},
|
||||
async getWpsPwList(xmid) {
|
||||
const {data} = await $.get('/platfotm/syr/info/pwlxps/getWpsPwList', {xmid: xmid})
|
||||
this.userList = data
|
||||
},
|
||||
async doRollBack(row) {
|
||||
const resp = await $.get('/platfotm/syr/info/yjsh/doRollBack', {id: row.id, state: row.state})
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
this.$refs['syrTable'].doSearch()
|
||||
}
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
if (${@shiro.hasRole('sysadmin')} || ${@shiro.hasRole('A06')}) {
|
||||
this.hasAdminRole = true
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,401 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.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>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<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="pageForm.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="pageForm.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="pageForm.xmmc" placeholder="请输入项目名称查询" style="width: 100%;"></el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">申报人:</div>
|
||||
<div class="search-item-option">
|
||||
<el-input v-model="pageForm.searchKeyword" placeholder="请输入内容" @keyup.enter.native="doSearch">
|
||||
<el-select slot="prepend" v-model="pageForm.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">
|
||||
<div class="search-item-label">院级工会:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select v-model="pageForm.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">
|
||||
<div class="search-item-label">单位:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select v-model="pageForm.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="pageForm.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="pageForm.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">
|
||||
<table-tool :app="this" label="选题列表">
|
||||
<template #func>
|
||||
<el-radio-group @change="doSearch" class="mr10" size="small" v-model="pageForm.isAudit">
|
||||
<el-radio-button :label="null">全部</el-radio-button>
|
||||
<el-radio-button :label="true">已审核</el-radio-button>
|
||||
<el-radio-button :label="false">未审核</el-radio-button>
|
||||
</el-radio-group>
|
||||
|
||||
<el-dropdown @command="groupClick" size="small" split-button type="primary">
|
||||
分配评委
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item command="batch">批量分组</el-dropdown-item>
|
||||
<!-- <el-dropdown-item command="auto">自动分组</el-dropdown-item>-->
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
|
||||
</template>
|
||||
</table-tool>
|
||||
|
||||
<el-table :data="tableData" @sort-change="pageOrder" ref="table">
|
||||
<el-table-column
|
||||
:selectable="(row)=>{return row.isaudit && row.state === 40 && row.pwhasauditcount === 0}"
|
||||
type="selection"
|
||||
width="55">
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column :index="indexMethod" align="center" header-align="center" label="序号" type="index"
|
||||
width="80px"></el-table-column>
|
||||
|
||||
<el-table-column
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
align="center"
|
||||
header-align="center"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns"
|
||||
></el-table-column>
|
||||
<el-table-column label="操作" width="200px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button size="mini" :type="row.state>30?null:'primary'"
|
||||
@click="openView(row,row.state>30)">
|
||||
{{row.state>30?'查看':'审核'}}
|
||||
</el-button>
|
||||
<el-button size="mini" type="danger" v-if="row.state>30 && row.state<=40"
|
||||
@click="doRollBack(row)">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<template #edit>
|
||||
<syr-info-new ref="auditInfo">
|
||||
<template #handle>
|
||||
<el-tab-pane label="校工会审核" name="xjsh">
|
||||
<el-form :model="formData" label-suffix=":" label-width="100px" ref="auditForm">
|
||||
<el-form-item label="审核人">
|
||||
${@shiro.getPrincipalProperty('username')}
|
||||
</el-form-item>
|
||||
<el-form-item label="审核时间">
|
||||
{{moment().format('YYYY-MM-DD')}}
|
||||
</el-form-item>
|
||||
<el-form-item :rules="[{required: true, message: '请输入审核意见', trigger: ['blur']}]"
|
||||
label="审核意见"
|
||||
prop="stxghyj">
|
||||
<el-input maxlength="300" rows="5" type="textarea"
|
||||
v-model="formData.stxghyj"></el-input>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="签字" prop="stxghfzrqz" :rules="[{required: true, message: '请签字', trigger: ['change']}]">
|
||||
<sign :qz.sync="formData.stxghfzrqz" prefix="syrxjsh"></sign>
|
||||
</el-form-item>-->
|
||||
</el-form>
|
||||
<el-row class="mt20 text-center">
|
||||
<el-button @click="doHandle(false)" type="danger">拒 绝</el-button>
|
||||
<el-button @click="doHandle(true)" type="success">通 过</el-button>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
</template>
|
||||
</syr-info-new>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<syr-info-new ref="viewInfo"></syr-info-new>
|
||||
</template>
|
||||
|
||||
<el-dialog :close-on-click-modal="false" :visible.sync="distributionDialogVisible" title="批量分配评委" width="45%">
|
||||
<vi-title title="勾选选题"></vi-title>
|
||||
<el-table :data="tableSelection" max-height="300px">
|
||||
<el-table-column header-align="center" label="序号" type="index" width="80px"></el-table-column>
|
||||
<el-table-column header-align="center" label="项目名称" prop="xmmc"></el-table-column>
|
||||
<el-table-column header-align="center" label="申报人" prop="username"></el-table-column>
|
||||
</el-table>
|
||||
|
||||
<vi-title class="mt10" title="评委期数"></vi-title>
|
||||
<el-select v-model="distributionPeriod" clearable filterable placeholder="请选择评委期数"
|
||||
@change="getGroupNameOptions(distributionPeriod)"
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in periodOptions"
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item">
|
||||
</el-option>
|
||||
</el-select>
|
||||
<!--<el-radio-group size="small" v-model="distributionPeriod" @change="getGroupNameOptions(distributionPeriod)">
|
||||
<el-radio :label="item" border v-for="item in periodOptions">{{item}}</el-radio>
|
||||
</el-radio-group>-->
|
||||
|
||||
<vi-title class="mt10" title="评委组别"></vi-title>
|
||||
<el-radio-group size="small" v-model="distributionGroupName">
|
||||
<el-radio :label="item" border v-for="item in groupNameOptions">{{item}}</el-radio>
|
||||
</el-radio-group>
|
||||
|
||||
<div slot="footer">
|
||||
<el-button @click="distributionDialogVisible = false">取消</el-button>
|
||||
<el-button @click="doBatchDistribution" type="primary">确定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
</guava>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
let vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
unionList: [],
|
||||
unitList: [],
|
||||
periodOptions:[],
|
||||
groupNameOptions: [],
|
||||
formData: {},
|
||||
pageForm: {
|
||||
year: moment().format('YYYY'),
|
||||
isAudit: false,
|
||||
yearType: 'sbyear'
|
||||
|
||||
},
|
||||
tableColumns: [
|
||||
{prop: 'xmmc', label: '项目名称'},
|
||||
{prop: 'username', label: '申报人', sortable: true},
|
||||
{prop: 'sex', label: '性别', sortable: true},
|
||||
{prop: 'dwname', label: '申报单位', sortable: true},
|
||||
{prop: 'ghname', label: '院级工会', sortable: true},
|
||||
{prop: 'zwzc', label: '职务职称', sortable: true},
|
||||
{prop: 'statename', label: '状态', sortable: true},
|
||||
{prop: 'sbrq', label: '申报日期', sortable: true},
|
||||
{prop: 'period', label: '评委期数', sortable: true},
|
||||
{prop: 'groupname', label: '评委分组', sortable: true},
|
||||
],
|
||||
distributionPeriod:null,
|
||||
distributionGroupName: null,
|
||||
distributionDialogVisible: false,
|
||||
tableSelection: []
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'syr-info-new': httpVueLoader('/components/syr/SyrInfoNew.vue'),
|
||||
},
|
||||
methods: {
|
||||
openView(row, isView) {
|
||||
if (isView) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.viewInfo.openView(row.id)
|
||||
} else {
|
||||
this.$refs.guava.edit()
|
||||
this.$refs.auditInfo.openView(row.id, 'xjsh')
|
||||
this.formData = {
|
||||
id: row.id,
|
||||
stxghyj: null,
|
||||
stxghfzrqz: null
|
||||
}
|
||||
}
|
||||
},
|
||||
async doHandle(res) {
|
||||
const valid = await this.$refs['auditForm'].validate()
|
||||
if (!valid) return
|
||||
this.formData.state = res ? 40 : 35
|
||||
const resp = await $.post('/platfotm/syr/info/xjsh/doHandle', this.formData)
|
||||
if (resp.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.notifySuccess(resp.msg)
|
||||
this.pageData()
|
||||
}
|
||||
},
|
||||
groupClick(command) {
|
||||
if ('batch' === command) {
|
||||
const selection = this.$refs.table.selection
|
||||
if (selection.length === 0) {
|
||||
this.notifyWarning('请先勾选需要批量分配评委的选题')
|
||||
return
|
||||
}
|
||||
this.tableSelection = selection
|
||||
this.distributionGroupName = null
|
||||
this.distributionDialogVisible = true
|
||||
}
|
||||
},
|
||||
async doBatchDistribution() {
|
||||
const distributionPeriod = this.distributionPeriod
|
||||
const distributionGroupName = this.distributionGroupName
|
||||
if (!distributionPeriod) {
|
||||
this.notifyWarning('请选择需要分配的评委期数')
|
||||
return
|
||||
}
|
||||
if (!distributionGroupName) {
|
||||
this.notifyWarning('请选择需要分配的评委组别')
|
||||
return
|
||||
}
|
||||
const projectIds = this.$refs.table.selection.map(v => v.id)
|
||||
|
||||
const resp = await $.post(loc() + '/doBatchDistribution', {
|
||||
distributionPeriod,
|
||||
distributionGroupName,
|
||||
projectIds: JSON.stringify(projectIds)
|
||||
})
|
||||
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
this.tableSelection = []
|
||||
this.distributionGroupName = null
|
||||
this.distributionDialogVisible = false
|
||||
this.$refs.table.clearSelection()
|
||||
this.pageData()
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
},
|
||||
|
||||
async getUnitList() {
|
||||
this.pageForm.unitid = ''
|
||||
this.unitList = await getUnits(this.pageForm.unionid)
|
||||
},
|
||||
async getGroupNameOptions(distributionPeriod) {
|
||||
const resp = await $.get('/platform/syr/basic/pwgl/getGroupNameOptions',{period:distributionPeriod})
|
||||
if (resp.code === 0) {
|
||||
this.groupNameOptions = resp.data
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
},
|
||||
async doRollBack(row){
|
||||
const resp = await $.get('/platfotm/syr/info/yjsh/doRollBack',{id:row.id,state:row.state})
|
||||
if (resp.code === 0){
|
||||
this.notifySuccess(resp.msg)
|
||||
this.pageData()
|
||||
}
|
||||
},
|
||||
async getPeriodOptions() {
|
||||
const resp = await $.get('/platform/syr/basic/pwgl/getPeriodOptions')
|
||||
if (resp.code === 0) {
|
||||
this.periodOptions = resp.data
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.pageData()
|
||||
this.unionList = await getUnions(null)
|
||||
await this.getPeriodOptions();
|
||||
//await this.getGroupNameOptions();
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
|
||||
@@ -1,481 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.el-form .el-select, .el-form .el-date-editor {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.el-divider {
|
||||
background-color: #1867b0;
|
||||
}
|
||||
|
||||
.el-divider__text {
|
||||
color: #1867b0;
|
||||
}
|
||||
|
||||
.w-e-text-container {
|
||||
height: 250px !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<template #header>
|
||||
<el-row justify="space-between" type="flex">
|
||||
<h3 style="color: rgb(24, 103, 176);">
|
||||
{{id?'项目编辑':'项目申报'}}
|
||||
</h3>
|
||||
</el-row>
|
||||
</template>
|
||||
<el-form :model="formData" :rules="rules" label-width="100px" ref="AddForm">
|
||||
<div style="margin-bottom: 30px">
|
||||
<el-form-item label="项目名称" prop="xmmcId">
|
||||
<el-select v-model="formData.xmmcId" placeholder="请选择项目名称" clearable @change="showGroup(formData.xmmcId)">
|
||||
<el-option v-for="o in projectList" :label="o.projectName" :value="o.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<el-divider content-position="left">申报人信息</el-divider>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :lg="8" :sm="24">
|
||||
<el-form-item label="申请人">
|
||||
<el-input placeholder="姓名" readonly v-model="formData.username"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="8" :sm="24">
|
||||
<el-form-item label="性别">
|
||||
<el-input placeholder="性别" readonly v-model="formData.sex"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="8" :sm="24">
|
||||
<el-form-item label="出生年月" prop="birthday">
|
||||
<el-date-picker
|
||||
placeholder="出生年月"
|
||||
type="date"
|
||||
v-model="formData.birthday"
|
||||
value-format="yyyy-MM-dd">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :lg="8" :sm="24">
|
||||
<el-form-item label="职务/职称" prop="zwzc">
|
||||
<el-input v-model="formData.zwzc"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="8" :sm="24">
|
||||
<el-form-item label="申报单位" prop="dwname">
|
||||
<el-input readonly v-model="formData.dwname"></el-input>
|
||||
</el-form-item>
|
||||
</el-col><!--
|
||||
<el-col :lg="8" :sm="24">
|
||||
<el-form-item label="学历/学位" prop="xlxw">
|
||||
<el-input v-model="formData.xlxw"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<!-- <el-col :lg="8" :sm="24">
|
||||
<el-form-item label="办公电话" prop="bgphone">
|
||||
<el-input v-model="formData.bgphone"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>-->
|
||||
<el-col :lg="8" :sm="24">
|
||||
<el-form-item label="手机" prop="mobile">
|
||||
<el-input v-model="formData.mobile"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="8" :sm="24">
|
||||
<!--<el-form-item label="电子信箱" prop="email">
|
||||
<el-input v-model="formData.email"></el-input>
|
||||
</el-form-item>-->
|
||||
|
||||
<el-form-item label="院级工会" prop="ghname">
|
||||
<el-input readonly v-model="formData.ghname"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
|
||||
<el-divider content-position="left">项目组成员</el-divider>
|
||||
<div>
|
||||
<div class="text-right">
|
||||
<el-button @click="xmcyTable.push(JSON.parse(JSON.stringify(o)))" round size="mini"
|
||||
type="primary">添加成员
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<el-table :data="xmcyTable" max-height="300">
|
||||
<el-table-column label="序号" type="index" width="50"></el-table-column>
|
||||
<el-table-column label="工号" prop="loginname">
|
||||
<template slot-scope="scope">
|
||||
<el-select clearable
|
||||
size="mini"
|
||||
v-model="scope.row.userId" filterable remote
|
||||
placeholder="输入工号或者姓名查找" :remote-method="queryUser"
|
||||
@change="userChange(scope)" style="width: 100%">
|
||||
<el-option v-for="o in userList"
|
||||
:label="o.username+'('+o.loginname+')'"
|
||||
:value="o.id"
|
||||
:key="o.id"></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="姓名" prop="username">
|
||||
<template slot-scope="scope">
|
||||
<el-input size="mini" v-model="scope.row.username"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="职称" prop="zc">
|
||||
<template slot-scope="scope">
|
||||
<el-input size="mini" v-model="scope.row.zc"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="学历" prop="xl">
|
||||
<template slot-scope="scope">
|
||||
<el-input size="mini" v-model="scope.row.xl"></el-input>
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
<el-table-column label="工作单位及职务" prop="gzdw">
|
||||
<template slot-scope="scope">
|
||||
<el-input size="mini" v-model="scope.row.gzdw"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="150">
|
||||
<template slot-scope="scope">
|
||||
<el-button @click="xmcyTable.splice(scope.row.$index, 1)" icon="el-icon-delete" round
|
||||
size="mini"
|
||||
type="danger"></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
<el-divider content-position="left" ref="yjjctjdivider">
|
||||
项目研究基础及条件(最多填写400字,当前字数
|
||||
<span :style="{color:(yanjiujichuLength>400?'red':'')}"> {{yanjiujichuLength}})</span>
|
||||
</el-divider>
|
||||
<el-form-item label-width="0" prop="yjjctj" style="margin-bottom: 40px;">
|
||||
<div ref="yjjctj" style="width: 100%;"></div>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="left" ref="xmssljffdivider">
|
||||
项目实施路径及方法(最多填写400字,当前字数
|
||||
<span :style="{color:(xmssljffLength>400?'red':'')}"> {{xmssljffLength}})</span>
|
||||
</el-divider>
|
||||
<el-form-item label-width="0" prop="xmssljff" style="margin-bottom: 40px;">
|
||||
<div ref="xmssljff" style="width: 100%;"></div>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-divider content-position="left">
|
||||
项目预期成果及应用推广价值(最多填写300字,当前字数
|
||||
<span :style="{color:(yqcgtgjzLength>400?'red':'')}">{{yqcgtgjzLength}})</span>
|
||||
</el-divider>
|
||||
<el-form-item label-width="0" prop="yqcgtgjz">
|
||||
<div ref="yqcgtgjz" style="width: 100%;"></div>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
|
||||
<el-row class="mt10" justify="center" type="flex">
|
||||
<el-button v-bind:disabled="isSubmitting" @click="doSave" style="width: 300px" type="primary">保存</el-button>
|
||||
<el-button v-bind:disabled="isSubmitting" @click="doSubmit" style="width: 300px" type="primary">提交</el-button>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
let yjjctjEditor = null
|
||||
let yqcgtgjzEditor = null
|
||||
let xmssljffEditor = null
|
||||
|
||||
const o = {'username': '', 'zc': '', 'xl': '', 'gzdw': ''}
|
||||
|
||||
let vue = new Vue({
|
||||
el: '#app',
|
||||
data() {
|
||||
const validatorYjjctj = (rule, value, callback) => {
|
||||
if (value === '') {
|
||||
callback(new Error('请填写'))
|
||||
} else if (removeHTMLTag(value).length > 400) {
|
||||
callback(new Error('字数太多'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
const validatorYqcgtgjz = (rule, value, callback) => {
|
||||
if (value === '') {
|
||||
callback(new Error('请填写'))
|
||||
} else if (removeHTMLTag(value).length > 300) {
|
||||
callback(new Error('字数太多'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
|
||||
const validatorXmssljff = (rule, value, callback) => {
|
||||
if (value === '') {
|
||||
callback(new Error('请填写'))
|
||||
} else if (removeHTMLTag(value).length > 400) {
|
||||
callback(new Error('字数太多'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return {
|
||||
isSubmitting:false,
|
||||
projectList: [],
|
||||
id: null,
|
||||
o: {'username': '', 'zc': '', 'xl': '', 'gzdw': ''},
|
||||
formData: {yjjctj: '', yqcgtgjz: '', xmssljff: ''},
|
||||
rules: {
|
||||
xmmcId: [{required: true, message: '请选择项目名称', trigger: ['blur', 'change']}],
|
||||
birthday: [{required: false, message: '请选择出生日期', trigger: ['blur', 'change']}],
|
||||
zwzc: [{required: false, message: '请填写职务职称', trigger: ['blur', 'change']}],
|
||||
xlxw: [{required: false, message: '请填写学历学位', trigger: ['blur', 'change']}],
|
||||
// bgphone: [{required: false, message: '请填写办公电话', trigger: ['blur', 'change']}],
|
||||
mobile: [{required: false, message: '请填写手机号码', trigger: ['blur', 'change']}],
|
||||
/*email: [{required: false, message: '请填写电子信箱', trigger: ['blur', 'change']}, {
|
||||
type: 'email',
|
||||
message: '请填写正确的电子信箱',
|
||||
trigger: ['blur', 'change']
|
||||
}],*/
|
||||
yjjctj: [{validator: validatorYjjctj, trigger: ['blur', 'change']}],
|
||||
xmssljff: [{validator: validatorXmssljff, trigger: ['blur', 'change']}],
|
||||
yqcgtgjz: [{validator: validatorYqcgtgjz, trigger: ['blur', 'change']}]
|
||||
},
|
||||
xmcyTable: [o],
|
||||
userList: [],
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
yanjiujichuLength() {
|
||||
return removeHTMLTag(this.formData.yjjctj).length
|
||||
},
|
||||
yqcgtgjzLength() {
|
||||
return removeHTMLTag(this.formData.yqcgtgjz).length
|
||||
},
|
||||
xmssljffLength() {
|
||||
return removeHTMLTag(this.formData.xmssljff).length
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
//检查项目成员填写是否完成
|
||||
checkXmcy() {
|
||||
let flag = true
|
||||
for (let o of this.xmcyTable) {
|
||||
if (o['username'] === '' || o['zc'] === '' || o['gzdw'] === '') {
|
||||
flag = false
|
||||
break
|
||||
}
|
||||
}
|
||||
return flag
|
||||
},
|
||||
async doSave() {
|
||||
let isValid = true
|
||||
this.$refs.AddForm.validateField('xmmcId', (err) => {
|
||||
if (err.length) {
|
||||
isValid = false
|
||||
}
|
||||
})
|
||||
if (!isValid) return
|
||||
this.formData.xmzcy = JSON.stringify(this.xmcyTable)
|
||||
let loading = this.$loading({
|
||||
lock: true,
|
||||
text: '保存中',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
})
|
||||
let postUrl = ''
|
||||
if (this.formData.id) {
|
||||
postUrl = '/platfotm/syr/info/mykt/doEdit'
|
||||
} else {
|
||||
postUrl = '/platfotm/syr/info/xtsb/doSave'
|
||||
}
|
||||
const o = this.projectList.find(o => o.id === this.formData.xmmcId)
|
||||
this.formData.xmmc = o.projectName
|
||||
const resp = await $.post(base + postUrl, this.formData)
|
||||
if (resp.code === 0) {
|
||||
setTimeout(() => {
|
||||
loading.text = '保存成功'
|
||||
loading.spinner = 'el-icon-check'
|
||||
setTimeout(() => {
|
||||
loading.close()
|
||||
sublime.jumpPagePjax('/platfotm/syr/info/mykt')
|
||||
}, 1000)
|
||||
}, 1500)
|
||||
} else {
|
||||
loading.close()
|
||||
this.notifyError(resp.msg)
|
||||
}
|
||||
},
|
||||
async doSubmit() {
|
||||
try {
|
||||
const valid = await this.$refs['AddForm'].validate()
|
||||
if (valid) {
|
||||
if (!this.checkXmcy()) {
|
||||
this.$message.info('项目成员信息填写不完整')
|
||||
return
|
||||
}
|
||||
this.formData.xmzcy = JSON.stringify(this.xmcyTable)
|
||||
let loading = this.$loading({
|
||||
lock: true,
|
||||
text: '提交中',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
})
|
||||
|
||||
let postUrl = ''
|
||||
if (this.formData.id) {
|
||||
postUrl = '/platfotm/syr/info/mykt/doEdit'
|
||||
this.formData.tjxx='0';
|
||||
} else {
|
||||
postUrl = '/platfotm/syr/info/xtsb/doAdd'
|
||||
}
|
||||
const o = this.projectList.find(o => o.id === this.formData.xmmcId)
|
||||
this.formData.xmmc = o.projectName
|
||||
|
||||
const resp = await $.post(base + postUrl, this.formData)
|
||||
if (resp.code === 0) {
|
||||
setTimeout(() => {
|
||||
loading.text = '提交成功'
|
||||
loading.spinner = 'el-icon-check'
|
||||
setTimeout(() => {
|
||||
loading.close()
|
||||
sublime.jumpPagePjax('/platfotm/syr/info/mykt')
|
||||
}, 1000)
|
||||
}, 1500)
|
||||
} else {
|
||||
loading.close()
|
||||
this.notifyError(resp.msg)
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
},
|
||||
async isEdit() {
|
||||
const id = GetQueryString("id")
|
||||
this.id = id
|
||||
if (id) {
|
||||
const resp = await $.get(loc() + '/findWriteInfo/' + id)
|
||||
this.formData = resp.data
|
||||
this.xmcyTable = JSON.parse(resp.data.xmzcy)
|
||||
yjjctjEditor.txt.html(this.formData.yjjctj)
|
||||
xmssljffEditor.txt.html(this.formData.xmssljff)
|
||||
yqcgtgjzEditor.txt.html(this.formData.yqcgtgjz)
|
||||
this.xmcyTable.forEach(v=>{
|
||||
v.userId=v.username
|
||||
})
|
||||
}
|
||||
},
|
||||
async initEditor() {
|
||||
return await new Promise((resolve, reject) => {
|
||||
this.$nextTick(() => {
|
||||
setTimeout(() => {
|
||||
yjjctjEditor = new wangEditor(this.$refs.yjjctj)
|
||||
yjjctjEditor.config.onchange = (html) => {
|
||||
if (removeHTMLTag(html).length > 400) {
|
||||
this.$message.info('项目研究基础及条件最多填写400字')
|
||||
}
|
||||
this.$refs.AddForm.validateField('yjjctj', (errMsg) => {
|
||||
})
|
||||
this.formData.yjjctj = html
|
||||
}
|
||||
yjjctjEditor.config.uploadImgShowBase64 = true
|
||||
yjjctjEditor.create()
|
||||
|
||||
xmssljffEditor = new wangEditor(this.$refs.xmssljff)
|
||||
xmssljffEditor.config.onchange = (html) => {
|
||||
if (removeHTMLTag(html).length > 400) {
|
||||
this.$message.info('项目实施路径及方法最多填写400字')
|
||||
}
|
||||
this.$refs.AddForm.validateField('xmssljff', (errMsg) => {
|
||||
})
|
||||
this.formData.xmssljff = html
|
||||
}
|
||||
xmssljffEditor.config.uploadImgShowBase64 = true
|
||||
xmssljffEditor.create()
|
||||
|
||||
yqcgtgjzEditor = new wangEditor(this.$refs.yqcgtgjz)
|
||||
yqcgtgjzEditor.config.onchange = (html) => {
|
||||
if (removeHTMLTag(html).length > 300) {
|
||||
this.$message.info('项目预期成果及应用推广价值最多填写300字')
|
||||
}
|
||||
this.$refs.AddForm.validateField('yqcgtgjz', (errMsg) => {
|
||||
})
|
||||
this.formData.yqcgtgjz = html
|
||||
}
|
||||
yqcgtgjzEditor.config.uploadImgShowBase64 = true
|
||||
yqcgtgjzEditor.create()
|
||||
resolve()
|
||||
}, 800)
|
||||
})
|
||||
})
|
||||
},
|
||||
async getProjectList() {
|
||||
const resp = await $.get('/platfotm/syr/info/xtsb/getProjectList', {
|
||||
year: moment().format('YYYY')
|
||||
})
|
||||
return resp.data
|
||||
},
|
||||
async showGroup(id){
|
||||
const resp = await $.get('/platfotm/syr/info/xtsb/showGroup',{id:id})
|
||||
if (resp.code===1){
|
||||
this.$notify.warning(resp.msg)
|
||||
this.isSubmitting=true;
|
||||
}else {
|
||||
this.isSubmitting=false;
|
||||
}
|
||||
},
|
||||
userChange(scope) {
|
||||
const userList = clone(this.userList)
|
||||
const user = userList.find(v => v.id === scope.row.userId)
|
||||
if (user) {
|
||||
scope.row.username = user.username
|
||||
scope.row.zc = user.zc
|
||||
scope.row.gzdw = user.dwname
|
||||
}
|
||||
},
|
||||
async queryUser(val) {
|
||||
const data = await searchUser(val)
|
||||
this.userList = data
|
||||
},
|
||||
initFormData(){
|
||||
if (this.id==null){
|
||||
this.$set(this.formData, 'birthday', "${@shiro.getPrincipalProperty('birthday')}")
|
||||
this.$set(this.formData, 'bgphone', "${@shiro.getPrincipalProperty('bgphone')}")
|
||||
this.$set(this.formData, 'mobile', "${@shiro.getPrincipalProperty('mobile')}")
|
||||
this.$set(this.formData, 'email', "${@shiro.getPrincipalProperty('email')}")
|
||||
this.$set(this.formData, 'username', "${@shiro.getPrincipalProperty('username')}")
|
||||
this.$set(this.formData, 'sex', "${@shiro.getPrincipalProperty('sex')}")
|
||||
this.$set(this.formData, 'dwname', "${@shiro.getPrincipalProperty('unit').getName()}")
|
||||
this.$set(this.formData, 'ghname', "${@shiro.getPrincipalProperty('union').getUnionname()}")
|
||||
}
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
await this.initEditor()
|
||||
await this.isEdit()
|
||||
},
|
||||
async created() {
|
||||
this.initFormData();
|
||||
this.projectList = await this.getProjectList()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -1,122 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<syr-table :smm.sync="smm" auditval="审核" ref="syrTable" request="/platfotm/syr/info/yjsh/pageData">
|
||||
<template slot="operation">
|
||||
<el-table-column label="操作" fixed="right" width="200px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button size="mini" :type="row.state>20?null:'primary'"
|
||||
@click="openView(row,row.state>20)">
|
||||
{{row.state>20?'查看':'审核'}}
|
||||
</el-button>
|
||||
<el-button size="mini" type="danger" v-if="row.state>20 && row.state<=30"
|
||||
@click="doRollBack(row)">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</syr-table>
|
||||
|
||||
<template #edit>
|
||||
<syr-info-new ref="auditInfo">
|
||||
<template #handle>
|
||||
<el-tab-pane label="院级初审" name="yjsh">
|
||||
<el-form :model="formData" label-suffix=":" label-width="100px" ref="Form">
|
||||
<el-form-item label="审核人">
|
||||
${@shiro.getPrincipalProperty('username')}
|
||||
</el-form-item>
|
||||
<el-form-item label="审核时间">
|
||||
{{moment().format('YYYY-MM-DD')}}
|
||||
</el-form-item>
|
||||
<el-form-item label="审核意见" prop="stbmghyj">
|
||||
<el-input maxlength="300" rows="5" type="textarea"
|
||||
v-model="formData.stbmghyj"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="签字" prop="stbmghfzrqz">
|
||||
<sign :qz.sync="formData.stbmghfzrqz" prefix="syrxjsh"></sign>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row class="mt20 text-center">
|
||||
<el-button @click="doHandle(false)" type="danger">退 回</el-button>
|
||||
<el-button @click="doHandle(true)" type="success">通 过</el-button>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
</template>
|
||||
</syr-info-new>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<syr-info-new ref="viewInfo"></syr-info-new>
|
||||
</template>
|
||||
|
||||
</guava>
|
||||
</div>
|
||||
<script>
|
||||
let vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
smm: {
|
||||
status: 'table',
|
||||
request: '/platfotm/syr/info/yjsh/pageData'
|
||||
},
|
||||
formData: {},
|
||||
handleShow: false,
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'syr-table': httpVueLoader('/components/syr/syrtable.vue'),
|
||||
'syr-info': httpVueLoader('/components/syr/syrinfo.vue'),
|
||||
'syr-info-new': httpVueLoader('/components/syr/SyrInfoNew.vue'),
|
||||
},
|
||||
methods: {
|
||||
openView(row, isView) {
|
||||
if (isView) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.viewInfo.openView(row.id)
|
||||
} else {
|
||||
this.$refs.guava.edit()
|
||||
this.$refs.auditInfo.openView(row.id, 'yjsh')
|
||||
this.formData = {
|
||||
id: row.id,
|
||||
stbmghfzrqz: '',
|
||||
stbmghyj: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
async doHandle(res) {
|
||||
if (this.formData.stbmghyj === '') {
|
||||
this.$message.info('请填写审核意见')
|
||||
return
|
||||
}
|
||||
/* if (this.formData.stbmghfzrqz === '') {
|
||||
this.$message.info('请扫描二维码签字')
|
||||
return
|
||||
}*/
|
||||
this.formData.state = res ? 30 : 10
|
||||
const resp = await $.post('/platfotm/syr/info/yjsh/doHandle', this.formData)
|
||||
if (resp.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.notifySuccess(resp.msg)
|
||||
this.$refs['syrTable'].doSearch()
|
||||
}
|
||||
},
|
||||
async doRollBack(row){
|
||||
const resp = await $.get('/platfotm/syr/info/yjsh/doRollBack',{id:row.id,state:row.state})
|
||||
if (resp.code === 0){
|
||||
this.notifySuccess(resp.msg)
|
||||
this.$refs['syrTable'].doSearch()
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
|
||||
@@ -1,113 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<syr-table :smm.sync="smm" auditval="审核" ref="syrTable" request="/platfotm/syr/info/zqsh/pageData">
|
||||
<template slot="operation">
|
||||
<el-table-column label="操作" fixed="right" width="200px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button size="mini" :type="row.state>80?null:'primary'"
|
||||
@click="openView(row,row.state>80)">
|
||||
{{row.state>80?'查看':'审核'}}
|
||||
</el-button>
|
||||
<el-button size="mini" type="danger" v-if="row.state>80 && row.state<=90"
|
||||
@click="doRollBack(row)">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</syr-table>
|
||||
|
||||
<template #edit>
|
||||
<syr-info-new ref="auditInfo">
|
||||
<template slot="handle">
|
||||
<el-tab-pane label="中期审核" name="zqsh">
|
||||
<el-form :model="formData" label-width="100px" ref="Form">
|
||||
<el-form-item label="审核人">
|
||||
${@shiro.getPrincipalProperty('username')}
|
||||
</el-form-item>
|
||||
<el-form-item label="审核时间">
|
||||
{{moment().format('YYYY-MM-DD')}}
|
||||
</el-form-item>
|
||||
<el-form-item label="审核意见" prop="zqxghyj">
|
||||
<el-input maxlength="300" rows="5" type="textarea"
|
||||
v-model="formData.zqxghyj"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row class="mt20 text-center">
|
||||
<el-button @click="$refs.guava.index()">返 回</el-button>
|
||||
<el-button @click="doHandle(true)" type="primary">提 交</el-button>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
</template>
|
||||
</syr-info-new>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<syr-info-new ref="viewInfo"></syr-info-new>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
<script>
|
||||
let vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
smm: {
|
||||
status: 'table'
|
||||
},
|
||||
formData: {},
|
||||
handleShow: false
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'syr-table': httpVueLoader('/components/syr/syrtable.vue'),
|
||||
'syr-info': httpVueLoader('/components/syr/syrinfo.vue'),
|
||||
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
|
||||
'syr-info-new': httpVueLoader('/components/syr/SyrInfoNew.vue'),
|
||||
},
|
||||
methods: {
|
||||
openView(row, isView) {
|
||||
if (isView) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.viewInfo.openView(row.id)
|
||||
} else {
|
||||
this.$refs.guava.edit()
|
||||
this.$refs.auditInfo.openView(row.id, 'zqsh')
|
||||
this.formData = {
|
||||
id: row.id,
|
||||
zqxghyj: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
async doHandle(res) {
|
||||
if (this.formData.zqxghyj === '') {
|
||||
this.$message.info('请填写审核意见')
|
||||
return
|
||||
}
|
||||
|
||||
const resp = await $.post('/platfotm/syr/info/zqsh/doHandle', this.formData)
|
||||
if (resp.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.notifySuccess(resp.msg)
|
||||
this.$refs['syrTable'].doSearch()
|
||||
}
|
||||
},
|
||||
async doRollBack(row){
|
||||
const resp = await $.get('/platfotm/syr/info/yjsh/doRollBack',{id:row.id,state:row.state})
|
||||
if (resp.code === 0){
|
||||
this.notifySuccess(resp.msg)
|
||||
this.$refs['syrTable'].doSearch()
|
||||
}
|
||||
},
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
|
||||
@@ -1,117 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<syr-table :smm.sync="smm" auditval="填报" ref="syrTable" request="/platfotm/syr/info/zqtb/pageData">
|
||||
<template slot="operation">
|
||||
<el-table-column label="操作" fixed="right" width="100">
|
||||
<template slot-scope="{row}">
|
||||
<el-button size="mini" type="primary"
|
||||
@click="openView(row,false)"
|
||||
:title="row.zqtbjzsj<moment().format('YYYY-MM-DD HH:mm:ss')?'时间已过':''"
|
||||
:disabled="row.zqtbjzsj<moment().format('YYYY-MM-DD HH:mm:ss')"
|
||||
v-if="row.state===70">
|
||||
填报
|
||||
</el-button>
|
||||
<el-button @click="openView(row,true)" size="mini" v-else>
|
||||
查看
|
||||
</el-button>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</syr-table>
|
||||
|
||||
<template #edit>
|
||||
<syr-info-new ref="auditInfo">
|
||||
<template slot="handle">
|
||||
<el-tab-pane label="填报中期检查表" name="tbzqjcb">
|
||||
<el-form :model="formData" :rules="rules" label-position="top" ref="Form">
|
||||
<el-form-item label="项目的进展情况及存在的问题(不超过300字)" prop="zqxmjzqk" prop="zqxmjzqk">
|
||||
<el-input maxlength="300" rows="5" type="textarea"
|
||||
v-model="formData.zqxmjzqk"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="经费预算明细(不超过100字)" prop="zqjfysmx" prop="zqjfysmx">
|
||||
<el-input maxlength="100" rows="3" type="textarea"
|
||||
v-model="formData.zqjfysmx"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注(不超过50字)" prop="zqbz" prop="zqbz">
|
||||
<el-input maxlength="50" rows="2" type="textarea" v-model="formData.zqbz"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row class="mt20 text-center">
|
||||
<el-button @click="smm.status='table'">返 回</el-button>
|
||||
<el-button @click="doHandle(true)" type="primary">提 交</el-button>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
</template>
|
||||
</syr-info-new>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<syr-info-new ref="viewInfo"></syr-info-new>
|
||||
</template>
|
||||
</guava>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
let vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
smm: {
|
||||
status: 'table'
|
||||
},
|
||||
formData: {},
|
||||
rules: {
|
||||
zqxmjzqk: [{required: true, message: '请填写项目的进展情况及存在的问题', trigger: ['blur', 'change']}],
|
||||
zqjfysmx: [{required: true, message: '请填写经费预算明细', trigger: ['blur', 'change']}]
|
||||
},
|
||||
tableShow: true,
|
||||
handleShow: false
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'syr-table': httpVueLoader('/components/syr/syrtable.vue'),
|
||||
'syr-info': httpVueLoader('/components/syr/syrinfo.vue'),
|
||||
'syr-info-new': httpVueLoader('/components/syr/SyrInfoNew.vue'),
|
||||
},
|
||||
methods: {
|
||||
openView(row, isView) {
|
||||
if (isView) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.viewInfo.openView(row.id)
|
||||
} else {
|
||||
this.$refs.guava.edit()
|
||||
this.$refs.auditInfo.openView(row.id, 'tbzqjcb')
|
||||
this.formData = {
|
||||
id: row.id,
|
||||
zqxmjzqk: '',
|
||||
zqjfysmx: '',
|
||||
zqbz: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
async doHandle(res) {
|
||||
this.$refs['Form'].validate(async valid => {
|
||||
if (valid) {
|
||||
const resp = await $.post('/platfotm/syr/info/zqtb/doHandle', this.formData)
|
||||
if (resp.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.notifySuccess(resp.msg)
|
||||
this.$refs['syrTable'].doSearch()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
|
||||
@@ -1,227 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<!--校工会立项结果-->
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<syr-table :smm.sync="smm" auditval="提醒" ref="syrTable" request="/platfotm/syr/info/zqtx/pageData">
|
||||
<template slot="right">
|
||||
<el-button size="small" @click="openMany" type="primary"><i class="ti-plus"></i> 一键提醒</el-button>
|
||||
</template>
|
||||
<template slot="operation">
|
||||
<el-table-column label="操作" fixed="right" width="200px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button size="mini" :type="row.state>60?null:'primary'"
|
||||
@click="openView(row,row.state>60)">
|
||||
{{row.state>60?'查看':'设置提醒'}}
|
||||
</el-button>
|
||||
<el-button size="mini" type="primary" v-if="row.state>60 && row.state<=70"
|
||||
@click="doRollBack(row)">
|
||||
撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</syr-table>
|
||||
|
||||
<template #edit>
|
||||
<syr-info-new ref="auditInfo">
|
||||
<template slot="handle">
|
||||
<el-tab-pane label="中期提醒" name="zqtx">
|
||||
<el-form :model="formData" label-width="100px" ref="Form">
|
||||
<el-form-item label="提醒时间" prop="zqtbtxsj">
|
||||
<el-date-picker
|
||||
:picker-options="pickerOptions"
|
||||
default-time="12:00:00"
|
||||
placeholder="选择提醒时间"
|
||||
type="datetime"
|
||||
v-model="formData.zqtbtxsj"
|
||||
value-format="yyyy-MM-dd HH:mm:ss">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="截止时间" prop="zqtbjzsj">
|
||||
<el-date-picker
|
||||
:picker-options="pickerOptions"
|
||||
default-time="12:00:00"
|
||||
placeholder="选择提醒时间"
|
||||
type="datetime"
|
||||
v-model="formData.zqtbjzsj"
|
||||
value-format="yyyy-MM-dd HH:mm:ss">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row class="mt20 text-center">
|
||||
<el-button @click="$refs.guava.index()">返 回</el-button>
|
||||
<el-button @click="doHandle(true)" type="primary">提 交</el-button>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
</template>
|
||||
</syr-info-new>
|
||||
</template>
|
||||
|
||||
<template #view>
|
||||
<syr-info-new ref="viewInfo"></syr-info-new>
|
||||
</template>
|
||||
</guava>
|
||||
|
||||
<el-dialog title="设置提醒" :visible.sync="manyDialogVisible">
|
||||
<el-form :model="formData" ref="Form" label-width="100px">
|
||||
<div style="display: flex">
|
||||
<el-form-item label="提醒时间" prop="zqtbtxsj" style="width: 50%">
|
||||
<el-date-picker
|
||||
v-model="formData.zqtbtxsj"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
default-time="12:00:00"
|
||||
:picker-options="pickerOptions"
|
||||
type="datetime"
|
||||
placeholder="选择提醒时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="截止时间" prop="zqtbjzsj" style="width: 50%">
|
||||
<el-date-picker
|
||||
v-model="formData.zqtbjzsj"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
default-time="12:00:00"
|
||||
:picker-options="pickerOptions"
|
||||
type="datetime"
|
||||
placeholder="选择截止时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
<el-table :data="noSetTableData" @selection-change="handleSelectionChange" max-height="350">
|
||||
<el-table-column type="selection" width="55"></el-table-column>
|
||||
<el-table-column prop="xmmc" label="项目名称" width="400" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column prop="username" label="申报人"></el-table-column>
|
||||
</el-table>
|
||||
<el-row class="el-dialog__footer">
|
||||
<el-button @click="manyDialogVisible=false">取 消</el-button>
|
||||
<el-button type="primary" @click="doHandleMany(true)">提 交</el-button>
|
||||
</el-row>
|
||||
</el-dialog>
|
||||
</div>
|
||||
<script>
|
||||
let vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
smm: {
|
||||
status: 'table',
|
||||
rowsel: true
|
||||
},
|
||||
formData: {},
|
||||
handleShow: false,
|
||||
pickerOptions: {
|
||||
disabledDate(time) {
|
||||
return time.getTime() < Date.now()
|
||||
}
|
||||
},
|
||||
noSetTableData: [],
|
||||
tab_selection: [],
|
||||
selection: [],
|
||||
manyDialogVisible: false
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'syr-table': httpVueLoader('/components/syr/syrtable.vue'),
|
||||
'syr-info': httpVueLoader('/components/syr/syrinfo.vue'),
|
||||
'sign': httpVueLoader('/components/sign/sign.vue?v=2.0.0'),
|
||||
'syr-info-new': httpVueLoader('/components/syr/SyrInfoNew.vue'),
|
||||
},
|
||||
methods: {
|
||||
openView(row, isView) {
|
||||
if (isView) {
|
||||
this.$refs.guava.view()
|
||||
this.$refs.viewInfo.openView(row.id)
|
||||
} else {
|
||||
// this.$refs.guava.edit()
|
||||
// this.$refs.auditInfo.openView(row.id, 'zqtx')
|
||||
// this.formData = {
|
||||
// id: row.id,
|
||||
// zqtbtxsj: '',
|
||||
// zqtbjzsj: ''
|
||||
// }
|
||||
this.openMany()
|
||||
}
|
||||
},
|
||||
async doHandle() {
|
||||
if (this.formData.zqtbtxsj === '') {
|
||||
this.$message.info('请设置提醒时间')
|
||||
return
|
||||
}
|
||||
if (this.formData.zqtbjzsj === '') {
|
||||
this.$message.info('请设置截止时间')
|
||||
return
|
||||
}
|
||||
if (this.formData.zqtbjzsj < this.formData.zqtbtxsj) {
|
||||
this.$message.info('截止时间不应该小于提醒时间')
|
||||
return
|
||||
}
|
||||
const resp = await $.post('/platfotm/syr/info/zqtx/doHandle', {data: JSON.stringify(this.formData)})
|
||||
if (resp.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.notifySuccess(resp.msg)
|
||||
location.reload()
|
||||
}
|
||||
},
|
||||
async doRollBack(row){
|
||||
const resp = await $.get('/platfotm/syr/info/yjsh/doRollBack',{id:row.id,state:row.state})
|
||||
if (resp.code === 0){
|
||||
this.notifySuccess(resp.msg)
|
||||
this.$refs['syrTable'].doSearch()
|
||||
}
|
||||
},
|
||||
async openMany() {
|
||||
this.formData = {
|
||||
zqtbtxsj: '',
|
||||
zqtbjzsj: ''
|
||||
}
|
||||
const {data} = await $.get('/platfotm/syr/info/zqtx/noSetPageData', {})
|
||||
this.noSetTableData = data
|
||||
this.manyDialogVisible = true
|
||||
},
|
||||
async doHandleMany() {
|
||||
if (this.formData.zqtbtxsj === '') {
|
||||
this.$message.info('请设置提醒时间')
|
||||
return
|
||||
}
|
||||
if (this.formData.zqtbjzsj === '') {
|
||||
this.$message.info('请设置截止时间')
|
||||
return
|
||||
}
|
||||
if (this.formData.zqtbjzsj < this.formData.zqtbtxsj) {
|
||||
this.$message.info('截止时间不应该小于提醒时间')
|
||||
return
|
||||
}
|
||||
if (this.selection.length === 0) {
|
||||
this.$message.info('请勾选需要批量设置的数据')
|
||||
return
|
||||
}
|
||||
let p = []
|
||||
for (let o of this.selection) {
|
||||
//p.push(id:o.id,...this.formData})
|
||||
p.push({...{id: o.id}, ...this.formData})
|
||||
}
|
||||
await $.post('/platfotm/syr/info/zqtx/doHandle', {data: p})
|
||||
this.$refs['syrTable'].doSearch()
|
||||
this.manyDialogVisible = false
|
||||
this.selection = []
|
||||
this.tableShow = false
|
||||
setTimeout(() => {
|
||||
this.tableShow = true
|
||||
})
|
||||
|
||||
},
|
||||
handleSelectionChange(val) {
|
||||
this.selection = val
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
|
||||
|
||||
Reference in New Issue
Block a user