This commit is contained in:
@jyuhsin
2024-12-06 14:57:44 +08:00
parent 02150326e0
commit da97219124
24 changed files with 1007 additions and 187 deletions
+108 -93
View File
@@ -25,8 +25,7 @@ layout("/mobile/platform.html"){
}
.van-button--small {
border-top-right-radius: 16px;
border-bottom-left-radius: 16px;
border-radius: 6px;
height: 26px;
}
@@ -123,6 +122,18 @@ layout("/mobile/platform.html"){
padding: 7px 16px !important;
}
.more_text{
display: inline-block !important;
}
.more_text .van-field__label {
width: 100% !important;
}
.more_text .van-cell__value {
width: auto !important;
}
</style>
<div id="app" v-cloak>
@@ -234,107 +245,113 @@ layout("/mobile/platform.html"){
<van-popup v-model="infoShow" get-container="#app" position="right" :style="{ height: '100%', width: '100%' }">
<van-nav-bar
title="社团详细信息"
:title="viewType === 'view' ? '基础信息' : '信息登记'"
left-arrow
placeholder
fixed
@click-left="infoShow = false"
safe-area-inset-top></van-nav-bar>
<van-tabs v-model="infoActive">
<van-tab title="社团信息">
<van-cell-group inset>
<van-cell title="社团名称">{{ detailData.name }}</van-cell>
<van-cell title="成立时间">{{ detailData.foundtime }}</van-cell>
<van-cell title="报名联系人">{{ detailData.fzrname }}</van-cell>
<van-cell title="所属单位">{{ detailData.fzr_unit_name }}</van-cell>
<van-cell title="联系人电话">{{ detailData.concatpersonmobile }}</van-cell>
<van-cell title="联系人邮箱">{{ detailData.concatpersonemail }}</van-cell>
<van-cell title="会费标准">{{ detailData.dues_standard }}</van-cell>
<van-cell title="当前人数">{{ detailData.cynum }}</van-cell>
<van-cell title="QQ群二维码" @click="showCode('QQ')">
<span style="cursor: pointer; color: #236eb4">点击查看</span>
</van-cell>
<van-cell title="微信群二维码" @click="showCode('weChat')">
<span style="cursor: pointer; color: #236eb4">点击查看</span>
</van-cell>
</van-cell-group>
</van-tab>
<van-tab class="info_tab" v-if="viewType === 'join'" title="个人信息">
<van-form @submit="needJoin" ref="form" :show-error-message="false">
<div class="van-doc-card" style="margin-bottom: 16px; box-shadow: 0 0 16px 0 #ebedf0; margin-top: 10px">
<div></div>
<div class="van-card-header">
基础信息
</div>
<div class="van-card-body">
<van-field readonly v-model="formData.username" name="username" required
label="姓名" :rules="[{ required: true }]"></van-field>
<van-field readonly v-model="formData.sex" name="sex" required
label="性别" :rules="[{ required: true }]"></van-field>
<van-field readonly v-model="formData.loginname" name="loginname" required
label="工号" :rules="[{ required: true }]"></van-field>
<van-field readonly v-model="formData.unitName" name="unitName" required
label="工作部门" :rules="[{ required: true }]"></van-field>
<van-field v-model="formData.mobile" name="mobile" required
label="电话" placeholder="请填写电话" :rules="[{ required: true }]"></van-field>
<van-field v-model="formData.QQNumber" name="QQNumber" required type="digit"
label="QQ" placeholder="请填写QQ" :rules="[{ required: true }]"></van-field>
<van-field v-model="formData.hobby" name="hobby" required
placeholder="请填写爱好" label="爱好" :rules="[{ required: true }]"></van-field>
<div v-if="viewType === 'view'" class="van-doc-card" style="margin-bottom: 16px; box-shadow: 0 0 16px 0 #ebedf0; margin-top: 10px">
<div></div>
<div class="van-card-header">
基础信息
</div>
<div class="van-card-body">
<van-cell title="社团名称">{{ detailData.name }}</van-cell>
<van-cell title="成立时间">{{ detailData.foundtime }}</van-cell>
<van-cell title="报名联系人">{{ detailData.fzrname }}</van-cell>
<van-cell title="所属单位">{{ detailData.fzr_unit_name }}</van-cell>
<van-cell title="联系人电话">{{ detailData.concatpersonmobile }}</van-cell>
<van-cell title="联系人邮箱">{{ detailData.concatpersonemail }}</van-cell>
<van-cell title="会费标准">{{ detailData.dues_standard }}</van-cell>
<van-cell title="当前人数">{{ detailData.cynum }}</van-cell>
<van-cell title="QQ群二维码" @click="showCode('QQ')">
<span style="cursor: pointer; color: #236eb4">点击查看</span>
</van-cell>
<van-cell title="微信群二维码" @click="showCode('weChat')">
<span style="cursor: pointer; color: #236eb4">点击查看</span>
</van-cell>
</div>
</div>
<van-field v-model="formData.sickness" name="sickness" required @click="sicknessVisible = true" is-link
placeholder="请选择是否患有运动限制类疾病" label="是否患有运动限制类疾病" :rules="[{ required: true }]"></van-field>
</div>
</div>
<div class="van-doc-card" style="margin-bottom: 16px; box-shadow: 0 0 16px 0 #ebedf0; margin-top: 10px">
<div></div>
<div class="van-card-header">
紧急联系人(建议家人)信息
</div>
<div class="van-card-body">
<van-field v-model="formData.familyUserName" name="familyUserName" required
placeholder="请填写紧急联系人姓名" label="姓名" :rules="[{ required: true }]"></van-field>
<van-field v-model="formData.familyRelation" name="familyRelation" required
placeholder="请填写紧急联系人关系" label="与申请者关系" :rules="[{ required: true }]"></van-field>
<van-field v-model="formData.familyMobile" name="familyMobile" required type="tel"
placeholder="请填写紧急联系人电话" label="联系电话" :rules="[{ required: true }]"></van-field>
</div>
</div>
<div class="van-doc-card" style="margin-bottom: 16px; box-shadow: 0 0 16px 0 #ebedf0; margin-top: 10px">
<div></div>
<div class="van-card-header">
选填项
</div>
<div class="van-card-body">
<van-field v-model="formData.project" name="project"
rows="1"
autosize
type="textarea"
placeholder="请填写擅长项目" label="擅长项目"></van-field>
<van-form v-if="viewType === 'join'" @submit="needJoin" ref="form" :show-error-message="false">
<van-field v-model="formData.selfSkill" name="selfSkill" @click="selfSkillVisible = true" is-link
placeholder="请选择个人技能水平" label="个人技能水平"></van-field>
<div class="van-doc-card" style="margin-bottom: 16px; box-shadow: 0 0 16px 0 #ebedf0; margin-top: 10px">
<div></div>
<div class="van-card-header">
基础信息
</div>
<div class="van-card-body">
<van-field readonly v-model="formData.username" name="username" required
label="姓名" :rules="[{ required: true }]"></van-field>
<van-field readonly v-model="formData.sex" name="sex" required
label="性别" :rules="[{ required: true }]"></van-field>
<van-field readonly v-model="formData.loginname" name="loginname" required
label="工号" :rules="[{ required: true }]"></van-field>
<van-field readonly v-model="formData.unitName" name="unitName" required
label="工作部门" :rules="[{ required: true }]"></van-field>
<van-field v-model="formData.mobile" name="mobile" required
label="电话" placeholder="请填写电话" :rules="[{ required: true }]"></van-field>
<van-field v-model="formData.QQNumber" name="QQNumber" required type="digit"
label="QQ" placeholder="请填写QQ" :rules="[{ required: true }]"></van-field>
<van-field v-model="formData.hobby" name="hobby" required
placeholder="请填写爱好" label="爱好" :rules="[{ required: true }]"></van-field>
<van-field v-model="formData.playRole" name="playRole" @click="playRoleVisible = true" is-link
placeholder="请选择期望在协会中扮演的角色" label="期望在协会中扮演的角色"></van-field>
<van-field class="more_text" v-model="formData.sickness" name="sickness" required @click="sicknessVisible = true"
placeholder="请选择是否患有运动限制类疾病"
label="是否患有运动限制类疾病"
readonly
:rules="[{ required: true }]"></van-field>
</div>
</div>
<div class="van-doc-card" style="margin-bottom: 16px; box-shadow: 0 0 16px 0 #ebedf0; margin-top: 10px">
<div></div>
<div class="van-card-header">
紧急联系人(建议家人)信息
</div>
<div class="van-card-body">
<van-field v-model="formData.familyUserName" name="familyUserName" required
placeholder="请填写紧急联系人姓名" label="姓名" :rules="[{ required: true }]"></van-field>
<van-field v-model="formData.familyRelation" name="familyRelation" required
placeholder="请填写紧急联系人关系" label="与申请者关系" :rules="[{ required: true }]"></van-field>
<van-field v-model="formData.familyMobile" name="familyMobile" required type="tel"
placeholder="请填写紧急联系人电话" label="联系电话" :rules="[{ required: true }]"></van-field>
</div>
</div>
<div class="van-doc-card" style="margin-bottom: 16px; box-shadow: 0 0 16px 0 #ebedf0; margin-top: 10px">
<div></div>
<div class="van-card-header">
选填项
</div>
<div class="van-card-body">
<van-field v-model="formData.project" name="project"
rows="1"
autosize
type="textarea"
placeholder="请填写擅长项目" label="擅长项目"></van-field>
<van-field v-model="formData.provideServices" name="provideServices" @click="provideServicesVisible = true" is-link
placeholder="请选择是否愿意为协会提供志愿服务" label="是否愿意为协会提供志愿服务"></van-field>
<van-field v-model="formData.selfSkill" name="selfSkill" @click="selfSkillVisible = true"
readonly placeholder="请选择个人技能水平" label="个人技能水平"></van-field>
<van-field v-model="formData.joinManageWork" name="joinManageWork" @click="joinManageWorkVisible = true" is-link
placeholder="请选择是否愿意参与协会的管理工作" label="是否愿意参与协会的管理工作"></van-field>
<van-field v-model="formData.playRole" name="playRole" @click="playRoleVisible = true" class="more_text"
readonly placeholder="请选择期望在协会中扮演的角色" label="期望在协会中扮演的角色"></van-field>
<van-field v-model="formData.provideServices" name="provideServices" @click="provideServicesVisible = true" class="more_text"
readonly placeholder="请选择是否愿意为协会提供志愿服务" label="是否愿意为协会提供志愿服务"></van-field>
<van-field v-model="formData.joinManageWork" name="joinManageWork" @click="joinManageWorkVisible = true" class="more_text"
readonly placeholder="请选择是否愿意参与协会的管理工作" label="是否愿意参与协会的管理工作"></van-field>
<van-field v-model="formData.giveHelp" name="giveHelp" @click="giveHelpVisible = true" class="more_text"
readonly placeholder="请选择是否愿意为协会的活动提供赞助或资源支持" label="是否愿意为协会的活动提供赞助或资源支持"></van-field>
</div>
</div>
<div class="footer">
<van-button class="join join_submit" native-type="submit">申请加入</van-button>
</div>
</van-form>
<van-field v-model="formData.giveHelp" name="giveHelp" @click="giveHelpVisible = true" is-link
placeholder="请选择是否愿意为协会的活动提供赞助或资源支持" label="是否愿意为协会的活动提供赞助或资源支持"></van-field>
</div>
</div>
<div class="footer">
<van-button class="join join_submit" native-type="submit">申请加入</van-button>
</div>
</van-form>
</van-tab>
</van-tabs>
</van-popup>
<van-popup position="bottom" round v-model="sicknessVisible">
@@ -394,7 +411,6 @@ layout("/mobile/platform.html"){
data() {
return {
showPicker: false,
infoActive: 0,
clickRow: {},
typeOptions: [],
clubType: [{text: '未加入', value: false}, {text: '已加入', value: true}],
@@ -441,7 +457,6 @@ layout("/mobile/platform.html"){
},
openInfo(row, type) {
this.viewType = type
this.infoActive = type === 'view' ? 0 : 1
if(type === 'join') {
this.formData = {
username: "${@shiro.getPrincipalProperty('username')}",
@@ -61,13 +61,16 @@ layout("/layouts/platform.html"){
<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 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)">撤回
v-if="row.sponsorType == 1 && [5093,5095,6007].includes(row.auditId)">撤回
</el-button>
<el-button size="mini" @click="doRecall(row)" type="primary"
v-if="row.sponsorType == 2 && [5093,5095,6010].includes(row.auditId)">撤回
</el-button>
</template>
</el-table-column>
@@ -53,11 +53,11 @@ layout("/layouts/platform.html"){
</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="openView(row)" type="primary">查看</el-button>
<el-button size="mini" @click="openEdit(row)" type="primary" v-if="[5070,5083,5093,6013,6008].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>
<el-button size="mini" @click="doDelete(row)" type="danger" v-if="row.auditId===5070&&${!@shiro.hasRole('sysadmin')}">删除</el-button>
<el-button size="mini" @click="doExport(row)" v-if="row.auditId===6020">导出</el-button>
</template>
</el-table-column>
</el-table>
@@ -0,0 +1,231 @@
<!--#
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 size="mini" @click="openView(row)" type="primary">查看
</el-button>
<el-button size="mini" @click="openEdit(row)" type="primary"
v-if="row.auditId===6007">审核
</el-button>
<el-button size="mini" @click="doRecall(row)" type="primary"
v-if="[6008,6009,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() + ""
},
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>
<!--#
}
#-->
@@ -77,7 +77,7 @@ layout("/layouts/platform.html"){
<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 size="mini" @click="openView(row)" type="primary">查看
</el-button>
<el-button size="mini" @click="openEdit(row)" type="primary"
v-if="row.auditId===6010">审核
@@ -74,7 +74,8 @@ layout("/layouts/platform.html"){
<el-table-column label="操作" width="300px">
<template scope="{row}">
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
<el-button :disabled="![800,820,850,880].includes(row.state)" @click="openEdit(row)" size="mini" type="primary">编辑</el-button>
<el-button v-if="row.sponsorType == 1" :disabled="[810, 840, 870, 900, 930].includes(row.state)" @click="openEdit(row)" size="mini" type="primary">编辑</el-button>
<el-button v-if="row.sponsorType == 2" :disabled="[840, 870, 900, 930].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="![800,820,850,880].includes(row.state)" @click="deleteDo(row)" size="mini" type="danger">删除</el-button>
@@ -28,6 +28,16 @@ layout("/layouts/platform.html"){
<div v-show="activeName === '1'">
<vi-title title="请填写以下社团信息"></vi-title>
<el-form :model="formData" ref="form" :rules="formRules" label-width="150px" style="padding: 0 30px">
<el-row gutter="30">
<el-col :span="12">
<el-form-item label="发起类型" prop="sponsorType">
<el-radio-group v-model="formData.sponsorType">
<el-radio-button :label="1">基层单位申请</el-radio-button>
<el-radio-button :label="2">协会发起人申请</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row gutter="30">
<el-col :span="12">
<el-form-item label="社团名称" prop="name">
@@ -105,11 +115,11 @@ layout("/layouts/platform.html"){
</el-row>
<el-form-item label="社团介绍" prop="stjs">
<div id="stjsEditor"></div>
<text-editor v-model="formData.stjs"></text-editor>
</el-form-item>
<el-form-item label="社团宗旨" prop="stzz">
<div id="stzzEditor"></div>
<text-editor v-model="formData.stzz"></text-editor>
</el-form-item>
<el-row gutter="30">
@@ -286,8 +296,6 @@ layout("/layouts/platform.html"){
</div>
<script>
const E = window.wangEditor
let stjsEditor, stzzEditor = null
const vue = new Vue({
el: '#app',
@@ -298,18 +306,18 @@ layout("/layouts/platform.html"){
{},
{},
{},
{},
{},
],
activeName: '1',
formData: {
name: ''
name: '',
sponsorType: 1,
},
formRules: {
name: [{required: true, message: '请填写社团名称', trigger: ['blur', 'change']}],
code: [{required: true, message: '请填写社团编码', trigger: ['blur', 'change']}],
type: [{required: true, message: '请选择社团类型', trigger: ['blur', 'change']}],
fzr: [{required: true, message: '请选择社团联系人', trigger: ['blur', 'change']}],
sponsorType: [{required: true, message: '请选择发起类型', trigger: ['blur', 'change']}],
},
typeOptions: [],
userLoading: false,
@@ -415,22 +423,10 @@ layout("/layouts/platform.html"){
},
async initData() {
const id = GetQueryString("id")
$("#stjsEditor").html("")
$("#stzzEditor").html("")
this.$nextTick(() => {
stjsEditor = new E("#stjsEditor")
stjsEditor.config.onchange = (html) => {
this.formData.stjs = html
}
stjsEditor.create()
stzzEditor = new E("#stzzEditor")
stzzEditor.config.onchange = (html) => {
this.formData.stzz = html
}
stzzEditor.create()
})
this.formData = {}
this.formData = {
name: '',
sponsorType: 1,
}
if (this.$refs["form"])
this.$refs["form"].resetFields()
@@ -482,8 +478,6 @@ layout("/layouts/platform.html"){
this.sponsorData.push(row)
})
}
stjsEditor.txt.html(resp.data.stjs ? resp.data.stjs : '')
stzzEditor.txt.html(resp.data.stzz ? resp.data.stzz : '')
} else {
await this.getClubCode()
}
@@ -505,17 +499,17 @@ layout("/layouts/platform.html"){
if (!valid) return
let hz = this.managePerson.filter(o => o.sf === 1)
if(hz.length > 1) {
this.$notify.warning({title: '警告', message: '会长只能有1人'})
this.$message.warning('会长只能有1人')
return
}
let msz = this.managePerson.filter(o => o.sf === 4)
if(msz.length > 1) {
this.$notify.warning({title: '警告', message: '秘书长只能有1人'})
this.$message.warning('秘书长只能有1人')
return
}
this.formData.sponsor = this.sponsorData.filter(o => o.userId !== '' && o.userId !== undefined).map(o => o.userId)
if(!flag && this.formData.sponsor && this.formData.sponsor.length < 5) {
this.$notify.warning({title: '警告', message: '发起人要求不少于5人!'})
if(!flag && this.formData.sponsor && this.formData.sponsor.length < 3) {
this.$message.warning('发起人要求不少于3人')
return
}
let manageValid = false
@@ -526,7 +520,7 @@ layout("/layouts/platform.html"){
}
})
if (!flag && (this.managePerson.length === 0 || manageValid)) {
this.$notify.warning({title: '警告', message: '请填写理事机构信息'})
this.$message.warning('请填写理事机构信息')
return
}
const cloneData = clone(this.formData)
@@ -559,7 +553,7 @@ layout("/layouts/platform.html"){
});
}
} catch (e) {
this.$notify.warning({title: '警告', message: '存在必填项未填写'})
this.$message.warning('存在必填项未填写')
}
},
async getClubCode() {
@@ -0,0 +1,229 @@
<!--#
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-input @keyup.enter.native="doSearch" clearable placeholder="请输入内容"
clearable
style="width: 100%" v-model="pageForm.name">
</el-input>
</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="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="fzrName" sortable align="center" header-align="center"
show-overflow-tooltip></el-table-column>
<el-table-column label="发起人" prop="sponsorName" 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="[801].includes(row.state)" @click="openAudit(row)" size="mini" type="primary">审核</el-button>
<el-button v-if="[802, 803, 810].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-regist-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-regist-info>
</template>
<template #view>
<club-regist-info ref="info"></club-regist-info>
</template>
</guava>
</div>
<script>
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
pageForm: {
name: '',
isAudit: false,
},
tableData: [],
viewData: {},
}
},
components: {
'club-regist-info': httpVueLoader('/components/club/clubRegistInfo.vue'),
},
methods: {
async rollback(row) {
const confirm = await this.$confirm('您确定要撤回吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
const resp = await $.post('/platform/sys/club/unitPartAudit/rollback', {
id: row.id
})
if(resp.code === 0) {
await this.pageData()
this.$message.success(resp.msg)
} else {
this.$message.warning(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/unitPartAudit/doReview', this.formData)
if(resp.code === 0) {
this.$message.success(resp.msg)
await this.pageData()
this.$refs['guava'].index()
} else {
this.$message.warning(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 = {
clubId: 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/unitPartAudit/pageData", form);
if (resp.code === 0) {
this.tableData = resp.data.list;
this.pageForm.totalCount = resp.data.totalCount;
} else {
this.$message.warning(resp.msg)
}
},
},
async created() {
await this.pageData()
}
})
</script>
<!--#
}
#-->
@@ -44,8 +44,8 @@ layout("/layouts/platform.html"){
<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-button :label="true">审核</el-radio-button>
<el-radio-button :label="false">审核</el-radio-button>
</el-radio-group>
</template>
</table-tool>
@@ -77,7 +77,7 @@ layout("/layouts/platform.html"){
<el-table-column label="操作" width="300px">
<template scope="{row}">
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
<el-button v-if="[870].includes(row.state)" @click="openAudit(row)" size="mini" type="primary">批复</el-button>
<el-button v-if="[870].includes(row.state)" @click="openAudit(row)" size="mini" type="primary">审核</el-button>
<el-button v-if="[880, 890, 900].includes(row.state)" @click="rollback(row)" size="mini" type="primary">撤回</el-button>
</template>
</el-table-column>
@@ -86,32 +86,33 @@ layout("/layouts/platform.html"){
</el-card>
<template #edit>
<club-regist-info ref="info2" :handle="true" label="校工会批复" :panes="[2, 3, 4]">
<club-regist-info ref="info2" :handle="true" label="校工会审核" :panes="[2, 3, 4]">
<template #handle>
<vi-title title="批复信息"></vi-title>
<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-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-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-row :gutter="20">
<el-col :span="12">
<el-form-item prop="auditOpinion" label="审核意见">
<el-input type="text" v-model="formData.auditOpinion" maxlength="500"
placeholder="请填写您的审核意见"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="foundTime" label="成立时间">
<el-date-picker
@@ -123,16 +124,14 @@ layout("/layouts/platform.html"){
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="schoolReplyFile" label="批复附件">
<file-upload :files.sync="formData.schoolReplyFile" :max="5" :type="['doc','docx']">
<template #el-upload__tip>
<div class="el-upload__tip" slot="tip">请上传批复附件,格式为word</div>
</template>
</file-upload>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop="schoolReplyFile" label="审核附件">
<file-upload :files.sync="formData.schoolReplyFile" :max="5" :type="['doc','docx']">
<template #el-upload__tip>
<div class="el-upload__tip" slot="tip">请上传审核附件,格式为word</div>
</template>
</file-upload>
</el-form-item>
</el-form>
@@ -86,7 +86,7 @@ layout("/layouts/platform.html"){
</el-card>
<template #edit>
<club-regist-info ref="info2" :handle="true" label="宣传与文体办公室审核" :panes="[2]">
<club-regist-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"