first commit

This commit is contained in:
2026-09-08 19:49:21 +08:00
commit ebffbab428
7320 changed files with 1477614 additions and 0 deletions
@@ -0,0 +1,209 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.w-e-text-container {
height: 500px !important;
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
<el-card shadow="never">
<vi-title title="年度优秀社团申报(温馨提示:申报范围为当年年度考核结果为合格的教职工社团)"></vi-title>
<el-form :model="formData" ref="form" :rules="formRules" label-width="120px" style="padding: 0 30px">
<el-row gutter="30">
<el-col :span="8">
<el-form-item label="开始年份" prop="applyStartYear" :rules="{required: true, message: '请选择开始年份', trigger: 'blur'}">
<el-date-picker
placeholder="请选择开始年份" :clearable="false"
style="width: 100%" :disabled="isCanApply === false"
type="year" v-model="formData.applyStartYear"
value-format="yyyy">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="结束年份" prop="applyEndYear" :rules="{required: true, message: '请选择结束年份', trigger: 'blur'}">
<el-date-picker
placeholder="请选择结束年份" :clearable="false"
style="width: 100%" :disabled="isCanApply === false"
type="year" v-model="formData.applyEndYear"
value-format="yyyy">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="社团名称" prop="clubId" :rules="{required: true, message: '请选择社团', trigger: 'blur'}">
<el-select v-model="formData.clubId" placeholder="请选择社团" filterable clearable
style="width: 100%" :disabled="isCanApply === false">
<el-option
v-for="item in clubList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="近两年获得的集体荣誉称号" prop="evaluateName"
:rules="{required: true, message: '请填写近两年获得的集体荣誉称号', trigger: 'blur'}">
<div id="evaluateName"></div>
</el-form-item>
<el-form-item label="近两年组织活动及完成情况" prop="yearActivity"
:rules="{required: true, message: '请填写近两年年度组织活动及完成情况', trigger: 'blur'}">
<div id="yearActivity"></div>
</el-form-item>
<el-form-item required label="附件上传" prop="files">
<file-upload :files.sync="formData.files" card :max="5"
:type="['doc','docx','xls','xlsx','pdf','ppt','mp4', 'jpg', 'png', 'jpeg']">
<template #el-upload__tip>
</template>
</file-upload>
<div class="el-upload__tip">可上传照片、视频、文档等资料</div>
</el-form-item>
</el-form>
<el-row class="mt20" justify="end" type="flex">
<el-button v-if="GetQueryString('id') !== ''" @click="doBack">返回</el-button>
<el-button :disabled="isCanApply === false" type="primary" @click="doHandle(true)">保存</el-button>
<el-button :disabled="isCanApply === false" type="primary" @click="doHandle(false)">提交</el-button>
</el-row>
</el-card>
</guava>
</div>
<script>
const E = window.wangEditor
let evaluateName, yearActivity = null
let vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
let validFiles = (rule, value, callback) => {
if (!this.formData.files || this.formData.files.length === 0) {
callback(new Error('请上传附件'))
} else {
callback()
}
}
return {
formRules: {
files: [{validator: validFiles, trigger: ['blur', 'change']}],
},
clubList: [],
formData: {
applyStartYear: '',
applyEndYear: '',
clubId: '',
evaluateName: '',
yearActivity: '',
},
isCanApply: true,
}
},
components: {
},
methods: {
doBack() {
if (GetQueryString("id") !== '') {
sublime.jumpPagePjax('/platform/sys/club/clubEvaluateMine')
}
},
async doHandle(flag) {
const valid = await this.$refs['form'].validate()
if (valid) {
const url = GetQueryString("id") !== '' ? '/platform/sys/club/clubEvaluateApply/doEdit' : '/platform/sys/club/clubEvaluateApply/doAdd'
const resp = await $.post(url, {
evaluate: JSON.stringify(this.formData),
isSave: flag,
})
if (resp.code === 0) {
this.$notify({
title: '成功',
message: resp.msg,
type: 'success',
duration: 500,
onClose: () => {
sublime.jumpPagePjax('/platform/sys/club/clubEvaluateMine')
}
});
}
}
},
async initData() {
this.$set(this.formData, "applyStartYear", (new Date().getFullYear() - 1) + '')
this.$set(this.formData, "applyEndYear", new Date().getFullYear() + '')
const id = GetQueryString("id")
$("#evaluateName").html("")
$("#yearActivity").html("")
this.$nextTick(() => {
evaluateName = new E("#evaluateName")
evaluateName.config.onchange = (html) => {
this.formData.evaluateName = html
}
yearActivity = new E("#yearActivity")
yearActivity.config.onchange = (html) => {
this.formData.yearActivity = html
}
evaluateName.create()
yearActivity.create()
})
if(id !== '') {
const resp = await $.get('/platform/sys/club/clubEvaluateMine/findOne', {id})
if (resp.code === 0) {
this.formData = resp.data
if(this.formData.files) {
this.formData.files = JSON.parse(this.formData.files)
}
}
evaluateName.txt.html(resp.data.evaluateName ? resp.data.evaluateName : '')
yearActivity.txt.html(resp.data.yearActivity ? resp.data.yearActivity : '')
}
},
//获取当前登录用户管理的社团并且年度审核通过的
async getMyClubAndYearAuditPass() {
const resp = await $.get('/platform/sys/club/clubEvaluateApply/getMyClubAndYearAuditPass', {
year: new Date().getFullYear()
})
this.clubList = resp.data
},
},
async created() {
const year = moment().format('YYYY')
this.isCanApply = year % 2 === 0
if(this.isCanApply === false) {
this.$alert('当前年份(' + year + ')不能进行年度优秀社团申报', '温馨提示', {
confirmButtonText: '确定',
})
}
await this.getMyClubAndYearAuditPass()
setTimeout(() => {
this.initData()
}, 200)
},
})
</script>
<!--#
}
#-->
@@ -0,0 +1,253 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.table_fixed {
table-layout: fixed !important;
}
</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">&emsp;&emsp;度:</div>
<div class="search-item-option">
<el-date-picker
placeholder="选择年度"
type="year" style="width: 100%"
v-model="pageForm.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-select v-model="pageForm.clubId" placeholder="请选择社团" filterable clearable
style="width: 100%">
<el-option
v-for="item in clubList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
<div class="search-query">
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
</div>
</div>
</el-card>
<el-card class="mt10" shadow="never">
<table-tool :app="this" label="申请列表">
<template #func>
<el-radio-group v-model="pageForm.isAudit" @change="doSearch">
<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>
</template>
</table-tool>
<el-table :data="tableData" :size="tableSize">
<el-table-column :index="indexMethod" align="center" header-align="center" label="序号" type="index"
width="80px"></el-table-column>
<el-table-column label="社团名称" prop="name" sortable align="center" header-align="center"
show-overflow-tooltip></el-table-column>
<el-table-column label="社团编码" prop="code" sortable align="center" header-align="center"
show-overflow-tooltip></el-table-column>
<el-table-column label="社团类型" prop="typeName" sortable align="center" header-align="center"
show-overflow-tooltip></el-table-column>
<el-table-column label="成立时间" prop="create_time" sortable align="center" header-align="center"
show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ moment(row.foundTime).format('YYYY-MM-DD') }}</span>
</template>
</el-table-column>
<el-table-column label="年度" prop="applyTime" sortable align="center" header-align="center"
show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ moment(row.applyTime).format('YYYY') }}</span>
</template>
</el-table-column>
<el-table-column label="申请时间" prop="applyTime" sortable align="center" header-align="center"
show-overflow-tooltip></el-table-column>
<el-table-column label="状态" prop="stateName" sortable align="center" header-align="center"
show-overflow-tooltip>
<template slot-scope="{row}">
<span :style="'color: ' + row.stateColor">{{ row.stateName }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="300px">
<template scope="{row}">
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
<el-button v-if="[2040].includes(row.state)" @click="openAudit(row)" size="mini" type="primary">审核</el-button>
<el-button v-if="[2050, 2060, 2070].includes(row.state)" @click="rollback(row)" size="mini" type="primary">撤回</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<template #edit>
<club-evaluate-info ref="info2" :handle="true" label="会长审核" :panes="[2, 3]">
<template #handle>
<vi-title title="审核信息"></vi-title>
<el-form :model="formData" ref="form" :rules="formRules" label-position="right"
style="padding: 20px 0"
label-width="120px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop="userName" label="审核人员">
<el-input v-model="formData.userName" readonly></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="auditTime" label="审核时间">
<el-input v-model="formData.auditTime" readonly></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="auditOpinion" label="审核意见">
<el-input type="textarea" v-model="formData.auditOpinion" rows="4" maxlength="500"
placeholder="请填写您的审核意见"></el-input>
</el-form-item>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button @click="doReview(1)">拒绝</el-button>
<el-button type="danger" @click="doReview(2)">退回修改</el-button>
<el-button type="primary" @click="doReview(3)">通过</el-button>
</div>
</template>
</club-evaluate-info>
</template>
<template #view>
<club-evaluate-info ref="info"></club-evaluate-info>
</template>
</guava>
</div>
<script>
let vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
pageForm: {
clubId: '',
year: moment().format('YYYY'),
isAudit: false,
},
tableData: [],
viewData: {},
clubList: [],
}
},
components: {
'club-evaluate-info': httpVueLoader('/components/club/clubEvaluateInfo.vue'),
},
methods: {
async rollback(row) {
const confirm = await this.$confirm('您确定要撤回吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
const resp = await $.post('/platform/sys/club/clubEvaluateHzAudit/rollback', {
id: row.id
})
if(resp.code === 0) {
await this.pageData()
this.notifySuccess(resp.msg)
} else {
this.notifyWarning(resp.msg)
}
}
},
async doReview(flag) {
await this.$refs["form"].validate(async(valid) => {
if (valid) {
this.formData.pass = flag
const resp = await $.post('/platform/sys/club/clubEvaluateHzAudit/doReview', this.formData)
if(resp.code === 0) {
await this.pageData()
this.notifySuccess(resp.msg)
this.$refs['guava'].index()
} else {
this.notifyWarning(resp.msg)
}
}
})
},
doSearch() {
this.pageForm.pageNumber = 1
this.pageData()
},
openView(row) {
const {id} = row
this.$refs.guava.view()
this.$nextTick(() => {
this.$refs.info.getInfo(id)
})
},
async openAudit(row) {
this.formData = {
id: row.id,
userName: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD HH:mm:ss'),
auditOpinion: '',
}
this.$refs.guava.edit()
this.$nextTick(() => {
this.$refs.info2.getInfo(row.id)
})
},
async pageData() {
let form = clone(this.pageForm)
if(form.isAudit === null) {
delete form.isAudit
}
const resp = await $.post("/platform/sys/club/clubEvaluateHzAudit/pageData", form);
if (resp.code === 0) {
this.tableData = resp.data.list;
this.pageForm.totalCount = resp.data.totalCount;
} else {
this.$message({
message: resp.msg,
type: 'error'
});
}
},
//获取当前登录用户管理的社团并且年度审核通过的
async getMyClubAndYearAuditPass() {
const resp = await $.get('/platform/sys/club/clubEvaluateApply/getMyClubAndYearAuditPass', {
year: this.pageForm.year
})
this.clubList = resp.data
},
},
async created() {
await this.getMyClubAndYearAuditPass()
await this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,184 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.table_fixed {
table-layout: fixed !important;
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="search">
<div class="search-item">
<div class="search-item-label">&emsp;&emsp;度:</div>
<div class="search-item-option">
<el-date-picker
placeholder="选择年度"
type="year" style="width: 100%"
v-model="pageForm.applyYear"
value-format="yyyy">
</el-date-picker>
</div>
</div>
<div class="search-item">
<div class="search-item-label">社团名称:</div>
<div class="search-item-option">
<el-select v-model="pageForm.clubId" placeholder="请选择社团" filterable clearable
style="width: 100%">
<el-option
v-for="item in clubList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
<div class="search-query">
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
</div>
</div>
</el-card>
<el-card class="mt10" shadow="never">
<table-tool :app="this" label="申请列表">
<template #func>
<el-button @click="openAdd" size="medium" type="primary">评优申请</el-button>
</template>
</table-tool>
<el-table :data="tableData" :size="tableSize">
<el-table-column :index="indexMethod" align="center" header-align="center" label="序号" type="index"
width="80px"></el-table-column>
<el-table-column label="社团名称" prop="name" sortable align="center" header-align="center"
show-overflow-tooltip></el-table-column>
<el-table-column label="社团编码" prop="code" sortable align="center" header-align="center"
show-overflow-tooltip></el-table-column>
<el-table-column label="社团类型" prop="typeName" sortable align="center" header-align="center"
show-overflow-tooltip></el-table-column>
<el-table-column label="成立时间" prop="create_time" sortable align="center" header-align="center"
show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ moment(row.foundTime).format('YYYY-MM-DD') }}</span>
</template>
</el-table-column>
<el-table-column label="年度" prop="applyTime" sortable align="center" header-align="center"
show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ moment(row.applyTime).format('YYYY') }}</span>
</template>
</el-table-column>
<el-table-column label="申请时间" prop="applyTime" sortable align="center" header-align="center"
show-overflow-tooltip></el-table-column>
<el-table-column label="状态" prop="stateName" sortable align="center" header-align="center"
show-overflow-tooltip>
<template slot-scope="{row}">
<span :style="'color: ' + row.stateColor">{{ row.stateName }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="300px">
<template scope="{row}">
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
<el-button :disabled="![2000,2020,2050,2080].includes(row.state)" @click="openEdit(row)" size="mini" type="primary">编辑</el-button>
<el-button v-if="${@shiro.hasRole('sysadmin')} || ${@shiro.hasRole('A06')} || ${@shiro.hasRole('xxhgly')}"
@click="deleteDo(row)" size="mini" type="danger">删除</el-button>
<el-button v-else :disabled="![2000,2020,2050,2080].includes(row.state)" @click="deleteDo(row)" size="mini" type="danger">删除</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<template #view>
<club-evaluate-info ref="info"></club-evaluate-info>
</template>
</guava>
</div>
<script>
let vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'club-evaluate-info': httpVueLoader('/components/club/clubEvaluateInfo.vue'),
},
data() {
return {
pageForm: {
clubId: '',
applyYear: moment().format('YYYY'),
},
tableData: [],
clubList: [],
}
},
methods: {
doSearch() {
this.pageForm.pageNumber = 1
this.pageData()
},
openAdd() {
sublime.jumpPagePjax('/platform/sys/club/clubEvaluateApply')
},
openView(row) {
const {id} = row
this.$refs.guava.view()
this.$nextTick(() => {
this.$refs.info.getInfo(id)
})
},
openEdit(row) {
sublime.jumpPagePjax('/platform/sys/club/clubEvaluateApply?id=' + row.id)
},
async deleteDo(row) {
const confirm = await this.$confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
const resp = await $.post('/platform/sys/club/clubEvaluateMine/doDelete', {id: row.id})
this.notifySuccess("删除成功")
this.doSearch()
}
},
async pageData() {
const resp = await $.post("/platform/sys/club/clubEvaluateMine/pageData", this.pageForm);
if (resp.code === 0) {
this.tableData = resp.data.list;
this.pageForm.totalCount = resp.data.totalCount;
} else {
this.$message({
message: data.msg,
type: 'error'
});
}
},
//获取当前登录用户管理的社团并且年度审核通过的
async getMyClubAndYearAuditPass() {
const resp = await $.get('/platform/sys/club/clubEvaluateApply/getMyClubAndYearAuditPass', {
applyYear: this.pageForm.applyYear
})
this.clubList = resp.data
},
},
async created() {
await this.getMyClubAndYearAuditPass()
await this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,249 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.table_fixed {
table-layout: fixed !important;
}
</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">&emsp;&emsp;度:</div>
<div class="search-item-option">
<el-date-picker
placeholder="选择年度"
type="year" style="width: 100%"
v-model="pageForm.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-select v-model="pageForm.clubId" placeholder="请选择社团" filterable clearable
style="width: 100%">
<el-option
v-for="item in clubList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
<div class="search-query">
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
</div>
</div>
</el-card>
<el-card class="mt10" shadow="never">
<table-tool :app="this" label="申请列表">
<template #func>
<el-radio-group v-model="pageForm.isAudit" @change="doSearch">
<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>
</template>
</table-tool>
<el-table :data="tableData" :size="tableSize">
<el-table-column :index="indexMethod" align="center" header-align="center" label="序号" type="index"
width="80px"></el-table-column>
<el-table-column label="社团名称" prop="name" sortable align="center" header-align="center"
show-overflow-tooltip></el-table-column>
<el-table-column label="社团编码" prop="code" sortable align="center" header-align="center"
show-overflow-tooltip></el-table-column>
<el-table-column label="社团类型" prop="typeName" sortable align="center" header-align="center"
show-overflow-tooltip></el-table-column>
<el-table-column label="成立时间" prop="create_time" sortable align="center" header-align="center"
show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ moment(row.create_time).format('YYYY-MM-DD') }}</span>
</template>
</el-table-column>
<el-table-column label="年度" prop="applyYear" sortable align="center" header-align="center"
show-overflow-tooltip></el-table-column>
<el-table-column label="申请时间" prop="applyTime" sortable align="center" header-align="center"
show-overflow-tooltip></el-table-column>
<el-table-column label="状态" prop="stateName" sortable align="center" header-align="center"
show-overflow-tooltip>
<template slot-scope="{row}">
<span :style="'color: ' + row.stateColor">{{ row.stateName }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="300px">
<template scope="{row}">
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
<el-button v-if="[2010].includes(row.state)" @click="openAudit(row)" size="mini" type="primary">审核</el-button>
<el-button v-if="[2020, 2030, 2040].includes(row.state)" @click="rollback(row)" size="mini" type="primary">撤回</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<template #edit>
<club-evaluate-info ref="info2" :handle="true" label="秘书长审核" :panes="[2]">
<template #handle>
<vi-title title="审核信息"></vi-title>
<el-form :model="formData" ref="form" :rules="formRules" label-position="right"
style="padding: 20px 0"
label-width="120px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop="userName" label="审核人员">
<el-input v-model="formData.userName" readonly></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="auditTime" label="审核时间">
<el-input v-model="formData.auditTime" readonly></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="auditOpinion" label="审核意见">
<el-input type="textarea" v-model="formData.auditOpinion" rows="4" maxlength="500"
placeholder="请填写您的审核意见"></el-input>
</el-form-item>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button @click="doReview(1)">拒绝</el-button>
<el-button type="danger" @click="doReview(2)">退回修改</el-button>
<el-button type="primary" @click="doReview(3)">通过</el-button>
</div>
</template>
</club-evaluate-info>
</template>
<template #view>
<club-evaluate-info ref="info"></club-evaluate-info>
</template>
</guava>
</div>
<script>
let vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
pageForm: {
clubId: '',
year: moment().format('YYYY'),
isAudit: false,
},
tableData: [],
viewData: {},
clubList: [],
}
},
components: {
'club-evaluate-info': httpVueLoader('/components/club/clubEvaluateInfo.vue'),
},
methods: {
async rollback(row) {
const confirm = await this.$confirm('您确定要撤回吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
const resp = await $.post('/platform/sys/club/clubEvaluateMszAudit/rollback', {
id: row.id
})
if(resp.code === 0) {
await this.pageData()
this.notifySuccess(resp.msg)
} else {
this.notifyWarning(resp.msg)
}
}
},
async doReview(flag) {
await this.$refs["form"].validate(async(valid) => {
if (valid) {
this.formData.pass = flag
const resp = await $.post('/platform/sys/club/clubEvaluateMszAudit/doReview', this.formData)
if(resp.code === 0) {
await this.pageData()
this.notifySuccess(resp.msg)
this.$refs['guava'].index()
} else {
this.notifyWarning(resp.msg)
}
}
})
},
doSearch() {
this.pageForm.pageNumber = 1
this.pageData()
},
openView(row) {
const {id} = row
this.$refs.guava.view()
this.$nextTick(() => {
this.$refs.info.getInfo(id)
})
},
async openAudit(row) {
this.formData = {
id: row.id,
userName: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD HH:mm:ss'),
auditOpinion: '',
}
this.$refs.guava.edit()
this.$nextTick(() => {
this.$refs.info2.getInfo(row.id)
})
},
async pageData() {
let form = clone(this.pageForm)
if(form.isAudit === null) {
delete form.isAudit
}
const resp = await $.post("/platform/sys/club/clubEvaluateMszAudit/pageData", form);
if (resp.code === 0) {
this.tableData = resp.data.list;
this.pageForm.totalCount = resp.data.totalCount;
} else {
this.$message({
message: resp.msg,
type: 'error'
});
}
},
//获取当前登录用户管理的社团并且年度审核通过的
async getMyClubAndYearAuditPass() {
const resp = await $.get('/platform/sys/club/clubEvaluateApply/getMyClubAndYearAuditPass', {
year: this.pageForm.year
})
this.clubList = resp.data
},
},
async created() {
await this.getMyClubAndYearAuditPass()
await this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,256 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.table_fixed {
table-layout: fixed !important;
}
</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">&emsp;&emsp;度:</div>
<div class="search-item-option">
<el-date-picker
placeholder="选择年度"
type="year" style="width: 100%"
v-model="pageForm.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-select v-model="pageForm.clubId" placeholder="请选择社团" filterable clearable
style="width: 100%">
<el-option
v-for="item in clubList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
<div class="search-query">
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
</div>
</div>
</el-card>
<el-card class="mt10" shadow="never">
<table-tool :app="this" label="申请列表">
<template #func>
<el-radio-group v-model="pageForm.isAudit" @change="doSearch">
<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>
</template>
</table-tool>
<el-table :data="tableData" :size="tableSize">
<el-table-column :index="indexMethod" align="center" header-align="center" label="序号" type="index"
width="80px"></el-table-column>
<el-table-column label="社团名称" prop="name" sortable align="center" header-align="center"
show-overflow-tooltip></el-table-column>
<el-table-column label="社团编码" prop="code" sortable align="center" header-align="center"
show-overflow-tooltip></el-table-column>
<el-table-column label="社团类型" prop="typeName" sortable align="center" header-align="center"
show-overflow-tooltip></el-table-column>
<el-table-column label="成立时间" prop="create_time" sortable align="center" header-align="center"
show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ moment(row.foundTime).format('YYYY-MM-DD') }}</span>
</template>
</el-table-column>
<el-table-column label="年度" prop="applyYear" sortable align="center" header-align="center"
show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ moment(row.applyTime).format('YYYY') }}</span>
</template>
</el-table-column>
<el-table-column label="申请时间" prop="applyTime" sortable align="center" header-align="center"
show-overflow-tooltip></el-table-column>
<el-table-column label="状态" prop="stateName" sortable align="center" header-align="center"
show-overflow-tooltip>
<template slot-scope="{row}">
<span :style="'color: ' + row.stateColor">{{ row.stateName }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="300px">
<template scope="{row}">
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
<el-button v-if="[2070].includes(row.state)" @click="openAudit(row)" size="mini" type="primary">审核</el-button>
<el-button v-if="[2080, 2090, 2100].includes(row.state)" @click="rollback(row)" size="mini" type="primary">撤回</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<template #edit>
<club-evaluate-info ref="info2" :handle="true" label="校工会审核" :panes="[2, 3, 4]">
<template #handle>
<vi-title title="审核信息"></vi-title>
<el-form :model="formData" ref="form" :rules="formRules" label-position="right"
style="padding: 20px 0"
label-width="120px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop="userName" label="审核人员">
<el-input v-model="formData.userName" readonly></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="auditTime" label="审核时间">
<el-input v-model="formData.auditTime" readonly></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="auditOpinion" label="审核结果">
<el-radio-group v-model="formData.auditOpinion">
<el-radio label="优秀" border>优秀</el-radio>
<el-radio label="合格" border>合格</el-radio>
<el-radio label="不合格" border>不合格</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div style="float: right;margin: 20px 0">
<el-button @click="doReview(1)">拒绝</el-button>
<el-button type="danger" @click="doReview(2)">退回修改</el-button>
<el-button type="primary" @click="doReview(3)">通过</el-button>
</div>
</template>
</club-evaluate-info>
</template>
<template #view>
<club-evaluate-info ref="info"></club-evaluate-info>
</template>
</guava>
</div>
<script>
let vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
pageForm: {
clubId: '',
year: moment().format('YYYY'),
isAudit: false,
},
tableData: [],
viewData: {},
clubList: [],
}
},
components: {
'club-evaluate-info': httpVueLoader('/components/club/clubEvaluateInfo.vue'),
},
methods: {
async rollback(row) {
const confirm = await this.$confirm('您确定要撤回吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
const resp = await $.post('/platform/sys/club/clubEvaluateSchoolAudit/rollback', {
id: row.id
})
if(resp.code === 0) {
await this.pageData()
this.notifySuccess(resp.msg)
} else {
this.notifyWarning(resp.msg)
}
}
},
async doReview(flag) {
await this.$refs["form"].validate(async(valid) => {
if (valid) {
this.formData.pass = flag
const resp = await $.post('/platform/sys/club/clubEvaluateSchoolAudit/doReview', this.formData)
if(resp.code === 0) {
await this.pageData()
this.notifySuccess(resp.msg)
this.$refs['guava'].index()
} else {
this.notifyWarning(resp.msg)
}
}
})
},
doSearch() {
this.pageForm.pageNumber = 1
this.pageData()
},
openView(row) {
const {id} = row
this.$refs.guava.view()
this.$nextTick(() => {
this.$refs.info.getInfo(id)
})
},
async openAudit(row) {
this.formData = {
id: row.id,
userName: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD HH:mm:ss'),
auditOpinion: '优秀',
}
this.$refs.guava.edit()
this.$nextTick(() => {
this.$refs.info2.getInfo(row.id)
})
},
async pageData() {
let form = clone(this.pageForm)
if(form.isAudit === null) {
delete form.isAudit
}
const resp = await $.post("/platform/sys/club/clubEvaluateSchoolAudit/pageData", form);
if (resp.code === 0) {
this.tableData = resp.data.list;
this.pageForm.totalCount = resp.data.totalCount;
} else {
this.$message({
message: resp.msg,
type: 'error'
});
}
},
//获取当前登录用户管理的社团并且年度审核通过的
async getMyClubAndYearAuditPass() {
const resp = await $.get('/platform/sys/club/clubEvaluateApply/getMyClubAndYearAuditPass', {
year: this.pageForm.year
})
this.clubList = resp.data
},
},
async created() {
await this.getMyClubAndYearAuditPass()
await this.pageData()
}
})
</script>
<!--#
}
#-->