first commit

This commit is contained in:
2026-09-09 09:14:28 +08:00
commit 5343198112
5199 changed files with 1052895 additions and 0 deletions
@@ -0,0 +1,526 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
[v-cloak] {
display: none;
}
</style>
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<div slot="header" class="clearfix">
<el-button icon="el-icon-back" style="font-size: 16px" type="text" @click="fh"
v-if="jc.id">返回
</el-button>
<h3 style="color: rgb(24, 103, 176);font-family: Microsoft YaHei;">考核登记</h3>
</div>
<el-steps :active="registerTypeName" finish-status="success">
<el-step title="基础信息">
</el-step>
<el-step title="财务收支情况">
</el-step>
<el-step title="年末理事机构人员">
</el-step>
</el-steps>
<el-form v-show="registerTypeName===0" :model="jc" ref="addForm1" :rules="rules"
label-width="120px"
style="margin: 50px 0px 0px 0px">
<vi-title title="基础信息"></vi-title>
<el-row :gutter="20" type="flex">
<el-col :span="8">
<el-form-item prop="clubId" label="社团名称">
<el-select v-model="jc.clubId" placeholder="请选择所属社团" filterable
clearable
@change="changeClub"
style="width: 100%">
<el-option
v-for="item in clubOptions"
:key="item.stid"
:label="item.name"
:value="item.stid">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="foundTime" label="成立时间">
<el-input v-model="jc.foundTime" placeholder="请输入成立时间"
readonly></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="dues_standard" label="会费标准">
<el-input v-model="jc.dues_standard" placeholder="请输入会费标准"
readonly></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" type="flex">
<el-col :span="8">
<el-form-item prop="yearActivity" label="年度活动情况">
<file-upload :files.sync="jc.yearActivity"
:type="['doc','docx']"></file-upload>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="summaryFiles" label="工作总结">
<file-upload :files.sync="jc.summaryFiles"
:type="['doc','docx']"></file-upload>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="planFiles" label="工作计划">
<file-upload :files.sync="jc.planFiles"
:type="['doc','docx']"></file-upload>
</el-form-item>
</el-col>
</el-row>
<vi-title title="社团成员变化情况"></vi-title>
<el-row :gutter="20" type="flex">
<el-col :span="24">
<el-form-item prop="" label="">
<el-table :data="jc.changeUserNum" max-height="300">
<el-table-column label="序号" type="index"
width="50"></el-table-column>
<el-table-column label="人员类型" prop="userState"></el-table-column>
<el-table-column label="年初人员" prop="yearFirstNum"></el-table-column>
<el-table-column label="年度增加" prop="yearAddNum"></el-table-column>
<el-table-column label="年度减少" prop="yearEditNum"></el-table-column>
<el-table-column label="年末人数" prop="thisYearNum"></el-table-column>
</el-table>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-form v-show="registerTypeName===1" :model="cwsz" ref="addForm2" :rules="rules"
label-width="120px"
style="margin: 50px 0px 0px 0px">
<div>
<vi-title title="明细"></vi-title>
<el-table :data="cwsz.incomeDetailed" max-height="300">
<el-table-column label="序号" type="index" width="50"></el-table-column>
<el-table-column label="日期" prop="date" width="250">
<template slot-scope="{row}">
<el-date-picker
v-model="row.date"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期">
</el-date-picker>
</template>
</el-table-column>
<el-table-column label="项目内容" prop="nr">
<template slot-scope="{row}">
<el-input v-model="row.nr" maxlength="15"></el-input>
</template>
</el-table-column>
<el-table-column label="收支类型" prop="incomeType" width="200">
<template slot-scope="{row,$index}">
<el-select :clearable="![0,1,2].includes($index)"
:disabled="[0,1,2].includes($index)"
placeholder="请选择收支类型"
v-model="row.incomeType"
@change="changeIncomeType">
<el-option key="会费收入" disabled label="会费收入"
value="会费收入"></el-option>
<el-option disabled key="校工会拨款" label="校工会拨款"
value="校工会拨款"></el-option>
<el-option disabled key="年度结余" label="年度结余"
value="年度结余"></el-option>
<el-option key="社会赞助" label="社会赞助" value="社会赞助"></el-option>
<el-option key="支出" label="支出" value="支出"></el-option>
<el-option key="其它" label="其它" value="其它"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column label="年初余额(元)" prop="qcMoney" width="100">
<template slot-scope="{row,$index}">
<el-input :disabled="$index!=0" @input="inputQcMoney(row)"
v-model="row.qcMoney" type="number"></el-input>
</template>
</el-table-column>
<el-table-column label="收入(元)" prop="income" width="100">
<template slot-scope="{row,$index}">
<el-input v-model="row.income" @input="inputIncome(row)"
type="number"
:disabled="!['社会赞助','其它'].includes(row.incomeType)||$index===0"
maxlength="15"></el-input>
</template>
</el-table-column>
<el-table-column label="支出(元)" prop="expend" width="100">
<template slot-scope="{row,$index}">
<el-input v-model="row.expend"
type="number"
:disabled="!['支出','其它'].includes(row.incomeType)||$index===0"
@input="inputExpend"
maxlength="15"></el-input>
</template>
</el-table-column>
<el-table-column label="年度结余(元)" prop="qmMoney" width="100">
<template slot-scope="{row}">
<el-input v-model="row.qmMoney" disabled
type="number"
maxlength="15"></el-input>
</template>
</el-table-column>
<el-table-column label="备注" prop="notes">
<template slot-scope="{row}">
<el-input v-model="row.notes"></el-input>
</template>
</el-table-column>
<el-table-column label="操作" width="150">
<template slot="header" slot-scope="{row,$index}">
<el-button @click="cwsz.incomeDetailed.push({})" round size="mini"
type="primary">添加明细
</el-button>
</template>
<template slot-scope="{row,$index}">
<el-button
@click="deleteIncomeDetailed(row,$index)"
icon="el-icon-delete" round
size="mini"
type="danger"
:disabled="[0,1,2].includes($index)"></el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="mt10">
<vi-title title="统计"></vi-title>
<el-table :data="cwsz.incomeCensus" max-height="300">
<el-table-column label="去年年度结余(元)" prop="lasYearSurplus">
<template slot-scope="{row}">
{{row.lasYearSurplus=lasYearSurplus}}
</template>
</el-table-column>
<el-table-column label="会费收入(元)" prop="income">
<template slot-scope="{row}">
{{row.income=income}}
</template>
</el-table-column>
<el-table-column label="校工会拨款(元)" prop="allocate">
<template slot-scope="{row}">
{{row.allocate=allocate}}
</template>
</el-table-column>
<el-table-column label="社会赞助(元)" prop="support">
</el-table-column>
<el-table-column label="年度总支出(元)" prop="totalExpend">
</el-table-column>
<el-table-column label="年度结余(元)" prop="surplus">
<template slot-scope="{row}">
{{row.surplus=row.income+row.support+row.allocate+row.lasYearSurplus-row.totalExpend}}
</template>
</el-table-column>
</el-table>
</div>
</el-form>
<el-form v-show="registerTypeName===2" ref="addForm3" :rules="rules"
label-width="120px"
style="margin: 50px 0px 0px 0px">
<vi-title title="年末理事机构人员"></vi-title>
<el-table :data="jgUser" max-height="300">
<el-table-column label="序号" type="index" width="50"></el-table-column>
<el-table-column label="职务" prop="roleName">
<template scope="scope">
<span v-if="scope.row.roleName">{{scope.row.roleName.replace('社团', '')}}</span>
<span v-else></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="unitname"></el-table-column>
<el-table-column label="联系电话" prop="mobile"></el-table-column>
</el-table>
</el-form>
<el-row v-if="isRegist === false" class="mt10" justify="center" type="flex">
<el-button @click="doSave" style="width: 300px" type="primary">保存
</el-button>
<el-button type="primary" style="width: 300px"
@click="registerTypeName=registerTypeName-1"
v-show="registerTypeName!==0">上一步
</el-button>
<el-button type="primary" style="width: 300px" @click="next"
v-show="registerTypeName!=2">下一步
</el-button>
<el-button @click="doSubmit" style="width: 300px" type="primary"
v-show="registerTypeName===2">提交
</el-button>
</el-row>
<el-row v-else class="mt10" justify="center" type="flex">
<el-button type="info">{{jc.clubName}}当前年度已提交考核登记</el-button>
</el-row>
</el-card>
</guava>
</div>
<script>
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
jcClubId: "",
isRegist: false,
allocate: 0,
income: 0,
lasYearSurplus: 0,
jc: {activityQk: ""},
jgUser: [],
cwsz: {
incomeDetailed: [],
incomeCensus: [{income: 0, allocate: 0, support: 0, totalExpend: 0, surplus: 0}]
},
clubOptions: [],
registerTypeName: 0,
rules: {
activityQk: [{required: true, message: '必填', trigger: ['blur', 'change']}],
clubId: [{required: true, message: '必填', trigger: ['blur', 'change']}],
},
}
},
methods: {
fh() {
sublime.jumpPagePjax("/platform/sys/club/examine/registerManage")
},
async doSave() {
const resp = await $.post(loc() + (this.jc.id ? "/doEdit" : "/doSave"), {
jc: JSON.stringify(this.jc),
incomeDetailed: JSON.stringify(this.cwsz.incomeDetailed),
incomeCensus: JSON.stringify(this.cwsz.incomeCensus),
flag: false
})
if (resp.code === 0) {
this.notifySuccess(resp.msg)
sublime.jumpPagePjax("/platform/sys/club/examine/registerManage")
}
},
async doSubmit() {
const resp = await $.post(loc() + (this.jc.id ? "/doEdit" : "/doSave"), {
jc: JSON.stringify(this.jc),
incomeDetailed: JSON.stringify(this.cwsz.incomeDetailed),
incomeCensus: JSON.stringify(this.cwsz.incomeCensus),
flag: true
})
if (resp.code === 0) {
this.notifySuccess(resp.msg)
sublime.jumpPagePjax("/platform/sys/club/examine/registerManage")
}
},
async next() {
let a = true
this.$refs["addForm1"].validate(valid => {
if (!valid) {
a = false
}
})
if ((this.registerTypeName === 0 && a) || this.registerTypeName === 1) {
if (!this.formData.id && this.registerTypeName === 0) {
await this.getClubMemberMoney(this.jc.clubId)
await this.getXghBkMoney(this.jc.clubId)
await this.getLasYearSurplus(this.jc.clubId)
}
if (!this.jcClubId) {
this.cwsz.incomeDetailed = []
this.setIncomeDetailed()
}
this.jcClubId = this.jc.clubId
this.registerTypeName++
} else {
this.notifyWarning("请填写完整")
}
},
setIncomeDetailed() {
this.cwsz.incomeDetailed.push({
index: 0,
date: null,
nr: new Date().getFullYear() - 1 + "年度结余",
incomeType: "年度结余",
qcMoney: this.lasYearSurplus,
})
this.cwsz.incomeDetailed.push({
index: 1,
date: null,
nr: "会费收入",
incomeType: "会费收入",
qcMoney: null,
income: this.income,
})
this.cwsz.incomeDetailed.push({
index: 2,
date: null,
nr: "校工会拨款",
incomeType: "校工会拨款",
qcMoney: null,
income: this.allocate,
})
},
async getClubMemberMoney(id) {
const refs = await $.post(loc() + "/getClubMemberMoney", {id: id})
this.income = refs.data ? refs.data : 0
},
async getXghBkMoney(id) {
const refs = await $.post(loc() + "/getXghBkMoney", {id: id})
this.allocate = refs.data ? refs.data : 0
},
async getLasYearSurplus(id) {
const refs = await $.post(loc() + "/getLasYearSurplus", {id: id})
this.lasYearSurplus = refs.data
},
deleteIncomeDetailed(row, index) {
if (this.cwsz.incomeCensus[0].income !== 0) {
this.cwsz.incomeCensus[0].income = this.cwsz.incomeCensus[0].income - (Number(row.income) ? Number(row.income) : 0)
}
if (this.cwsz.incomeCensus[0].support !== 0) {
this.cwsz.incomeCensus[0].support = this.cwsz.incomeCensus[0].support - (Number(row.income) ? Number(row.income) : 0)
}
this.cwsz.incomeCensus[0].totalExpend = this.cwsz.incomeCensus[0].totalExpend - (Number(row.expend) ? Number(row.expend) : 0)
this.cwsz.incomeDetailed.splice(index, 1)
if (this.cwsz.incomeDetailed.length === 0) {
this.cwsz.incomeCensus = [{
income: this.income,
allocate: this.allocate,
support: 0,
totalExpend: 0,
surplus: 0
}]
}
},
changeIncomeType(val) {
if (val === "校工会拨款") {
const incomeTypeList = this.cwsz.incomeDetailed.filter(v => v.incomeType === "校工会拨款")
let aa = 0
incomeTypeList.map(v => {
aa = aa + (Number(v.income) ? Number(v.income) : 0)
})
this.cwsz.incomeCensus[0].allocate = aa
} else {
const incomeTypeList = this.cwsz.incomeDetailed.filter(v => v.incomeType === "社会赞助")
let aa = 0
incomeTypeList.map(v => {
aa = aa + (Number(v.income) ? Number(v.income) : 0)
})
this.cwsz.incomeCensus[0].support = aa
}
},
inputExpend() {
let aa = 0
this.cwsz.incomeDetailed.map(v => {
aa = aa + (Number(v.expend) ? Number(v.expend) : 0)
})
this.cwsz.incomeCensus[0].totalExpend = aa
},
inputIncome(row) {
let sr = 0
this.cwsz.incomeDetailed.map(v => {
sr = sr + (Number(v.income) ? Number(v.income) : 0)
})
this.cwsz.incomeCensus[0].income = sr
this.changeIncomeType(row.incomeType)
},
inputQcMoney(row) {
this.lasYearSurplus = Number(row.qcMoney)
},
async changeClub(val) {
const club = this.clubOptions.find(v => v.stid === val)
this.$set(this.jc, "dues_standard", club.dues_standard)
this.$set(this.jc, "foundTime", moment(club.foundTime).format('YYYY-MM-DD'))
this.$set(this.jc, "clubName", club.name)
await this.getClubUserNum(val)
await this.getJgUser(val)
await this.getCount()
this.jcClubId = ""
},
async getClubUserNum(clubId) {
const resp = await $.post(loc() + "/getClubUserNum", {
clubId: clubId
})
if (resp.code === 1) {
this.notifyWarning(resp.msg)
return
}
this.$set(this.jc, "changeUserNum", resp.data)
},
async getJgUser(clubId) {
const resp = await $.post(loc() + "/getJgUser", {
clubId: clubId
})
this.jgUser = resp.data
},
init() {
},
async getClub() {
this.clubOptions = await getClubsByRole()
if (this.clubOptions && this.clubOptions.length > 0) {
this.$set(this.jc, "clubId", this.clubOptions[0].stid)
}
await this.changeClub(this.jc.clubId)
await this.getClubUserNum(this.jc.clubId)
await this.getJgUser(this.jc.clubId)
},
async openEdit(id) {
this.clubOptions = await getClubsByRole()
const {data} = await $.post("/platform/sys/club/examine/register/findOne", {id: id})
this.jc = data.register
this.cwsz.incomeCensus = data.register.incomeCensus
this.cwsz.incomeDetailed = data.detaileds
await this.getClubUserNum(this.jc.clubId)
await this.getJgUser(this.jc.clubId)
},
//获取当前年度社团有没有登记
async getCount() {
const resp = await $.get(loc() + '/getCount', {id: this.jc.clubId})
this.isRegist = resp.data > 0
},
},
async created() {
const id = getQueryVariable("id")
if (id) {
this.openEdit(id)
} else {
this.init()
await this.getClub()
}
this.getCount()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,216 @@
<!--#
layout("/layouts/platform.html"){
#-->
<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
v-model="pageForm.year"
@change="doSearch"
type="year"
value-format="yyyy" style="width: 100%"
placeholder="选择年">
</el-date-picker>
</div>
</div>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<table-tool label="登记列表" :app="this">
<template #func>
<el-radio-group @change="doSearch" style="margin-bottom: -7.5px"
v-model="pageForm.flag">
<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" style="width: 100%" row-key="id" @sort-change="pageOrder"
:size="tableSize"
v-loading="tableLoading" ref="table" class="vi-table">
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
width="80px"></el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:sortable="column.sortable"
:label="column.label"
:prop="column.prop" :width="column.width" min-width="100px">
<template v-if="column.prop=='year'" scope="{row}">
{{moment(row.registerDate).format('YYYY')}}
</template>
<template v-else-if="column.prop=='auditId'" scope="{row}">
<vi-table-state :state="row"></vi-table-state>
</template>
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center" label="操作"
width="200"
fixed="right">
<template scope="{row}">
<el-button plain size="mini" @click="openView(row)" type="primary">查看
</el-button>
<el-button size="mini" @click="openEdit(row)" type="primary"
v-if="row.auditId===5080">审核
</el-button>
<el-button size="mini" @click="doRecall(row)" type="primary"
v-if="[5083,5085,5090].includes(row.auditId)">撤回
</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<template #view>
<club-register-info ref="info"></club-register-info>
</template>
<template #edit>
<club-register-info ref="edit" label="审核" handle>
<template #handle>
<el-form :model="formData" ref="form" :rules="formRules" label-position="right"
style="padding: 20px 0"
label-width="120px">
<vi-title title="审核信息"></vi-title>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop="username" label="审核人员">
<el-input v-model="formData.username"
disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="auditTime" label="审核时间">
<el-input v-model="formData.auditTime" disabled></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-item prop="auditSign" label="签&emsp;&emsp;字">
<sign :qz.sync="formData.auditSign"></sign>
</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-register-info>
</template>
</guava>
</div>
<script>
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
pageForm: {
flag: false,
year: new Date().getFullYear() + ""
},
tableColumns: [
{prop: 'year', label: '年度'},
{prop: 'clubName', label: '社团名称'},
{prop: 'foundTime', label: '成立时间'},
{prop: 'username', label: '联系人', sortable: true},
{prop: 'concatPersonMobile', label: '联系方式', sortable: true},
{prop: 'registerDate', label: '登记时间'},
{prop: 'auditId', label: '登记状态', sortable: true},
]
}
},
components: {
'club-register-info': httpVueLoader('/components/club/clubRegisterInfo.vue'),
},
methods: {
openView(row) {
this.$refs.info.getInfo(row.id)
this.$refs.guava.view()
},
openEdit(row) {
this.formData = {
id: row.id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
}
this.$refs.edit.getInfo(row.id)
this.$refs.guava.edit()
},
async doReview(flag) {
let msg = flag === 1 ? "拒绝" : flag === 2 ? "退回修改" : "通过"
const confirm = await this.$confirm('确定要' + msg + '吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
this.formData.flag = flag
const resp = await $.post(loc() + "/doReview", this.formData)
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.doSearch()
this.$refs.guava.index()
} else {
this.notifyError(resp.msg)
}
}
},
async doRecall(row) {
const confirm = await this.$confirm('此操作将会撤回您审核的内容, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
const resp = await $.post(loc() + '/doRecall', {
id: row.id
})
if (resp.code === 0) {
this.doSearch()
this.notifySuccess(resp.msg)
}
}
}
},
created() {
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,215 @@
<!--#
layout("/layouts/platform.html"){
#-->
<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
v-model="pageForm.year"
@change="doSearch"
type="year"
value-format="yyyy" style="width: 100%"
placeholder="选择年">
</el-date-picker>
</div>
</div>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<table-tool label="登记列表" :app="this">
<template #func>
<el-radio-group @change="doSearch" style="margin-bottom: -7.5px"
v-model="pageForm.flag">
<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" style="width: 100%" row-key="id" @sort-change="pageOrder"
:size="tableSize"
v-loading="tableLoading" ref="table" class="vi-table">
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
width="80px"></el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:sortable="column.sortable"
:label="column.label"
:prop="column.prop" :width="column.width" min-width="100px">
<template v-if="column.prop=='year'" scope="{row}">
{{moment(row.registerDate).format('YYYY')}}
</template>
<template v-else-if="column.prop=='auditId'" scope="{row}">
<vi-table-state :state="row"></vi-table-state>
</template>
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center" label="操作"
width="200">
<template scope="{row}">
<el-button plain size="mini" @click="openView(row)" type="primary">查看
</el-button>
<el-button size="mini" @click="openEdit(row)" type="primary"
v-if="row.auditId===5090">审核
</el-button>
<el-button size="mini" @click="doRecall(row)" type="primary"
v-if="[5093,5095,6010].includes(row.auditId)">撤回
</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<template #view>
<club-register-info ref="info"></club-register-info>
</template>
<template #edit>
<club-register-info ref="edit" label="审核" handle>
<template #handle>
<el-form :model="formData" ref="form" :rules="formRules" label-position="right"
style="padding: 20px 0"
label-width="120px">
<vi-title title="审核信息"></vi-title>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop="username" label="审核人员">
<el-input v-model="formData.username"
disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="auditTime" label="审核时间">
<el-input v-model="formData.auditTime" disabled></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-item prop="auditSign" label="签&emsp;&emsp;字">
<sign :qz.sync="formData.auditSign"></sign>
</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-register-info>
</template>
</guava>
</div>
<script>
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
pageForm: {
flag: false,
year: new Date().getFullYear() + ""
},
tableColumns: [
{prop: 'year', label: '年度'},
{prop: 'clubName', label: '社团名称'},
{prop: 'foundTime', label: '成立时间'},
{prop: 'username', label: '联系人', sortable: true},
{prop: 'concatPersonMobile', label: '联系方式', sortable: true},
{prop: 'registerDate', label: '登记时间'},
{prop: 'auditId', label: '登记状态', sortable: true},
]
}
},
components: {
'club-register-info': httpVueLoader('/components/club/clubRegisterInfo.vue'),
},
methods: {
openView(row) {
this.$refs.info.getInfo(row.id)
this.$refs.guava.view()
},
openEdit(row) {
this.formData = {
id: row.id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
}
this.$refs.edit.getInfo(row.id)
this.$refs.guava.edit()
},
async doReview(flag) {
let msg = flag === 1 ? "拒绝" : flag === 2 ? "退回修改" : "通过"
const confirm = await this.$confirm('确定要' + msg + '吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
this.formData.flag = flag
const resp = await $.post(loc() + "/doReview", this.formData)
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.doSearch()
this.$refs.guava.index()
} else {
this.notifyError(resp.msg)
}
}
},
async doRecall(row) {
const confirm = await this.$confirm('此操作将会撤回您审核的内容, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
const resp = await $.post(loc() + '/doRecall', {
id: row.id
})
if (resp.code === 0) {
this.doSearch()
this.notifySuccess(resp.msg)
}
}
}
},
created() {
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,134 @@
<!--#
layout("/layouts/platform.html"){
#-->
<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
v-model="pageForm.year"
@change="doSearch"
type="year"
value-format="yyyy" style="width: 100%"
placeholder="选择年">
</el-date-picker>
</div>
</div>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<table-tool label="登记列表" :app="this">
<template #func>
</template>
</table-tool>
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
:size="tableSize"
v-loading="tableLoading" ref="table" class="vi-table">
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
width="80px"></el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:sortable="column.sortable"
:label="column.label"
:prop="column.prop" :width="column.width" min-width="100px">
<template v-if="column.prop=='year'" scope="{row}">
{{moment(row.registerDate).format('YYYY')}}
</template>
<template v-else-if="column.prop=='auditId'" scope="{row}">
<vi-table-state :state="row"></vi-table-state>
</template>
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center" label="操作" width="300">
<template scope="{row}">
<el-button plain size="mini" @click="openView(row)" type="primary">查看</el-button>
<el-button size="mini" @click="openEdit(row)" type="primary" v-if="[5070,5083,5093,6013].includes(row.auditId)">编辑</el-button>
<el-button size="mini" @click="doDelete(row)" type="danger" v-if="${@shiro.hasRole('sysadmin')}">删除</el-button>
<el-button size="mini" @click="doDelete(row)" type="danger" v-if="row.auditId===5080&&${!@shiro.hasRole('sysadmin')}">删除</el-button>
<el-button plain size="mini" @click="doExport(row)" v-if="row.auditId===6020">导出</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<template #view>
<club-register-info ref="info"></club-register-info>
</template>
</guava>
</div>
<script>
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
pageForm: {
year: new Date().getFullYear() + ""
},
tableColumns: [
{prop: 'year', label: '年度'},
{prop: 'clubName', label: '社团名称'},
{prop: 'foundTime', label: '成立时间'},
{prop: 'username', label: '联系人', sortable: true},
{prop: 'concatPersonMobile', label: '联系方式', sortable: true},
{prop: 'registerDate', label: '登记时间'},
{prop: 'auditId', label: '登记状态', sortable: true},
]
}
},
components: {
'club-register-info': httpVueLoader('/components/club/clubRegisterInfo.vue'),
},
methods: {
openView(row) {
this.$refs.info.getInfo(row.id)
this.$refs.guava.view()
},
openEdit(row) {
sublime.jumpPagePjax("/platform/sys/club/examine/registerAdd?id=" + row.id)
},
async doDelete(row) {
const confirm = await this.$confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
const resp = await $.post(loc() + "/doDelete", {id: row.id})
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.doSearch()
} else {
this.notifyError(resp.msg)
}
}
},
doExport(row) {
window.open(loc() + "/doExport?id=" + row.id)
},
},
created() {
this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,233 @@
<!--#
layout("/layouts/platform.html"){
#-->
<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
v-model="pageForm.year"
type="year"
@change="doSearch"
value-format="yyyy" style="width: 100%"
placeholder="选择年">
</el-date-picker>
</div>
</div>
<div class="search-item">
<div class="search-item-label">&emsp;&emsp;</div>
<div class="search-item-option">
<el-select v-model="pageForm.clubId" placeholder="请选择社团" filterable
clearable
@change="doSearch"
style="width: 100%">
<el-option
v-for="item in clubOptions"
:key="item.stid"
:label="item.name"
:value="item.stid">
</el-option>
</el-select>
</div>
</div>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<table-tool label="登记列表" :app="this">
<template #func>
<el-radio-group @change="doSearch" style="margin-bottom: -7.5px"
v-model="pageForm.flag">
<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" style="width: 100%" row-key="id" @sort-change="pageOrder"
:size="tableSize"
v-loading="tableLoading" ref="table" class="vi-table">
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
width="80px"></el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:sortable="column.sortable"
:label="column.label"
:prop="column.prop" :width="column.width" min-width="100px">
<template v-if="column.prop=='year'" scope="{row}">
{{moment(row.registerDate).format('YYYY')}}
</template>
<template v-else-if="column.prop=='auditId'" scope="{row}">
<vi-table-state :state="row"></vi-table-state>
</template>
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center" label="操作"
width="200">
<template scope="{row}">
<el-button plain size="mini" @click="openView(row)" type="primary">查看
</el-button>
<el-button size="mini" @click="openEdit(row)" type="primary"
v-if="row.auditId===6010">审核
</el-button>
<el-button size="mini" @click="doRecall(row)" type="primary"
v-if="[6013,6015,6020].includes(row.auditId)">撤回
</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<template #view>
<club-register-info ref="info"></club-register-info>
</template>
<template #edit>
<club-register-info ref="edit" label="审核" handle>
<template #handle>
<el-form :model="formData" ref="form" :rules="formRules" label-position="right"
style="padding: 20px 0"
label-width="120px">
<vi-title title="审核信息"></vi-title>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop="username" label="审核人员">
<el-input v-model="formData.username"
disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="auditTime" label="审核时间">
<el-input v-model="formData.auditTime" disabled></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-item prop="auditSign" label="签&emsp;&emsp;字">
<sign :qz.sync="formData.auditSign"></sign>
</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-register-info>
</template>
</guava>
</div>
<script>
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
pageForm: {
flag: false,
year: new Date().getFullYear() + ""
},
clubOptions: [],
tableColumns: [
{prop: 'year', label: '年度'},
{prop: 'clubName', label: '社团名称'},
{prop: 'foundTime', label: '成立时间'},
{prop: 'username', label: '联系人', sortable: true},
{prop: 'concatPersonMobile', label: '联系方式', sortable: true},
{prop: 'registerDate', label: '登记时间'},
{prop: 'auditId', label: '登记状态', sortable: true},
]
}
},
components: {
'club-register-info': httpVueLoader('/components/club/clubRegisterInfo.vue'),
},
methods: {
openView(row) {
this.$refs.info.getInfo(row.id)
this.$refs.guava.view()
},
openEdit(row) {
this.formData = {
id: row.id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
}
this.$refs.edit.getInfo(row.id)
this.$refs.guava.edit()
},
async doReview(flag) {
let msg = flag === 1 ? "拒绝" : flag === 2 ? "退回修改" : "通过"
const confirm = await this.$confirm('确定要' + msg + '吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
this.formData.flag = flag
const resp = await $.post(loc() + "/doReview", this.formData)
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.doSearch()
this.$refs.guava.index()
} else {
this.notifyError(resp.msg)
}
}
},
async doRecall(row) {
const confirm = await this.$confirm('此操作将会撤回您审核的内容, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
const resp = await $.post(loc() + '/doRecall', {
id: row.id
})
if (resp.code === 0) {
this.doSearch()
this.notifySuccess(resp.msg)
}
}
}
},
async created() {
this.clubOptions = await getClubsByRole()
this.pageData()
}
})
</script>
<!--#
}
#-->