This commit is contained in:
@jyuhsin
2026-03-31 16:55:35 +08:00
parent dc71dc22d8
commit 6adf949e3e
184 changed files with 2333 additions and 556 deletions
@@ -229,9 +229,9 @@
<el-row class="query-row"
v-if="is_A06===true||is_sysadmin===true||is_H02===true">
<el-col class="query-title">协会</el-col>
<el-col class="query-title">社团</el-col>
<el-col class="query-content">
<el-select v-model="pageForm.clubId" placeholder="请选择协会" @change="doSearch"
<el-select v-model="pageForm.clubId" placeholder="请选择社团" @change="doSearch"
filterable
:clearable="is_A06===true||is_sysadmin===true||(is_H04===true&&is_H02===true)"
style="width: 100%">
@@ -58,9 +58,9 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
</el-form-item>
</el-col>
<el-col :span="12" v-if="activity_type===40003">
<el-form-item prop="clubId" label="活动所属协会">
<el-form-item prop="clubId" label="活动所属社团">
<el-select v-model="formData.clubId" clearable filterable
placeholder="请选择活动所属协会"
placeholder="请选择活动所属社团"
style="width: 100%">
<el-option
v-for="item in clubOptions"
@@ -651,7 +651,7 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
return
}
if (!this.formData.clubId && this.activity_type === 40003) {
this.$message.error("请选择活动所属协会")
this.$message.error("请选择活动所属社团")
return
}
this.$confirm("您确定保存吗?", "提示", {
@@ -27,7 +27,7 @@ const ACTIVITY_CULTURE_INFO_ACTIVITY = {
{{ viewData.activity_type === 40001 ? '校工会活动' : viewData.activity_type === 40002 ?
'分工会活动'
:
'协会/社团活动' }}
'社团/社团活动' }}
</el-descriptions-item>
<!-- <el-descriptions-item label="活动计划时间">-->
<!-- {{ viewData.startPlannedDate + ' - ' + viewData.endPlannedDate }}-->
@@ -23,7 +23,7 @@ const singleSignUp = {
<el-descriptions-item label="活动类型" :span="2">
{{ viewData.activity_type === 40001 ? '校工会活动' : viewData.activity_type === 40002 ? '分工会活动'
:
'协会/社团活动' }}
'社团/社团活动' }}
</el-descriptions-item>
<!-- <el-descriptions-item label="活动计划时间">-->
<!-- {{ viewData.startPlannedDate + ' - ' + viewData.endPlannedDate }}-->
@@ -28,9 +28,9 @@
</el-descriptions-item>
<template v-if="formData.activityType == 'CLUB'">
<el-descriptions-item label="申请协会">
<el-form-item prop="clubId" label="申请协会">
<el-select v-model="formData.clubId" placeholder="请选择协会"
<el-descriptions-item label="申请社团">
<el-form-item prop="clubId" label="申请社团">
<el-select v-model="formData.clubId" placeholder="请选择社团"
@change="setDeclareUnitName" style="width: 100%">
<el-option
v-for="item in clubList"
@@ -43,9 +43,9 @@ layout("/layouts/platform.html"){
</el-descriptions-item>
<template v-if="formData.activityType == 'CLUB'">
<el-descriptions-item label="申请协会">
<el-form-item prop="clubId" label="申请协会">
<el-select v-model="formData.clubId" placeholder="请选择协会"
<el-descriptions-item label="申请社团">
<el-form-item prop="clubId" label="申请社团">
<el-select v-model="formData.clubId" placeholder="请选择社团"
@change="setDeclareUnitName" style="width: 100%">
<el-option
v-for="item in clubList"
@@ -4,7 +4,7 @@
<el-descriptions-item label="活动类型">{{ getActivityTypeName(viewData.activityType) }}</el-descriptions-item>
<el-descriptions-item label="申请人">{{ viewData.userName + '(' + viewData.loginName + ')' }}</el-descriptions-item>
<el-descriptions-item :label="viewData.activityType == 'CLUB' ? '申请协会' : '申请单位'">{{ viewData.declareUnitName }}</el-descriptions-item>
<el-descriptions-item :label="viewData.activityType == 'CLUB' ? '申请社团' : '申请单位'">{{ viewData.declareUnitName }}</el-descriptions-item>
<el-descriptions-item label="联系方式">{{ viewData.mobile }}</el-descriptions-item>
<el-descriptions-item label="申请时间">{{ viewData.applyTime }}</el-descriptions-item>
@@ -135,7 +135,7 @@ layout("/layouts/platform.html"){
{ prop: "mobile", label: "联系方式"},
{ prop: "activityName", label: "活动名称"},
{ prop: "activityType", label: "活动类型"},
{ prop: "declareUnitName", label: "申报单位/协会", sortable: true },
{ prop: "declareUnitName", label: "申报单位/社团", sortable: true },
{ prop: "activityNumber", label: "活动人数", sortable: true },
{ prop: "applyTime", label: "申报时间", sortable: true },
{ prop: "curTaskName", label: "当前节点"},
@@ -19,8 +19,8 @@ layout("/layouts/platform.html"){
<el-input placeholder="请输入申请人工号或姓名" clearable v-model="pageForm.searchKeyword"></el-input>
</search-item>
<search-item label="所属协会">
<el-select clearable filterable placeholder="所属协会"
<search-item label="所属社团">
<el-select clearable filterable placeholder="所属社团"
style="width: 100%;" v-model="pageForm.clubId">
<el-option :label="item.clubName" :value="item.id"
v-for="item in clubs"></el-option>
@@ -122,7 +122,7 @@ layout("/layouts/platform.html"){
{ prop: "mobile", label: "联系方式"},
{ prop: "activityName", label: "活动名称"},
{ prop: "activityType", label: "活动类型"},
{ prop: "declareUnitName", label: "申报单位/协会", sortable: true },
{ prop: "declareUnitName", label: "申报单位/社团", sortable: true },
{ prop: "activityNumber", label: "活动人数", sortable: true },
{ prop: "applyTime", label: "申报时间", sortable: true },
{ prop: "curTaskName", label: "当前节点"},
@@ -11,7 +11,7 @@ const INFO = {
<el-descriptions-item label="申请人">{{ viewData.userName + '(' + viewData.loginName + ')' }}
</el-descriptions-item>
<el-descriptions-item :label="viewData.activityType == 'CLUB' ? '申请协会' : '申请单位'">{{
<el-descriptions-item :label="viewData.activityType == 'CLUB' ? '申请社团' : '申请单位'">{{
viewData.declareUnitName }}
</el-descriptions-item>
@@ -41,8 +41,8 @@ layout("/layouts/platform.html"){
</template>
<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, CLUB_MANAGER, CLUB_PRESIDENT')">
<search-item label="所属协会">
<el-select clearable filterable placeholder="所属协会"
<search-item label="所属社团">
<el-select clearable filterable placeholder="所属社团"
style="width: 100%;" v-model="pageForm.clubId">
<el-option :label="item.clubName" :value="item.id"
v-for="item in clubs"></el-option>
@@ -128,7 +128,7 @@ layout("/layouts/platform.html"){
{ prop: "mobile", label: "联系方式"},
{ prop: "activityName", label: "活动名称"},
{ prop: "activityType", label: "活动类型"},
{ prop: "declareUnitName", label: "申报单位/协会", sortable: true },
{ prop: "declareUnitName", label: "申报单位/社团", sortable: true },
{ prop: "activityNumber", label: "活动人数", sortable: true },
{ prop: "applyTime", label: "申报时间", sortable: true },
{ prop: "taskName", label: "当前节点"},
@@ -30,8 +30,8 @@ layout("/layouts/platform.html"){
v-for="item in unions"></el-option>
</el-select>
</search-item>
<search-item label="所属协会">
<el-select clearable filterable placeholder="所属协会"
<search-item label="所属社团">
<el-select clearable filterable placeholder="所属社团"
style="width: 100%;" v-model="pageForm.clubId">
<el-option :label="item.clubName" :value="item.id"
v-for="item in clubs"></el-option>
@@ -142,7 +142,7 @@ layout("/layouts/platform.html"){
{ prop: "mobile", label: "联系方式"},
{ prop: "activityName", label: "活动名称"},
{ prop: "activityType", label: "活动类型"},
{ prop: "declareUnitName", label: "申报单位/协会", sortable: true },
{ prop: "declareUnitName", label: "申报单位/社团", sortable: true },
{ prop: "activityNumber", label: "活动人数", sortable: true },
{ prop: "applyTime", label: "申报时间", sortable: true },
{ prop: "curTaskName", label: "当前节点"},
@@ -30,8 +30,8 @@ layout("/layouts/platform.html"){
v-for="item in unions"></el-option>
</el-select>
</search-item>
<search-item label="所属协会">
<el-select clearable filterable placeholder="所属协会"
<search-item label="所属社团">
<el-select clearable filterable placeholder="所属社团"
style="width: 100%;" v-model="pageForm.clubId">
<el-option :label="item.clubName" :value="item.id"
v-for="item in clubs"></el-option>
@@ -142,7 +142,7 @@ layout("/layouts/platform.html"){
{ prop: "mobile", label: "联系方式"},
{ prop: "activityName", label: "活动名称"},
{ prop: "activityType", label: "活动类型"},
{ prop: "declareUnitName", label: "申报单位/协会", sortable: true },
{ prop: "declareUnitName", label: "申报单位/社团", sortable: true },
{ prop: "activityNumber", label: "活动人数", sortable: true },
{ prop: "applyTime", label: "申报时间", sortable: true },
{ prop: "curTaskName", label: "当前节点"},
@@ -35,12 +35,12 @@ layout("/layouts/platform.html"){
</el-radio-group>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="所属协会"
<el-descriptions-item label="所属社团"
v-if="['ACTIVITY_BUDGET_TYPE_THREE'].includes(formData.outlayManageSource)">
<el-form-item label="所属协会" prop="clubId"
<el-form-item label="所属社团" prop="clubId"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-select
placeholder="请选择协会"
placeholder="请选择社团"
style="width: 100%;" v-model="formData.clubId"
@change="clubIdChange">
<el-option
@@ -4,7 +4,7 @@
<el-descriptions-item label="活动类型">{{ getActivityTypeName(viewData.activityType) }}</el-descriptions-item>
<el-descriptions-item label="申请人">{{ viewData.userName + '(' + viewData.loginName + ')' }}</el-descriptions-item>
<el-descriptions-item :label="viewData.activityType == 'CLUB' ? '申请协会' : '申请单位'">{{ viewData.declareUnitName }}</el-descriptions-item>
<el-descriptions-item :label="viewData.activityType == 'CLUB' ? '申请社团' : '申请单位'">{{ viewData.declareUnitName }}</el-descriptions-item>
<el-descriptions-item label="联系方式">{{ viewData.mobile }}</el-descriptions-item>
<el-descriptions-item label="申请时间">{{ viewData.applyTime }}</el-descriptions-item>
@@ -80,7 +80,7 @@ layout("/layouts/platform.html"){
<div class="cut-off-line"></div>
</el-col>
<el-col :span="4" style="position: relative">
<div class="top_title">协会活动总人数</div>
<div class="top_title">社团活动总人数</div>
<div class="top_num">{{numData.clubSignNum?numData.clubSignNum:'0'}}</div>
<div class="cut-off-line"></div>
</el-col>-->
@@ -262,7 +262,7 @@ layout("/layouts/platform.html"){
isUnionJf:true,
all_club_loading: false,
clubTip:'协会活动数',
clubTip:'社团活动数',
allClubYear: moment().format('YYYY'),
isClubJf:true,
}
@@ -485,7 +485,7 @@ layout("/layouts/platform.html"){
},
async doClubSwitch(){
this.isClubJf = !this.isClubJf
this.clubTip = this.isClubJf ? '协会活动数' : '协会经费详情'
this.clubTip = this.isClubJf ? '社团活动数' : '社团经费详情'
await this.allClubActivityAndJf();
},
async allClubActivityAndJf(){
@@ -533,7 +533,7 @@ layout("/layouts/platform.html"){
"yAxis": {},
meta: {
clubName: {
alias: '协会',
alias: '社团',
},
money: {
alias: this.isClubJf?'金额':'活动数',
@@ -158,7 +158,7 @@ layout("/layouts/platform.html"){
{prop: "outlayManageSource", label: "经费类型"},
{prop: "budgetReimburseType", label: "预算条目"},
{prop: "actualMoney", label: "报销金额(元)"},
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
{prop: "declareUnitName", label: "申报单位/社团", sortable: true},
{prop: "applyTime", label: "申报时间", sortable: true},
{prop: "curTaskName", label: "当前节点"},
{prop: "instanceState", label: "流程状态"}
@@ -35,8 +35,8 @@ layout("/layouts/platform.html"){
placeholder="请选择预算条目"></dict-select>
</search-item>
<search-item label="所属协会">
<el-select clearable filterable placeholder="所属协会"
<search-item label="所属社团">
<el-select clearable filterable placeholder="所属社团"
style="width: 100%;" v-model="pageForm.clubId">
<el-option :label="item.clubName" :value="item.id"
v-for="item in clubs"></el-option>
@@ -149,7 +149,7 @@ layout("/layouts/platform.html"){
{prop: "outlayManageSource", label: "经费类型"},
{prop: "budgetReimburseType", label: "预算条目"},
{prop: "actualMoney", label: "报销金额(元)"},
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
{prop: "declareUnitName", label: "申报单位/社团", sortable: true},
{prop: "applyTime", label: "申报时间", sortable: true},
{prop: "curTaskName", label: "当前节点"},
{prop: "instanceState", label: "流程状态"}
@@ -19,7 +19,7 @@ const INFO = {
<el-descriptions-item label="申请人">{{ viewData.userName + '(' + viewData.loginName + ')' }}
</el-descriptions-item>
<el-descriptions-item
:label="viewData.outlayManageSource == 'ACTIVITY_BUDGET_TYPE_THREE' ? '申请协会' : '申请单位'">
:label="viewData.outlayManageSource == 'ACTIVITY_BUDGET_TYPE_THREE' ? '申请社团' : '申请单位'">
{{viewData.declareUnitName }}
</el-descriptions-item>
@@ -47,8 +47,8 @@ layout("/layouts/platform.html"){
</el-select>
</search-item>
<search-item label="所属协会">
<el-select clearable filterable placeholder="所属协会"
<search-item label="所属社团">
<el-select clearable filterable placeholder="所属社团"
style="width: 100%;" v-model="pageForm.clubId">
<el-option :label="item.clubName" :value="item.id"
v-for="item in clubs"></el-option>
@@ -162,7 +162,7 @@ layout("/layouts/platform.html"){
{prop: "outlayManageSource", label: "经费类型"},
{prop: "budgetReimburseType", label: "预算条目"},
{prop: "actualMoney", label: "报销金额(元)"},
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
{prop: "declareUnitName", label: "申报单位/社团", sortable: true},
{prop: "applyTime", label: "申报时间", sortable: true},
{prop: "curTaskName", label: "当前节点"},
{prop: "instanceState", label: "流程状态"}
@@ -42,8 +42,8 @@ layout("/layouts/platform.html"){
</template>
<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, CLUB_MANAGER, CLUB_PRESIDENT')">
<search-item label="所属协会">
<el-select clearable filterable placeholder="所属协会"
<search-item label="所属社团">
<el-select clearable filterable placeholder="所属社团"
style="width: 100%;" v-model="pageForm.clubId">
<el-option :label="item.clubName" :value="item.id"
v-for="item in clubs"></el-option>
@@ -136,7 +136,7 @@ layout("/layouts/platform.html"){
{prop: "activityReimbursementMode", label: "报销模式"},
{prop: "outlayManageSource", label: "经费类型"},
{prop: "actualMoney", label: "报销金额(元)"},
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
{prop: "declareUnitName", label: "申报单位/社团", sortable: true},
{prop: "applyTime", label: "申报时间", sortable: true},
{prop: "taskName", label: "当前节点"},
{prop: "instanceState", label: "流程状态"}
@@ -47,8 +47,8 @@ layout("/layouts/platform.html"){
</el-select>
</search-item>
<search-item label="所属协会">
<el-select clearable filterable placeholder="所属协会"
<search-item label="所属社团">
<el-select clearable filterable placeholder="所属社团"
style="width: 100%;" v-model="pageForm.clubId">
<el-option :label="item.clubName" :value="item.id"
v-for="item in clubs"></el-option>
@@ -162,7 +162,7 @@ layout("/layouts/platform.html"){
{prop: "outlayManageSource", label: "经费类型"},
{prop: "budgetReimburseType", label: "预算条目"},
{prop: "actualMoney", label: "报销金额(元)"},
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
{prop: "declareUnitName", label: "申报单位/社团", sortable: true},
{prop: "applyTime", label: "申报时间", sortable: true},
{prop: "curTaskName", label: "当前节点"},
{prop: "instanceState", label: "流程状态"}
@@ -47,8 +47,8 @@ layout("/layouts/platform.html"){
</el-select>
</search-item>
<search-item label="所属协会">
<el-select clearable filterable placeholder="所属协会"
<search-item label="所属社团">
<el-select clearable filterable placeholder="所属社团"
style="width: 100%;" v-model="pageForm.clubId">
<el-option :label="item.clubName" :value="item.id"
v-for="item in clubs"></el-option>
@@ -163,7 +163,7 @@ layout("/layouts/platform.html"){
{prop: "outlayManageSource", label: "经费类型"},
{prop: "budgetReimburseType", label: "预算条目"},
{prop: "actualMoney", label: "报销金额(元)"},
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
{prop: "declareUnitName", label: "申报单位/社团", sortable: true},
{prop: "applyTime", label: "申报时间", sortable: true},
{prop: "curTaskName", label: "当前节点"},
{prop: "instanceState", label: "流程状态"}
@@ -46,8 +46,8 @@ layout("/layouts/platform.html"){
</el-select>
</search-item>
<search-item label="所属协会">
<el-select clearable filterable placeholder="所属协会"
<search-item label="所属社团">
<el-select clearable filterable placeholder="所属社团"
style="width: 100%;" v-model="pageForm.clubId">
<el-option :label="item.clubName" :value="item.id"
v-for="item in clubs"></el-option>
@@ -161,7 +161,7 @@ layout("/layouts/platform.html"){
{prop: "outlayManageSource", label: "经费类型"},
{prop: "budgetReimburseType", label: "预算条目"},
{prop: "actualMoney", label: "报销金额(元)"},
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
{prop: "declareUnitName", label: "申报单位/社团", sortable: true},
{prop: "applyTime", label: "申报时间", sortable: true},
{prop: "curTaskName", label: "当前节点"},
{prop: "instanceState", label: "流程状态"}
@@ -7,7 +7,7 @@ const basicForm = {
style="width: 100%">
<el-option v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('SCHOOL_UNION_ADMIN')" label="校工会" value="40001"></el-option>
<el-option v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('BRANCH_UNION_CHAIRMAN')" label="分工会" value="40002"></el-option>
<el-option v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('CLUB_PRESIDENT')" label="协会/社团" value="40003"></el-option>
<el-option v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('CLUB_PRESIDENT')" label="社团/社团" value="40003"></el-option>
</el-select>
</el-form-item>
@@ -24,8 +24,8 @@ const basicForm = {
</el-select>
</el-form-item>
<el-form-item v-if="formData.planType === '40003'" prop="tissueId" label="所属协会/社团">
<el-select v-model="formData.tissueId" placeholder="请选择所属协会/社团" filterable clearable
<el-form-item v-if="formData.planType === '40003'" prop="tissueId" label="所属社团/社团">
<el-select v-model="formData.tissueId" placeholder="请选择所属社团/社团" filterable clearable
@change="(val) => {formData.tissueName = clubList.find(o => o.id === formData.tissueId).clubName}"
style="width: 100%">
<el-option
@@ -41,8 +41,8 @@ layout("/layouts/platform.html"){
</el-option>
</el-select>
</search-item>
<search-item v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('CLUB_PRESIDENT')" label="协会/社团:">
<el-select v-model="pageForm.tissueIdByClub" placeholder="请选择所属协会/社团" filterable clearable
<search-item v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('CLUB_PRESIDENT')" label="社团/社团:">
<el-select v-model="pageForm.tissueIdByClub" placeholder="请选择所属社团/社团" filterable clearable
@change="doSearch" style="width: 100%">
<el-option
v-for="item in clubList"
@@ -82,7 +82,7 @@ layout("/layouts/platform.html"){
<template v-slot="{ row }" v-if="column.prop === 'planType'">
<span v-if="row.planType === '40001'">校工会</span>
<span v-if="row.planType === '40002'">分工会</span>
<span v-if="row.planType === '40003'">协会/社团</span>
<span v-if="row.planType === '40003'">社团/社团</span>
</template>
<template v-slot="{ row }" v-else-if="column.prop === 'tissueName'">
{{ row.tissueName || '校工会' }}
@@ -3,7 +3,7 @@ const info = {
<div>
<el-descriptions :column="2" border class="table_fixed">
<el-descriptions-item label="计划类型">
{{ viewData.type == 40001 ? '校工会计划' : viewData.type == 40002 ? '分工会计划' : '协会/社团计划' }}
{{ viewData.type == 40001 ? '校工会计划' : viewData.type == 40002 ? '分工会计划' : '社团/社团计划' }}
</el-descriptions-item>
<el-descriptions-item label="计划名称">
{{ viewData.planName }}
@@ -11,7 +11,7 @@ const basicForm = {
style="width: 100%">
<el-option v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('SCHOOL_UNION_ADMIN')" label="校工会" value="40001"></el-option>
<el-option v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('BRANCH_UNION_CHAIRMAN')" label="分工会" value="40002"></el-option>
<el-option v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('CLUB_PRESIDENT')" label="协会/社团" value="40003"></el-option>
<el-option v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('CLUB_PRESIDENT')" label="社团/社团" value="40003"></el-option>
</el-select>
</el-form-item>
<el-form-item v-if="formData.summaryFrom === '40002'" prop="tissueId" label="所属工会">
@@ -26,8 +26,8 @@ const basicForm = {
</el-option>
</el-select>
</el-form-item>
<el-form-item v-if="formData.summaryFrom === '40003'" prop="tissueId" label="所属协会/社团">
<el-select v-model="formData.tissueId" placeholder="请选择所属协会/社团" filterable clearable
<el-form-item v-if="formData.summaryFrom === '40003'" prop="tissueId" label="所属社团/社团">
<el-select v-model="formData.tissueId" placeholder="请选择所属社团/社团" filterable clearable
@change="(val) => {formData.tissueName = clubList.find(o => o.id === formData.tissueId).clubName}"
style="width: 100%">
<el-option
@@ -38,8 +38,8 @@ layout("/layouts/platform.html"){
</el-option>
</el-select>
</search-item>
<search-item v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('CLUB_PRESIDENT')" label="协会/社团:">
<el-select v-model="pageForm.tissueIdByClub" placeholder="请选择所属协会/社团" filterable clearable
<search-item v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('CLUB_PRESIDENT')" label="社团/社团:">
<el-select v-model="pageForm.tissueIdByClub" placeholder="请选择所属社团/社团" filterable clearable
@change="doSearch" style="width: 100%">
<el-option
v-for="item in clubList"
@@ -79,7 +79,7 @@ layout("/layouts/platform.html"){
<template v-slot="{ row }" v-if="column.prop === 'planType'">
<span v-if="row.planType === '40001'">校工会</span>
<span v-if="row.planType === '40002'">分工会</span>
<span v-if="row.planType === '40003'">协会/社团</span>
<span v-if="row.planType === '40003'">社团/社团</span>
</template>
<template v-slot="{ row }" v-else-if="column.prop === 'tissueName'">
{{ row.tissueName || '校工会' }}
@@ -6,7 +6,7 @@ const info = {
{{viewData.userName}}
</el-descriptions-item>
<el-descriptions-item label="上传类型">
{{ viewData.summaryFrom == 40001 ? '校工会计划' : viewData.type == 40002 ? '分工会计划' : '协会/社团计划' }}
{{ viewData.summaryFrom == 40001 ? '校工会计划' : viewData.type == 40002 ? '分工会计划' : '社团/社团计划' }}
</el-descriptions-item>
<el-descriptions-item label="所属组织">
{{ viewData.tissueName || '校工会' }}
@@ -18,12 +18,12 @@ let ACTIVITY_SPORTS_ADD_ACTIVITY = {
<template v-if="is_sysadmin">
<el-radio :label="40001" border>校级</el-radio>
<el-radio :label="40002" border>分工会</el-radio>
<el-radio :label="40003" border>社团或协会</el-radio>
<el-radio :label="40003" border>社团或社团</el-radio>
</template>
<template v-if="!is_sysadmin">
<el-radio :label="40001" border v-if="is_a06">校级</el-radio>
<el-radio v-if="is_union" :label="40002" border>分工会</el-radio>
<el-radio :label="40003" border v-if="is_club">社团或协会</el-radio>
<el-radio :label="40003" border v-if="is_club">社团或社团</el-radio>
</template>
</el-radio-group>
@@ -179,8 +179,8 @@ let ACTIVITY_SPORTS_ADD_ACTIVITY = {
</el-col>-->
<el-col v-if="formData.activityLevel===40003||(formData.activityLevel===40001&&is_club)"
:span="8">
<el-form-item prop="belongClubId" label="活动所属协会">
<el-select v-model="formData.belongClubId" placeholder="请选择活动所属协会" filterable clearable
<el-form-item prop="belongClubId" label="活动所属社团">
<el-select v-model="formData.belongClubId" placeholder="请选择活动所属社团" filterable clearable
style="width: 100%">
<el-option
v-for="item in clubOptions"
@@ -4,23 +4,23 @@ const REGISTER_INFO_COMPONENT = {
<el-tabs tab-position="top" v-model="activeName">
<el-tab-pane name="1" label="基础信息">
<div class="process-title">
协会信息
社团信息
<el-link type="primary" @click="openChart">点击查看流程图</el-link>
</div>
<el-descriptions :column="3" border class="table_fixed">
<el-descriptions-item label="协会名称">
<el-descriptions-item label="社团名称">
{{viewData.clubName}}
</el-descriptions-item>
<el-descriptions-item label="成立时间">
{{ viewData.foundTime }}
</el-descriptions-item>
<el-descriptions-item label="协会编码">
<el-descriptions-item label="社团编码">
{{viewData.clubCode}}
</el-descriptions-item>
<el-descriptions-item label="发起人">
{{ viewData.sponsorName }}
</el-descriptions-item>
<el-descriptions-item label="协会类型">
<el-descriptions-item label="社团类型">
{{ viewData.typeName }}
</el-descriptions-item>
<el-descriptions-item label="报名联系人">
@@ -39,7 +39,7 @@ const REGISTER_INFO_COMPONENT = {
{{viewData.due}}
</el-descriptions-item>
<el-descriptions-item :span="4">
<template slot="label">协会介绍</template>
<template slot="label">社团介绍</template>
<div class="text-left" v-html="viewData.introduce"></div>
</el-descriptions-item>
<el-descriptions-item :span="4">
@@ -16,7 +16,7 @@ const CLUB_ROLE_CONSTANT = {
case this.CLUB_VICE_SECRETARY:
return "副秘书长"
case this.CLUB_MEMBER:
return "协会会员"
return "社团会员"
default:
return ""
}
@@ -18,7 +18,7 @@ const clubUserJoin = {
{{viewData.sex}}
</el-descriptions-item>
<el-descriptions-item label="出生年月">
{{viewData.birthday}}
{{$moment(viewData.birthday).format('YYYY-MM-DD')}}
</el-descriptions-item>
<el-descriptions-item label="联系电话">
{{viewData.mobile}}
@@ -44,7 +44,7 @@ const clubUserJoin = {
<el-descriptions-item label="学位" :span="2">
{{viewData.academicDegree}}
</el-descriptions-item>
<el-descriptions-item label="同时参加其他协会情况" :span="3">
<el-descriptions-item label="同时参加其他社团情况" :span="3">
{{viewData.sameTimeJoinOtherClubSituation}}
</el-descriptions-item>
<el-descriptions-item label="文化、体育方面的活动经历、获奖情况" :span="3">
@@ -7,7 +7,7 @@ layout("/layouts/platform.html"){
<div id="app" v-cloak>
<guava ref="guava">
<el-card v-if="isCanApply" shadow="never">
<snaker-start slot="header" label="年度优秀协会申报" define_key="XHPY"></snaker-start>
<snaker-start slot="header" label="年度优秀社团申报" define_key="XHPY"></snaker-start>
<el-form :model="formData" ref="form" :rules="formRules" label-width="120px" style="padding: 0 30px">
<el-row :gutter="30">
@@ -40,10 +40,10 @@ layout("/layouts/platform.html"){
</el-col>
<el-col :span="8">
<el-form-item label="协会名称" prop="clubId" :rules="{required: true, message: '请选择协会', trigger: 'blur'}">
<el-form-item label="社团名称" prop="clubId" :rules="{required: true, message: '请选择社团', trigger: 'blur'}">
<el-select
v-model="formData.clubId"
placeholder="请选择协会"
placeholder="请选择社团"
filterable
clearable
style="width: 100%"
@@ -185,7 +185,7 @@ layout("/layouts/platform.html"){
}
}
},
//获取当前登录用户管理的协会
//获取当前登录用户管理的社团
async getMyClubAndYearAuditPass() {
const resp = await this.$axios.post("/platform/club/evaluate/apply/getMyClubAndYearAuditPass", {
year: new Date().getFullYear()
@@ -200,7 +200,7 @@ layout("/layouts/platform.html"){
const year = this.$moment().format("YYYY")
// this.isCanApply = year % 2 === 0
// if (this.isCanApply === false) {
// this.$alert("当前年份(" + year + ")不能进行年度优秀协会申报", "温馨提示", {
// this.$alert("当前年份(" + year + ")不能进行年度优秀社团申报", "温馨提示", {
// confirmButtonText: "确定"
// })
// }
@@ -16,8 +16,8 @@ layout("/layouts/platform.html"){
value-format="yyyy"
></el-date-picker>
</search-item>
<search-item label="协会名称">
<el-select v-model="pageForm.clubId" placeholder="请选择协会" filterable clearable style="width: 100%">
<search-item label="社团名称">
<el-select v-model="pageForm.clubId" placeholder="请选择社团" filterable clearable style="width: 100%">
<el-option v-for="item in clubList" :key="item.id" :label="item.clubName" :value="item.id"></el-option>
</el-select>
</search-item>
@@ -33,9 +33,9 @@ layout("/layouts/platform.html"){
</table-tool>
<el-table :data="tableData">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会编码" prop="clubCode" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会类型" prop="typeName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团编码" prop="clubCode" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团类型" prop="typeName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="成立时间" prop="foundTime" sortable show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ row.foundTime ? $moment(row.foundTime).format('YYYY-MM-DD') : '无' }}</span>
@@ -174,7 +174,7 @@ layout("/layouts/platform.html"){
this.$message.warning(resp.msg)
}
},
//获取当前登录用户管理的协会并且年度审核通过的
//获取当前登录用户管理的社团并且年度审核通过的
async getMyClubAndYearAuditPass() {
const resp = await this.$axios.post("/platform/club/evaluate/apply/getMyClubAndYearAuditPass", {
year: this.pageForm.year
@@ -6,9 +6,9 @@ const EVALUATE_INFO_COMPONENT = {
<el-link type="primary" @click="openChart">点击查看流程图</el-link>
</div>
<el-descriptions :column="3" border>
<el-descriptions-item label="协会名称">{{viewData.clubName}}</el-descriptions-item>
<el-descriptions-item label="协会编码">{{viewData.clubCode}}</el-descriptions-item>
<el-descriptions-item label="协会类型">{{viewData.typeName}}</el-descriptions-item>
<el-descriptions-item label="社团名称">{{viewData.clubName}}</el-descriptions-item>
<el-descriptions-item label="社团编码">{{viewData.clubCode}}</el-descriptions-item>
<el-descriptions-item label="社团类型">{{viewData.typeName}}</el-descriptions-item>
<el-descriptions-item label="成立时间">{{viewData.foundTime}}</el-descriptions-item>
<el-descriptions-item label="申报年份">{{$moment(viewData.applyTime).format('YYYY')}}</el-descriptions-item>
<el-descriptions-item label="申报时间">{{viewData.applyTime}}</el-descriptions-item>
@@ -17,8 +17,8 @@ layout("/layouts/platform.html"){
value-format="yyyy"
></el-date-picker>
</search-item>
<search-item label="协会名称">
<el-select v-model="pageForm.clubId" placeholder="请选择协会" filterable clearable style="width: 100%">
<search-item label="社团名称">
<el-select v-model="pageForm.clubId" placeholder="请选择社团" filterable clearable style="width: 100%">
<el-option v-for="item in clubList" :key="item.id" :label="item.clubName" :value="item.id"></el-option>
</el-select>
</search-item>
@@ -31,9 +31,9 @@ layout("/layouts/platform.html"){
</table-tool>
<el-table :data="tableData">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会编码" prop="clubCode" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会类型" prop="typeName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团编码" prop="clubCode" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团类型" prop="typeName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="成立时间" prop="foundTime" sortable show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ row.foundTime ? $moment(row.foundTime).format('YYYY-MM-DD') : '' }}</span>
@@ -137,7 +137,7 @@ layout("/layouts/platform.html"){
this.$message.warning(resp.msg)
}
},
//获取当前登录用户管理的协会并且年度审核通过的
//获取当前登录用户管理的社团并且年度审核通过的
async getMyClubAndYearAuditPass() {
const resp = await this.$axios.post("/platform/club/evaluate/apply/getMyClubAndYearAuditPass", {
year: this.pageForm.year
@@ -16,8 +16,8 @@ layout("/layouts/platform.html"){
value-format="yyyy"
></el-date-picker>
</search-item>
<search-item label="协会名称">
<el-select v-model="pageForm.clubId" placeholder="请选择协会" filterable clearable style="width: 100%">
<search-item label="社团名称">
<el-select v-model="pageForm.clubId" placeholder="请选择社团" filterable clearable style="width: 100%">
<el-option v-for="item in clubList" :key="item.id" :label="item.clubName" :value="item.id"></el-option>
</el-select>
</search-item>
@@ -33,9 +33,9 @@ layout("/layouts/platform.html"){
</table-tool>
<el-table :data="tableData">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会编码" prop="clubCode" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会类型" prop="typeName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团编码" prop="clubCode" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团类型" prop="typeName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="成立时间" prop="foundTime" sortable show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ row.foundTime ? $moment(row.foundTime).format('YYYY-MM-DD') : '无' }}</span>
@@ -174,7 +174,7 @@ layout("/layouts/platform.html"){
this.$message.warning(resp.msg)
}
},
//获取当前登录用户管理的协会并且年度审核通过的
//获取当前登录用户管理的社团并且年度审核通过的
async getMyClubAndYearAuditPass() {
const resp = await this.$axios.post("/platform/club/evaluate/apply/getMyClubAndYearAuditPass", {
year: this.pageForm.year
@@ -16,8 +16,8 @@ layout("/layouts/platform.html"){
value-format="yyyy"
></el-date-picker>
</search-item>
<search-item label="协会名称">
<el-select v-model="pageForm.clubId" placeholder="请选择协会" filterable clearable style="width: 100%">
<search-item label="社团名称">
<el-select v-model="pageForm.clubId" placeholder="请选择社团" filterable clearable style="width: 100%">
<el-option v-for="item in clubList" :key="item.id" :label="item.clubName" :value="item.id"></el-option>
</el-select>
</search-item>
@@ -33,9 +33,9 @@ layout("/layouts/platform.html"){
</table-tool>
<el-table :data="tableData">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会编码" prop="clubCode" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会类型" prop="typeName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团编码" prop="clubCode" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团类型" prop="typeName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="成立时间" prop="foundTime" sortable show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ row.foundTime ? $moment(row.foundTime).format('YYYY-MM-DD') : '无' }}</span>
@@ -174,7 +174,7 @@ layout("/layouts/platform.html"){
this.$message.warning(resp.msg)
}
},
//获取当前登录用户管理的协会并且年度审核通过的
//获取当前登录用户管理的社团并且年度审核通过的
async getMyClubAndYearAuditPass() {
const resp = await this.$axios.post("/platform/club/evaluate/apply/getMyClubAndYearAuditPass", {
year: this.pageForm.year
@@ -98,12 +98,12 @@ layout("/layouts/platform.html"){
<el-col :span="6">
<el-form-item
prop="clubId"
label="协会名称"
:rules="[{required:true,message:'请选择所属协会',trigger:['change','blur']}]"
label="社团名称"
:rules="[{required:true,message:'请选择所属社团',trigger:['change','blur']}]"
>
<el-select
v-model="formData.clubId"
placeholder="请选择所属协会"
placeholder="请选择所属社团"
filterable
clearable
:disabled="!!formData.id"
@@ -633,7 +633,7 @@ layout("/layouts/platform.html"){
taskId: GetQueryString("taskId"),
step: 0, // 当前步骤(0-基础信息,1-财务收支,2-成员名单)
isRegistered: false, // 是否已登记
currentClubId: "", // 当前选中协会ID
currentClubId: "", // 当前选中社团ID
// 金额数据
dueIncome: 0, // 会费收入
@@ -641,9 +641,9 @@ layout("/layouts/platform.html"){
lastYearSurplus: 0, // 去年结余
// 下拉选项&列表数据
clubOptions: [], // 协会选项
clubOptions: [], // 社团选项
memberList: [], // 成员名单
lastClubData: {}, // 上年度协会数据
lastClubData: {}, // 上年度社团数据
// 核心表单数据
formData: {
@@ -700,12 +700,16 @@ layout("/layouts/platform.html"){
}
},
async created() {
this.$alert('请在填报年审材料前,于' + new Date().getFullYear() + '年12月31日前完成以下操作:1.在【入会申请】中审核所有待处理的入会及退会申请;2.在【社团管理】中将已退会人员进行退会处理。', '温馨提示', {
confirmButtonText: '确定',
type: 'warning',
})
try {
if (this.id) {
// 编辑模式:获取详情数据
await this.fetchEditData(this.id);
} else {
// 新增模式:初始化协会列表
// 新增模式:初始化社团列表
await this.fetchClubList();
}
} catch (error) {
@@ -759,7 +763,7 @@ layout("/layouts/platform.html"){
},
/************************ 数据请求方法 ************************/
// 获取协会列表
// 获取社团列表
async fetchClubList() {
const resp = await this.$axios.post("/platform/club/examine/apply/getClubsByRole");
this.clubOptions = resp.data || [];
@@ -786,7 +790,7 @@ layout("/layouts/platform.html"){
// 检查是否已登记
await this.checkIsRegistered();
},
// 获取协会成员数量
// 获取社团成员数量
async fetchClubUserNum(clubId) {
const resp = await this.$axios.post("/platform/club/examine/apply/getClubUserNum", {
clubId,
@@ -827,7 +831,7 @@ layout("/layouts/platform.html"){
});
this.lastYearSurplus = resp.data || 0;
},
// 获取上年度协会数据
// 获取上年度社团数据
async fetchLastClubData() {
const res = await this.$axios.post(loc() + '/getLastData', {
clubId: this.formData.clubId,
@@ -986,11 +990,11 @@ layout("/layouts/platform.html"){
handleYearChange: function() {
this.checkIsRegistered();
},
// 协会变化处理
// 社团变化处理
async handleClubChange(val) {
if (!val) return;
const club = this.clubOptions.find(item => item.id === val);
// 更新协会基础信息
// 更新社团基础信息
this.formData.due = club?.due || "";
this.formData.foundTime = club?.foundTime
? this.$moment(club.foundTime).format("YYYY-MM-DD")
@@ -19,8 +19,8 @@ layout("/layouts/platform.html"){
@change="doSearch"
></el-date-picker>
</search-item>
<search-item label="协会名称">
<el-select v-model="pageForm.clubId" placeholder="请选择协会" filterable clearable style="width: 100%">
<search-item label="社团名称">
<el-select v-model="pageForm.clubId" placeholder="请选择社团" filterable clearable style="width: 100%">
<el-option v-for="item in clubList" :key="item.id" :label="item.clubName" :value="item.id"></el-option>
</el-select>
</search-item>
@@ -37,7 +37,7 @@ layout("/layouts/platform.html"){
<el-table :data="tableData">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="年度" prop="year" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="成立时间" prop="foundTime" sortable show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ $moment(row.foundTime).format('YYYY-MM-DD') }}</span>
@@ -8,7 +8,7 @@ const EXAMINE_INFO_COMPONENT = {
<el-link type="primary" @click="openChart">点击查看流程图</el-link>
</div>
<el-descriptions v-if="viewData" :column="3" border class="table_fixed">
<el-descriptions-item label="协会名称">{{ viewData.clubName }}</el-descriptions-item>
<el-descriptions-item label="社团名称">{{ viewData.clubName }}</el-descriptions-item>
<el-descriptions-item label="成立时间">{{ viewData.foundTime }} </el-descriptions-item>
<el-descriptions-item label="会费标准">{{ viewData.due }}</el-descriptions-item>
<el-descriptions-item span="3">
@@ -16,7 +16,7 @@ const EXAMINE_INFO_COMPONENT = {
<file-preview :files="viewData.summaryFiles" complete_result></file-preview>
</el-descriptions-item>
</el-descriptions>
<div class="process-title">协会成员变化情况</div>
<div class="process-title">社团成员变化情况</div>
<el-table :data="viewData.changeUserNum" max-height="300">
<el-table-column label="序号" type="index" width="50"></el-table-column>
<el-table-column label="教职工类别" prop="userState"></el-table-column>
@@ -73,8 +73,8 @@ const EXAMINE_INFO_COMPONENT = {
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane name="4" label="协会成员">
<div class="process-title">协会成员</div>
<el-tab-pane name="4" label="社团成员">
<div class="process-title">社团成员</div>
<el-table :data="viewData.jgUser">
<el-table-column label="序号" type="index" width="50"></el-table-column>
<el-table-column label="职务" prop="roleName"></el-table-column>
@@ -20,8 +20,8 @@ layout("/layouts/platform.html"){
@change="doSearch"
></el-date-picker>
</search-item>
<search-item label="协会名称">
<el-select v-model="pageForm.clubId" placeholder="请选择协会" filterable clearable style="width: 100%">
<search-item label="社团名称">
<el-select v-model="pageForm.clubId" placeholder="请选择社团" filterable clearable style="width: 100%">
<el-option v-for="item in clubList" :key="item.id" :label="item.clubName" :value="item.id"></el-option>
</el-select>
</search-item>
@@ -33,7 +33,7 @@ layout("/layouts/platform.html"){
<el-table :data="tableData">
<el-table-column :index="indexMethod" label="序号" type="index" width="80"></el-table-column>
<el-table-column label="年度" prop="year" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="成立时间" prop="foundTime" sortable show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ $moment(row.foundTime).format('YYYY-MM-DD') }}</span>
@@ -19,8 +19,8 @@ layout("/layouts/platform.html"){
@change="doSearch"
></el-date-picker>
</search-item>
<search-item label="协会名称">
<el-select v-model="pageForm.clubId" placeholder="请选择协会" filterable clearable style="width: 100%">
<search-item label="社团名称">
<el-select v-model="pageForm.clubId" placeholder="请选择社团" filterable clearable style="width: 100%">
<el-option v-for="item in clubList" :key="item.id" :label="item.clubName" :value="item.id"></el-option>
</el-select>
</search-item>
@@ -37,7 +37,7 @@ layout("/layouts/platform.html"){
<el-table :data="tableData">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="年度" prop="year" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="成立时间" prop="foundTime" sortable show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ $moment(row.foundTime).format('YYYY-MM-DD') }}</span>
@@ -19,8 +19,8 @@ layout("/layouts/platform.html"){
@change="doSearch"
></el-date-picker>
</search-item>
<search-item label="协会名称">
<el-select v-model="pageForm.clubId" placeholder="请选择协会" filterable clearable style="width: 100%">
<search-item label="社团名称">
<el-select v-model="pageForm.clubId" placeholder="请选择社团" filterable clearable style="width: 100%">
<el-option v-for="item in clubList" :key="item.id" :label="item.clubName" :value="item.id"></el-option>
</el-select>
</search-item>
@@ -37,7 +37,7 @@ layout("/layouts/platform.html"){
<el-table :data="tableData">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="年度" prop="year" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="成立时间" prop="foundTime" sortable show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ $moment(row.foundTime).format('YYYY-MM-DD') }}</span>
@@ -17,11 +17,11 @@ layout("/layouts/platform.html"){
value-format="yyyy"
></el-date-picker>
</search-item>
<search-item label="协会名称">
<search-item label="社团名称">
<el-input
@keyup.enter.native="doSearch"
clearable
placeholder="请输入协会名称"
placeholder="请输入社团名称"
clearable
style="width: 100%"
v-model="pageForm.clubName"
@@ -39,7 +39,7 @@ layout("/layouts/platform.html"){
</table-tool>
<el-table :data="tableData">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="申请人" prop="userName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="申请时间" prop="creatTime" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="变更用户" prop="changeUserName" sortable show-overflow-tooltip></el-table-column>
@@ -17,11 +17,11 @@ layout("/layouts/platform.html"){
value-format="yyyy"
></el-date-picker>
</search-item>
<search-item label="协会名称">
<search-item label="社团名称">
<el-input
@keyup.enter.native="doSearch"
clearable
placeholder="请输入协会名称"
placeholder="请输入社团名称"
clearable
style="width: 100%"
v-model="pageForm.clubName"
@@ -39,7 +39,7 @@ layout("/layouts/platform.html"){
</table-tool>
<el-table :data="tableData">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="申请人" prop="userName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="申请时间" prop="creatTime" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="变更用户" prop="changeUserName" sortable show-overflow-tooltip></el-table-column>
@@ -71,8 +71,8 @@ layout("/layouts/platform.html"){
</template>
<template #edit>
<el-form :model="formData" ref="formRef" size="small" label-width="80px" :rules="formRules">
<el-form-item label="协会名称" prop="clubId">
<el-select v-model="formData.clubId" @change="clubChange" placeholder="请选择协会" filterable clearable style="width: 100%">
<el-form-item label="社团名称" prop="clubId">
<el-select v-model="formData.clubId" @change="clubChange" placeholder="请选择社团" filterable clearable style="width: 100%">
<el-option v-for="item in clubList" :key="item.id" :label="item.clubName" :value="item.id"></el-option>
</el-select>
</el-form-item>
@@ -100,19 +100,19 @@ layout("/layouts/platform.html"){
<el-option label="二十届" value="二十届"></el-option>
</el-select>
</el-form-item>
<el-form-item label="协会成员" prop="userId">
<el-select v-model="formData.userId" @change="userChange" placeholder="请选择协会成员" filterable clearable style="width: 100%">
<el-form-item label="社团成员" prop="userId">
<el-select v-model="formData.userId" @change="userChange" placeholder="请选择社团成员" filterable clearable style="width: 100%">
<el-option v-for="item,index in userList" :key="index" :label="item.userName" :value="item.userId"></el-option>
</el-select>
</el-form-item>
<el-form-item label="身份" prop="nowRoleCode">
<el-checkbox-group v-model="formData.nowRoleCode">
<el-checkbox label="CLUB_PRESIDENT">协会会长</el-checkbox>
<el-checkbox label="CLUB_VICE_PRESIDENT">协会副会长</el-checkbox>
<el-checkbox label="CLUB_SECRETARY">协会秘书长</el-checkbox>
<el-checkbox label="CLUB_VICE_SECRETARY">协会副秘书长</el-checkbox>
<el-checkbox label="CLUB_OPERATOR">协会操作员</el-checkbox>
<el-checkbox label="CLUB_MEMBER">协会会员</el-checkbox>
<el-checkbox label="CLUB_PRESIDENT">社团会长</el-checkbox>
<el-checkbox label="CLUB_VICE_PRESIDENT">社团副会长</el-checkbox>
<el-checkbox label="CLUB_SECRETARY">社团秘书长</el-checkbox>
<el-checkbox label="CLUB_VICE_SECRETARY">社团副秘书长</el-checkbox>
<el-checkbox label="CLUB_OPERATOR">社团操作员</el-checkbox>
<el-checkbox label="CLUB_MEMBER">社团会员</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-form>
@@ -235,6 +235,8 @@ layout("/layouts/platform.html"){
this.pageData()
this.$message.success(res.msg)
this.$refs.guava.index()
} else {
this.$message.error(res.msg)
}
})
})
@@ -257,6 +259,8 @@ layout("/layouts/platform.html"){
this.pageData()
this.$message.success(res.msg)
this.$refs.guava.index()
} else {
this.$message.error(res.msg)
}
})
})
@@ -6,7 +6,7 @@ const clubManagerInfo = {
<el-link type="primary" @click="openChart">点击查看流程图</el-link>
</div>
<el-descriptions :column="3" border>
<el-descriptions-item label="所属协会">{{ viewData.clubName }}</el-descriptions-item>
<el-descriptions-item label="所属社团">{{ viewData.clubName }}</el-descriptions-item>
<el-descriptions-item label="申请人">{{ viewData.userName }}</el-descriptions-item>
<el-descriptions-item label="申请时间">{{ viewData.creatTime }}</el-descriptions-item>
<el-descriptions-item label="变更用户">{{ viewData.changeUserName }}</el-descriptions-item>
@@ -25,7 +25,7 @@ const CLUB_INFO_MANAGE_TEMPLATE = {
</template>
<el-radio-group @change="doSearch" style="margin-left: 10px" v-model="pageForm.radioType" size="small">
<el-radio-button label="3">全部</el-radio-button>
<el-radio-button label="2">协会成员</el-radio-button>
<el-radio-button label="2">社团成员</el-radio-button>
<el-radio-button label="1">理事机构</el-radio-button>
</el-radio-group>
</table-tool>
@@ -127,13 +127,13 @@ const CLUB_INFO_MANAGE_TEMPLATE = {
</el-form-item>
<el-form-item prop="roleCode" label="身份">
<el-checkbox-group v-model="roleCodeFormData.roleCode">
<el-checkbox label="CLUB_PRESIDENT">协会会长</el-checkbox>
<el-checkbox label="CLUB_VICE_PRESIDENT">协会副会长</el-checkbox>
<el-checkbox label="CLUB_SECRETARY">协会秘书长</el-checkbox>
<el-checkbox label="CLUB_VICE_SECRETARY">协会副秘书长</el-checkbox>
<el-checkbox label="CLUB_OPERATOR">协会操作员</el-checkbox>
<el-checkbox label="CLUB_REIMBURSEMENT_MANAGER">协会报销负责人</el-checkbox>
<el-checkbox label="CLUB_MEMBER">协会会员</el-checkbox>
<el-checkbox label="CLUB_PRESIDENT">社团会长</el-checkbox>
<el-checkbox label="CLUB_VICE_PRESIDENT">社团副会长</el-checkbox>
<el-checkbox label="CLUB_SECRETARY">社团秘书长</el-checkbox>
<el-checkbox label="CLUB_VICE_SECRETARY">社团副秘书长</el-checkbox>
<el-checkbox label="CLUB_OPERATOR">社团操作员</el-checkbox>
<el-checkbox label="CLUB_REIMBURSEMENT_MANAGER">社团报销负责人</el-checkbox>
<el-checkbox label="CLUB_MEMBER">社团会员</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-form>
@@ -119,11 +119,11 @@ layout("/layouts/platform.html"){
if (clubId !== "") {
const resp = await this.$axios.post("/platform/club/register/clubRegisterApply/info", { id: clubId })
if (resp.code === 0) {
// await this.userRemoteMethod(resp.data.concatPerson)
await this.userRemoteMethod(resp.data.concatPerson)
// let formData = resp.data
// formData.foundTime = ""
// this.$refs.clubFormRef.formData = formData
// await this.$refs.clubFormRef.concatPersonChange(resp.data.concatPerson)
this.$refs.clubFormRef.concatPersonChange(resp.data.concatPerson)
this.$refs.clubFormRef.formData = resp.data
}
}
@@ -3,11 +3,11 @@ const SCHOOL_CLUB_MANAGE_TEMPLATE = {
<div>
<el-card shadow="never">
<search @search="doSearch">
<search-item label="协会名称">
<search-item label="社团名称">
<el-input
@keyup.enter.native="doSearch"
clearable
placeholder="请输入协会名称"
placeholder="请输入社团名称"
clearable
style="width: 100%"
v-model="pageForm.clubName"
@@ -20,15 +20,15 @@ const SCHOOL_CLUB_MANAGE_TEMPLATE = {
</search>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="协会列表">
<table-tool label="社团列表">
<template>
</template>
</table-tool>
<el-table :data="tableData" row-key="id">
<el-table-column :index="indexMethod" label="序号" type="index" width="70"></el-table-column>
<el-table-column label="协会编码" sortable prop="clubCode"></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable></el-table-column>
<el-table-column label="社团编码" sortable prop="clubCode"></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable></el-table-column>
<el-table-column label="会长" prop="clubLeader" show-overflow-tooltip></el-table-column>
<el-table-column label="秘书长" prop="clubSecretary" show-overflow-tooltip></el-table-column>
<el-table-column label="当前人数" show-overflow-tooltip prop="currentNum"></el-table-column>
@@ -26,8 +26,8 @@ layout("/layouts/platform.html"){
@change="doSearch"
></el-date-picker>
</search-item>
<search-item label="协会名称">
<el-select clearable filterable placeholder="请选择协会" @change="doSearch"
<search-item label="社团名称">
<el-select clearable filterable placeholder="请选择社团" @change="doSearch"
style="width: 100%;" v-model="pageForm.clubId">
<el-option :label="item.clubName" :value="item.id"
v-for="item in clubs"></el-option>
@@ -67,7 +67,7 @@ layout("/layouts/platform.html"){
width="55">
</el-table-column>
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="工号" prop="loginName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="姓名" prop="userName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="所属单位" prop="unitName" sortable show-overflow-tooltip></el-table-column>
@@ -17,11 +17,11 @@ layout("/layouts/platform.html"){
value-format="yyyy"
></el-date-picker>
</search-item>
<search-item label="协会名称">
<search-item label="社团名称">
<el-input
@keyup.enter.native="doSearch"
clearable
placeholder="请输入协会名称"
placeholder="请输入社团名称"
clearable
style="width: 100%"
v-model="pageForm.clubName"
@@ -39,7 +39,7 @@ layout("/layouts/platform.html"){
</table-tool>
<el-table :data="tableData">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="申请人" prop="userName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="申请时间" prop="creatTime" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="当前节点" prop="taskName" show-overflow-tooltip></el-table-column>
@@ -69,8 +69,8 @@ layout("/layouts/platform.html"){
<template #edit>
<el-form :model="formData" ref="formRef" size="small" label-width="80px" :rules="formRules">
<el-form-item label="协会名称" prop="clubId">
<el-select v-model="formData.clubId" placeholder="请选择协会" filterable clearable style="width: 100%">
<el-form-item label="社团名称" prop="clubId">
<el-select v-model="formData.clubId" placeholder="请选择社团" filterable clearable style="width: 100%">
<el-option v-for="item in clubList" :key="item.id" :label="item.clubName" :value="item.id"></el-option>
</el-select>
</el-form-item>
@@ -6,7 +6,7 @@ const clubRefreshInfo = {
<el-link type="primary" @click="openChart">点击查看流程图</el-link>
</div>
<el-descriptions :column="3" border>
<el-descriptions-item label="所属协会">{{ viewData.clubName }}</el-descriptions-item>
<el-descriptions-item label="所属社团">{{ viewData.clubName }}</el-descriptions-item>
<el-descriptions-item label="申请人">{{ viewData.userName }}</el-descriptions-item>
<el-descriptions-item label="申请时间">{{ viewData.creatTime }}</el-descriptions-item>
<el-descriptions-item label="上一次换届报告" :span="3">
@@ -17,11 +17,11 @@ layout("/layouts/platform.html"){
value-format="yyyy"
></el-date-picker>
</search-item>
<search-item label="协会名称">
<search-item label="社团名称">
<el-input
@keyup.enter.native="doSearch"
clearable
placeholder="请输入协会名称"
placeholder="请输入社团名称"
clearable
style="width: 100%"
v-model="pageForm.clubName"
@@ -39,7 +39,7 @@ layout("/layouts/platform.html"){
</table-tool>
<el-table :data="tableData">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="申请人" prop="userName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="申请时间" prop="creatTime" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="当前节点" prop="taskName" show-overflow-tooltip></el-table-column>
@@ -68,12 +68,12 @@ layout("/layouts/platform.html"){
</template>
<template #edit>
<el-form :model="formData" ref="formRef" size="small" label-width="80px" :rules="formRules">
<el-form-item label="协会名称" prop="clubId">
<el-select v-model="formData.clubId" placeholder="请选择协会" filterable clearable style="width: 100%">
<el-form-item label="社团名称" prop="clubId">
<el-select v-model="formData.clubId" placeholder="请选择社团" filterable clearable style="width: 100%">
<el-option v-for="item in clubList" :key="item.id" :label="item.clubName" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="协会章程" prop="files">
<el-form-item label="社团章程" prop="files">
<file-upload
:value.sync="formData.files"
:upload_number="1"
@@ -6,14 +6,14 @@ const clubRuleInfo = {
<el-link type="primary" @click="openChart">点击查看流程图</el-link>
</div>
<el-descriptions :column="3" border>
<el-descriptions-item label="所属协会">{{ viewData.clubName }}</el-descriptions-item>
<el-descriptions-item label="所属社团">{{ viewData.clubName }}</el-descriptions-item>
<el-descriptions-item label="申请人">{{ viewData.userName }}</el-descriptions-item>
<el-descriptions-item label="申请时间">{{ viewData.creatTime }}</el-descriptions-item>
<el-descriptions-item label="上一次协会章程" :span="3">
<el-descriptions-item label="上一次社团章程" :span="3">
<file-preview v-if="viewData.lastFiles && viewData.lastFiles.length > 0" :files="viewData.lastFiles" complete_result></file-preview>
<span v-else>暂无附件</span>
</el-descriptions-item>
<el-descriptions-item label="协会章程" :span="3">
<el-descriptions-item label="社团章程" :span="3">
<file-preview v-if="viewData.files && viewData.files.length > 0" :files="viewData.files" complete_result></file-preview>
<span v-else>暂无附件</span>
</el-descriptions-item>
@@ -17,11 +17,11 @@ layout("/layouts/platform.html"){
value-format="yyyy"
></el-date-picker>
</search-item>
<search-item label="协会名称">
<search-item label="社团名称">
<el-input
@keyup.enter.native="doSearch"
clearable
placeholder="请输入协会名称"
placeholder="请输入社团名称"
clearable
style="width: 100%"
v-model="pageForm.clubName"
@@ -39,7 +39,7 @@ layout("/layouts/platform.html"){
</table-tool>
<el-table :data="tableData">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="申请人" prop="userName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="申请时间" prop="creatTime" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
@@ -17,11 +17,11 @@ layout("/layouts/platform.html"){
value-format="yyyy"
></el-date-picker>
</search-item>
<search-item label="协会名称">
<search-item label="社团名称">
<el-input
@keyup.enter.native="doSearch"
clearable
placeholder="请输入协会名称"
placeholder="请输入社团名称"
clearable
style="width: 100%"
v-model="pageForm.clubName"
@@ -39,7 +39,7 @@ layout("/layouts/platform.html"){
</table-tool>
<el-table :data="tableData">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="申请人" prop="userName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="申请时间" prop="creatTime" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
@@ -4,12 +4,12 @@ layout("/layouts/platform.html"){
<div id="app" v-cloak>
<custom-card>
<snaker-start slot="header" label="文体协会会员申请" define_key="XHRH"></snaker-start>
<snaker-start slot="header" label="文体社团会员申请" define_key="XHRH"></snaker-start>
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix="" class="flow-task-form">
<el-descriptions border class="descriptions-form">
<el-descriptions-item label="协会" :span="3">
<el-form-item prop="clubId" label="协会">
<el-select v-model="formData.clubId" filterable @change="checkApplyClub" placeholder="请选择协会">
<el-descriptions-item label="社团" :span="3">
<el-form-item prop="clubId" label="社团">
<el-select v-model="formData.clubId" filterable @change="checkApplyClub" placeholder="请选择社团">
<el-option v-for="item in clubOptions" :label="item.clubName" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
@@ -75,12 +75,12 @@ layout("/layouts/platform.html"){
<el-input :value="formData.academicDegree" readonly placeholder="读取信息中心数据"></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="同时参加其他协会情况" :span="3">
<el-form-item prop="sameTimeJoinOtherClubSituation" label="同时参加其他协会情况">
<el-descriptions-item label="同时参加其他社团情况" :span="3">
<el-form-item prop="sameTimeJoinOtherClubSituation" label="同时参加其他社团情况">
<el-input
maxlength="500"
v-model="formData.sameTimeJoinOtherClubSituation"
placeholder="请填写同时参加其他协会情况"
placeholder="请填写同时参加其他社团情况"
type="textarea"
:autosize="{ minRows: 4, maxRows: 6}"
></el-input>
@@ -114,7 +114,7 @@ layout("/layouts/platform.html"){
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="本人承诺" :span="3">
<el-checkbox v-model="isAgree">注:本人已仔细阅读并愿意遵守所参加本校教职工文体协会的章程和规定,自愿加入所报名协会</el-checkbox>
<el-checkbox v-model="isAgree">注:本人已仔细阅读并愿意遵守所参加本校教职工文体社团的章程和规定,自愿加入所报名社团</el-checkbox>
</el-descriptions-item>
</el-descriptions>
</el-form>
@@ -40,7 +40,7 @@ layout("/layouts/platform.html"){
</el-card>
<el-card shadow="never">
<table-tool>
<table-tool label="温馨提醒:如您收到短信,并且下方没有数据,可能是其他理事成员已审核,审核信息请切换已审核查看">
<el-radio-group v-model="pageForm.approval" size="small" @change="doSearch">
<el-radio-button :label="true">已审核</el-radio-button>
<el-radio-button :label="false">未审核</el-radio-button>
@@ -53,7 +53,7 @@ layout("/layouts/platform.html"){
<el-table-column prop="sex" label="性别"></el-table-column>
<el-table-column prop="unitName" label="单位" show-overflow-tooltip></el-table-column>
<el-table-column prop="unionName" label="分工会" show-overflow-tooltip></el-table-column>
<el-table-column prop="clubName" label="申请协会" show-overflow-tooltip></el-table-column>
<el-table-column prop="clubName" label="申请社团" show-overflow-tooltip></el-table-column>
<el-table-column prop="mode" label="申请模式">
<template slot-scope="scope">
<el-tag size="mini" v-if="scope.row.mode" type="success">加入</el-tag>
@@ -18,11 +18,11 @@ layout("/layouts/platform.html"){
<template>
<el-card shadow="never">
<search @search="doSearch">
<search-item label="协会名称:">
<search-item label="社团名称:">
<el-input
@keyup.enter.native="doSearch"
clearable
placeholder="请输入协会名称"
placeholder="请输入社团名称"
clearable
style="width: 100%"
v-model="pageForm.clubName"
@@ -32,16 +32,16 @@ layout("/layouts/platform.html"){
</el-card>
<el-card shadow="never">
<table-tool label="协会列表">
<table-tool label="社团列表">
<el-radio-group v-model="hasJoin" @change="joinChange" size="small">
<el-radio-button :label="false">{{'可加入协会' + noJoinCount + '(入会)'}}</el-radio-button>
<el-radio-button :label="true">{{'已加入协会' + hasJoinCount + '(退会)'}}</el-radio-button>
<el-radio-button :label="false">{{'可加入社团' + noJoinCount + '(入会)'}}</el-radio-button>
<el-radio-button :label="true">{{'已加入社团' + hasJoinCount + '(退会)'}}</el-radio-button>
</el-radio-group>
</table-tool>
<el-table :data="tableData" row-key="id" style="width: 100%">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会编码" sortable prop="clubCode"></el-table-column>
<el-table-column label="协会名称" prop="clubName" show-overflow-tooltip width="200px"></el-table-column>
<el-table-column label="社团编码" sortable prop="clubCode"></el-table-column>
<el-table-column label="社团名称" prop="clubName" show-overflow-tooltip width="200px"></el-table-column>
<el-table-column label="成立时间" prop="foundTime"></el-table-column>
<el-table-column label="会长" prop="clubLeader" show-overflow-tooltip></el-table-column>
<el-table-column label="秘书长" prop="clubSecretary" show-overflow-tooltip></el-table-column>
@@ -61,12 +61,12 @@ layout("/layouts/platform.html"){
<template #view>
<el-descriptions class="margin-top" title="" :column="2" border>
<el-descriptions-item span="2">
<template slot="label">协会名称</template>
<template slot="label">社团名称</template>
<div v-html="viewData.clubName"></div>
</el-descriptions-item>
<el-descriptions-item label="成立时间">{{viewData.foundTime}}</el-descriptions-item>
<el-descriptions-item label="协会编码">{{viewData.clubCode}}</el-descriptions-item>
<el-descriptions-item label="协会类型">{{viewData.typeName}}</el-descriptions-item>
<el-descriptions-item label="社团编码">{{viewData.clubCode}}</el-descriptions-item>
<el-descriptions-item label="社团类型">{{viewData.typeName}}</el-descriptions-item>
<el-descriptions-item label="发起人">{{viewData.sponsorName}}</el-descriptions-item>
<el-descriptions-item label="报名联系人">{{viewData.concatPersonName}}</el-descriptions-item>
<el-descriptions-item label="联系人电话">{{viewData.concatPersonMobile}}</el-descriptions-item>
@@ -80,15 +80,15 @@ layout("/layouts/platform.html"){
{{viewData.currentPeopleNum}}
</el-descriptions-item>
<el-descriptions-item span="2">
<template slot="label">协会介绍</template>
<template slot="label">社团介绍</template>
<div class="text-left" v-html="viewData.introduce"></div>
</el-descriptions-item>
<el-descriptions-item span="2">
<template slot="label">协会宗旨</template>
<template slot="label">社团宗旨</template>
<div class="text-left" v-html="viewData.purpose"></div>
</el-descriptions-item>
<el-descriptions-item span="2">
<template slot="label">协会章程</template>
<template slot="label">社团章程</template>
<file-preview :files="viewData.rulesFile" complete_result></file-preview>
</el-descriptions-item>
<el-descriptions-item span="2">
@@ -25,7 +25,7 @@ layout("/layouts/platform.html"){
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
<el-table-column prop="userName" label="姓名"></el-table-column>
<el-table-column prop="loginName" label="工号"></el-table-column>
<el-table-column prop="clubName" label="协会名称"></el-table-column>
<el-table-column prop="clubName" label="社团名称"></el-table-column>
<el-table-column prop="mode" label="申请模式">
<template v-slot="scope">
<el-tag size="mini" v-if="scope.row.mode" type="success">加入</el-tag>
@@ -33,7 +33,7 @@ layout("/layouts/platform.html"){
</template>
</el-table-column>
<el-table-column prop="applyDate" label="申请时间"></el-table-column>
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
<el-table-column label="当前节点" prop="taskName" show-overflow-tooltip></el-table-column>
<el-table-column label="流程状态" prop="instanceState" show-overflow-tooltip>
<template v-slot="{ row }">
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
@@ -18,11 +18,11 @@ layout("/layouts/platform.html"){
<template>
<el-card shadow="never">
<search @search="doSearch">
<search-item label="协会名称:">
<search-item label="社团名称:">
<el-input
@keyup.enter.native="doSearch"
clearable
placeholder="请输入协会名称"
placeholder="请输入社团名称"
clearable
style="width: 100%"
v-model="pageForm.clubName"
@@ -32,11 +32,11 @@ layout("/layouts/platform.html"){
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="协会列表"></table-tool>
<table-tool label="社团列表"></table-tool>
<el-table :data="tableData" row-key="id" style="width: 100%">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会编码" sortable prop="clubCode"></el-table-column>
<el-table-column label="协会名称" prop="clubName" show-overflow-tooltip
<el-table-column label="社团编码" sortable prop="clubCode"></el-table-column>
<el-table-column label="社团名称" prop="clubName" show-overflow-tooltip
width="200px"></el-table-column>
<el-table-column label="成立时间" prop="foundTime"></el-table-column>
<el-table-column label="会长" prop="clubLeader" show-overflow-tooltip></el-table-column>
@@ -56,25 +56,25 @@ layout("/layouts/platform.html"){
<template #view>
<el-tabs tab-position="top" v-model="activeName">
<el-tab-pane label="协会基础信息" name="1">
<el-tab-pane label="社团基础信息" name="1">
<el-descriptions style="margin-top: 20px;" class="margin-top" title="" :column="2" border>
<el-descriptions-item label="协会名称">{{viewData.clubName}}</el-descriptions-item>
<el-descriptions-item label="社团名称">{{viewData.clubName}}</el-descriptions-item>
<el-descriptions-item label="成立时间">{{viewData.foundTime}}</el-descriptions-item>
<el-descriptions-item label="协会编码">{{viewData.clubCode}}</el-descriptions-item>
<el-descriptions-item label="协会类型">{{viewData.typeName}}</el-descriptions-item>
<el-descriptions-item label="社团编码">{{viewData.clubCode}}</el-descriptions-item>
<el-descriptions-item label="社团类型">{{viewData.typeName}}</el-descriptions-item>
<el-descriptions-item label="发起人">{{viewData.sponsorName}}</el-descriptions-item>
<el-descriptions-item label="会费标准">{{viewData.due}}</el-descriptions-item>
<el-descriptions-item label="当前人数">{{viewData.currentPeopleNum}}</el-descriptions-item>
<el-descriptions-item span="2">
<template slot="label">协会介绍</template>
<template slot="label">社团介绍</template>
<div class="text-left" v-html="viewData.introduce"></div>
</el-descriptions-item>
<el-descriptions-item span="2">
<template slot="label">协会宗旨</template>
<template slot="label">社团宗旨</template>
<div class="text-left" v-html="viewData.purpose"></div>
</el-descriptions-item>
<el-descriptions-item span="2">
<template slot="label">协会章程</template>
<template slot="label">社团章程</template>
<file-preview :files="viewData.rulesFile" complete_result></file-preview>
</el-descriptions-item>
<el-descriptions-item span="2">
@@ -83,7 +83,7 @@ layout("/layouts/platform.html"){
</el-descriptions-item>
</el-descriptions>
</el-tab-pane>
<el-tab-pane label="协会人员信息" name="2">
<el-tab-pane label="社团人员信息" name="2">
<el-table :data="clubUsers" row-key="id" style="width: 100%;margin-top: 20px">
<el-table-column :index="indexMethod" label="序号" type="index" width="70"></el-table-column>
<el-table-column label="工号" prop="loginName" show-overflow-tooltip sortable></el-table-column>
@@ -46,7 +46,7 @@ layout("/layouts/platform.html"){
<el-table-column prop="sex" label="性别"></el-table-column>
<el-table-column prop="unitName" label="单位" show-overflow-tooltip></el-table-column>
<el-table-column prop="unionName" label="分工会" show-overflow-tooltip></el-table-column>
<el-table-column prop="clubName" label="申请协会" show-overflow-tooltip></el-table-column>
<el-table-column prop="clubName" label="申请社团" show-overflow-tooltip></el-table-column>
<el-table-column prop="mode" label="申请模式">
<template slot-scope="scope">
<el-tag size="mini" v-if="scope.row.mode" type="success">加入</el-tag>
@@ -4,22 +4,22 @@ const CLUB_FORM_TEMPLATE = {
<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="clubName">
<el-input maxlength="100" placeholder="请输入协会名称" v-model="formData.clubName" type="text"></el-input>
<el-form-item label="社团名称" prop="clubName">
<el-input maxlength="100" placeholder="请输入社团名称" v-model="formData.clubName" type="text"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="协会编码" prop="clubCode" required>
<el-input v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN')" placeholder="请输入协会编码" v-model="formData.clubCode"></el-input>
<el-input v-else placeholder="请输入协会编码" v-model="formData.clubCode" disabled></el-input>
<el-form-item label="社团编码" prop="clubCode" required>
<el-input v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN')" placeholder="请输入社团编码" v-model="formData.clubCode"></el-input>
<el-input v-else placeholder="请输入社团编码" v-model="formData.clubCode" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="协会类型" prop="clubType">
<dict-select placeholder="请选择协会类型" v-model="formData.clubType" code="CLUB_REGISTER_TYPE" style="width: 100%"></dict-select>
<el-form-item label="社团类型" prop="clubType">
<dict-select placeholder="请选择社团类型" v-model="formData.clubType" code="CLUB_REGISTER_TYPE" style="width: 100%"></dict-select>
</el-form-item>
</el-col>
<el-col :span="12">
@@ -79,7 +79,7 @@ const CLUB_FORM_TEMPLATE = {
</el-col>
</el-row>
<el-form-item label="协会介绍及宗旨" prop="introduce">
<el-form-item label="社团介绍及宗旨" prop="introduce">
<text-editor v-model="formData.introduce"></text-editor>
</el-form-item>
@@ -159,10 +159,10 @@ const CLUB_FORM_TEMPLATE = {
clubType: ""
},
formRules: {
clubName: [{ required: true, message: "请填写协会名称", trigger: ["blur", "change"] }],
clubCode: [{ required: false, message: "请填写协会编码", trigger: ["blur", "change"] }],
clubType: [{ required: true, message: "请选择协会类型", trigger: ["blur", "change"] }],
//concatPerson: [{ required: true, message: "请选择协会联系人", trigger: ["blur", "change"] }],
clubName: [{ required: true, message: "请填写社团名称", trigger: ["blur", "change"] }],
clubCode: [{ required: false, message: "请填写社团编码", trigger: ["blur", "change"] }],
clubType: [{ required: true, message: "请选择社团类型", trigger: ["blur", "change"] }],
//concatPerson: [{ required: true, message: "请选择社团联系人", trigger: ["blur", "change"] }],
foundTime: [{ required: true, message: "请选择成立时间", trigger: ["blur", "change"] }],
establishReport: [{ required: true, message: "请上传申请成立报告", trigger: ["blur", "change"] }],
rulesFile: [{ required: true, message: "请上传章程草案", trigger: ["blur", "change"] }],
@@ -14,13 +14,13 @@ layout("/layouts/platform.html"){
<div id="app" v-cloak>
<custom-card>
<snaker-start slot="header" label="注册协会" define_key="XHZC"></snaker-start>
<snaker-start slot="header" label="注册社团" define_key="XHZC"></snaker-start>
<!--步骤条-->
<el-steps :active="activeName" finish-status="success" simple>
<el-step title="协会基本信息"></el-step>
<el-step title="协会发起人"></el-step>
<el-step title="协会理事机构"></el-step>
<el-step title="社团基本信息"></el-step>
<el-step title="社团发起人"></el-step>
<el-step title="社团理事机构"></el-step>
</el-steps>
<div style="margin-top: 10px">
@@ -108,33 +108,35 @@ layout("/layouts/platform.html"){
async doHandle(type) {
let formData = {}
try {
let hz = this.$refs.clubManagerRef.managePerson.filter((o) => o.roleCode === CLUB_ROLE_CONSTANT.CLUB_PRESIDENT)
if (hz.length !== 1) {
this.$message.warning({ title: "警告", message: "会长需要1人" })
return
}
let msz = this.$refs.clubManagerRef.managePerson.filter((o) => o.roleCode === CLUB_ROLE_CONSTANT.CLUB_SECRETARY)
if (msz.length !== 1) {
this.$message.warning({ title: "警告", message: "秘书长需要1人" })
return
}
formData.sponsor = this.$refs.clubSponsorRef.sponsorData
.filter((o) => o.userId !== "" && o.userId !== undefined)
.map((o) => o.userId)
if (['onFinishTask', 'onSubmit'].includes(type) && formData.sponsor && formData.sponsor.length < 3) {
this.$message.warning({ title: "警告", message: "发起人要求不少于3人" })
return
}
let manageValid = false
for (const item of this.$refs.clubManagerRef.managePerson) {
if (!item.userId) {
manageValid = true
break
if("onSave" !== type) {
let hz = this.$refs.clubManagerRef.managePerson.filter((o) => o.roleCode === CLUB_ROLE_CONSTANT.CLUB_PRESIDENT)
if (hz.length !== 1) {
this.$message.warning({ title: "警告", message: "会长需要1人" })
return
}
let msz = this.$refs.clubManagerRef.managePerson.filter((o) => o.roleCode === CLUB_ROLE_CONSTANT.CLUB_SECRETARY)
if (msz.length !== 1) {
this.$message.warning({ title: "警告", message: "秘书长需要1人" })
return
}
formData.sponsor = this.$refs.clubSponsorRef.sponsorData
.filter((o) => o.userId !== "" && o.userId !== undefined)
.map((o) => o.userId)
if (['onFinishTask', 'onSubmit'].includes(type) && formData.sponsor && formData.sponsor.length < 3) {
this.$message.warning({ title: "警告", message: "发起人要求不少于3人" })
return
}
let manageValid = false
for (const item of this.$refs.clubManagerRef.managePerson) {
if (!item.userId) {
manageValid = true
break
}
}
if (['onFinishTask', 'onSubmit'].includes(type) && (this.$refs.clubManagerRef.managePerson.length === 0 || manageValid)) {
this.$message.warning({ title: "警告", message: "请填写理事机构信息" })
return
}
}
if (['onFinishTask', 'onSubmit'].includes(type) && (this.$refs.clubManagerRef.managePerson.length === 0 || manageValid)) {
this.$message.warning({ title: "警告", message: "请填写理事机构信息" })
return
}
const cloneData = clone(this.$refs.clubFormRef.formData)
let array = []
@@ -20,11 +20,11 @@ layout("/layouts/platform.html"){
value-format="yyyy"
></el-date-picker>
</search-item>
<search-item label="协会名称:">
<search-item label="社团名称:">
<el-input
@keyup.enter.native="doSearch"
clearable
placeholder="请输入协会名称"
placeholder="请输入社团名称"
clearable
style="width: 100%"
v-model="pageForm.clubName"
@@ -42,8 +42,8 @@ layout("/layouts/platform.html"){
</table-tool>
<el-table :data="tableData" :size="tableSize">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会类型" prop="typeName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团类型" prop="typeName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="申请时间" prop="createTime" sortable show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ $moment(row.createTime).format('YYYY-MM-DD') }}</span>
@@ -16,11 +16,11 @@ layout("/layouts/platform.html"){
value-format="yyyy"
></el-date-picker>
</search-item>
<search-item label="协会名称:">
<search-item label="社团名称:">
<el-input
@keyup.enter.native="doSearch"
clearable
placeholder="请输入协会名称"
placeholder="请输入社团名称"
clearable
style="width: 100%"
v-model="pageForm.clubName"
@@ -29,14 +29,14 @@ layout("/layouts/platform.html"){
</search>
</el-card>
<el-card class="mt10" shadow="never">
<table-tool label="协会列表">
<!-- <el-button @click="openAdd" size="medium" type="primary">协会注册</el-button>-->
<table-tool label="社团列表">
<!-- <el-button @click="openAdd" size="medium" type="primary">社团注册</el-button>-->
</table-tool>
<el-table :data="tableData" :size="tableSize">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会编码" prop="clubCode" sortable></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会类型" prop="clubType" sortable show-overflow-tooltip>
<el-table-column label="社团编码" prop="clubCode" sortable></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团类型" prop="clubType" sortable show-overflow-tooltip>
<template slot-scope="{row}">
<dict-tag :options="dict.type.CLUB_REGISTER_TYPE" :value="row.clubType"></dict-tag>
</template>
@@ -47,7 +47,7 @@ layout("/layouts/platform.html"){
</template>
</el-table-column>
<el-table-column label="发起人" prop="sponsorName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="当前节点" prop="curTaskName" show-overflow-tooltip></el-table-column>
<el-table-column label="当前节点" prop="taskName" show-overflow-tooltip></el-table-column>
<el-table-column label="流程状态" prop="instanceState" show-overflow-tooltip>
<template v-slot="{ row }">
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
@@ -20,11 +20,11 @@ layout("/layouts/platform.html"){
value-format="yyyy"
></el-date-picker>
</search-item>
<search-item label="协会名称:">
<search-item label="社团名称:">
<el-input
@keyup.enter.native="doSearch"
clearable
placeholder="请输入协会名称"
placeholder="请输入社团名称"
clearable
style="width: 100%"
v-model="pageForm.clubName"
@@ -42,8 +42,8 @@ layout("/layouts/platform.html"){
</table-tool>
<el-table :data="tableData" :size="tableSize">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会类型" prop="typeName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团类型" prop="typeName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="申请时间" prop="createTime" sortable show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ $moment(row.createTime).format('YYYY-MM-DD') }}</span>
@@ -20,11 +20,11 @@ layout("/layouts/platform.html"){
value-format="yyyy"
></el-date-picker>
</search-item>
<search-item label="协会名称:">
<search-item label="社团名称:">
<el-input
@keyup.enter.native="doSearch"
clearable
placeholder="请输入协会名称"
placeholder="请输入社团名称"
clearable
style="width: 100%"
v-model="pageForm.clubName"
@@ -42,8 +42,8 @@ layout("/layouts/platform.html"){
</table-tool>
<el-table :data="tableData" :size="tableSize">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会类型" prop="typeName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团类型" prop="typeName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="申请时间" prop="createTime" sortable show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ $moment(row.createTime).format('YYYY-MM-DD') }}</span>
@@ -20,11 +20,11 @@ layout("/layouts/platform.html"){
value-format="yyyy"
></el-date-picker>
</search-item>
<search-item label="协会名称:">
<search-item label="社团名称:">
<el-input
@keyup.enter.native="doSearch"
clearable
placeholder="请输入协会名称"
placeholder="请输入社团名称"
clearable
style="width: 100%"
v-model="pageForm.clubName"
@@ -42,8 +42,8 @@ layout("/layouts/platform.html"){
</table-tool>
<el-table :data="tableData" :size="tableSize">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="协会类型" prop="typeName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团名称" prop="clubName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="社团类型" prop="typeName" sortable show-overflow-tooltip></el-table-column>
<el-table-column label="申请时间" prop="createTime" sortable show-overflow-tooltip>
<template slot-scope="{row}">
<span>{{ $moment(row.createTime).format('YYYY-MM-DD') }}</span>
@@ -14,8 +14,8 @@ layout("/layouts/platform.html"){
<el-option label="年审未通过" :value="false"></el-option>
</el-select>
</search-item>-->
<search-item label="协会名称:">
<el-select v-model="pageForm.clubId" placeholder="请选择协会" clearable filterable>
<search-item label="社团名称:">
<el-select v-model="pageForm.clubId" placeholder="请选择社团" clearable filterable>
<el-option v-for="item in clubList" :label="item.clubName" :value="item.id" :key="item.id"></el-option>
</el-select>
</search-item>
@@ -32,7 +32,7 @@ layout("/layouts/platform.html"){
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="协会统计">
<table-tool label="社团统计">
<el-button @click="exportData" type="primary" size="small">导出全部统计数据</el-button>
<el-button @click="exportUserData(null)" v-if="$auth.hasRoleOr(['SYSADMIN', 'SCHOOL_UNION_ADMIN'])" type="primary" size="small">
导出全部人员明细
@@ -43,9 +43,9 @@ layout("/layouts/platform.html"){
</table-tool>
<el-table :data="tableData" row-key="id">
<el-table-column :index="indexMethod" label="序号" type="index" width="80px"></el-table-column>
<el-table-column label="协会名称" prop="clubName" show-overflow-tooltip></el-table-column>
<el-table-column label="协会编码" prop="clubCode"></el-table-column>
<el-table-column label="协会总人数" prop="total"></el-table-column>
<el-table-column label="社团名称" prop="clubName" show-overflow-tooltip></el-table-column>
<el-table-column label="社团编码" prop="clubCode"></el-table-column>
<el-table-column label="社团总人数" prop="total"></el-table-column>
<el-table-column label="在职人数" prop="work"></el-table-column>
<el-table-column label="退休人数" prop="retire"></el-table-column>
<el-table-column label="男" prop="man"></el-table-column>
@@ -43,7 +43,7 @@ layout("/layouts/platform.html"){
<el-table-column prop="userName" label="投稿人姓名"></el-table-column>
<el-table-column prop="unitName" label="投稿人单位"></el-table-column>
<el-table-column prop="unionName" label="投稿人工会"></el-table-column>
<el-table-column prop="clubName" label="投稿人协会"></el-table-column>
<el-table-column prop="clubName" label="投稿人社团"></el-table-column>
<el-table-column prop="origin" label="投稿来源">
<template slot-scope="{row}">{{dict.type.ARTICLE_ORIGIN.find(v=>v.code===row.origin)?.label}}
</template>
@@ -89,7 +89,7 @@ layout("/layouts/platform.html"){
v-if="currentRow.origin === 'ARTICLE_ORIGIN_UNION'">退回到分工会
</el-button>
<el-button type="danger" @click="doApproval('BACK_TO_CLUB')"
v-if="currentRow.origin === 'ARTICLE_ORIGIN_CLUB'">退回到协会
v-if="currentRow.origin === 'ARTICLE_ORIGIN_CLUB'">退回到社团
</el-button>
<!-- <el-button type="danger" @click="doApproval('REJECT')">拒绝</el-button>-->
<el-button type="primary" @click="doApproval('PASS')">通过</el-button>
@@ -22,8 +22,8 @@ layout("/layouts/platform.html"){
<el-option v-for="item in unitOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</search-item>
<search-item label="所属协会">
<el-select v-model="pageForm.clubId" placeholder="请选择所属协会" filterable clearable style="width: 100%">
<search-item label="所属社团">
<el-select v-model="pageForm.clubId" placeholder="请选择所属社团" filterable clearable style="width: 100%">
<el-option v-for="item in clubOptions" :key="item.id" :label="item.clubName" :value="item.id"></el-option>
</el-select>
</search-item>
@@ -43,7 +43,7 @@ layout("/layouts/platform.html"){
<el-table-column prop="userName" label="投稿人姓名"></el-table-column>
<el-table-column prop="unitName" label="投稿人单位"></el-table-column>
<el-table-column prop="unionName" label="投稿人工会"></el-table-column>
<el-table-column prop="clubName" label="投稿人协会"></el-table-column>
<el-table-column prop="clubName" label="投稿人社团"></el-table-column>
<el-table-column prop="submitTime" label="投稿时间"></el-table-column>
<el-table-column prop="origin" label="投稿来源">
<template slot-scope="{row}">{{dict.type.ARTICLE_ORIGIN.find(v=>v.code===row.origin)?.label}}</template>
@@ -39,7 +39,7 @@ layout("/layouts/platform.html"){
<el-input v-model="formData.mobile2" placeholder="请输入稿件修改联系人方式"></el-input>
</el-form-item>
<el-form-item prop="clubId" label="投稿人协会" v-if="formData.origin === 'ARTICLE_ORIGIN_CLUB'">
<el-form-item prop="clubId" label="投稿人社团" v-if="formData.origin === 'ARTICLE_ORIGIN_CLUB'">
<el-select v-model="formData.clubId" placeholder="请选择" style="width: 100%">
<el-option v-for="item in permission?.clubs" :key="item.id" :label="item.clubName"
:value="item.id"></el-option>
@@ -198,7 +198,7 @@ layout("/layouts/platform.html"){
all_club_loading: false,
clubTip:'协会活动数',
clubTip:'社团活动数',
allClubYear: moment().format('YYYY'),
isClubJf:true,
@@ -306,7 +306,7 @@ layout("/layouts/platform.html"){
//社团报销费用及活动情况
async doClubSwitch(){
this.isClubJf = !this.isClubJf
this.clubTip = this.isClubJf ? '协会活动数' : '协会经费详情'
this.clubTip = this.isClubJf ? '社团活动数' : '社团经费详情'
await this.allClubActivityAndJf();
},
async allClubActivityAndJf(){
@@ -354,7 +354,7 @@ layout("/layouts/platform.html"){
"yAxis": {},
meta: {
clubName: {
alias: '协会',
alias: '社团',
},
money: {
alias: this.isClubJf?'金额':'活动数',
@@ -35,10 +35,10 @@ layout("/layouts/platform.html"){
</el-option>
</el-select>
</search-item>
<search-item label="协会"
<search-item label="社团"
v-if="!pageForm.outlayManageSource||pageForm.outlayManageSource==='ACTIVITY_BUDGET_TYPE_THREE'">
<el-select clearable
placeholder="请选择协会"
placeholder="请选择社团"
style="width: 100%;" v-model="pageForm.clubId">
<el-option
:key="item.id"
@@ -35,10 +35,10 @@ layout("/layouts/platform.html"){
</el-option>
</el-select>
</search-item>
<search-item label="所属协会"
<search-item label="所属社团"
v-if="!pageForm.outlayManageSource||pageForm.outlayManageSource==='ACTIVITY_BUDGET_TYPE_THREE'">
<el-select clearable
placeholder="请选择协会"
placeholder="请选择社团"
style="width: 100%;" v-model="pageForm.clubId">
<el-option
:key="item.id"
@@ -113,7 +113,7 @@ layout("/layouts/platform.html"){
} else if (val === "ACTIVITY_BUDGET_TYPE_THREE") {
this.tableColumns = [
{prop: 'year', label: '年度'},
{prop: 'clubName', label: '协会名称'},
{prop: 'clubName', label: '社团名称'},
{prop: 'totalBudgetMoney', label: '预算金额'},
]
}
@@ -34,7 +34,7 @@ layout("/layouts/platform.html"){
</el-option>
</el-select>
</search-item>
<search-item label="所属协会"
<search-item label="所属社团"
v-if="!pageForm.outlayManageSource||pageForm.outlayManageSource==='ACTIVITY_BUDGET_TYPE_THREE'">
<el-select v-model="pageForm.clubId" filterable
clearable
@@ -34,7 +34,7 @@ layout("/layouts/platform.html"){
</el-option>
</el-select>
</search-item>
<search-item label="所属协会"
<search-item label="所属社团"
v-if="!pageForm.outlayManageSource||pageForm.outlayManageSource==='ACTIVITY_BUDGET_TYPE_THREE'">
<el-select v-model="pageForm.clubId" filterable
clearable
@@ -24,8 +24,8 @@ layout("/layouts/platform.html"){
<el-input v-model="pageForm.searchKeyword" placeholder="请输入姓名或工号"
clearable></el-input>
</search-item>
<search-item label="所属协会">
<el-select clearable filterable placeholder="所属协会"
<search-item label="所属社团">
<el-select clearable filterable placeholder="所属社团"
style="width: 100%;" v-model="pageForm.clubId">
<el-option :label="item.clubName" :value="item.id"
v-for="item in clubs"></el-option>
@@ -101,7 +101,7 @@ layout("/layouts/platform.html"){
{prop: 'userState', label: '在职状态'},
{prop: 'isGiveMoney', label: '是否拨付'},
{prop: 'payed', label: '是否缴费'},
{prop: 'clubName', label: '所在协会'},
{prop: 'clubName', label: '所在社团'},
{prop: 'roleName', label: '身份'},
],
}
@@ -20,8 +20,8 @@ layout("/layouts/platform.html"){
value-format="yyyy">
</el-date-picker>
</search-item>
<search-item label="所属协会">
<el-select clearable filterable placeholder="所属协会"
<search-item label="所属社团">
<el-select clearable filterable placeholder="所属社团"
style="width: 100%;" v-model="pageForm.clubId">
<el-option :label="item.clubName" :value="item.id"
v-for="item in clubs"></el-option>
@@ -106,7 +106,7 @@ layout("/layouts/platform.html"){
return {
tableColumns: [
{prop: 'year', label: '年度'},
{prop: 'clubName', label: '协会名称'},
{prop: 'clubName', label: '社团名称'},
{prop: 'historyUserNum', label: '上年度社团人数'},
{prop: 'historyGiveMoneyNum', label: '上年度拨付人数'},
{prop: 'historyNotGiveMoneyNum', label: '上年度未拨付人数'},
@@ -53,7 +53,7 @@ const clubHistoryBackUser = {
{prop: 'userState', label: '在职状态'},
{prop: 'isGiveMoney', label: '是否拨付'},
{prop: 'payed', label: '是否缴费'},
{prop: 'clubName', label: '所在协会'},
{prop: 'clubName', label: '所在社团'},
{prop: 'roleName', label: '身份'},
],
pageDataUrl:"/platform/outlay/outlayManage/query/backUserPageData"
@@ -20,8 +20,8 @@ layout("/layouts/platform.html"){
value-format="yyyy">
</el-date-picker>
</search-item>
<search-item label="所属协会">
<el-select clearable filterable placeholder="所属协会"
<search-item label="所属社团">
<el-select clearable filterable placeholder="所属社团"
style="width: 100%;" v-model="pageForm.clubId">
<el-option :label="item.clubName" :value="item.id"
v-for="item in clubs"></el-option>
@@ -132,7 +132,7 @@ layout("/layouts/platform.html"){
return {
tableColumns: [
{prop: 'year', label: '年度'},
{prop: 'clubName', label: '协会名称'},
{prop: 'clubName', label: '社团名称'},
{prop: 'historyUserNum', label: '上年度社团人数'},
{prop: 'historyGiveMoneyNum', label: '上年度拨付人数'},
{prop: 'historyNotGiveMoneyNum', label: '上年度未拨付人数'},
@@ -21,9 +21,9 @@ layout("/layouts/platform.html"){
</el-date-picker>
</search-item>
<search-item label="所属协会" v-if="$auth.hasRoleOr(['SYSADMIN', 'SCHOOL_UNION_ADMIN'])">
<search-item label="所属社团" v-if="$auth.hasRoleOr(['SYSADMIN', 'SCHOOL_UNION_ADMIN'])">
<el-select clearable
placeholder="请选择协会"
placeholder="请选择社团"
style="width: 100%;" v-model="pageForm.clubId">
<el-option
:key="item.id"
@@ -89,8 +89,8 @@ layout("/layouts/platform.html"){
return {
tableColumns: [
{prop: 'year', label: '年度'},
{prop: 'clubName', label: '协会名称'},
{prop: 'clubCode', label: '协会编码'},
{prop: 'clubName', label: '社团名称'},
{prop: 'clubCode', label: '社团编码'},
{prop: 'totalQuota', label: '分配总额度(元)'},
{prop: 'usedQuota', label: '已使用额度(元)'},
{prop: 'surplusQuota', label: '剩余额度(元)'},
@@ -26,12 +26,12 @@ layout("/layouts/platform.html"){
<el-input v-model="formData.mobile" placeholder="请输入联系方式"></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="所属协会"
<el-descriptions-item label="所属社团"
v-if="['ACTIVITY_BUDGET_TYPE_THREE'].includes(formData.outlayManageSource)">
<el-form-item label="所属协会" prop="clubId"
<el-form-item label="所属社团" prop="clubId"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-select clearable
placeholder="请选择协会"
placeholder="请选择社团"
style="width: 100%;" v-model="formData.clubId"
@change="getBudgetMoneyOrActivity();clubChange()">
<el-option
@@ -250,7 +250,7 @@ layout("/layouts/platform.html"){
<el-select v-model="formData.activityType" placeholder="请选择活动类型" style="width: 100%">
<el-option label="分工会活动" value="分工会活动"></el-option>
<el-option label="校工会活动" value="校工会活动"></el-option>
<el-option label="协会(社团)活动" value="协会(社团)活动"></el-option>
<el-option label="社团(社团)活动" value="社团(社团)活动"></el-option>
</el-select>
</el-form-item>
</el-descriptions-item>
@@ -112,7 +112,15 @@ layout("/layouts/platform.html"){
</el-card>
<el-card shadow="never">
<table-tool :columns.sync="tableColumns">
<el-button type="primary" size="small" @click="exportAllProposalAsZip">导出提案压缩包</el-button>
<el-dropdown @command="handleBatchExportCommand" trigger="click" class="mr10">
<el-button type="primary" size="small">
批量导出提案表<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="zip">导出压缩包(每个提案一个文档)</el-dropdown-item>
<el-dropdown-item command="docx">导出汇集文档(所有提案合并)</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-button type="primary" size="small" @click="exportCollectZip">导出提案征集表压缩包</el-button>
<el-button type="primary" size="small" @click="exportAllProposalFeedBackAsZip">导出反馈表压缩包
</el-button>
@@ -216,11 +224,23 @@ layout("/layouts/platform.html"){
this.$refs.infoRef.onOpen(row)
})
},
handleBatchExportCommand(command) {
if (command === "docx") {
this.exportAllProposalAsDocx()
return
}
this.exportAllProposalAsZip()
},
exportAllProposalAsZip() {
this.$downLoad(loc() + "/exportAllProposalAsZip", {
pageForm: JSON.stringify(this.pageForm)
})
},
exportAllProposalAsDocx() {
this.$downLoad(loc() + "/exportAllProposalAsDocx", {
pageForm: JSON.stringify(this.pageForm)
})
},
exportCollectZip() {
this.$downLoad(loc() + "/exportCollectZip", {
pageForm: JSON.stringify(this.pageForm)
@@ -0,0 +1,180 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava ref="guava">
<el-card shadow="never">
<search @search="doSearch">
<search-item label="教代会">
<el-select @change="meetingChange" clearable filterable placeholder="所属教代会" v-model="pageForm.sessionId">
<el-option :key="item.id" :label="item.fullName" :value="item.id" v-for="item in sessionOptions"></el-option>
</el-select>
</search-item>
<search-item label="提案编号">
<el-input v-model="pageForm.code" clearable placeholder="提案编号"></el-input>
</search-item>
<search-item label="提案名称">
<el-input v-model="pageForm.name" clearable placeholder="提案名称"></el-input>
</search-item>
<search-item label="姓名/工号">
<el-input v-model="pageForm.createUserKeyword" clearable placeholder="请输入姓名或工号"></el-input>
</search-item>
</search>
</el-card>
<el-card shadow="never">
<table-tool :columns.sync="tableColumns"></table-tool>
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
<el-table-column label="序号" width="50" type="index" :index="indexMethod" fixed="left"></el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:key="column.key"
:min-width="column.width"
:fixed="column.fixed"
show-overflow-tooltip
v-for="column in tableColumns"
v-if="column.visible !== false"
>
<template v-if="column.prop === 'instanceState'" scope="{row}">
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="260px">
<template slot-scope="{row}">
<el-button size="mini" type="primary" @click="openView(row)">查看</el-button>
<el-button size="mini" type="warning" @click="openExportDialog(row)">导出提案表</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<template #view>
<proposal-info ref="infoRef"></proposal-info>
</template>
<el-dialog title="导出提案表(选择环节)" width="620px" :visible.sync="exportDialogVisible" append-to-body>
<div style="margin-bottom: 8px; color: #666;">
当前提案:{{ exportRow.code }} - {{ exportRow.name }}
</div>
<div style="margin-bottom: 10px;">
<el-button size="mini" @click="selectAllStages">全选</el-button>
<el-button size="mini" @click="clearAllStages">清空</el-button>
</div>
<el-checkbox-group v-model="exportForm.stageTaskNames">
<el-checkbox v-for="item in stageOptions" :label="item.value" :key="item.value" style="margin-right: 16px; margin-bottom: 8px;">
{{ item.label }}
</el-checkbox>
</el-checkbox-group>
<div style="margin-top: 8px; color: #999;">说明:基础内容固定导出,勾选项用于控制附加环节内容。</div>
<span slot="footer">
<el-button size="small" @click="exportDialogVisible=false">取消</el-button>
<el-button size="small" type="primary" @click="exportSelectedDocx">确定导出</el-button>
</span>
</el-dialog>
</guava>
</div>
<script nonce="${cspNonce!}">
<!--#include('../../common/info.js'){}#-->
new Vue({
el: "#app",
store,
mixins: [initTableMixins],
components: {
"proposal-info": PROPOSAL_INFO
},
data() {
return {
tableColumns: [
{label: "提案编号", prop: "code"},
{label: "提案名称", prop: "name", width: "220px"},
{label: "提案人", prop: "createUserName", width: "100px"},
{label: "提案类型", prop: "typeName"},
{label: "教代会", prop: "sessionName", width: "200px"},
{label: "代表团", prop: "delegationName", width: "120px"},
{label: "当前节点", prop: "curTaskName"},
{label: "流程状态", prop: "instanceState"}
],
pageForm: {
sessionId: ""
},
sessionOptions: [],
exportDialogVisible: false,
exportRow: {},
stageOptions: [],
exportForm: {
stageTaskNames: []
}
}
},
created() {
this.listOpenSession()
this.pageData()
},
methods: {
openView(row) {
this.$refs.guava.view(() => {
this.$refs.infoRef.onOpen(row)
})
},
meetingChange() {
this.pageData()
},
listOpenSession() {
this.$axios.post("/platform/proposal/common/listOpenSession").then((res) => {
if (res.code === 0) {
this.sessionOptions = res.data || []
if (this.sessionOptions.length > 0) {
this.pageForm.sessionId = this.sessionOptions[0].id
this.pageData()
}
}
})
},
openExportDialog(row) {
this.exportRow = row
this.exportForm.stageTaskNames = []
this.stageOptions = []
this.exportDialogVisible = true
this.$axios.post(loc() + "/stageOptions", {id: row.id}).then((res) => {
if (res.code === 0) {
this.stageOptions = res.data || []
this.exportForm.stageTaskNames = this.stageOptions.map(v => v.value)
}
})
},
selectAllStages() {
this.exportForm.stageTaskNames = this.stageOptions.map(v => v.value)
},
clearAllStages() {
this.exportForm.stageTaskNames = []
},
exportSelectedDocx() {
if (!this.exportRow || !this.exportRow.id) {
return
}
this.$downLoad(loc() + "/exportSelectedDocx", {
id: this.exportRow.id,
stageTaskNamesJson: JSON.stringify(this.exportForm.stageTaskNames || [])
})
this.exportDialogVisible = false
},
pageData() {
this.$axios.post(loc() + "/pageData", this.pageForm).then((res) => {
if (res.code === 0) {
this.tableData = res.data.list
this.totalCount = res.data.totalCount
this.pageSize = res.data.pageSize
this.pageNumber = res.data.pageNumber
}
})
}
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,379 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.page-title-wrap {
display: flex;
align-items: center;
gap: 10px;
}
.page-title-accent {
width: 6px;
height: 20px;
border-radius: 4px;
background: linear-gradient(180deg, #2f7df6 0%, #5aa2ff 100%);
}
.page-title-text {
font-size: 16px;
font-weight: 700;
color: #22324d;
letter-spacing: 0.3px;
}
.dimension-pills {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.dimension-pill {
padding: 3px 10px;
border-radius: 999px;
font-size: 12px;
color: #2f5fa8;
background: #edf4ff;
border: 1px solid #cfe1ff;
line-height: 1.4;
}
.analysis-tip {
margin-bottom: 10px;
padding: 10px 12px;
border-left: 4px solid #2f7df6;
background: linear-gradient(90deg, #eef5ff 0%, #f8fbff 100%);
border-radius: 4px;
color: #3b4a66;
font-size: 13px;
}
.chart-card-title {
display: flex;
align-items: center;
gap: 8px;
color: #1f2d3d;
font-weight: 600;
}
.chart-card-dot {
width: 8px;
height: 8px;
border-radius: 50%;
background: #409eff;
box-shadow: 0 0 0 3px rgba(64, 158, 255, 0.18);
}
.analysis-card-title {
font-weight: 700;
margin-bottom: 8px;
color: #1f2d3d;
display: flex;
align-items: center;
gap: 8px;
}
.analysis-card-title::before {
content: "";
width: 4px;
height: 14px;
border-radius: 2px;
background: #2f7df6;
}
.analysis-card-meta {
margin-bottom: 8px;
padding: 8px 10px;
border-left: 3px solid #66a6ff;
background: #f4f9ff;
color: #4b617f;
line-height: 1.6;
border-radius: 4px;
}
.analysis-card-text {
padding: 8px 10px;
background: #f7faff;
border-radius: 4px;
color: #2f3d4f;
line-height: 1.7;
}
.keyword-tag {
display: inline-block;
padding: 2px 8px;
margin: 0 4px 4px 0;
border-radius: 4px;
font-size: 12px;
color: #2b5a9f;
background: #eaf3ff;
border: 1px solid #c9ddff;
}
</style>
<div id="app" v-cloak>
<el-card shadow="never">
<div style="display:flex;justify-content:space-between;align-items:center;gap:12px;">
<search @search="doSearch" style="flex:1;">
<search-item label="教代会届次">
<el-select @change="doSearch" clearable filterable placeholder="请选择教代会届次" v-model="pageForm.sessionId">
<el-option :key="item.id" :label="item.fullName" :value="item.id" v-for="item in sessionOptions"></el-option>
</el-select>
</search-item>
</search>
<el-button size="mini" type="primary" @click="toggleChartView">
{{ showChart ? '切换表格展示' : '切换图形化展示' }}
</el-button>
</div>
</el-card>
<el-card shadow="never" class="mt10" v-if="!showChart">
<div slot="header" style="display:flex;justify-content:space-between;align-items:center;gap:10px;">
<div>
<div class="page-title-wrap">
<span class="page-title-accent"></span>
<span class="page-title-text">统计数据</span>
</div>
<div class="dimension-pills mt10">
<span class="dimension-pill">提案人单位</span>
<span class="dimension-pill">提案类型</span>
<span class="dimension-pill">代表团</span>
<span class="dimension-pill">立案结果</span>
<span class="dimension-pill">满意度</span>
</div>
</div>
<el-button size="mini" type="primary" @click="exportStatistics">导出统计数据</el-button>
</div>
<el-table :data="statisticsRows" border stripe style="width: 100%">
<el-table-column prop="dimension" label="统计维度" width="180"></el-table-column>
<el-table-column prop="itemName" label="分类项" min-width="260" show-overflow-tooltip></el-table-column>
<el-table-column prop="count" label="数量" width="120"></el-table-column>
<el-table-column prop="rate" label="占比" width="120"></el-table-column>
</el-table>
</el-card>
<el-card shadow="never" class="mt10" v-if="!showChart">
<div slot="header" style="display:flex;justify-content:space-between;align-items:center;">
<div class="page-title-wrap">
<span class="page-title-accent"></span>
<span class="page-title-text">分析数据</span>
</div>
<el-button size="mini" type="primary" @click="exportAnalysis">导出分析数据</el-button>
</div>
<el-table :data="analysisRows" border stripe style="width: 100%">
<el-table-column prop="dimension" label="统计维度" width="160"></el-table-column>
<el-table-column prop="total" label="总量" width="100"></el-table-column>
<el-table-column prop="categoryCount" label="分类数量" width="120"></el-table-column>
<el-table-column prop="topItem" label="最高项" min-width="180" show-overflow-tooltip></el-table-column>
<el-table-column prop="topCount" label="最高数量" width="120"></el-table-column>
<el-table-column prop="topRate" label="最高占比" width="120"></el-table-column>
<el-table-column prop="analysis" label="分析结论" min-width="320" show-overflow-tooltip></el-table-column>
</el-table>
</el-card>
<el-card shadow="never" class="mt10" v-if="showChart">
<div slot="header" style="display:flex;justify-content:space-between;align-items:center;">
<div>
<div class="page-title-wrap">
<span class="page-title-accent"></span>
<span class="page-title-text">图形化统计展示(混合图)</span>
</div>
<div class="mt10">
<span class="keyword-tag">提案人单位</span>
<span class="keyword-tag">提案类型</span>
<span class="keyword-tag">代表团</span>
<span class="keyword-tag">立案结果</span>
<span class="keyword-tag">满意度</span>
</div>
</div>
<div>
<el-button size="mini" type="primary" @click="exportStatistics">导出统计数据</el-button>
<el-button size="mini" type="primary" @click="exportAnalysis">导出分析数据</el-button>
</div>
</div>
<div class="analysis-tip">提示:蓝色标记区域为关键指标说明,可快速对比每个维度的最高项及占比。</div>
<el-row :gutter="12">
<el-col :span="12" v-for="item in chartGroups" :key="item.domId" class="mb10">
<el-card shadow="never">
<div slot="header" class="chart-card-title">
<span class="chart-card-dot"></span>
<span>{{ item.dimension }}</span>
</div>
<div :id="item.domId" style="height: 300px;"></div>
</el-card>
</el-col>
</el-row>
</el-card>
<el-card shadow="never" class="mt10" v-if="showChart">
<div slot="header" class="page-title-wrap">
<span class="page-title-accent"></span>
<span class="page-title-text">分析结论</span>
</div>
<div class="analysis-tip">提示:每张卡片中的蓝色竖线信息用于提炼重点,下面是自动生成的文字分析。</div>
<el-row :gutter="12">
<el-col :span="12" v-for="row in analysisRows" :key="row.dimension" class="mb10">
<el-card shadow="hover">
<div class="analysis-card-title">{{ row.dimension }}</div>
<div class="analysis-card-meta">总量:{{ row.total }},最高项:{{ row.topItem }}{{ row.topRate }}</div>
<div class="analysis-card-text">{{ row.analysis }}</div>
</el-card>
</el-col>
</el-row>
</el-card>
</div>
<script nonce="${cspNonce!}">
new Vue({
el: "#app",
data() {
return {
pageForm: {
sessionId: ""
},
sessionOptions: [],
statisticsRows: [],
analysisRows: [],
showChart: false,
chartMap: {}
}
},
computed: {
chartGroups() {
const grouped = {}
this.statisticsRows.forEach(v => {
if (!grouped[v.dimension]) {
grouped[v.dimension] = []
}
grouped[v.dimension].push(v)
})
return Object.keys(grouped).map((k, idx) => ({
dimension: k,
domId: "chart_dimension_" + idx,
items: grouped[k]
}))
}
},
created() {
this.listSession()
},
methods: {
toggleChartView() {
this.showChart = !this.showChart
if (this.showChart) {
this.$nextTick(() => this.renderCharts())
} else {
this.destroyCharts()
}
},
destroyCharts() {
Object.keys(this.chartMap).forEach(k => {
if (this.chartMap[k] && this.chartMap[k].destroy) {
this.chartMap[k].destroy()
}
})
this.chartMap = {}
},
isPieDimension(dimension) {
return ["立案结果", "满意度"].includes(dimension)
},
renderCharts() {
this.destroyCharts()
this.chartGroups.forEach(group => {
const top8 = group.items.slice(0, 8)
let chart
if (this.isPieDimension(group.dimension)) {
chart = new G2Plot.Pie(group.domId, {
data: top8,
angleField: "count",
colorField: "itemName",
radius: 0.75,
innerRadius: 0.45,
legend: {position: "bottom"},
label: {
type: "spider",
content: "{name}: {percentage}"
},
statistic: {
title: {content: group.dimension},
content: {content: top8.reduce((s, x) => s + Number(x.count || 0), 0).toString()}
}
})
} else {
chart = new G2Plot.Bar(group.domId, {
data: top8,
xField: "count",
yField: "itemName",
seriesField: "itemName",
legend: false,
maxBarWidth: 18,
label: {
position: "right",
style: {fill: "#666"}
},
meta: {
itemName: {alias: "分类项"},
count: {alias: "数量"}
},
yAxis: {
label: {
autoHide: true
}
}
})
}
chart.render()
this.chartMap[group.domId] = chart
})
},
listSession() {
this.$axios.post("/platform/proposal/common/listSession").then((res) => {
if (res.code === 0) {
this.sessionOptions = res.data || []
if (this.sessionOptions.length > 0) {
this.pageForm.sessionId = this.sessionOptions[0].id
this.doSearch()
}
}
})
},
doSearch() {
if (!this.pageForm.sessionId) {
this.statisticsRows = []
this.analysisRows = []
this.destroyCharts()
return
}
this.$axios.post(loc() + "/statisticsData", this.pageForm).then((res) => {
if (res.code === 0) {
this.statisticsRows = res.data || []
if (this.showChart) {
this.$nextTick(() => this.renderCharts())
}
}
})
this.$axios.post(loc() + "/analysisData", this.pageForm).then((res) => {
if (res.code === 0) {
this.analysisRows = res.data || []
}
})
},
exportStatistics() {
if (!this.pageForm.sessionId) {
this.$message.warning("请先选择教代会届次")
return
}
this.$downLoad(loc() + "/exportStatisticsData", this.pageForm)
},
exportAnalysis() {
if (!this.pageForm.sessionId) {
this.$message.warning("请先选择教代会届次")
return
}
this.$downLoad(loc() + "/exportAnalysisData", this.pageForm)
}
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,177 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava ref="guava">
<el-card shadow="never">
<search @search="doSearch">
<search-item label="教代会">
<el-select @change="meetingChange" clearable filterable placeholder="所属教代会" v-model="pageForm.sessionId">
<el-option :key="item.id" :label="item.fullName" :value="item.id" v-for="item in sessionOptions"></el-option>
</el-select>
</search-item>
<search-item label="提案名称">
<el-input v-model="pageForm.name" placeholder="提案名称" @keyup.enter.native="doSearch" clearable style="width: 100%"></el-input>
</search-item>
<search-item label="姓名/工号">
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.createUserKeyword"></el-input>
</search-item>
</search>
</el-card>
<el-card shadow="never">
<table-tool :columns.sync="tableColumns"></table-tool>
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
<el-table-column label="序号" width="50" type="index" :index="indexMethod" fixed="left"></el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:key="column.key"
:min-width="column.width"
:fixed="column.fixed"
show-overflow-tooltip
v-for="column in tableColumns"
v-if="column.visible !== false"
>
<template v-if="column.prop === 'instanceState'" scope="{row}">
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="220px">
<template slot-scope="{row}">
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
<el-button @click="openJumpDialog(row)" size="mini" type="warning">跳转节点</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<template #edit>
<proposal-info ref="proposalInfoRef"></proposal-info>
</template>
<el-dialog title="跳转节点" width="480px" :visible.sync="jumpDialogVisible" append-to-body>
<el-form :model="jumpForm" ref="jumpFormRef" label-width="90px">
<el-form-item
label="目标节点"
prop="targetTaskName"
:rules="[{required: true, message: '请选择目标节点', trigger: 'change'}]"
>
<el-select v-model="jumpForm.targetTaskName" placeholder="请选择节点" filterable style="width: 100%">
<el-option v-for="item in jumpNodeOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer">
<el-button size="small" @click="jumpDialogVisible = false">取消</el-button>
<el-button size="small" type="primary" @click="doJump">确定</el-button>
</span>
</el-dialog>
</guava>
</div>
<script nonce="${cspNonce!}">
<!--#include('../../common/info.js'){}#-->
new Vue({
el: "#app",
store,
mixins: [initTableMixins],
components: {
"proposal-info": PROPOSAL_INFO
},
data() {
return {
tableColumns: [
{label: "提案编号", prop: "code"},
{label: "提案名称", prop: "name", width: "220px"},
{label: "提案人", prop: "createUserName", width: "90px"},
{label: "提案类别", prop: "typeName"},
{label: "届次", prop: "sessionName"},
{label: "代表团", prop: "delegationName"},
{label: "当前节点", prop: "curTaskName"},
{label: "流程状态", prop: "instanceState"}
],
jumpDialogVisible: false,
jumpNodeOptions: [],
jumpCurrentRow: null,
jumpForm: {
targetTaskName: "",
tf_audit: true
}
}
},
created() {
this.pageData()
this.listOpenSession()
},
methods: {
openView(row) {
this.$refs.guava.edit(() => {
this.$refs.proposalInfoRef.onOpen(row)
})
},
openJumpDialog(row) {
this.jumpCurrentRow = row
this.jumpForm = {
targetTaskName: "",
tf_audit: true
}
this.jumpDialogVisible = true
this.$axios.post('/platform/proposal/control/jumpNodes', {instanceId: row.instanceId}).then(res => {
if (res.code === 0) {
const nodeList = res.data || []
const currentNode = nodeList.find(item => item.value === row.taskKey)
const currentSeq = currentNode ? Number(currentNode.seq) : Number.MAX_SAFE_INTEGER
this.jumpNodeOptions = nodeList.filter(item => item.value !== row.taskKey && Number(item.seq) < currentSeq)
}
})
},
doJump() {
this.$refs.jumpFormRef.validate(valid => {
if (!valid || !this.jumpCurrentRow) return
this.$confirm("您确定要跳转到该节点吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
const params = {
processTaskId: this.jumpCurrentRow.taskId,
submitType: 4,
taskName: this.jumpForm.targetTaskName,
tf_sourceTaskKey: this.jumpCurrentRow.taskKey,
tf_audit: true
}
this.$axios.post("/flow/common/executeTask", {
data: JSON.stringify(params)
}).then((res) => {
if (res.code === 0) {
this.jumpDialogVisible = false
this.$message.success(res.msg)
this.doSearch()
}
})
})
})
},
listOpenSession() {
this.$axios.post("/platform/proposal/common/listOpenSession").then((res) => {
if (res.code === 0) {
this.sessionOptions = res.data
if (this.sessionOptions && this.sessionOptions.length) {
this.$set(this.pageForm, "sessionId", this.sessionOptions[0].id)
this.pageData()
}
}
})
}
}
})
</script>
<!--#
}
#-->
@@ -117,7 +117,7 @@ layout("/layouts/platform_h5.html"){
activityTypeOptions: [
{ value: 40001, text: "校文化活动" },
{ value: 40002, text: "分工会文化活动" },
{ value: 40003, text: "协会文化活动" },
{ value: 40003, text: "社团文化活动" },
]
}
},
@@ -20,17 +20,17 @@ layout("/layouts/platform_h5.html"){
<div id="app">
<!-- 导航栏 -->
<van-nav-bar title="文体协会会员申请" left-text="返回" left-arrow @click-left="historyBack" fixed placeholder></van-nav-bar>
<van-nav-bar title="文体社团会员申请" left-text="返回" left-arrow @click-left="historyBack" fixed placeholder></van-nav-bar>
<!-- 表单容器 -->
<van-form ref="formRef" class="form-container">
<!-- 协会信息 -->
<van-cell-group title="协会信息" class="form-section">
<!-- 社团信息 -->
<van-cell-group title="社团信息" class="form-section">
<van-field
:rules="[{ required: true }]"
v-model="formData.clubName"
label="协会"
placeholder="请选择协会"
label="社团"
placeholder="请选择社团"
required
is-link
readonly
@@ -78,11 +78,12 @@ layout("/layouts/platform_h5.html"){
<van-field
class="direction-column-field"
v-model="formData.sameTimeJoinOtherClubSituation"
label="同时参加其他协会情况"
label="同时参加其他社团情况"
type="textarea"
rows="4"
autosize
placeholder="请填写同时参加其他协会情况"
maxlength="500"
placeholder="请填写同时参加其他社团情况"
></van-field>
<van-field
class="direction-column-field"
@@ -91,6 +92,7 @@ layout("/layouts/platform_h5.html"){
type="textarea"
rows="4"
autosize
maxlength="500"
placeholder="请填写相关经历及获奖情况"
></van-field>
</van-cell-group>
@@ -124,7 +126,7 @@ layout("/layouts/platform_h5.html"){
<!-- 同意条款 -->
<van-cell-group class="agree-section form-section">
<van-checkbox v-model="isAgree" shape="square">
注:本人已仔细阅读并愿意遵守所参加本校教职工文体协会的章程和规定,自愿加入所报名协会
注:本人已仔细阅读并愿意遵守所参加本校教职工文体社团的章程和规定,自愿加入所报名社团
</van-checkbox>
</van-cell-group>
@@ -243,7 +245,7 @@ layout("/layouts/platform_h5.html"){
this.formData.clubName = value
this.showClubPopup = false
// 检查是否已申请该协会
// 检查是否已申请该社团
this.checkApplyClub(this.formData.clubId)
},
listClub() {
@@ -13,7 +13,7 @@ layout("/layouts/platform_h5.html"){
</style>
<div id="app">
<van-nav-bar title="协会审核" left-text="返回" left-arrow @click-left="historyBack" fixed placeholder></van-nav-bar>
<van-nav-bar title="社团审核" left-text="返回" left-arrow @click-left="historyBack" fixed placeholder></van-nav-bar>
<van-sticky offset-top="46px">
<van-search
@@ -5,11 +5,11 @@ const clubUserJoin = {
<van-action-sheet v-model="visible" title="查看详情">
<div class="detail-container">
<van-cell-group title="基本信息">
<van-cell title="协会名称">{{ viewData.clubName }}</van-cell>
<van-cell title="社团名称">{{ viewData.clubName }}</van-cell>
<van-cell title="姓名">{{ viewData.userName }}</van-cell>
<van-cell title="工号">{{ viewData.loginName }}</van-cell>
<van-cell title="性别">{{ viewData.sex }}</van-cell>
<van-cell title="出生年月">{{ viewData.birthday }}</van-cell>
<van-cell title="出生年月">{{ $moment(viewData.birthday).format('YYYY-MM-DD') }}</van-cell>
<van-cell title="联系电话">{{ viewData.mobile }}</van-cell>
<van-cell title="电子信箱">{{ viewData.email }}</van-cell>
<van-cell title="分工会">{{ viewData.unionName }}</van-cell>
@@ -18,7 +18,7 @@ const clubUserJoin = {
<van-cell title="职称">{{ viewData.technicalTitle }}</van-cell>
<van-cell title="学历">{{ viewData.education }}</van-cell>
<van-cell title="学位">{{ viewData.academicDegree }}</van-cell>
<van-cell class="direction-column-cell" title="同时参加其他协会情况">
<van-cell class="direction-column-cell" title="同时参加其他社团情况">
{{ viewData.sameTimeJoinOtherClubSituation || '暂无' }}
</van-cell>
<van-cell class="direction-column-cell" title="文化、体育方面的活动经历、获奖情况">
@@ -23,7 +23,7 @@ layout("/layouts/platform_h5.html"){
<table-column label="工号">{{row.loginName}}</table-column>
<table-column label="申请模式">{{row.mode ? '加入' : '退出'}}</table-column>
<table-column label="申请时间">{{row.applyDate}}</table-column>
<table-column label="当前节点">{{row.curTaskName}}</table-column>
<table-column label="当前节点">{{row.taskName}}</table-column>
</template>
<template #actions="{index,row}">
<div class="action-btn" @click="onView(row)">
@@ -9,7 +9,7 @@ layout("/layouts/platform_h5.html"){
</style>
<div id="app">
<van-nav-bar title="我的协会" left-text="返回" left-arrow @click-left="historyBack" fixed placeholder></van-nav-bar>
<van-nav-bar title="我的社团" left-text="返回" left-arrow @click-left="historyBack" fixed placeholder></van-nav-bar>
<van-sticky offset-top="46px">
<van-search
@@ -17,24 +17,24 @@ layout("/layouts/platform_h5.html"){
:show-action="false"
:reverse-color="false"
input-align="left"
placeholder="请输入协会名称"
placeholder="请输入社团名称"
@search="doSearch"
></van-search>
</van-sticky>
<table-list api="/platform/club/join/mine/club/pageData" :page_form.sync="pageForm" ref="tableListRef" title="clubName" @ready="doSearch">
<template v-slot="{index,row}">
<table-column label="协会编码">{{row.clubCode}}</table-column>
<table-column label="社团编码">{{row.clubCode}}</table-column>
<table-column label="成立时间">{{row.foundTime}}</table-column>
<table-column label="会长">{{row.clubLeader}}</table-column>
<table-column label="秘书长">{{row.clubSecretary}}</table-column>
<table-column label="当前人数">{{row.currentPeopleNum}}</table-column>
</template>
<template #actions="{index,row}">
<div class="action-btn" @click="onView(row)">
<!--<div class="action-btn" @click="onView(row)">
<i class="fa fa-eye"></i>
<span>查看</span>
</div>
</div>-->
<div class="action-btn delete" @click="onExit(row)">
<i class="fa fa-undo"></i>
<span>申请退会</span>
@@ -52,8 +52,8 @@ layout("/layouts/platform_h5.html"){
<van-field
:rules="[{ required: true }]"
v-model="formData.clubName"
label="所属协会"
placeholder="请选择所属协会"
label="所属社团"
placeholder="请选择所属社团"
required
is-link
readonly

Some files were not shown because too many files have changed in this diff Show More