first commit
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,142 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.el-table-container {
|
||||
padding-left: 0px;
|
||||
margin-top: 5px;
|
||||
padding-right: 0px;
|
||||
}
|
||||
</style>
|
||||
<div id="app" v-cloak>
|
||||
|
||||
<guava>
|
||||
<div style="padding-right: 10px">
|
||||
<el-card shadow="never">
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
|
||||
@keyup.enter.native="doSearch">
|
||||
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
|
||||
style="width: 120px;">
|
||||
<el-option label="协会名称" value="club.name"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-row class="el-table-container" style="padding-top: 0">
|
||||
<el-table :data="tableData" style="width: 100%" row-key="id" v-loading="tabLoading">
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index">
|
||||
<template scope="scope">
|
||||
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="协会名称" width="250px"
|
||||
prop="name"></el-table-column>
|
||||
|
||||
<el-table-column align="center" sortable header-align="center" label="协会总人数"
|
||||
prop="total"></el-table-column>
|
||||
|
||||
<el-table-column align="center" sortable header-align="center" label="在职人数"
|
||||
prop="work"></el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="退休人数"
|
||||
prop="retire"></el-table-column>
|
||||
|
||||
<el-table-column align="center" sortable header-align="center" label="男"
|
||||
prop="man"></el-table-column>
|
||||
|
||||
<el-table-column align="center" sortable header-align="center" label="女"
|
||||
prop="woman"></el-table-column>
|
||||
|
||||
<el-table-column align="center" sortable header-align="center" label="理事机构人数"
|
||||
prop="governing_body"></el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="协会确认" sortable
|
||||
prop="club_has_confirm"></el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="协会待确认" sortable
|
||||
prop="club_no_confirm"></el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="校工会确认" sortable
|
||||
prop="school_has_confirm"></el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="校工会待确认" sortable width="160"
|
||||
prop="school_no_confirm"></el-table-column>
|
||||
|
||||
</el-table>
|
||||
</el-row>
|
||||
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
@size-change="pageSizeChange"
|
||||
@current-change="pageNumberChange"
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-sizes="[10, 20, 30, 50]"
|
||||
:page-size="pageForm.pageSize"
|
||||
layout="total, sizes, prev, pager, next"
|
||||
:total="pageForm.totalCount">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</div>
|
||||
</guava>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
data() {
|
||||
return {
|
||||
tableData: [],
|
||||
pageForm: {
|
||||
searchKeyword: "",
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
searchName: 'club.name',
|
||||
},
|
||||
tabLoading: false,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
doSearch() {
|
||||
this.pageForm.pageNumber = 1
|
||||
this.pageData()
|
||||
},
|
||||
pageNumberChange(val) {//页码更新操作
|
||||
this.pageForm.pageNumber = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageSizeChange(val) {//分页大小更新操作
|
||||
this.pageForm.pageSize = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageData() {//加载分页数据
|
||||
sublime.showLoadingbar();//显示loading
|
||||
this.tabLoading = true
|
||||
$.post(base + "/platform/sys/club/clubUserCount/pageData", this.pageForm, (data) => {
|
||||
sublime.closeLoadingbar();//关闭loading
|
||||
this.tabLoading = false
|
||||
if (data.code === 0) {
|
||||
this.tableData = data.data.list;
|
||||
this.pageForm.totalCount = data.data.totalCount;
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.pageData();
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,784 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.w-e-text-container {
|
||||
height: 200px !important;
|
||||
}
|
||||
|
||||
input[type="file"] {
|
||||
display: none
|
||||
}
|
||||
</style>
|
||||
<div id="app" v-cloak>
|
||||
<el-row class="header navbar bg-white shadow">
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-input @keyup.enter.native="doSearch" clearable placeholder="请输入内容"
|
||||
v-model="pageForm.searchKeyword">
|
||||
<el-select placeholder="查询类型" slot="prepend" style="width: 120px;"
|
||||
v-model="pageForm.searchName">
|
||||
<el-option label="协会名称" value="club.name"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-button @click="doSearch" icon="el-icon-search" type="primary"></el-button>
|
||||
</div>
|
||||
|
||||
<div class="pull-right offscreen-right mt5">
|
||||
<!--#if(@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')){#-->
|
||||
<el-button @click="openAdd" icon="el-icon-plus">创建协会</el-button>
|
||||
<!--#}#-->
|
||||
</div>
|
||||
</el-row>
|
||||
|
||||
<el-row class="el-table-container">
|
||||
<el-table :data="tableData" @sort-change="pageOrder" row-key="id" style="width: 100%"
|
||||
v-loading="tabloading">
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index">
|
||||
<template scope="scope">
|
||||
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="协会名称"
|
||||
prop="name" width="300px"></el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="成立时间" prop="create_time" show-overflow-tooltip
|
||||
sortable
|
||||
width="100px"></el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="主要负责人" prop="fzrname" show-overflow-tooltip
|
||||
sortable></el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="负责人单位" prop="fzr_unit_name"
|
||||
show-overflow-tooltip
|
||||
sortable></el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="负责人电话" prop="fzr_mobile"
|
||||
show-overflow-tooltip></el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="负责人邮箱" prop="fzr_email"
|
||||
show-overflow-tooltip></el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="协会人数" prop="cynum" show-overflow-tooltip
|
||||
sortable
|
||||
width="100px"></el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="状态" prop="isjs" show-overflow-tooltip
|
||||
sortable
|
||||
width="100px">
|
||||
<template slot-scope="scope">
|
||||
<el-tooltip content="正常" placement="top" v-if="!scope.row.isjs">
|
||||
<i class="fa fa-circle text-success ml5"></i>
|
||||
</el-tooltip>
|
||||
|
||||
<el-tooltip content="已解散" placement="top" v-else>
|
||||
<i class="fa fa-circle text-danger ml5"></i>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
<!--#if(@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')){#-->
|
||||
<el-table-column align="center" fixed="right" header-align="center" label="操作" width="300px">
|
||||
<template slot-scope="scope">
|
||||
<el-button @click="openDetail(scope.row.id)" size="mini">查看</el-button>
|
||||
<el-button @click="openEdit(scope.row.id)" size="mini" type="primary" v-if="!scope.row.isjs">编辑
|
||||
</el-button>
|
||||
<el-button @click="doDelete(scope.row.id)" size="mini" type="danger">删除</el-button>
|
||||
<el-button @click="doDissolve(scope.row.id)" size="mini" type="danger" v-if="!scope.row.isjs">解散
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!--#}else if(@shiro.hasRole('D02')){#-->
|
||||
<el-table-column align="center" fixed="right" header-align="center" label="操作" width="200px">
|
||||
<template slot-scope="scope">
|
||||
<el-button @click="openDetail(scope.row.id)" size="mini">查看</el-button>
|
||||
<el-button @click="openEdit(scope.row.id)" size="mini" type="primary" v-if="!scope.row.isjs">编辑
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!--#}#-->
|
||||
</el-table>
|
||||
</el-row>
|
||||
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-size="pageForm.pageSize"
|
||||
:page-sizes="[10, 20, 30, 50]"
|
||||
:total="pageForm.totalCount"
|
||||
@current-change="pageNumberChange"
|
||||
@size-change="pageSizeChange"
|
||||
layout="total, sizes, prev, pager, next">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="addDialogVisible"
|
||||
title="创建协会" top="3%" width="60%">
|
||||
|
||||
<el-divider content-position="left"><span style="color: rgb(121, 187, 255)">请填写以下协会信息</span>
|
||||
</el-divider>
|
||||
|
||||
<el-form :model="formData" :rules="formRules" label-position="top" label-width="120px" ref="addForm"
|
||||
size="small"
|
||||
style="padding: 0 30px">
|
||||
<el-row gutter="30">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="协会名称" prop="name">
|
||||
<el-input maxlength="100" placeholder="请输入协会名称" type="text"
|
||||
v-model="formData.name"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="协会类型" prop="type">
|
||||
<el-select placeholder="请选择协会类型" style="width: 100%"
|
||||
v-model="formData.type">
|
||||
<el-option
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.code"
|
||||
v-for="item in typeOptions">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row gutter="30">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="协会负责人" prop="fzr">
|
||||
<el-select
|
||||
:loading="userLoading"
|
||||
:remote-method="userRemoteMethod"
|
||||
@change="fzrChange"
|
||||
filterable
|
||||
placeholder="请输入姓名或工号查找"
|
||||
remote
|
||||
reserve-keyword
|
||||
style="width: 100%"
|
||||
v-model="formData.fzr">
|
||||
<el-option
|
||||
:key="item.id"
|
||||
:label="item.username+'('+item.loginname+')'"
|
||||
:value="item.id"
|
||||
v-for="item in userOptions">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="负责人单位" prop="fzr_unit_name">
|
||||
<el-input disabled placeholder="" v-model="formData.fzr_unit_name"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-row gutter="30">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="负责人电话" prop="fzr_mobile">
|
||||
<el-input placeholder="请填写负责人电话" v-model="formData.fzr_mobile"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item :rules="[
|
||||
{ type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }
|
||||
]" label="负责人邮箱" prop="fzr_email">
|
||||
<el-input placeholder="请填写负责人邮箱" type="email" v-model="formData.fzr_email"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="协会介绍" prop="stjs">
|
||||
<div id="stjsEditor"></div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="协会章程" prop="stzc">
|
||||
<div id="stzcEditor"></div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="附件上传" prop="accessory">
|
||||
<el-upload
|
||||
:auto-upload="false"
|
||||
:file-list="fileList"
|
||||
:on-change="handleChange"
|
||||
:on-remove="handleRemove"
|
||||
action="**"
|
||||
limit="1"
|
||||
name="file"
|
||||
ref="upload">
|
||||
<el-button size="small" type="primary">选择文件</el-button>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
|
||||
<span class="dialog-footer" slot="footer">
|
||||
<el-button @click="addDialogVisible = false">取 消</el-button>
|
||||
<el-button :disabled="subDis" @click="doAdd" type="primary">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="editDialogVisible"
|
||||
title="修改协会信息" top="3%" width="60%">
|
||||
|
||||
<el-divider content-position="left"><span style="color: rgb(121, 187, 255)">请填写以下协会信息</span>
|
||||
</el-divider>
|
||||
|
||||
<el-form :model="formData" :rules="formRules" label-position="top" label-width="120px" ref="editForm"
|
||||
size="small"
|
||||
style="padding: 0 30px">
|
||||
<el-row gutter="30">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="协会名称" prop="name">
|
||||
<el-input maxlength="100" placeholder="请输入协会名称" type="text"
|
||||
v-model="formData.name"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="协会类型" prop="type">
|
||||
<el-select placeholder="请选择协会类型" style="width: 100%"
|
||||
v-model="formData.type">
|
||||
<el-option
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.code"
|
||||
v-for="item in typeOptions">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row gutter="30">
|
||||
<el-col :span="12">
|
||||
<el-form-item disabled label="协会负责人" prop="fzrname">
|
||||
<el-input disabled placeholder="" v-model="formData.fzrname"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="负责人单位" prop="fzr_unit_name">
|
||||
<el-input disabled placeholder="" v-model="formData.fzr_unit_name"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-row gutter="30">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="负责人电话" prop="fzr_mobile">
|
||||
<el-input placeholder="请填写负责人电话" v-model="formData.fzr_mobile"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item :rules="[
|
||||
{ type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }
|
||||
]" label="负责人邮箱" prop="fzr_email">
|
||||
<el-input placeholder="请填写负责人邮箱" type="email" v-model="formData.fzr_email"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item label="协会介绍" prop="stjs">
|
||||
<div id="stjsEditor2"></div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="协会章程" prop="stzc">
|
||||
<div id="stzcEditor2"></div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="附件上传" prop="accessory">
|
||||
<el-upload
|
||||
:auto-upload="false"
|
||||
:file-list="fileList"
|
||||
:on-change="handleChange"
|
||||
:on-exceed="function(files, fileList){
|
||||
$notify({
|
||||
title: '警告',
|
||||
message: '最多可选择一个文件!',
|
||||
type: 'warning'
|
||||
});
|
||||
}"
|
||||
:on-remove="handleRemove"
|
||||
action="**"
|
||||
limit="1"
|
||||
name="file" ref="upload">
|
||||
<el-button size="small" type="primary">选择文件</el-button>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
|
||||
<span class="dialog-footer" slot="footer">
|
||||
<el-button @click="editDialogVisible = false">取 消</el-button>
|
||||
<el-button :disabled="subDis" @click="doEdit" type="primary">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="viewDialogVisible"
|
||||
custom-class="ViewDialogClass" title="详细信息" top="3%" width="60%">
|
||||
|
||||
<el-collapse accordion v-model="activeName">
|
||||
<el-collapse-item name="1" title="协会详细信息">
|
||||
<table class="tabInfo">
|
||||
<tr>
|
||||
<td class="title" colspan="4" style="font-size: 18px;">{{detailData.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="title">协会负责人</td>
|
||||
<td class="content">{{detailData.fzrname}}</td>
|
||||
<td class="title">负责人单位</td>
|
||||
<td class="content">{{detailData.fzr_unit_name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="title">负责人电话</td>
|
||||
<td class="content">{{detailData.fzr_mobile}}</td>
|
||||
<td class="title">负责人邮箱</td>
|
||||
<td class="content">{{detailData.fzr_email}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="title">成立时间</td>
|
||||
<td class="content">{{detailData.create_time}}</td>
|
||||
<td class="title">协会人数</td>
|
||||
<td class="content">{{detailData.cynum}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="title" colspan="4">协会介绍</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="content" colspan="4">
|
||||
<div class="textareaDiv" v-html="detailData.stjs"></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="title" colspan="4">协会章程</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="content" colspan="4">
|
||||
<div class="textareaDiv" v-html="detailData.stzc"></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</el-collapse-item>
|
||||
|
||||
<el-collapse-item name="2" title="协会成员列表">
|
||||
<el-table :data="detailData.clubuser" :header-cell-style="{background:'#F5F5F5',color:'#606266'}" border
|
||||
size="small">
|
||||
<el-table-column align="center" header-align="center" label="人员身份" prop="sf" width="150px">
|
||||
<template slot-scope="scope">
|
||||
<el-lable v-if="scope.row.sf==1">负责人</el-lable>
|
||||
<el-lable v-if="scope.row.sf==2">成员</el-lable>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="工号" prop="loginname"
|
||||
width="150px"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="姓名" prop="username"
|
||||
width="150px"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="性别" prop="sex"
|
||||
width="150px"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="电话" prop="mobile"
|
||||
width="150px"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="所属单位"
|
||||
prop="unitname"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="是否缴费" prop="isjf"
|
||||
width="150px">
|
||||
<template slot-scope="scope">
|
||||
<span class="text-success" v-if="scope.row.isjf">已缴费</span>
|
||||
<span class="text-danger" v-else>未缴费</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
|
||||
<span class="dialog-footer" slot="footer">
|
||||
<el-button @click="viewDialogVisible = false">关 闭</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
<script>
|
||||
var E = window.wangEditor
|
||||
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
data() {
|
||||
return {
|
||||
activeName: ['1'],
|
||||
detailData: {clubuser: []},
|
||||
typeOptions: [],
|
||||
addDialogVisible: false,
|
||||
editDialogVisible: false,
|
||||
viewDialogVisible: false,
|
||||
tabloading: false,
|
||||
formData: {},
|
||||
tableData: [],
|
||||
pageForm: {
|
||||
searchName: "club.name",
|
||||
searchKeyword: "",
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
pageOrderName: "",
|
||||
pageOrderBy: ""
|
||||
},
|
||||
formRules: {
|
||||
name: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
type: [{required: false, message: '必填', trigger: ['blur', 'change']}],
|
||||
fzr: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
fzr_unit_name: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
fzrname: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
},
|
||||
subDis: false,
|
||||
userOptions: [],
|
||||
userLoading: false,
|
||||
fileList: [],
|
||||
delFiles: [],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openDetail(id) {
|
||||
$.get(base + "/platform/sys/club/mange/findOne", {id}, (data) => {
|
||||
if (data.code == 0) {
|
||||
this.detailData = data.data
|
||||
|
||||
this.activeName = ['1']
|
||||
this.viewDialogVisible = true
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
doDissolve(id) {
|
||||
this.$confirm('确定要解散该协会吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: (a, b) => {
|
||||
if ("confirm" == a) {//确认后再执行
|
||||
$.post(base + "/platform/sys/club/mange/dissolve", {id: id}, (data) => {
|
||||
if (data.code == 0) {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'success'
|
||||
});
|
||||
this.pageData();
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
doDelete(id) {
|
||||
this.$confirm('确定要删除该协会吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: (a, b) => {
|
||||
if ("confirm" == a) {//确认后再执行
|
||||
$.post(base + "/platform/sys/club/mange/delete", {id: id}, (data) => {
|
||||
if (data.code == 0) {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'success'
|
||||
});
|
||||
this.pageData();
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
doEdit() {
|
||||
this.$refs["editForm"].validate((valid) => {
|
||||
if (valid) {
|
||||
var formdata = new FormData();
|
||||
for (let key in this.formData) {
|
||||
formdata.append(key, this.formData[key] ? this.formData[key] : '');
|
||||
}
|
||||
|
||||
this.fileList.forEach(function (val) {
|
||||
if (val.status === 'ready') {
|
||||
formdata.append("files", val.raw, val.raw.name);
|
||||
}
|
||||
});
|
||||
|
||||
formdata.append("delFiles", this.delFiles)
|
||||
|
||||
this.subDis = true
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '数据提交中...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url: "/platform/sys/club/mange/doEdit",
|
||||
type: "post",
|
||||
data: formdata,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
success: (data) => {
|
||||
this.subDis = false
|
||||
loading.close()
|
||||
if (data.code === 0) {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'success'
|
||||
});
|
||||
this.pageData();
|
||||
this.editDialogVisible = false;
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
},
|
||||
error: data => {
|
||||
this.subDis = false
|
||||
loading.close()
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
openEdit(id) {
|
||||
this.fileList = []
|
||||
this.delFiles = []
|
||||
this.userOptions = []
|
||||
this.formData = {}
|
||||
|
||||
$.get(base + "/platform/sys/club/mange/findOne", {id}, (data) => {
|
||||
if (data.code == 0) {
|
||||
this.formData = data.data
|
||||
|
||||
//files
|
||||
data.data.files.forEach(v => {
|
||||
this.fileList.push({id: v.id, name: v.filename, url: v.filepath, status: 'success'})
|
||||
})
|
||||
|
||||
this.editDialogVisible = true
|
||||
|
||||
this.$nextTick(() => {
|
||||
$("#stjsEditor2").html("")
|
||||
$("#stzcEditor2").html("")
|
||||
var stjsEditor = new E("#stjsEditor2")
|
||||
stjsEditor.config.onchange = (html) => {
|
||||
this.formData.stjs = html
|
||||
}
|
||||
var stzcEditor = new E("#stzcEditor2")
|
||||
stzcEditor.config.onchange = (html) => {
|
||||
this.formData.stzc = html
|
||||
}
|
||||
stjsEditor.create()
|
||||
stzcEditor.create()
|
||||
stjsEditor.txt.html(data.data.stjs)
|
||||
stzcEditor.txt.html(data.data.stzc)
|
||||
})
|
||||
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
doAdd() {
|
||||
this.$refs["addForm"].validate((valid) => {
|
||||
if (valid) {
|
||||
var formdata = new FormData();
|
||||
for (let key in this.formData) {
|
||||
formdata.append(key, this.formData[key] ? this.formData[key] : '');
|
||||
}
|
||||
|
||||
this.fileList.forEach(function (val) {
|
||||
formdata.append("files", val.raw, val.raw.name);
|
||||
});
|
||||
|
||||
this.subDis = true
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '数据提交中...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url: "/platform/sys/club/mange/doAdd",
|
||||
type: "post",
|
||||
data: formdata,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
success: (data) => {
|
||||
this.subDis = false
|
||||
loading.close()
|
||||
if (data.code === 0) {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'success'
|
||||
});
|
||||
this.pageData();
|
||||
this.addDialogVisible = false;
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
},
|
||||
error: data => {
|
||||
this.subDis = false
|
||||
loading.close()
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
handleRemove(file, fileList) {
|
||||
this.fileList = fileList;
|
||||
if (file.status === "success") {
|
||||
this.delFiles.push(file.id);
|
||||
}
|
||||
},
|
||||
handleChange(file, fileList) {
|
||||
const delFile = () => {
|
||||
for (let i = 0; i < fileList.length; i++) {
|
||||
if (file === fileList[i]) {
|
||||
fileList.splice(i, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.size === 0) {
|
||||
this.$message.warning("您选择的是空文件!");
|
||||
delFile()
|
||||
}
|
||||
if (!uploadFileType.includes(file.name.split('.')[1])) {
|
||||
this.$message.warning("文件格式不支持!");
|
||||
delFile()
|
||||
}
|
||||
this.fileList = fileList;
|
||||
},
|
||||
|
||||
fzrChange(id) {
|
||||
const user = this.userOptions.find(v => {
|
||||
return v.id == id
|
||||
})
|
||||
this.$set(this.formData, 'fzr_unit_name', user.unitname)
|
||||
this.$set(this.formData, 'fzr_mobile', user.mobile)
|
||||
this.$set(this.formData, 'fzr_email', user.email)
|
||||
},
|
||||
async userRemoteMethod(query) {
|
||||
if (query) {
|
||||
this.userOptions = []
|
||||
this.userLoading = true
|
||||
this.userOptions = await searchUser(query)
|
||||
this.userLoading = false
|
||||
}
|
||||
},
|
||||
openAdd() {
|
||||
this.fileList = []
|
||||
this.delFiles = []
|
||||
this.userOptions = []
|
||||
this.formData = {}
|
||||
this.addDialogVisible = true;
|
||||
this.$nextTick(() => {
|
||||
$("#stjsEditor").html("")
|
||||
$("#stzcEditor").html("")
|
||||
var stjsEditor = new E("#stjsEditor")
|
||||
stjsEditor.config.onchange = (html) => {
|
||||
this.formData.stjs = html
|
||||
}
|
||||
var stzcEditor = new E("#stzcEditor")
|
||||
stzcEditor.config.onchange = (html) => {
|
||||
this.formData.stzc = html
|
||||
}
|
||||
stjsEditor.create()
|
||||
stzcEditor.create()
|
||||
})
|
||||
if (this.$refs['addForm']) {
|
||||
this.$refs['addForm'].resetFields()
|
||||
}
|
||||
},
|
||||
doSearch() {
|
||||
this.tabKey = new Date().getTime()
|
||||
this.pageForm.pageNumber = 1
|
||||
this.pageData()
|
||||
}
|
||||
,
|
||||
pageOrder(column) {//按字段排序
|
||||
this.pageForm.pageOrderName = column.prop;
|
||||
this.pageForm.pageOrderBy = column.order;
|
||||
this.pageData();
|
||||
}
|
||||
,
|
||||
pageNumberChange(val) {//页码更新操作
|
||||
this.pageForm.pageNumber = val;
|
||||
this.pageData();
|
||||
}
|
||||
,
|
||||
pageSizeChange(val) {//分页大小更新操作
|
||||
this.pageForm.pageSize = val;
|
||||
this.pageData();
|
||||
}
|
||||
,
|
||||
pageData() {//加载分页数据
|
||||
sublime.showLoadingbar();//显示loading
|
||||
this.tabloading = true
|
||||
$.post(base + "/platform/sys/club/mange/pageData", this.pageForm, (data) => {
|
||||
sublime.closeLoadingbar();//关闭loading
|
||||
this.tabloading = false
|
||||
if (data.code == 0) {
|
||||
this.tableData = data.data.list;
|
||||
this.pageForm.totalCount = data.data.totalCount;
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
}
|
||||
,
|
||||
},
|
||||
async created() {
|
||||
this.typeOptions = await getClubType()
|
||||
this.pageData();
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,251 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<div id="app" v-cloak>
|
||||
<guava>
|
||||
<div style="padding-right: 10px">
|
||||
<el-card shadow="never">
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-input @keyup.enter.native="doSearch" clearable placeholder="请输入内容"
|
||||
v-model="pageForm.searchKeyword">
|
||||
<el-select placeholder="查询类型" slot="prepend" style="width: 120px;"
|
||||
v-model="pageForm.searchName">
|
||||
<el-option label="姓名" value="u.username"></el-option>
|
||||
<el-option label="工号" value="u.loginname"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-select clearable filterable placeholder="请选择协会"
|
||||
v-model="pageForm.clubid">
|
||||
<el-option
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
v-for="item in clubOptions">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-button @click="doSearch" icon="el-icon-search" type="primary"></el-button>
|
||||
</div>
|
||||
|
||||
<div class="pull-right offscreen-right mt5">
|
||||
<el-button :disabled="subDis" @click="check(true)" icon="el-icon-check" plain type="success">同意
|
||||
</el-button>
|
||||
<el-button :disabled="subDis" @click="check(false)" icon="el-icon-close" plain type="danger">拒绝
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<div class="pull-right offscreen-right mt5" style="margin-right: 40px">
|
||||
<el-radio-group v-model="pageForm.radioType" @change="(val) => doSearch()">
|
||||
<el-radio-button label="1">全部</el-radio-button>
|
||||
<el-radio-button label="2">已审核</el-radio-button>
|
||||
<el-radio-button label="3">未审核</el-radio-button>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-card class="mt10" shadow="never">
|
||||
<el-table :data="tableData" :key="tabKey" @selection-change="handleSelectionChange" @sort-change="pageOrder"
|
||||
ref="multipleTable"
|
||||
row-key="id"
|
||||
style="width: 100%" v-loading="tabloading">
|
||||
<el-table-column :reserve-selection="true" v-if="pageForm.radioType !== '2'" :selectable="(row, index) => {return row.status === 3}"
|
||||
type="selection"
|
||||
width="55">
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index">
|
||||
<template scope="scope">
|
||||
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="协会名称" show-overflow-tooltip sortable
|
||||
prop="clubname"></el-table-column>
|
||||
<el-table-column width="100" align="center" header-align="center" label="工号" sortable
|
||||
prop="loginname"></el-table-column>
|
||||
<el-table-column width="100" align="center" header-align="center" label="姓名" sortable
|
||||
prop="username"></el-table-column>
|
||||
<el-table-column width="80" align="center" header-align="center" label="性别" prop="sex" sortable
|
||||
></el-table-column>
|
||||
<el-table-column width="60" align="center" header-align="center" label="年龄"
|
||||
prop="birthday">
|
||||
<template scope="scope">
|
||||
<span>{{getAge(scope.row)}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="120" align="center" header-align="center" label="电话"
|
||||
prop="mobile"></el-table-column>
|
||||
<el-table-column width="80" align="center" header-align="center" label="是否会员"
|
||||
prop="status">
|
||||
<template scope="scope">
|
||||
<span v-if="scope.row.status != 5">否</span>
|
||||
<span v-if="scope.row.status === 5" style="color: #236eb4">是</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="人员类型" show-overflow-tooltip
|
||||
prop="rylx"></el-table-column>
|
||||
<el-table-column width="100" align="center" header-align="center" label="在职状态"
|
||||
prop="userstate"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="所属单位" prop="unitname" show-overflow-tooltip
|
||||
sortable></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="审核状态"
|
||||
prop="status">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.status==1" type="primary">待协会审核</el-tag>
|
||||
<el-tag v-if="scope.row.status==2" type="danger">协会拒绝</el-tag>
|
||||
<el-tag v-if="scope.row.status==3" type="primary">待校工会审核</el-tag>
|
||||
<el-tag v-if="scope.row.status==4" type="danger">校工会拒绝</el-tag>
|
||||
<el-tag v-if="scope.row.status==5" type="success">审核通过</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-size="pageForm.pageSize"
|
||||
:page-sizes="[10, 20, 30, 50]"
|
||||
:total="pageForm.totalCount"
|
||||
@current-change="pageNumberChange"
|
||||
@size-change="pageSizeChange"
|
||||
layout="total, sizes, prev, pager, next">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</div>
|
||||
</guava>
|
||||
</div>
|
||||
<script>
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
data() {
|
||||
return {
|
||||
tabKey: '',
|
||||
multipleSelection: [],
|
||||
clubOptions: [],
|
||||
tabloading: false,
|
||||
formData: {},
|
||||
tableData: [],
|
||||
pageForm: {
|
||||
searchName: "u.username",
|
||||
searchKeyword: "",
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
pageOrderName: "",
|
||||
pageOrderBy: "",
|
||||
radioType: 3
|
||||
},
|
||||
formRules: {
|
||||
code: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
name: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
},
|
||||
subDis: false,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getAge(row) {
|
||||
if (row.birthday === null || row.birthday === undefined) {
|
||||
return
|
||||
}
|
||||
const birthdayTime = new Date(row.birthday).getTime()
|
||||
const nowTime = new Date().getTime()
|
||||
return Math.ceil((nowTime - birthdayTime) / 31536000000)
|
||||
},
|
||||
check(flag) {
|
||||
if (!this.multipleSelection.length) {
|
||||
this.$notify({
|
||||
title: '提示',
|
||||
message: '请先勾选需要进行审核的人员!',
|
||||
type: 'warning'
|
||||
});
|
||||
return
|
||||
}
|
||||
this.$confirm('您选择了' + this.multipleSelection.length + '个人,请确定是否' + (flag ? '同意?' : '拒绝?'), '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: (a, b) => {
|
||||
if ("confirm" === a) {
|
||||
const ids = this.multipleSelection.map(v => {
|
||||
return v.id
|
||||
})
|
||||
this.subDis = true
|
||||
$.post(base + "/platform/sys/club/sh/check", {ids: JSON.stringify(ids), flag: flag, type: 2}, (data) => {
|
||||
this.subDis = false
|
||||
if (data.code === 0) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
});
|
||||
this.multipleSelection = []
|
||||
this.$refs.multipleTable.clearSelection();
|
||||
this.doSearch()
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val;
|
||||
},
|
||||
doSearch() {
|
||||
// this.tabKey = new Date().getTime()
|
||||
this.pageForm.pageNumber = 1
|
||||
this.pageData()
|
||||
}
|
||||
,
|
||||
pageOrder(column) {//按字段排序
|
||||
this.pageForm.pageOrderName = column.prop;
|
||||
this.pageForm.pageOrderBy = column.order;
|
||||
this.pageData();
|
||||
}
|
||||
,
|
||||
pageNumberChange(val) {//页码更新操作
|
||||
this.pageForm.pageNumber = val;
|
||||
this.pageData();
|
||||
}
|
||||
,
|
||||
pageSizeChange(val) {//分页大小更新操作
|
||||
this.pageForm.pageSize = val;
|
||||
this.pageData();
|
||||
}
|
||||
,
|
||||
pageData() {//加载分页数据
|
||||
sublime.showLoadingbar();//显示loading
|
||||
this.tabloading = true
|
||||
this.pageForm.type = 2
|
||||
$.post(base + "/platform/sys/club/sh/pageData", this.pageForm, (data) => {
|
||||
sublime.closeLoadingbar();//关闭loading
|
||||
this.tabloading = false
|
||||
if (data.code === 0) {
|
||||
this.tableData = data.data.list;
|
||||
this.pageForm.totalCount = data.data.totalCount;
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
async getMyMangeClub() {
|
||||
const {data} = await $.get("/platform/sys/club/users/getMyMangeClub")
|
||||
return data
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.clubOptions = await this.getMyMangeClub()
|
||||
this.pageData();
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,242 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<div id="app" v-cloak>
|
||||
<guava>
|
||||
<div style="padding-right: 10px">
|
||||
<el-card shadow="never">
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-input @keyup.enter.native="doSearch" clearable placeholder="请输入内容"
|
||||
v-model="pageForm.searchKeyword">
|
||||
<el-select placeholder="查询类型" slot="prepend" style="width: 120px;"
|
||||
v-model="pageForm.searchName">
|
||||
<el-option label="姓名" value="u.username"></el-option>
|
||||
<el-option label="工号" value="u.loginname"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-select clearable filterable placeholder="请选择协会"
|
||||
v-model="pageForm.clubid">
|
||||
<el-option
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
v-for="item in clubOptions">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-button @click="doSearch" icon="el-icon-search" type="primary"></el-button>
|
||||
</div>
|
||||
|
||||
<div class="pull-right offscreen-right mt5">
|
||||
<el-button :disabled="subDis" @click="check(true)" icon="el-icon-check" plain type="success">同意
|
||||
</el-button>
|
||||
<el-button :disabled="subDis" @click="check(false)" icon="el-icon-close" plain type="danger">拒绝
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<div class="pull-right offscreen-right mt5" style="margin-right: 40px">
|
||||
<el-radio-group v-model="pageForm.radioType" @change="(val) => doSearch()">
|
||||
<el-radio-button label="1">全部</el-radio-button>
|
||||
<el-radio-button label="2">已审核</el-radio-button>
|
||||
<el-radio-button label="3">未审核</el-radio-button>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-card class="mt10" shadow="never">
|
||||
<el-table :data="tableData" :key="tabKey" @selection-change="handleSelectionChange" @sort-change="pageOrder"
|
||||
ref="multipleTable"
|
||||
row-key="id"
|
||||
style="width: 100%" v-loading="tabloading">
|
||||
<el-table-column :reserve-selection="true" v-if="pageForm.radioType !== '2'" :selectable="(row, index) => {return row.status === 1}"
|
||||
type="selection"
|
||||
width="55">
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index">
|
||||
<template scope="scope">
|
||||
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="协会名称" show-overflow-tooltip sortable
|
||||
prop="clubname"></el-table-column>
|
||||
<el-table-column width="100" align="center" header-align="center" label="工号" sortable
|
||||
prop="loginname"></el-table-column>
|
||||
<el-table-column width="100" align="center" header-align="center" label="姓名" sortable
|
||||
prop="username"></el-table-column>
|
||||
<el-table-column width="80" align="center" header-align="center" label="性别" prop="sex" sortable
|
||||
></el-table-column>
|
||||
<el-table-column width="60" align="center" header-align="center" label="年龄"
|
||||
prop="birthday">
|
||||
<template scope="scope">
|
||||
<span>{{getAge(scope.row)}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="120" align="center" header-align="center" label="电话"
|
||||
prop="mobile"></el-table-column>
|
||||
<el-table-column width="80" align="center" header-align="center" label="是否会员"
|
||||
prop="status">
|
||||
<template scope="scope">
|
||||
<span v-if="scope.row.status != 5">否</span>
|
||||
<span v-if="scope.row.status === 5" style="color: #236eb4">是</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="人员类型" show-overflow-tooltip
|
||||
prop="rylx"></el-table-column>
|
||||
<el-table-column width="100" align="center" header-align="center" label="在职状态"
|
||||
prop="userstate"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="所属单位" prop="unitname" show-overflow-tooltip
|
||||
sortable></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="审核状态"
|
||||
prop="status">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.status==1" type="primary">待协会审核</el-tag>
|
||||
<el-tag v-if="scope.row.status==2" type="danger">协会拒绝</el-tag>
|
||||
<el-tag v-if="scope.row.status==3" type="primary">待校工会审核</el-tag>
|
||||
<el-tag v-if="scope.row.status==4" type="danger">校工会拒绝</el-tag>
|
||||
<el-tag v-if="scope.row.status==5" type="success">审核通过</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-size="pageForm.pageSize"
|
||||
:page-sizes="[10, 20, 30, 50]"
|
||||
:total="pageForm.totalCount"
|
||||
@current-change="pageNumberChange"
|
||||
@size-change="pageSizeChange"
|
||||
layout="total, sizes, prev, pager, next">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</div>
|
||||
</guava>
|
||||
</div>
|
||||
<script>
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
data() {
|
||||
return {
|
||||
tabKey: '',
|
||||
multipleSelection: [],
|
||||
clubOptions: [],
|
||||
tabloading: false,
|
||||
formData: {},
|
||||
tableData: [],
|
||||
pageForm: {
|
||||
searchName: "u.username",
|
||||
searchKeyword: "",
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
pageOrderName: "",
|
||||
pageOrderBy: "",
|
||||
radioType: 3
|
||||
},
|
||||
formRules: {
|
||||
code: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
name: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||
},
|
||||
subDis: false,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getAge(row) {
|
||||
if (row.birthday === null || row.birthday === undefined) {
|
||||
return
|
||||
}
|
||||
const birthdayTime = new Date(row.birthday).getTime()
|
||||
const nowTime = new Date().getTime()
|
||||
return Math.ceil((nowTime - birthdayTime) / 31536000000)
|
||||
},
|
||||
check(flag) {
|
||||
if (!this.multipleSelection.length) {
|
||||
this.$notify({
|
||||
title: '提示',
|
||||
message: '请先勾选需要进行审核的人员!',
|
||||
type: 'warning'
|
||||
});
|
||||
return
|
||||
}
|
||||
const ids = this.multipleSelection.map(v => {
|
||||
return v.id
|
||||
})
|
||||
this.subDis = true
|
||||
$.post(base + "/platform/sys/club/sh/check", {ids: JSON.stringify(ids), flag: flag, type: 1}, (data) => {
|
||||
this.subDis = false
|
||||
if (data.code === 0) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
});
|
||||
this.multipleSelection = []
|
||||
this.$refs.multipleTable.clearSelection();
|
||||
this.doSearch()
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val;
|
||||
},
|
||||
doSearch() {
|
||||
// this.tabKey = new Date().getTime()
|
||||
this.pageForm.pageNumber = 1
|
||||
this.pageData()
|
||||
}
|
||||
,
|
||||
pageOrder(column) {//按字段排序
|
||||
this.pageForm.pageOrderName = column.prop;
|
||||
this.pageForm.pageOrderBy = column.order;
|
||||
this.pageData();
|
||||
}
|
||||
,
|
||||
pageNumberChange(val) {//页码更新操作
|
||||
this.pageForm.pageNumber = val;
|
||||
this.pageData();
|
||||
}
|
||||
,
|
||||
pageSizeChange(val) {//分页大小更新操作
|
||||
this.pageForm.pageSize = val;
|
||||
this.pageData();
|
||||
}
|
||||
,
|
||||
pageData() {//加载分页数据
|
||||
sublime.showLoadingbar();//显示loading
|
||||
this.tabloading = true
|
||||
this.pageForm.type = 1
|
||||
$.post(base + "/platform/sys/club/sh/pageData", this.pageForm, (data) => {
|
||||
sublime.closeLoadingbar();//关闭loading
|
||||
this.tabloading = false
|
||||
if (data.code === 0) {
|
||||
this.tableData = data.data.list;
|
||||
this.pageForm.totalCount = data.data.totalCount;
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
async getMyMangeClub() {
|
||||
const {data} = await $.get("/platform/sys/club/users/getMyMangeClub")
|
||||
return data
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.clubOptions = await this.getMyMangeClub()
|
||||
this.pageData();
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,397 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.w-e-text-container {
|
||||
height: 200px !important;
|
||||
}
|
||||
|
||||
input[type="file"] {
|
||||
display: none
|
||||
}
|
||||
|
||||
.el-descriptions :not(.is-bordered) .el-descriptions-item__cell {
|
||||
width: 10%;
|
||||
}
|
||||
.el_tab {
|
||||
margin-top: 6px;
|
||||
}
|
||||
|
||||
.el-table-container {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.el-table-container {
|
||||
padding-top: 6px;
|
||||
padding-right: 0px;
|
||||
}
|
||||
|
||||
.el-tabs--card>.el-tabs__header .el-tabs__nav {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.el-tabs__header {
|
||||
margin: 0 0 6px;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.el-tabs--card>.el-tabs__header .el-tabs__item {
|
||||
border-bottom: none;
|
||||
font-weight: bold;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.el-descriptions-item__cell {
|
||||
text-align: center !important;
|
||||
}
|
||||
</style>
|
||||
<div id="app" v-cloak>
|
||||
|
||||
<guava>
|
||||
<transition name="el-zoom-in-center">
|
||||
<div v-show="v=='index'" style="width: 100%;height: 100%;padding-right: 10px">
|
||||
<el-card shadow="never">
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
|
||||
@keyup.enter.native="doSearch">
|
||||
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
|
||||
style="width: 120px;">
|
||||
<el-option label="协会名称" value="club.name"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-tabs class="el-table-container el_tab" v-model="activeName" stretch @tab-click="handleClick" type="card">
|
||||
<el-tab-pane :label="'可加入协会' + noJoinCount" name="false">
|
||||
</el-tab-pane>
|
||||
<el-tab-pane :label="'已加入协会' + hasJoinCount" name="true">
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
<el-row class="el-table-container" style="padding-top: 0">
|
||||
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder">
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index">
|
||||
<template scope="scope">
|
||||
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="协会名称" width="250px"
|
||||
prop="name"></el-table-column>
|
||||
|
||||
<el-table-column align="center" sortable header-align="center" label="协会编码" width="100px"
|
||||
show-overflow-tooltip
|
||||
prop="code"></el-table-column>
|
||||
|
||||
<el-table-column align="center" sortable header-align="center" label="联系人" show-overflow-tooltip
|
||||
prop="fzrname"></el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="联系人电话" show-overflow-tooltip
|
||||
prop="fzr_mobile"></el-table-column>
|
||||
|
||||
<el-table-column align="center" sortable header-align="center" label="联系人单位" show-overflow-tooltip
|
||||
prop="fzr_unit_name"></el-table-column>
|
||||
|
||||
<el-table-column align="center" sortable header-align="center" label="限定人数"
|
||||
show-overflow-tooltip
|
||||
prop="number"></el-table-column>
|
||||
|
||||
<el-table-column align="center" sortable header-align="center" label="当前人数"
|
||||
show-overflow-tooltip
|
||||
prop="cynum"></el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="在职人数" show-overflow-tooltip
|
||||
prop="worknum"></el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="退休人数" show-overflow-tooltip
|
||||
prop="outnum"></el-table-column>
|
||||
|
||||
<el-table-column align="center" v-if="activeName=='true'" header-align="center" label="申请状态" sortable>
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.status==1" type="primary">待协会审核</el-tag>
|
||||
<el-tag v-if="scope.row.status==2" type="danger">协会拒绝</el-tag>
|
||||
<el-tag v-if="scope.row.status==3" type="primary">待校工会审核</el-tag>
|
||||
<el-tag v-if="scope.row.status==4" type="danger">校工会拒绝</el-tag>
|
||||
<el-tag v-if="scope.row.status==5" type="success">审核通过</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="操作" fixed="right" width="250px">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" @click="openDetail(scope.row.id)">查看</el-button>
|
||||
<el-button size="mini" v-if="activeName=='false'" type="primary" @click="doSubmit(scope.row)">
|
||||
申请加入
|
||||
</el-button>
|
||||
<el-button size="mini" v-if="activeName=='true'&&scope.row.status==1" type="danger"
|
||||
@click="doRevocation(scope.row.id)">
|
||||
撤销申请
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
</el-row>
|
||||
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
@size-change="pageSizeChange"
|
||||
@current-change="pageNumberChange"
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-sizes="[10, 20, 30, 50]"
|
||||
:page-size="pageForm.pageSize"
|
||||
layout="total, sizes, prev, pager, next"
|
||||
:total="pageForm.totalCount">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
</div>
|
||||
</transition>
|
||||
|
||||
<transition name="el-zoom-in-center">
|
||||
<div v-show="v=='view'" style="width: 100%;padding-right: 10px">
|
||||
<el-card class="box-card v-box" shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<el-button icon="el-icon-back" type="text" @click="v='index'" style="font-size: 18px">返回
|
||||
</el-button>
|
||||
</div>
|
||||
<div style="padding: 0 10%;height: calc(100vh - 150px);overflow: auto">
|
||||
<vi-title title="协会信息"></vi-title>
|
||||
<el-descriptions class="margin-top" title="" :column="3" border>
|
||||
<el-descriptions-item span="3">
|
||||
<template slot="label">协会名称</template>
|
||||
<div v-html="detailData.name"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">协会联系人</template>
|
||||
{{detailData.fzrname}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">所在单位</template>
|
||||
{{detailData.fzr_unit_name}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">联系人电话</template>
|
||||
{{detailData.fzr_mobile}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">联系人邮箱</template>
|
||||
{{detailData.fzr_email}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">成立时间</template>
|
||||
{{detailData.create_time}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">会费标准</template>
|
||||
{{detailData.dues_standard}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">介绍链接</template>
|
||||
<span style="cursor: pointer; color: #236eb4"
|
||||
@click="window.open(detailData.introduce_href.indexOf('http') !== -1 ? detailData.introduce_href : 'https://' + detailData.introduce_href)">{{detailData.introduce_href}}</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">限定人数</template>
|
||||
{{detailData.number}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template slot="label">当前人数</template>
|
||||
{{detailData.cynum}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3">
|
||||
<template slot="label">协会介绍</template>
|
||||
<div class="text-left" v-html="detailData.stjs"></div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item span="3">
|
||||
<template slot="label">协会章程</template>
|
||||
<div class="text-left" v-html="detailData.stzc"></div>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</transition>
|
||||
</guava>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
data() {
|
||||
return {
|
||||
v: 'index',
|
||||
detailData: {},
|
||||
activeNames: [],
|
||||
activeName: 'false',
|
||||
addDialogVisible: false,
|
||||
tabloading: false,
|
||||
viewDialogVisible: false,
|
||||
formData: {},
|
||||
tableData: [],
|
||||
pageForm: {
|
||||
isjr: false,
|
||||
searchName: "club.name",
|
||||
searchKeyword: "",
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
pageOrderName: "",
|
||||
pageOrderBy: ""
|
||||
},
|
||||
formRules: {
|
||||
users: [{required: true, message: '必选', trigger: ['blur', 'change']}],
|
||||
isjf: [{required: true, message: '必选', trigger: ['blur', 'change']}],
|
||||
},
|
||||
subDis: false,
|
||||
hasJoinCount: 0,
|
||||
noJoinCount: 0,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
doRevocation(id) {
|
||||
this.$confirm('是否撤销申请?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: (a, b) => {
|
||||
if ("confirm" === a) {//确认后再执行
|
||||
$.post(base + "/platform/sys/club/sq/revocation", {id}, (data) => {
|
||||
if (data.code === 0) {
|
||||
this.$message({
|
||||
message: '撤销申请成功!',
|
||||
type: 'success'
|
||||
});
|
||||
this.pageData();
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
async doSubmit(row) {
|
||||
//当前人数+待审核人数
|
||||
const num = row.cynum + row.approvalnum
|
||||
if (num >= row.number) {
|
||||
|
||||
const str = '抱歉,该协会限定人数<span style="color: red">' + row.number + '</span>人,' +
|
||||
'当前人数<span style="color: red">' + row.cynum + '</span>人,' +
|
||||
'待审核人数<span style="color: red">' + row.approvalnum + '</span>人,名额不足!'
|
||||
this.$alert(str, '提示', {
|
||||
dangerouslyUseHTMLString: true,
|
||||
type: 'warning'
|
||||
});
|
||||
return;
|
||||
}
|
||||
const {code, data} = await $.post('/platform/sys/club/sq/getInClubByCurUser')
|
||||
let str = '您还没有参加协会'
|
||||
if (data && data.length > 0) {
|
||||
str = '您已经加入了'
|
||||
data.forEach((item) => {
|
||||
str += '【' + item.name + '】'
|
||||
})
|
||||
}
|
||||
str += ',请确认是否申请加入【' + row.name + '】?'
|
||||
this.$confirm(str, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: (a, b) => {
|
||||
if ("confirm" === a) {//确认后再执行
|
||||
const id = row.id
|
||||
$.post(base + "/platform/sys/club/sq/submit", {id}, (data) => {
|
||||
if (data.code === 0) {
|
||||
this.$message({
|
||||
message: '提交申请成功!',
|
||||
type: 'success'
|
||||
});
|
||||
this.pageData();
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
openDetail(id) {
|
||||
$.get(base + "/platform/sys/club/mange/findOne", {id}, (data) => {
|
||||
if (data.code === 0) {
|
||||
this.detailData = data.data
|
||||
|
||||
this.activeNames = ['1']
|
||||
this.v = 'view'
|
||||
this.viewDialogVisible = true
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
handleClick(tab, event) {
|
||||
this.pageForm.searchKeyword = ''
|
||||
this.pageForm.isjr = tab.name
|
||||
this.tableData = []
|
||||
this.doSearch()
|
||||
},
|
||||
doSearch() {
|
||||
this.tabKey = new Date().getTime()
|
||||
this.pageForm.pageNumber = 1
|
||||
this.pageData()
|
||||
},
|
||||
pageOrder(column) {//按字段排序
|
||||
this.pageForm.pageOrderName = column.prop;
|
||||
this.pageForm.pageOrderBy = column.order;
|
||||
this.pageData();
|
||||
},
|
||||
pageNumberChange(val) {//页码更新操作
|
||||
this.pageForm.pageNumber = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageSizeChange(val) {//分页大小更新操作
|
||||
this.pageForm.pageSize = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageData() {//加载分页数据
|
||||
sublime.showLoadingbar();//显示loading
|
||||
this.tabloading = true
|
||||
$.post(base + "/platform/sys/club/sq/pageData", this.pageForm, (data) => {
|
||||
sublime.closeLoadingbar();//关闭loading
|
||||
this.tabloading = false
|
||||
if (data.code === 0) {
|
||||
this.tableData = data.data.list;
|
||||
this.pageForm.totalCount = data.data.totalCount;
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
async getCount() {
|
||||
const resp = await $.post('/platform/sys/club/sq/getCount')
|
||||
this.hasJoinCount = resp.data.hasJoinCount
|
||||
this.noJoinCount = resp.data.noJoinCount
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
await this.getCount()
|
||||
this.pageData();
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,352 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.w-e-text-container {
|
||||
height: 200px !important;
|
||||
}
|
||||
|
||||
input[type="file"] {
|
||||
display: none
|
||||
}
|
||||
</style>
|
||||
<div id="app" v-cloak>
|
||||
<el-row class="header navbar bg-white shadow">
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-input @keyup.enter.native="doSearch" clearable placeholder="请输入内容"
|
||||
v-model="pageForm.searchKeyword">
|
||||
<el-select placeholder="查询类型" slot="prepend" style="width: 120px;"
|
||||
v-model="pageForm.searchName">
|
||||
<el-option label="姓名" value="username"></el-option>
|
||||
<el-option label="工号" value="loginname"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-select filterable placeholder="请选择协会"
|
||||
v-model="pageForm.clubid">
|
||||
<el-option
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
v-for="item in clubOptions">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="btn-group tool-button mt5">
|
||||
<el-button @click="doSearch" icon="el-icon-search" type="primary"></el-button>
|
||||
</div>
|
||||
|
||||
<div class="pull-right offscreen-right mt5">
|
||||
<el-button @click="openAdd" icon="el-icon-plus">添加成员</el-button>
|
||||
</div>
|
||||
</el-row>
|
||||
|
||||
<el-row class="el-table-container">
|
||||
<el-table :data="tableData" @sort-change="pageOrder" row-key="id" style="width: 100%"
|
||||
v-loading="tabloading">
|
||||
<el-table-column align="center" header-align="center" label="序号" type="index">
|
||||
<template scope="scope">
|
||||
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
<el-table-column align="center" header-align="center" label="工号"
|
||||
prop="loginname"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="姓名"
|
||||
prop="username"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="性别" prop="sex" sortable
|
||||
width="150px"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="电话"
|
||||
prop="mobile"></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="所属单位" prop="unitname"
|
||||
sortable></el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="是否缴费" prop="isjf" sortable
|
||||
width="150px">
|
||||
<template slot-scope="scope">
|
||||
<el-tooltip content="已缴费" placement="top" v-if="scope.row.isjf">
|
||||
<i class="fa fa-circle text-success ml5"></i>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="未缴费" placement="top" v-else>
|
||||
<i class="fa fa-circle text-danger ml5"></i>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" header-align="center" label="人员身份" prop="sf">
|
||||
<template slot-scope="scope">
|
||||
<el-lable v-if="scope.row.sf==1">负责人</el-lable>
|
||||
<el-lable v-if="scope.row.sf==2">成员</el-lable>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" header-align="center" label="协会名称"
|
||||
prop="clubname"></el-table-column>
|
||||
|
||||
<el-table-column align="center" fixed="right" header-align="center" label="操作">
|
||||
<template slot-scope="scope">
|
||||
<el-dropdown @command="dropdownCommand">
|
||||
<el-button size="mini">
|
||||
<i class="ti-settings"></i>
|
||||
<span class="ti-angle-down"></span>
|
||||
</el-button>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item :command="{type:'del',data:scope.row}" v-if="scope.row.sf==2">
|
||||
移出协会
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item :command="{type:'jf',jf:true,data:scope.row}">
|
||||
已缴费
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item :command="{type:'jf',jf:false,data:scope.row}">
|
||||
未缴费
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-row>
|
||||
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-size="pageForm.pageSize"
|
||||
:page-sizes="[10, 20, 30, 50]"
|
||||
:total="pageForm.totalCount"
|
||||
@current-change="pageNumberChange"
|
||||
@size-change="pageSizeChange"
|
||||
layout="total, sizes, prev, pager, next">
|
||||
</el-pagination>
|
||||
</el-row>
|
||||
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="addDialogVisible" title="添加成员" width="40%">
|
||||
|
||||
<el-form :model="formData" :rules="formRules" label-width="100px"
|
||||
ref="addForm">
|
||||
<el-form-item label="成  员" prop="users">
|
||||
<el-select
|
||||
:loading="userLoading"
|
||||
:remote-method="userRemoteMethod"
|
||||
filterable
|
||||
multiple
|
||||
placeholder="请输入姓名或工号查找"
|
||||
remote
|
||||
reserve-keyword
|
||||
style="width: 100%"
|
||||
v-model="formData.users">
|
||||
<el-option
|
||||
:key="item.id"
|
||||
:label="item.username+'('+item.loginname+')'"
|
||||
:value="item.id"
|
||||
v-for="item in userOptions">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否缴费" prop="isjf">
|
||||
<el-radio-group v-model="formData.isjf">
|
||||
<el-radio border label="true">已缴费</el-radio>
|
||||
<el-radio border label="false">未缴费</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<span class="dialog-footer" slot="footer">
|
||||
<el-button @click="addDialogVisible = false">取 消</el-button>
|
||||
<el-button :disabled="subDis" @click="doAdd" type="primary">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
|
||||
</div>
|
||||
<script>
|
||||
const vue = new Vue({
|
||||
el: '#app',
|
||||
data() {
|
||||
return {
|
||||
clubOptions: [],
|
||||
addDialogVisible: false,
|
||||
tabloading: false,
|
||||
formData: {},
|
||||
tableData: [],
|
||||
pageForm: {
|
||||
searchName: "username",
|
||||
searchKeyword: "",
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
pageOrderName: "",
|
||||
pageOrderBy: ""
|
||||
},
|
||||
formRules: {
|
||||
users: [{required: true, message: '必选', trigger: ['blur', 'change']}],
|
||||
isjf: [{required: true, message: '必选', trigger: ['blur', 'change']}],
|
||||
},
|
||||
subDis: false,
|
||||
userOptions: [],
|
||||
userLoading: false,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
dropdownCommand: function (command) {
|
||||
const {type, jf, data} = command
|
||||
if (type == 'del') {
|
||||
this.$confirm('确定要将' + data.username + '移出协会吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
callback: (a, b) => {
|
||||
if ("confirm" == a) {//确认后再执行
|
||||
$.post(base + "/platform/sys/club/users/delUser", {
|
||||
clubid: data.clubid,
|
||||
userid: data.userid,
|
||||
}, (data) => {
|
||||
if (data.code == 0) {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'success'
|
||||
});
|
||||
this.pageData()
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
}
|
||||
}
|
||||
});
|
||||
} else if (type == 'jf') {
|
||||
$.post(base + "/platform/sys/club/users/jf", {
|
||||
clubid: data.clubid,
|
||||
userid: data.userid,
|
||||
jf: jf
|
||||
}, (data) => {
|
||||
if (data.code == 0) {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'success'
|
||||
});
|
||||
this.pageData()
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
}
|
||||
},
|
||||
doAdd() {
|
||||
this.$refs["addForm"].validate((valid) => {
|
||||
if (valid) {
|
||||
const loading = this.$loading({
|
||||
lock: true,
|
||||
text: '数据提交中...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
});
|
||||
|
||||
$.post(base + "/platform/sys/club/users/doAddUser", {
|
||||
clubid: this.pageForm.clubid,
|
||||
users: JSON.stringify(this.formData.users),
|
||||
isjf: this.formData.isjf
|
||||
}, (data) => {
|
||||
loading.close()
|
||||
if (data.code == 0) {
|
||||
this.addDialogVisible = false
|
||||
this.$message({
|
||||
message: '添加成功!',
|
||||
type: 'success'
|
||||
});
|
||||
this.pageData()
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
async queryUser(clubid, query) {
|
||||
const {data} = await $.get("/platform/sys/club/users/queryUser", {clubid, query})
|
||||
return data
|
||||
},
|
||||
async userRemoteMethod(query) {
|
||||
if (query) {
|
||||
this.userLoading = true
|
||||
const arr = await this.queryUser(this.pageForm.clubid, query)
|
||||
this.userOptions = this.userOptions.filter(v => {
|
||||
return this.formData.users.includes(v.id)
|
||||
}).concat(arr.filter(v => {
|
||||
return !this.formData.users.includes(v.id)
|
||||
}));
|
||||
|
||||
this.userLoading = false
|
||||
}
|
||||
},
|
||||
openAdd() {
|
||||
this.userOptions = []
|
||||
this.formData = {isjf: 'true'}
|
||||
this.addDialogVisible = true;
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs['addForm']) {
|
||||
this.$refs['addForm'].resetFields()
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
doSearch() {
|
||||
this.tabKey = new Date().getTime()
|
||||
this.pageForm.pageNumber = 1
|
||||
this.pageData()
|
||||
},
|
||||
pageOrder(column) {//按字段排序
|
||||
this.pageForm.pageOrderName = column.prop;
|
||||
this.pageForm.pageOrderBy = column.order;
|
||||
this.pageData();
|
||||
},
|
||||
pageNumberChange(val) {//页码更新操作
|
||||
this.pageForm.pageNumber = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageSizeChange(val) {//分页大小更新操作
|
||||
this.pageForm.pageSize = val;
|
||||
this.pageData();
|
||||
},
|
||||
pageData() {//加载分页数据
|
||||
sublime.showLoadingbar();//显示loading
|
||||
this.tabloading = true
|
||||
$.post(base + "/platform/sys/club/users/pageData", this.pageForm, (data) => {
|
||||
sublime.closeLoadingbar();//关闭loading
|
||||
this.tabloading = false
|
||||
if (data.code == 0) {
|
||||
this.tableData = data.data.list;
|
||||
this.pageForm.totalCount = data.data.totalCount;
|
||||
} else {
|
||||
this.$message({
|
||||
message: data.msg,
|
||||
type: 'error'
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
async getMyMangeClub() {
|
||||
const {data} = await $.get("/platform/sys/club/users/getMyMangeClub")
|
||||
return data
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.clubOptions = await this.getMyMangeClub()
|
||||
this.$set(this.pageForm, "clubid", this.clubOptions.length ? this.clubOptions[0].id : '')
|
||||
this.pageData();
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
Reference in New Issue
Block a user