402 lines
18 KiB
HTML
402 lines
18 KiB
HTML
<!--#
|
||
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>
|
||
|
||
<!--#
|
||
}
|
||
#-->
|
||
|