This commit is contained in:
Paidax
2024-07-26 15:46:08 +08:00
parent eefb76c781
commit ddf52e5e86
109 changed files with 1384 additions and 1473 deletions
@@ -1,7 +1,21 @@
<!--#
layout("/mobile/platform.html"){
#-->
<style>
.tag {
position: absolute;
display: inline-block;
background-color: #1867b0;
color: #fff;
font-size: 10px;
top: 1px;
border-radius: 6px;
right: -8px;
padding: 1px 7px;
transform: rotate(17deg);
/*z-index: 999;*/
}
</style>
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar title="活动列表" left-arrow placeholder fixed @click-left="history.back()"></van-nav-bar>
@@ -15,7 +29,6 @@ layout("/mobile/platform.html"){
</van-dropdown-menu>
</div>
<div style="margin: 60px auto 0 auto">
<van-list :finished="finished" :finished-text="tableData.length>0?'没有更多了':''">
<div v-for="o in tableData" class="list-card" @click="openInfo(o.id,o.applyEndTime,o.applyType)">
@@ -31,20 +44,18 @@ layout("/mobile/platform.html"){
{{moment(o.applyStartTime).format('YYYY/MM/DD HH:mm')}} 至
{{moment(o.applyEndTime).format('YYYY/MM/DD HH:mm')}}
</span>
</van-cell>
<van-cell :border="false" title="活动时间">
<span style="font-size: 12px">
{{moment(o.startTime).format('YYYY/MM/DD HH:mm')}} 至
{{moment(o.endTime).format('YYYY/MM/DD HH:mm')}}
</span>
</van-cell>
<van-cell :border="false" title="活动状态">
<van-tag type="danger" v-if="moment(o.applyEndTime).valueOf() <moment().valueOf()">报名结束
</van-tag>
<van-tag type="success" v-else-if="moment(o.applyEndTime).valueOf() >moment().valueOf()">报名中
</van-tag>
<van-tag type="warning" v-if="moment(o.applyStartTime).valueOf() > moment().valueOf()">未开始</van-tag>
<van-tag type="primary" v-else-if="moment(o.applyEndTime).valueOf() > moment().valueOf() && moment().valueOf() > moment(o.applyStartTime).valueOf()">报名中</van-tag>
<van-tag type="success" v-else-if="moment(o.startTime).valueOf() < moment().valueOf() && moment().valueOf() < moment(o.endTime).valueOf()">进行中</van-tag>
<van-tag type="danger" v-else-if="moment().valueOf() > moment(o.endTime).valueOf()">活动结束</van-tag>
</van-cell>
</van-cell-group>
</div>
@@ -55,7 +66,6 @@ layout("/mobile/platform.html"){
description="暂无数据">
</van-empty>
</div>
<script>
@@ -66,7 +76,9 @@ layout("/mobile/platform.html"){
return {
activityList: [
{text: '全部', value: 1},
{text: '未开始', value: 5},
{text: '报名中', value: 2},
{text: '进行中', value: 4},
{text: '已结束', value: 3},
],
pageForm: {
@@ -76,6 +88,11 @@ layout("/mobile/platform.html"){
}
},
methods: {
formChange() {
this.pageForm.pageNumber = 1
this.tableData = []
this.pageData()
},
async getActivityData() {
const {data} = await $.post("/platform/activity/apply/activityData", {
year: this.pageForm.year,
@@ -94,7 +111,7 @@ layout("/mobile/platform.html"){
async created() {
this.mLoading = true
this.$set(this.pageForm, "year", this.yearList[0].value)
this.$set(this.pageForm, "isActivity", 2)
this.$set(this.pageForm, "isActivity", 1)
await this.getActivityData()
this.mLoading = false
@@ -105,4 +122,4 @@ layout("/mobile/platform.html"){
<!--#
}
#-->
#-->
@@ -62,7 +62,9 @@
<van-cell title="活动内容" v-if="o.projectTypeCode!=='50004'">
<template #label>
{{o.activityContent}}
<span style="white-space: pre-line">
{{o.activityContent}}
</span>
</template>
</van-cell>
<van-cell title="签到点位" v-if="o.needSign">
@@ -73,4 +75,4 @@
</div>
</template>
</van-cell>
</van-cell-group>
</van-cell-group>
@@ -83,27 +83,61 @@ layout("/mobile/platform.html"){
height="200"
:src="FILE_DOMAIN + '/fileStreamPreview?id=' + o.cover"
></van-image>
<!-- <van-image-->
<!-- fit="cover"-->
<!-- width="100%"-->
<!-- height="200"-->
<!-- :src="'https://zhghydd.cpu.edu.cn/file_server/fileStreamPreview?id=' + o.cover"-->
<!-- ></van-image>-->
<div class="activity_content">
<div class="activity_name van-ellipsis">
<van-icon name="fire" color="red"></van-icon>
<span style="margin-left: 10px;">{{o.name}}</span>
<div style="margin-left: 10px;width: calc(100% - 26px);text-overflow: ellipsis;overflow: hidden;white-space: nowrap">
{{o.name}}
</div>
</div>
<div class="activity_bottom">
<div class="left" style="width: 100%">
<van-icon name="clock" size="1em"></van-icon>
<span style="margin-left: 10px;">
报名时间:{{o.applyStartTime}}至{{o.applyEndTime}}
<!-- {{moment(o.activityStartTime).format('YYYY/MM/DD HH:mm')}} 至-->
<!-- {{moment(o.activityEndTime).format('YYYY/MM/DD HH:mm')}}-->
</span>
</div>
<!-- <div class="right">-->
<!-- <span v-if="moment(o.applyEndTime).valueOf() > moment().valueOf() && moment().valueOf() > moment(o.applyStartTime).valueOf()"-->
<!-- style="color: forestgreen">-->
<!-- 报名中-->
<!-- </span>-->
<!-- <span v-else-if="moment(o.applyEndTime).valueOf() < moment().valueOf() && moment().valueOf() < moment(o.startTime).valueOf()"-->
<!-- style="color: #ee1919">-->
<!-- 报名结束-->
<!-- </span>-->
<!-- <span v-else-if="moment(o.startTime).valueOf() < moment().valueOf() && moment().valueOf() < moment(o.endTime).valueOf()"-->
<!-- style="color: forestgreen">-->
<!-- 活动进行中-->
<!-- </span>-->
<!-- <span v-else-if="moment().valueOf() > moment(o.endTime).valueOf()"-->
<!-- style="color: #ee1919">-->
<!-- 活动结束-->
<!-- </span>-->
<!-- </div>-->
</div>
<div class="activity_bottom">
<div class="left">
<van-icon name="clock" size="1em"></van-icon>
<span style="margin-left: 10px;">
{{moment(o.startTime).format('YYYY/MM/DD HH:mm')}} 至
{{moment(o.endTime).format('YYYY/MM/DD HH:mm')}}
</span>
活动时间:{{o.startTime}}
<!-- {{moment(o.activityStartTime).format('YYYY/MM/DD HH:mm')}} 至-->
<!-- {{moment(o.activityEndTime).format('YYYY/MM/DD HH:mm')}}-->
</span>
</div>
<div class="right">
<span v-if="moment(o.applyEndTime).valueOf() > moment().valueOf() && moment().valueOf() > moment(o.applyStartTime).valueOf()"
<span v-if="moment(o.applyStartTime).valueOf() > moment().valueOf()"
style="color: forestgreen">
未开始报名
</span>
<span v-else-if="moment(o.applyEndTime).valueOf() > moment().valueOf() && moment().valueOf() > moment(o.applyStartTime).valueOf()"
style="color: forestgreen">
报名中
</span>
@@ -121,6 +155,19 @@ layout("/mobile/platform.html"){
</span>
</div>
</div>
<!-- <div class="activity_content" style="font-size: 12px; color: #c4bebe;">-->
<!-- <div class="left">-->
<!-- <van-icon name="clock" size="1em"></van-icon>-->
<!-- <span style="margin-left: 5px;">-->
<!-- {{moment(o.startTime).format('YYYY/MM/DD HH:mm')}} 至-->
<!-- {{moment(o.endTime).format('YYYY/MM/DD HH:mm')}}-->
<!-- </span>-->
<!-- </div>-->
<!-- </div>-->
</div>
</div>
</div>
@@ -157,6 +204,7 @@ layout("/mobile/platform.html"){
activityLevelList: [],
activityStatusList: [
{text: '全部', value: 1},
{text: '未开始', value: 5},
{text: '报名中', value: 2},
{text: '进行中', value: 3},
{text: '已结束', value: 4}
@@ -196,6 +244,11 @@ layout("/mobile/platform.html"){
},
//跳转页面
openReg(o) {
console.log(o)
if (moment(o.applyStartTime).valueOf() > moment().valueOf()) {
this.$toast('活动未开始报名')
return;
}
if (o.projectTypeCode === '50004') {
window.location.href = '/mobile/activity/Sports/list/activityEventList?id=' + o.id
} else {
@@ -203,9 +256,10 @@ layout("/mobile/platform.html"){
}
},
async init() {
this.$set(this.pageForm, "activityStatus", 2)
this.$set(this.pageForm, "activityStatus", 1)
this.$set(this.pageForm, "year", new Date().getFullYear())
const {data} = await $.get("/platform/activity/basic/basic/settings/getActivityTwoLevelType", {code: 40000})
this.activityLevelList = []
this.activityLevelList.push({value: null, text: "全部类别"})
data.forEach(v => {
this.activityLevelList.push({value: v.code, text: v.name})
@@ -221,10 +275,9 @@ layout("/mobile/platform.html"){
window.addEventListener('pageshow', e => {
if (e.persisted || (window.performance && window.performance.navigation.type === 2)) {
vue.init()
vue.onRefresh()
}
})
</script>
<!--#
}
#-->
#-->
@@ -42,13 +42,13 @@ layout("/mobile/platform.html"){
</style>
<div id="app" v-cloak>
<van-nav-bar :title="title" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<van-nav-bar :title="title" @click-left="history.back()" fixed left-arrow
placeholder></van-nav-bar>
<!--#include("/mobile/activity/unionActivity/common/activityInfo.html"){}#-->
<van-cell-group inset class="mt5">
<van-cell title="报名人员" class="regCell">
<van-cell-group class="mt5" inset>
<van-cell class="regCell" title="报名人员">
<template #label>
<div>
<span v-if="o.userNumberLimit===1">
@@ -61,9 +61,10 @@ layout("/mobile/platform.html"){
<div class="mt5" v-loading="tagCloseable">
<div v-if="registerList && registerList.length>0">
<template v-for="item in registerList">
<van-tag type="primary" :closeable="tagCloseable" size="medium"
:color="themeColor"
@close="removeRegUser(item)">
<van-tag :closeable="tagCloseable" :color="themeColor"
@close="removeRegUser(item)"
size="medium"
type="primary">
{{item.userName}}
</van-tag>
</template>
@@ -76,17 +77,17 @@ layout("/mobile/platform.html"){
</div>
<div class="mt5" style="text-align: right"
v-if="moment(o.applyStartTime).valueOf() < moment().valueOf() && moment().valueOf() < moment(o.applyEndTime).valueOf()">
<van-button v-if="tagCloseable" size="mini" type="info"
@click="openUserActionSheet" :color="themeColor">选择报名人员
<van-button :color="themeColor" @click="openUserActionSheet" size="mini"
type="info" v-if="tagCloseable">选择报名人员
</van-button>
</div>
</template>
</van-cell>
</van-cell-group>
<van-action-sheet v-model="userActionSheet" title="选择报名人员" class="userActionPopup">
<van-search v-model="searchKey" @search="onSearchUser" show-action
placeholder="请输入姓名搜索">
<van-action-sheet class="userActionPopup" title="选择报名人员" v-model="userActionSheet">
<van-search @search="onSearchUser" placeholder="请输入姓名搜索" show-action
v-model="searchKey">
<template #action>
<div @click="onSearchUser(searchKey)">搜索</div>
</template>
@@ -123,16 +124,25 @@ layout("/mobile/platform.html"){
<div style="margin: 20px 20px 10px 20px"
v-if="moment(o.applyStartTime).valueOf() < moment().valueOf() && moment().valueOf() < moment(o.applyEndTime).valueOf()">
<van-button v-if="tagCloseable" @click="doSave()" style="border-radius: 10px" block
<van-button :color="themeColor" @click="doSave()" block style="border-radius: 10px"
type="info"
:color="themeColor">
v-if="tagCloseable">
提 交
</van-button>
<van-button v-else="!tagCloseable" @click="tagCloseable = true" style="border-radius: 10px"
block type="info"
:color="themeColor">
修 改
</van-button>
<template v-else="!tagCloseable">
<van-button :color="themeColor" @click="tagCloseable = true"
block style="border-radius: 10px"
type="info">
修 改
</van-button>
<van-button
@click="doCancel"
block color="red" style="border-radius: 10px;margin-top: 10px"
type="info">
取消报名
</van-button>
</template>
</div>
<!-- <div style="margin: 20px 20px 10px 20px" v-if="tagCloseable">-->
@@ -169,6 +179,32 @@ layout("/mobile/platform.html"){
}
},
methods: {
async doCancel() {
const confirm = await this.$dialog.confirm({
title: '提示',
message: '您确认要取消报名吗?',
})
const loading = this.$toast.loading({
message: '取消中...',
forbidClick: true,
overlay: true,
duration: 0
})
if (confirm === 'confirm') {
const resp = await $.post('/mobile/activity/unionActivity/doSingleCancelRegister', {activityId: this.activityId})
if (resp.code === 0) {
setTimeout(() => {
loading.close()
this.$toast.success(resp.msg)
setTimeout(() => {
window.history.back()
}, 400)
}, 1000)
} else {
this.$toast.fail(resp.msg)
}
}
},
async getRegisterUser() {
const resp = await $.get('/mobile/activity/myActivity/selectRegisterList', {activityId: this.activityId})
if (resp.code === 0) {
@@ -209,6 +245,7 @@ layout("/mobile/platform.html"){
searchUserAdd(item) {
const {id, userName} = item
this.registerList.push({id, userName})
this.$toast.success("添加成功")
},
async removeRegUser(item) {
if (this.userId === item.id) {
@@ -304,11 +341,14 @@ layout("/mobile/platform.html"){
personIds: JSON.stringify(this.registerList.map(v => v.id))
}
const resp = await $.post('/mobile/activity/unionActivity/doSaveUnionRegister', params)
loading.close()
if (resp.code === 0) {
await this.getRegisterUser()
await this.getHasRegUserNum()
this.$toast.success(resp.msg)
setTimeout(() => {
loading.close()
this.$toast.success(resp.msg)
}, 1000)
} else {
this.$toast.fail(resp.msg)
}
@@ -337,4 +377,4 @@ layout("/mobile/platform.html"){
<!--#
}
#-->
#-->
@@ -135,15 +135,14 @@ layout("/layouts/platform.html"){
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="(val)=>{pageForm.pageSize = val;pageData()}"
@current-change="(val)=>{pageForm.pageNumber = val;pageData()}"
:current-page="pageForm.pageNumber"
:page-sizes="[10, 20, 30, 50]"
:page-size="pageForm.pageSize"
layout="total, sizes, prev, pager, next"
:total="pageForm.totalCount">
:page-sizes="[10, 20, 30, 50]"
:total="pageForm.totalCount"
@current-change="pageNumberChange"
@size-change="pageSizeChange"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
</el-card>
</div>
@@ -166,7 +165,7 @@ layout("/layouts/platform.html"){
<el-form-item label="基础类型代码" prop="code" label-width="110px">
<el-input maxlength="100" placeholder="请输入基础类型名称" v-model="formData.code"
type="text"
></el-input>
:disabled="checkData.code==50000||checkData.code==40000||checkData.code=='jcsjgl'"></el-input>
</el-form-item>
<el-form-item label="基础类型备注" prop="note" label-width="110px">
<el-input maxlength="100" placeholder="请输入基础类型备注" v-model="formData.note"
@@ -262,8 +261,7 @@ layout("/layouts/platform.html"){
async handleNodeClick(data, node) {
this.checkData = data
this.checkNode = node
console.log(this.checkData)
this.pageData()
this.doSearch()
},
async loadTree(flush) {
this.treeLoading = true
@@ -277,7 +275,7 @@ layout("/layouts/platform.html"){
}
if (flush && resp.code === 0) {
this.checkData = resp.data[0]
this.pageData();
this.doSearch();
}
},
async openBasicType() {
@@ -298,7 +296,7 @@ layout("/layouts/platform.html"){
this.loading = false
if(resp.code===0){
this.basicTypeDialog = false
this.pageData();
this.doSearch();
this.loadTree(true)
}else{
this.notifyWarning(resp.msg)
@@ -314,7 +312,7 @@ layout("/layouts/platform.html"){
this.loading = false
this.basicTypeDialog = false
if(resp.code===0){
this.pageData();
this.doSearch();
}else{
this.notifyWarning(resp.msg)
}
@@ -340,7 +338,7 @@ layout("/layouts/platform.html"){
const resp = await $.post(loc() + "/doDelete", {id: id})
if(resp.code===0){
this.notifySuccess(resp.msg)
this.pageData()
this.doSearch()
this.loadTree(true)
}else{
this.notifyWarning(resp.msg)
@@ -359,4 +357,4 @@ layout("/layouts/platform.html"){
<!--#
}
#-->
#-->
@@ -49,6 +49,11 @@ layout("/layouts/platform.html"){
</el-select>
</div>
<div class="d-search-item btn-group tool-button mr10">
<el-input placeholder="请输入名称/编号" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch" style="width:100%"></el-input>
</div>
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索
@@ -407,23 +412,25 @@ layout("/layouts/platform.html"){
return
}
let msg = "确定要勾选的项目赋年龄限制吗?"
if (this.pageForm.ageDate == null) {
this.$notify({
title: '警告',
message: '请选择需要赋值的时间段',
type: 'warning'
});
return
msg = "您没有在左侧填写年龄限制,现将您勾选的项目年龄清空,请确认"
/* this.$notify({
title: '警告',
message: '请选择需要赋值的时间段',
type: 'warning'
});
return*/
}
const confirm = await this.$confirm('确定要勾选的项目赋年龄限制吗?', '提示', {
const confirm = await this.$confirm(msg, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
const data = await $.post(loc() + "/doAssignmentDate", {
startAgeDate: this.pageForm.ageDate[0],
endAgeDate: this.pageForm.ageDate[1],
startAgeDate: this.pageForm.ageDate ? this.pageForm.ageDate[0] : '',
endAgeDate: this.pageForm.ageDate ? this.pageForm.ageDate[1] : '',
eventIds: JSON.stringify(this.multipleSelection.map(v => v.id))
})
this.$notify.success({title: '成功', message: data.msg});
@@ -452,19 +459,19 @@ layout("/layouts/platform.html"){
//查询比赛组别
async focusGroup() {
const resp = await $.post(loc() + "/focusGroup")
if(resp.code===0){
if (resp.code === 0) {
this.groupList = resp.data
}else{
this.notifyWarning(resp.msg)
} else {
this.notifyWarning(resp.msg)
}
},
//查询运动类型
async exerciseType() {
const resp = await $.post(loc() + "/exerciseType")
if(resp.code===0){
if (resp.code === 0) {
this.exerciseTypeList = resp.data
}else{
} else {
this.notifyWarning(resp.msg)
}
},
@@ -472,9 +479,9 @@ layout("/layouts/platform.html"){
//查询距离
async focusDistance() {
const resp = await $.post(loc() + "/focusDistance")
if(resp.code===0){
if (resp.code === 0) {
this.distanceList = resp.data;
}else{
} else {
this.notifyWarning(resp.msg)
}
},
@@ -482,9 +489,9 @@ layout("/layouts/platform.html"){
//根据运动id查询下面有哪些具体的运动项目
async changeExercise_typeList() {
const resp = await $.post(loc() + "/changeExercise_typeList", {exerciseType: this.formData.exerciseType})
if(resp.code===0){
if (resp.code === 0) {
this.exerciseTypeList2 = resp.data
}else{
} else {
this.notifyWarning(resp.msg)
}
},
@@ -546,10 +553,10 @@ layout("/layouts/platform.html"){
this.loading = true
const resp = await $.post(loc() + "/doAdd", this.formData)
this.loading = false
if(resp.code===0){
if (resp.code === 0) {
this.pageData();
this.$refs.guava.index()
}else{
} else {
this.notifyWarning(resp.msg)
}
}
@@ -577,10 +584,10 @@ layout("/layouts/platform.html"){
async switchChange(data) {
this.formData = data
const resp = await $.post(loc() + "/doEdit", this.formData)
if(resp.code===0){
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.pageData()
}else{
} else {
this.notifyWarning(resp.msg)
}
},
@@ -644,10 +651,10 @@ layout("/layouts/platform.html"){
this.loading = true
const resp = await $.post(loc() + "/doEdit", this.formData)
this.loading = true
if(resp.code===0){
if (resp.code === 0) {
this.pageData();
this.$refs.guava.index()
}else{
} else {
this.notifyWarning(resp.msg)
}
}
@@ -690,9 +697,9 @@ layout("/layouts/platform.html"){
this.$set(row, "loading", true)
const resp = await $.post(loc() + "/doDelete", {id: id});
this.$set(row, "loading", false)
if(resp.code===0){
if (resp.code === 0) {
this.pageData()
}else{
} else {
this.notifyWarning(resp.msg)
}
}
@@ -102,7 +102,7 @@ layout("/layouts/platform.html"){
<el-tabs v-model="indexActive" type="card" style="box-shadow: none">
<el-tab-pane :name="0">
<span slot="label"><i class="el-icon-school"></i> 院级工会信息</span>
<span slot="label"><i class="el-icon-school"></i> 分工会信息</span>
<el-card shadow="never" style="width: 100%;">
<div class="btn-group tool-button mt5">
@@ -405,7 +405,7 @@ layout("/layouts/platform.html"){
label="单位"
show-overflow-tooltip></el-table-column>
<el-table-column align="center" header-align="center" prop="unionname"
label="院级工会"
label="分工会"
show-overflow-tooltip></el-table-column>
<el-table-column align="center" header-align="center" prop="rolename"
label="用户角色"
@@ -497,7 +497,7 @@ layout("/layouts/platform.html"){
<!--新建工会-->
<el-dialog
title="新建院级工会"
title="新建分工会"
:visible.sync="addDialogVisible" width="40%">
<el-form :model="formData" ref="addForm" :rules="formRules" size="small" label-width="100px">
@@ -511,8 +511,8 @@ layout("/layouts/platform.html"){
v-model="formData.unioncode"
auto-complete="off" tabindex="4" type="text"></el-input>
</el-form-item>
<!-- <el-form-item prop="dwcode" label="院级工会编号">-->
<!-- <el-input maxlength="100" placeholder="院级工会编号"-->
<!-- <el-form-item prop="dwcode" label="分工会编号">-->
<!-- <el-input maxlength="100" placeholder="分工会编号"-->
<!-- v-model="formData.dwcode" clearable-->
<!-- auto-complete="off" tabindex="4" type="text"></el-input>-->
<!-- </el-form-item>-->
@@ -551,7 +551,7 @@ layout("/layouts/platform.html"){
<!--编辑工会-->
<el-dialog
title="修改院级工会"
title="修改分工会"
:visible.sync="editDialogVisible" width="40%">
<el-form :model="formData" ref="editForm" :rules="formRules" size="small" label-width="100px">
@@ -566,8 +566,8 @@ layout("/layouts/platform.html"){
v-model="formData.unioncode"
auto-complete="off" tabindex="4" type="text"></el-input>
</el-form-item>
<!-- <el-form-item prop="dwcode" label="院级工会编号">-->
<!-- <el-input maxlength="100" placeholder="院级工会编号"-->
<!-- <el-form-item prop="dwcode" label="分工会编号">-->
<!-- <el-input maxlength="100" placeholder="分工会编号"-->
<!-- v-model="formData.dwcode" clearable-->
<!-- auto-complete="off" tabindex="4" type="text"></el-input>-->
<!-- </el-form-item>-->
@@ -1477,4 +1477,4 @@ layout("/layouts/platform.html"){
</div>
<!--#
}
#-->
#-->
@@ -114,7 +114,7 @@ layout("/layouts/platform.html"){
</template>
<template>
<div v-if="checkNode.level===1 || checkNode.level===2" style="padding:0 10px">
<div v-if="checkNode.level===1" style="padding:0 10px">
<el-card shadow="never">
<div class="btn-group tool-button mt5">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@@ -203,7 +203,7 @@ layout("/layouts/platform.html"){
</div>
<div v-if="checkNode.level===3 || checkNode.level===4" style="padding:0 10px">
<div v-if="checkNode.level===2" style="padding:0 10px">
<el-card shadow="never">
<div class="btn-group tool-button mt5">
<el-input placeholder="请输入内容" clearable v-model="userPageForm.searchKeyword"
@@ -379,6 +379,7 @@ layout("/layouts/platform.html"){
pageOrderName: "",
pageOrderBy: ""
},
loading: false,
filterText: '',
defaultProps: {
children: 'child',
@@ -450,7 +451,7 @@ layout("/layouts/platform.html"){
this.checkNode = node
if (node.level === 1) {
this.doSearch()
} else if (node.level === 3) {
} else if (node.level === 2) {
this.doUserSearch()
}
},
File diff suppressed because it is too large Load Diff
@@ -5,7 +5,7 @@ layout("/layouts/platform.html"){
</style>
<div id="app" class="platform" v-cloak>
<div class="platform" id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
@@ -15,10 +15,10 @@ layout("/layouts/platform.html"){
<div class="search-item-label">年&emsp;&emsp;度</div>
<div class="search-item-option">
<el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy" style="width: 100%"
placeholder="选择年">
placeholder="选择年"
style="width: 100%"
type="year" v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
</div>
</div>
@@ -27,14 +27,14 @@ layout("/layouts/platform.html"){
<div class="search-item-label">活动名称</div>
<div class="search-item-option">
<!--<el-input v-model="pageForm.name" placeholder="请输入活动名称" clearable></el-input>-->
<el-select v-model="pageForm.activityId" placeholder="请选择活动名称"
filterable clearable
style="width: 100%">
<el-select clearable filterable
placeholder="请选择活动名称" style="width: 100%"
v-model="pageForm.activityId">
<el-option
v-for="item in activities"
:key="item.id"
:label="item.name"
:value="item.id">
:value="item.id"
v-for="item in activities">
</el-option>
</el-select>
</div>
@@ -52,30 +52,30 @@ layout("/layouts/platform.html"){
:value="v">
</el-option>
</el-select>-->
<el-select v-model="pageForm.activityLevel" placeholder="请选择活动级别"
clearable
style="width: 100%">
<el-select clearable placeholder="请选择活动级别"
style="width: 100%"
v-model="pageForm.activityLevel">
<el-option
v-for="item in activityTypeList"
:key="item.code"
:label="item.name"
:value="item.code">
:value="item.code"
v-for="item in activityTypeList">
</el-option>
</el-select>
</div>
</div>
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索
</el-button>
</div>
<div class="search-item" style="width: 80vw">
<div class="search-item-label">一键查询</div>
<div class="search-item-option">
<el-radio-group v-model="pageForm.query" @change="doSearch">
<el-radio-button v-for="it in queryOptions" :label="it.key"
:key="it.key">
<el-radio-group @change="doSearch" v-model="pageForm.query">
<el-radio-button :key="it.key" :label="it.key"
v-for="it in queryOptions">
{{it.value}}
</el-radio-button>
</el-radio-group>
@@ -84,64 +84,74 @@ layout("/layouts/platform.html"){
</div>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="活动列表" :app="this">
<el-card class="mt10" shadow="never">
<table-tool :app="this" label="活动列表">
<template #func>
<el-button type="primary" icon="el-icon-edit-outline" size="small"
@click="openAdd">
<el-button @click="openAdd" icon="el-icon-edit-outline" size="small"
type="primary">
创建活动
</el-button>
</template>
</table-tool>
<el-table :data="tableData" style="width: 100%;margin-bottom: 20px" row-key="id"
@sort-change="pageOrder" v-loading="tableLoading" :size="tableSize"
class="vi-table">
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
class="vi-table" row-key="id" style="width: 100%;margin-bottom: 20px"
v-loading="tableLoading">
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
<el-table-column :index="indexMethod" align="center" header-align="center"
label="序号" type="index"
width="80px"></el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumns"
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
align="center"
header-align="center"
show-overflow-tooltip
:sortable="column.sortable">
v-for="column in tableColumns">
<template v-if="column.prop=='events'" scope="{row}">
<template scope="{row}" v-if="column.prop=='events'">
<span>{{row.allName}}</span>
</template>
<template v-else-if="column.prop=='gameStyle'" scope="{row}">
<template scope="{row}" v-else-if="column.prop=='gameStyle'">
<span>{{activity.school.gameStyle[row.gameStyle]}}</span>
</template>
<template v-else-if="column.prop=='foundUnit'" scope="{row}">
<template scope="{row}" v-else-if="column.prop=='foundUnit'">
<span v-if="row.activityLevel===40001">校工会</span>
<span v-if="row.activityLevel===40002">{{row.unionname}}</span>
<span v-if="row.activityLevel===40003">{{row.clubName}}</span>
</template>
<template v-else-if="column.prop=='startTime'" scope="{row}">
<template scope="{row}" v-else-if="column.prop=='startTime'">
{{moment(row.startTime).format('YYYY-MM-DD')}} -
{{moment(row.endTime).format('YYYY-MM-DD')}}
</template>
<template v-else-if="column.prop=='state'"
scope="{row:{close,applyStartTime,applyEndTime,startTime,endTime,isSave}}">
<template scope="{row}" v-else-if="column.prop=='isDisabled'">
<el-switch
@change="(val)=>{activityStatusChange(row,val)}"
active-color="#13ce66"
inactive-color="#ff4949"
v-model="row.isDisabled">
</el-switch>
</template>
<template
scope="{row:{close,applyStartTime,applyEndTime,startTime,endTime,isSave}}"
v-else-if="column.prop=='state'">
<div v-html="activity.school.getStatus(close,applyStartTime,applyEndTime,startTime,endTime,isSave)"></div>
</template>
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center"
label="操作" width="150px">
<el-table-column align="center" header-align="center" label="操作"
prop="userOnline" width="150px">
<template scope="{row}">
<el-dropdown @command="dropdownCommand">
<el-button size="mini" :loading="row.loading">
<el-button :loading="row.loading" size="mini">
<i class="ti-settings"></i>
<span class="ti-angle-down"></span>
</el-button>
@@ -155,9 +165,9 @@ layout("/layouts/platform.html"){
<el-dropdown-item :command="{type:'view',row}">
查看
</el-dropdown-item>
<!-- <el-dropdown-item :command="{type:'export',row}">
导出名单docx
</el-dropdown-item>-->
<el-dropdown-item :command="{type:'export',row}" v-if="row.applyType===1">
导出名单docx
</el-dropdown-item>
<el-dropdown-item :command="{type:'exportXlsx',row}">
导出名单
</el-dropdown-item>
@@ -178,25 +188,27 @@ layout("/layouts/platform.html"){
</template>
<template #edit_func>
<el-button type="primary" @click="doSave">保 存</el-button>
<el-button type="primary" @click="doOperate">提 交</el-button>
<el-button @click="doSave" type="primary">保 存</el-button>
<el-button @click="doOperate" type="primary">提 交</el-button>
</template>
<template #edit>
<add-activity :form="formData" ref="activity" @flip="flip" @flush="flush"
:is_club="is_club"
:is_union="is_union" :is_sysadmin="is_sysadmin" :is_a06="is_A06"
:is_h10="is_h10"
:unionid="'${@shiro.getPrincipalProperty('unit').getUnionid()}'"></add-activity>
<add-activity :form="formData" :is_a06="is_A06" :is_club="is_club" :is_h10="is_h10"
:is_sysadmin="is_sysadmin"
:is_union="is_union"
:unionid="'${@shiro.getPrincipalProperty('unit').getUnionid()}'"
@flip="flip"
@flush="flush"
ref="activity"></add-activity>
</template>
<template #view>
<info ref="info"></info>
</template>
<send-msg ref="sendMsg" :url="url"></send-msg>
<send-msg :url="url" ref="sendMsg"></send-msg>
<open-qr-code ref="openQRCode" :url="url"></open-qr-code>
<open-qr-code :url="url" ref="openQRCode"></open-qr-code>
</guava>
</div>
@@ -241,6 +253,7 @@ layout("/layouts/platform.html"){
{prop: 'startTime', label: '活动日期', sortable: true},
{prop: 'state', label: '活动状态', sortable: true},
{prop: 'applyNum', label: '已报名人数', sortable: true},
{prop: 'isDisabled', label: '是否开启', sortable: true},
{prop: 'foundDate', label: '创建时间', sortable: true},
],
pageForm: {
@@ -264,6 +277,18 @@ layout("/layouts/platform.html"){
'open-qr-code': httpVueLoader('/components/plugins/OpenQRCode.vue'),
},
methods: {
async activityStatusChange(row, val) {
const resp = await $.get('/platform/activity/school/info/mange/activityStatusChange', {
id: row.id,
isDisabled: val
})
if (resp.code === 0) {
this.pageData();
this.notifySuccess(resp.msg)
} else {
this.notifyError(resp.msg)
}
},
flip() {
this.pageData()
this.$refs.guava.index()
@@ -69,7 +69,7 @@ layout("/layouts/platform.html"){
<div class="search-item">
<div class="search-item-label" v-if="pageForm.activityLevel!=='40003'">
院级工会
分工会
</div>
<div class="search-item-label" v-if="pageForm.activityLevel==='40003'">
协会名称
@@ -77,7 +77,7 @@ layout("/layouts/platform.html"){
<div class="search-item-option">
<el-select style="width: 100%;font-weight:bold;"
v-model="pageForm.unionid"
placeholder="院级工会筛选"
placeholder="分工会筛选"
filterable clearable
@change="changeVVV" @clear="changeVVV">
<el-option
@@ -319,12 +319,6 @@ layout("/layouts/platform.html"){
keys.forEach(key => {
$("#" + key).html("")
editors[key] = new E('#' + key)
editors[key].config.excludeMenus = [
'video',
'image',
'link',
'code',
]
editors[key].config.onchange = (html) => {
this.formData[key] = html
}
@@ -102,12 +102,6 @@ layout("/layouts/platform.html"){
keys.forEach(key => {
$("#" + key).html("")
editors[key] = new E('#' + key)
editors[key].config.excludeMenus = [
'video',
'image',
'link',
'code',
]
editors[key].config.onchange = (html) => {
this.formData[key] = html
}
@@ -102,12 +102,6 @@ layout("/layouts/platform.html"){
keys.forEach(key => {
$("#" + key).html("")
editors[key] = new E('#' + key)
editors[key].config.excludeMenus = [
'video',
'image',
'link',
'code',
]
editors[key].config.onchange = (html) => {
this.formData[key] = html
}
@@ -102,12 +102,6 @@ layout("/layouts/platform.html"){
keys.forEach(key => {
$("#" + key).html("")
editors[key] = new E('#' + key)
editors[key].config.excludeMenus = [
'video',
'image',
'link',
'code',
]
editors[key].config.onchange = (html) => {
this.formData[key] = html
}
@@ -38,45 +38,45 @@
<div id="app" v-cloak>
<guava ref="guava">
<el-card shadow="never" style="min-height: calc(100vh - 70px);position: relative">
<el-form :model="formData" ref="addForm" :rules="formRules" label-width="130px"
label-suffix=":">
<el-form :model="formData" :rules="formRules" label-suffix=":" label-width="170px"
ref="addForm">
<el-tabs tab-position="top" v-model="activeName">
<el-tab-pane label="活动基础信息" name="1">
<vi-title title="填写活动信息"></vi-title>
<el-row :gutter="40">
<el-col :xs="24" :lg="12" :xl="12">
<el-form-item prop="name" label="活动名称">
<el-col :lg="12" :xl="12" :xs="24">
<el-form-item label="活动名称" prop="name">
<el-input maxlength="50" placeholder="请填写活动名称"
v-model="formData.name"
type="text"></el-input>
type="text"
v-model="formData.name"></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :lg="12" :xl="12">
<el-form-item prop="activityCode" label="活动编号">
<el-input maxlength="50" disabled
v-model="formData.activityCode"
type="text"></el-input>
<el-col :lg="12" :xl="12" :xs="24">
<el-form-item label="活动编号" prop="activityCode">
<el-input disabled maxlength="50"
type="text"
v-model="formData.activityCode"></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :lg="12" :xl="12">
<el-form-item prop="projectTypeCode" label="活动项目类型">
<el-select v-model="formData.projectTypeCode"
placeholder="请选择活动类型"
style="width: 100%;">
<el-col :lg="12" :xl="12" :xs="24">
<el-form-item label="活动项目类型" prop="projectTypeCode">
<el-select placeholder="请选择活动类型"
style="width: 100%;"
v-model="formData.projectTypeCode">
<el-option
v-for="item in projectType"
:key="item.id"
:label="item.name+' ('+item.code+')'"
:value="item.code">
:value="item.code"
v-for="item in projectType">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :xs="24" :lg="12" :xl="12">
<el-form-item prop="isEnrollSystem" label="是否用于报名">
<el-col :lg="12" :xl="12" :xs="24">
<el-form-item label="是否用于报名" prop="isEnrollSystem">
<el-radio-group v-model="formData.isEnrollSystem">
<el-radio-button :label="true">活动报名</el-radio-button>
<el-radio-button :label="false">活动管理</el-radio-button>
@@ -84,108 +84,109 @@
</el-form-item>
</el-col>
<el-col :xs="24" :lg="12" :xl="12">
<el-form-item prop="address" label="活动地址">
<el-col :lg="12" :xl="12" :xs="24">
<el-form-item label="活动地址" prop="address">
<el-input maxlength="50" placeholder="请填写活动地址"
v-model="formData.address"
type="text"></el-input>
type="text"
v-model="formData.address"></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :lg="12" :xl="12">
<el-form-item prop="userId" label="联系人">
<el-select v-model="formData.userId" placeholder="请选择联系人"
filterable
remote
<el-col :lg="12" :xl="12" :xs="24">
<el-form-item label="联系人" prop="userId">
<el-select :loading="selectLoading" :remote-method="remoteMethod"
@change="userChang"
clearable
filterable
placeholder="请选择联系人"
remote
reserve-keyword
:remote-method="remoteMethod"
:loading="selectLoading"
style="width: 100%" @change="userChang">
style="width: 100%" v-model="formData.userId">
<el-option
v-for="item in userList"
:key="item.userId"
:label="item.userName+'-'+item.loginName+'-'+item.unitName"
:value="item.userId">
:value="item.userId"
v-for="item in userList">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :xs="24" :lg="12" :xl="12">
<el-form-item prop="mobile" label="联系方式">
<el-col :lg="12" :xl="12" :xs="24">
<el-form-item label="联系方式" prop="mobile">
<el-input maxlength="50" placeholder="请填写联系方式"
v-model="formData.mobile"
type="text"></el-input>
type="text"
v-model="formData.mobile"></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :lg="12" :xl="12" v-if="formData.isEnrollSystem === true">
<el-form-item prop="plannedDate" label="活动计划时间">
<el-col :lg="12" :xl="12" :xs="24"
v-if="formData.isEnrollSystem === true">
<el-form-item label="活动计划时间" prop="plannedDate">
<!--<el-input maxlength="50" placeholder="活动计划时间"
v-model="formData.plannedDate"></el-input>-->
<el-date-picker
@change="plannedDateChange"
end-placeholder="结束日期"
range-separator="-"
start-placeholder="开始日期"
style="width: 100%"
v-model="formData.plannedDate"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期" @change="plannedDateChange">
v-model="formData.plannedDate" value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :xs="24" :lg="12" :xl="12">
<el-form-item prop="time" label="实际活动时间">
<el-col :lg="12" :xl="12" :xs="24">
<el-form-item label="实际活动时间" prop="time">
<el-date-picker
style="width: 100%"
v-model="formData.time"
type="datetimerange"
value-format="yyyy-MM-dd HH:mm"
end-placeholder="结束日期"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期">
style="width: 100%"
type="daterange"
v-model="formData.time"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :xs="24" :lg="12" :xl="12">
<el-col :lg="12" :xl="12" :xs="24">
<el-form-item
:rules="[{required:[1,2].includes(formData.signUpMethod),message:'请选择报名日期',trigger:['change','blur']}]"
label="报名日期"
prop="applyTime2">
<el-date-picker
style="width: 100%"
v-model="formData.applyTime2"
type="datetimerange"
value-format="yyyy-MM-dd HH:mm"
end-placeholder="结束时间"
range-separator="-"
start-placeholder="开始时间"
end-placeholder="结束时间">
style="width: 100%"
type="datetimerange"
v-model="formData.applyTime2"
value-format="yyyy-MM-dd HH:mm">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :xs="24" :lg="12" :xl="12">
<el-form-item prop="peopleNum" label="活动人数">
<el-input maxlength="10" placeholder="请填写活动人数"
:disabled="[1,2].includes(formData.signUpMethod)"
<el-col :lg="12" :xl="12" :xs="24">
<el-form-item label="活动人数" prop="peopleNum">
<el-input :disabled="[1,2].includes(formData.signUpMethod)" maxlength="10"
placeholder="请填写活动人数"
v-model="formData.peopleNum"></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :lg="12" :xl="12">
<el-form-item prop="groupId" label="参加人员范围">
<el-col :lg="12" :xl="12" :xs="24">
<el-form-item label="参加人员范围" prop="groupId">
<div style="display: flex; justify-content: space-between">
<div style="width: 99%">
<el-select prop="groupId" placeholder="参加人员范围"
v-model="formData.groupId"
<el-select clearable filterable
placeholder="参加人员范围"
prop="groupId"
style="width: 99%;"
clearable
filterable>
<el-option v-for="item in activityGroupList"
:label="item.groupName"
:value="item.groupId"></el-option>
v-model="formData.groupId">
<el-option :label="item.groupName"
:value="item.groupId"
v-for="item in activityGroupList"></el-option>
</el-select>
</div>
<div>
@@ -199,11 +200,25 @@
</el-col>
<el-col :lg="12" :xl="12" :xs="24" v-if="formData.isEnrollSystem === true">
<el-form-item prop="signUpMethod" label="报名方式">
<el-radio-group v-model="formData.signUpMethod"
@change="signUpMethodChange">
<!-- <el-radio :label="null">无需报名</el-radio>-->
<el-col :lg="12" :xl="12" :xs="12">
<el-form-item label="是否推送移动端" prop="isPushHome">
<el-radio-group size="medium" v-model="formData.isPushHome">
<el-radio-button :label="0">不推送</el-radio-button>
<el-radio-button :label="1">推送列表</el-radio-button>
<el-radio-button :label="2">推送大图</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :lg="12" :xl="12" :xs="12"
v-if="formData.isEnrollSystem === true">
<el-form-item label="报名方式" prop="signUpMethod">
<el-radio-group @change="signUpMethodChange"
v-model="formData.signUpMethod">
<!--<el-radio :label="null">无需报名</el-radio>-->
<el-radio :label="1">个人报名</el-radio>
<el-radio :label="3">组队报名</el-radio>
<el-radio :label="2" v-if="type===40001">分工会报名</el-radio>
@@ -211,23 +226,12 @@
</el-form-item>
</el-col>
<el-col :lg="12" :xl="12" :xs="24">
<el-form-item prop="xlFlag" label="活动提醒">
<el-switch
v-model="formData.xlFlag"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
</el-form-item>
</el-col>
<el-col :xs="12" :lg="12" :xl="12"
<el-col :lg="12" :xl="12" :xs="12"
v-if="[1,2,3].includes(formData.signUpMethod)">
<el-form-item prop="userNumberLimit" label="报名人数限制">
<el-form-item label="报名人数限制" prop="userNumberLimit">
<el-radio-group v-model="formData.userNumberLimit">
<el-radio :label="1"
:disabled="formData.signUpMethod===2">
<el-radio :disabled="formData.signUpMethod===2"
:label="1">
总人数限制
</el-radio>
<el-radio :label="2" v-if="type===40001">分工会人数限制
@@ -236,93 +240,105 @@
</el-radio-group>
</el-form-item>
</el-col>
<el-col :xs="12" :lg="12" :xl="12"
<el-col :lg="12" :xl="12" :xs="12"
v-if="[3].includes(formData.signUpMethod)">
<el-form-item prop="totalUserNumberLimit" label="组队人数">
<el-input-number v-model="formData.teamNum" :min="1"
:max="2000"
<el-form-item label="组队人数" prop="totalUserNumberLimit">
<el-input-number :max="2000" :min="1"
:precision="0"
v-model="formData.teamNum"
></el-input-number>
</el-form-item>
</el-col>
<el-col :xs="12" :lg="12" :xl="12"
<el-col :lg="12" :xl="12" :xs="12"
v-if="[1,2,3].includes(formData.signUpMethod) && formData.userNumberLimit===1">
<el-form-item prop="totalUserNumberLimit" label="总人数限制">
<el-input-number v-model="formData.totalUserNumberLimit"
:min="1" :max="2000"
:precision="0"
<el-form-item label="总人数限制" prop="totalUserNumberLimit">
<el-input-number :max="2000"
:min="1" :precision="0"
v-model="formData.totalUserNumberLimit"
></el-input-number>
</el-form-item>
</el-col>
<el-col :span="24"
v-if="[1,2,3].includes(formData.signUpMethod) && formData.userNumberLimit===2">
<el-form-item prop="unionUserNumberLimit" label="分工会人数限制">
<el-form-item label="分工会人数限制" prop="unionUserNumberLimit">
<vi-title2 title="分段设置">
<template #func>
<el-button size="small" type="primary" @click="unionLimitQuickSetting">
<el-button @click="unionLimitQuickSetting" size="small"
type="primary">
应用分段设置
</el-button>
</template>
</vi-title2>
<el-row v-for="(item,index) in unionUserNumCalc" :gutter="20" class="mb5">
<el-row :gutter="20" class="mb5"
v-for="(item,index) in unionUserNumCalc">
<el-col :span="7">
<el-input-number v-model="item.startNum" :precision="0" :step="1" :min="1"
placeholder="请输入最小人数"
style="width: 100%"></el-input-number>
<el-input-number :min="1" :precision="0"
:step="1" placeholder="请输入最小人数"
style="width: 100%"
v-model="item.startNum"></el-input-number>
</el-col>
<el-col :span="7">
<el-input-number v-model="item.endNum" :precision="0" :step="1" :min="1"
placeholder="请输入最大人数"
style="width: 100%"></el-input-number>
<el-input-number :min="1" :precision="0"
:step="1" placeholder="请输入最大人数"
style="width: 100%"
v-model="item.endNum"></el-input-number>
</el-col>
<el-col :span="6">
<el-input-number v-model="item.resultNum" :precision="0" :step="1" :min="1"
placeholder="请输入限制人数"
style="width: 100%"></el-input-number>
<el-input-number :min="1" :precision="0"
:step="1" placeholder="请输入限制人数"
style="width: 100%"
v-model="item.resultNum"></el-input-number>
</el-col>
<el-col :span="4" class="text-right">
<el-button icon="el-icon-plus"
@click="unionUserNumCalc.push({})"></el-button>
<el-button icon="el-icon-minus" @click="unionUserNumCalc.splice(index,1)"
:disabled="unionUserNumCalc.length===1"></el-button>
<el-button @click="unionUserNumCalc.push({})"
icon="el-icon-plus"></el-button>
<el-button :disabled="unionUserNumCalc.length===1"
@click="unionUserNumCalc.splice(index,1)"
icon="el-icon-minus"></el-button>
</el-col>
</el-row>
<el-row class="mt10">
<div v-for="(item,index) in unionUserNumCalcTips" class="text-danger">
<div class="text-danger"
v-for="(item,index) in unionUserNumCalcTips">
<span class="mr10">({{index+1}}).</span> {{item}}
</div>
</el-row>
<vi-title2 title="比例设置" class="mt20">
<vi-title2 class="mt20" title="比例设置">
<template #func>
一键比例:
<el-input-number v-model="unionUserNumOneKeyRatio" :precision="0" :step="1"
:min="0"
<el-input-number :max="100"
:min="0" :precision="0" :step="1"
placeholder="请输入一键比例"
size="small"
:max="100"></el-input-number>
<el-button size="small" type="primary" @click="applyScaleSettings"
class="ml5">应用比例设置
v-model="unionUserNumOneKeyRatio"></el-input-number>
<el-button @click="applyScaleSettings" class="ml5"
size="small" type="primary">
应用比例设置
</el-button>
</template>
</vi-title2>
<el-table :data="formData.unionUserNumberLimit" max-height="500px">
<el-table-column prop="unionname" label="分工会"></el-table-column>
<el-table-column prop="teacherCount" label="人数"></el-table-column>
<el-table-column prop="ratio" label="比例(%)">
<el-table :data="formData.unionUserNumberLimit"
max-height="500px">
<el-table-column label="分工会"
prop="unionname"></el-table-column>
<el-table-column label="人数"
prop="teacherCount"></el-table-column>
<el-table-column label="比例(%)" prop="ratio">
<template scope="{row}">
<el-input-number v-model="row.ratio" :precision="0" :step="1" :min="0"
:max="100"></el-input-number>
<el-input-number :max="100" :min="0"
:precision="0" :step="1"
v-model="row.ratio"></el-input-number>
</template>
</el-table-column>
<el-table-column prop="limitNum" label="限制人数">
<el-table-column label="限制人数" prop="limitNum">
<template scope="{row}">
<el-input-number v-model="row.limitNum" :precision="0" :step="1"
:min="0"
:max="row.teacherCount"
@change="calSummaryCount"></el-input-number>
<el-input-number :max="row.teacherCount"
:min="0" :precision="0" :step="1"
@change="calSummaryCount"
v-model="row.limitNum"></el-input-number>
</template>
</el-table-column>
</el-table>
@@ -362,8 +378,8 @@
<el-col :span="12" v-if="[1,2,3].includes(formData.signUpMethod)">
<el-form-item label="是否需要签到">
<el-radio-group v-model="formData.needSign"
@change="(val)=>{formData.needSign?initMap():null}">
<el-radio-group @change="(val)=>{formData.needSign?initMap():null}"
v-model="formData.needSign">
<el-radio :label="true">需要</el-radio>
<el-radio :label="false">不需要</el-radio>
</el-radio-group>
@@ -372,11 +388,11 @@
<el-col :span="12" v-if="formData.needSign">
<el-form-item label="签到半径(m)">
<el-input-number v-model="formData.rangeMeter"
@change="rangeMeterChange"
:precision="0" :step="1"
<el-input-number :max="1000"
:min="50"
:max="1000"></el-input-number>
:precision="0" :step="1"
@change="rangeMeterChange"
v-model="formData.rangeMeter"></el-input-number>
<!-- <el-button type="primary" @click="marker.setMap(null);">清除点位</el-button>-->
</el-form-item>
</el-col>
@@ -385,48 +401,43 @@
<el-col :span="24" v-show="formData.needSign">
<el-form-item label="活动签到点位">
<el-card shadow="never">
<div style="width: 100%;height: 300px"
id="signMap"></div>
<div id="signMap"
style="width: 100%;height: 300px"></div>
</el-card>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="activityContent" label="活动内容">
<el-form-item label="活动内容" prop="activityContent">
<el-input
type="textarea"
:rows="7"
placeholder="请输入活动内容"
type="textarea"
v-model="formData.activityContent">
</el-input>
</el-form-item>
</el-col>
<el-col :span="24" v-if="formData.isEnrollSystem === false">
<el-form-item prop="activityExamineContent" label="活动考核内容">
<el-form-item label="活动考核内容" prop="activityExamineContent">
<el-input
type="textarea"
:rows="7"
placeholder="请输入活动考核内容"
type="textarea"
v-model="formData.activityExamineContent">
</el-input>
</el-form-item>
</el-col>
<el-col :span="24" v-if="formData.signUpMethod!=null">
<el-form-item prop="cover" label="封面图">
<el-upload
class="avatar-uploader"
:action="FILE_UPLOAD_ADDRESS"
:show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload">
<img v-if="formData.cover"
:src="FILE_DOMAIN + '/fileStreamPreview?id=' + formData.cover"
class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
<el-form-item label="封面图" prop="cover">
<image-Upload ref="imageUpload" :height="200"
:width="200" :limit="1"
:file-type="['png','jpg']"
:file-size="10"
v-model="formData.cover"></image-Upload>
</el-form-item>
</el-col>
@@ -439,10 +450,10 @@
<el-divider content-position="left">购置物品及价格</el-divider>
<div style="padding-left: 10px">
<el-tooltip class="item" effect="dark" content="点击添加购置物品及价格"
<el-tooltip class="item" content="点击添加购置物品及价格" effect="dark"
placement="top">
<el-button icon="el-icon-plus" circle
@click="formData.goods.push({})"
<el-button @click="formData.goods.push({})" circle
icon="el-icon-plus"
type="primary"></el-button>
</el-tooltip>
</div>
@@ -450,62 +461,62 @@
<el-form-item>
<el-table :data="formData.goods" border size="mini" style="width: 100%"
height="320px">
<el-table :data="formData.goods" border height="200" size="mini"
style="width: 100%">
<el-table-column sortable type="index" width="100" label="序号"
align="center" header-align="center">
<el-table-column align="center" header-align="center" label="序号" sortable
type="index" width="100">
</el-table-column>
<el-table-column prop="name" label="物品名称" align="center"
header-align="center">
<el-table-column align="center" header-align="center" label="物品名称"
prop="name">
<template slot-scope="{row}">
<el-input maxlength="50" placeholder="物品名称"
v-model="row.name"
type="text"></el-input>
type="text"
v-model="row.name"></el-input>
</template>
</el-table-column>
<el-table-column prop="price" label="预算费用" align="center"
header-align="center">
<el-table-column align="center" header-align="center" label="预算费用"
prop="price">
<template slot-scope="{row}">
<el-input maxlength="50" placeholder="预算费用"
v-model="row.price"
type="number" @input="blur"></el-input>
<el-input @input="blur" maxlength="50"
placeholder="预算费用"
type="number" v-model="row.price"></el-input>
</template>
</el-table-column>
<el-table-column prop="actualPrice" label="实际费用" align="center"
header-align="center">
<el-table-column align="center" header-align="center" label="实际费用"
prop="actualPrice">
<template slot-scope="{row}">
<el-input maxlength="50" placeholder="实际费用"
v-model="row.actualPrice"
type="number" @input="blur"></el-input>
<el-input @input="blur" maxlength="50"
placeholder="实际费用"
type="number" v-model="row.actualPrice"></el-input>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="center"
<el-table-column align="center" fixed="right" fixed="right"
header-align="center"
width="80px"
fixed="right">
label="操作"
width="80px">
<template slot-scope="scope">
<el-button type="danger" icon="el-icon-delete" circle
:disabled="formData.goods.length==0"
@click="delNotesItem(scope)"></el-button>
<el-button :disabled="formData.goods.length==0" @click="delNotesItem(scope)" circle
icon="el-icon-delete"
type="danger"></el-button>
</template>
</el-table-column>
</el-table>
</el-form-item>
<el-divider content-position="left" class="dia"><span
<el-divider class="dia" content-position="left"><span
style="color: #3ea1ec;">附件</span>
</el-divider>
<el-row :gutter="40">
<el-col :xs="24" :lg="12" :xl="12" class="mb25">
<el-form-item prop="billFiles" label="发票">
<el-col :lg="12" :xl="12" :xs="24" class="mb25">
<el-form-item label="发票" prop="billFiles">
<file-upload :files.sync="formData.billFiles"
card></file-upload>
</el-form-item>
</el-col>
<el-col :xs="24" :lg="12" :xl="12" class="mb25">
<el-form-item prop="photoFiles" label="照片">
<el-col :lg="12" :xl="12" :xs="24" class="mb25">
<el-form-item label="照片" prop="photoFiles">
<file-upload :files.sync="formData.photoFiles"
card></file-upload>
</el-form-item>
@@ -513,9 +524,9 @@
</el-row>
<el-row :gutter="40">
<el-col :xs="24" :lg="12" :xl="12" class="mb25">
<el-form-item prop="otherFiles" label="其他">
<el-row>
<el-col :lg="12" :xl="12" :xs="24">
<el-form-item label="其他" prop="otherFiles">
<file-upload :files.sync="formData.otherFiles"
card></file-upload>
</el-form-item>
@@ -525,36 +536,36 @@
</el-tab-pane>
<el-tab-pane label="活动人员信息" name="3" v-if="formData.isEnrollSystem === false">
<table-tool label="活动人员信息" :app="this">
<table-tool :app="this" label="活动人员信息">
<template #func>
<el-button icon="el-icon-plus" @click="openAddUser"
<el-button @click="openAddUser" icon="el-icon-plus"
type="primary">添加活动人员
</el-button>
</template>
</table-tool>
<el-table border stripe :data="userData" size="small"
v-loading="userTabLoading" height="500">
<el-table :data="userData" border height="500" size="small"
stripe v-loading="userTabLoading">
<el-table-column
type="index" label="序号" header-align="center" align="center"
align="center" header-align="center" label="序号" type="index"
width="100">
</el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in userColumns"
:label="column.label"
:prop="column.prop"
:sortable="column.sortable">
:sortable="column.sortable"
align="center"
header-align="center"
v-for="column in userColumns">
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center"
label="操作"
<el-table-column align="center" header-align="center" label="操作"
prop="userOnline"
width="150px">
<template scope="{row}">
<el-button type="danger" size="mini"
@click="delUser(row)">删除
<el-button @click="delUser(row)" size="mini"
type="danger">删除
</el-button>
</template>
</el-table-column>
@@ -562,98 +573,66 @@
</el-table>
</el-tab-pane>
<!-- <el-tab-pane label="新闻稿件" name="4" v-if="formData.isEnrollSystem === false">-->
<!-- <el-row :gutter="20">-->
<!-- <el-col :span="24">-->
<!-- <el-form-item prop="newsRemark" label="新闻稿件说明">-->
<!-- <el-input v-model="formData.newsRemark" type="textarea" rows="4"></el-input>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :lg="24" :sm="24">-->
<!-- <el-form-item label="图片上传" prop="picFiles">-->
<!-- <file-upload :files.sync="formData.picFiles" card :max="10"-->
<!-- :type="['jpg', 'png', 'jpeg']">-->
<!-- <template #el-upload__tip>-->
<!-- </template>-->
<!-- </file-upload>-->
<!-- <div class="el-upload__tip">请上传jpg、png、jpeg格式的图片,最多不超过10张</div>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :lg="24" :sm="24">-->
<!-- <el-form-item label="附件上传" prop="newsFiles">-->
<!-- <file-upload :files.sync="formData.newsFiles" card :max="10"-->
<!-- :type="['doc','docx','xls','xlsx','pdf','ppt','mp4', 'jpg', 'png', 'jpeg']">-->
<!-- <template #el-upload__tip>-->
<!-- </template>-->
<!-- </file-upload>-->
<!-- <div class="el-upload__tip">可上传照片、视频、文档等资料,视频只能上传MP4格式</div>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- </el-row>-->
<!-- </el-tab-pane>-->
<el-tab-pane label="活动总结" name="5" v-if="formData.isEnrollSystem === false">
<el-form-item prop="activitySummary" label="活动总结">
<el-tab-pane label="活动总结" name="4" v-if="formData.isEnrollSystem === false">
<el-form-item label="活动总结" prop="activitySummary">
<el-input
:disabled="!formData.time || Date.now() < Date.parse(formData.time[1])"
type="textarea"
:rows="5"
placeholder="请输入活动内容"
type="textarea"
v-model="formData.activitySummary">
</el-input>
</el-form-item>
<el-alert
class="mb20"
style="margin-left: 130px"
v-if="!formData.time || Date.now() < Date.parse(formData.time[1])"
show-icon
style="margin-left: 130px"
title="活动结束后可输入活动总结"
type="info">
type="info"
v-if="!formData.time || Date.now() < Date.parse(formData.time[1])">
</el-alert>
</el-tab-pane>
</el-tabs>
</el-form>
<div style="padding: 20px;text-align: center;">
<el-button type="primary" @click="operation" style="width: 300px">确 定</el-button>
<el-button @click="operation" style="width: 300px" type="primary">确 定</el-button>
</div>
</el-card>
</guava>
<el-dialog title="添加人员" :visible.sync="dialogVisible" width="40%" :close-on-click-modal="false">
<el-dialog :close-on-click-modal="false" :visible.sync="dialogVisible" title="添加人员" width="40%">
<el-form :model="formData" label-width="100px">
<el-form-item prop="userId" label="参加人员">
<el-select v-model="formData.tissuePersonList" placeholder="请选择参加人员"
multiple
<el-form-item label="参加人员" prop="userId">
<el-select :loading="selectLoading" :remote-method="remoteMethod"
filterable
multiple
placeholder="请选择参加人员"
remote
:remote-method="remoteMethod"
:loading="selectLoading"
style="width: 100%">
style="width: 100%"
v-model="formData.tissuePersonList">
<el-option
v-for="item in userList"
:disabled="userData.map(v=>v.userId).includes(item.userId)"
:key="item.userId"
:label="item.userName+'-'+item.loginName+'-'+item.unitName"
:value="item.userId">
:value="item.userId"
v-for="item in userList">
</el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<span class="dialog-footer" slot="footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doAddUser">确 定</el-button>
<el-button @click="doAddUser" type="primary">确 定</el-button>
</span>
</el-dialog>
<drawer-user-scope
:group_id.sync="formData.groupId"
@group_change="getActivityGroup"
ref="drawerUserScope"
:group_id.sync="formData.groupId"
></drawer-user-scope>
</div>
@@ -913,6 +892,8 @@
signUpMethod: null,
rangerMeter: 100,
isEnrollSystem: true,
isPushHome: 0,
isIntegral: false,
}
const {data} = await $.get('/platform/activity/apply/generateActivityCode', {activity_type: type})
this.$set(this.formData, 'activityCode', data)
@@ -932,8 +913,6 @@
if (data.billFiles && data.billFiles.length > 0) data.billFiles = JSON.parse(data.billFiles)
if (data.photoFiles && data.photoFiles.length > 0) data.photoFiles = JSON.parse(data.photoFiles)
if (data.otherFiles && data.otherFiles.length > 0) data.otherFiles = JSON.parse(data.otherFiles)
if (data.picFiles && data.picFiles.length > 0) data.picFiles = JSON.parse(data.picFiles)
if (data.newsFiles && data.newsFiles.length > 0) data.newsFiles = JSON.parse(data.newsFiles)
if (data.applyStartTime) data.applyTime2 = [data.applyStartTime, data.applyEndTime]
if (data.startTime) data.time = [data.startTime, data.endTime]
if (data.startPlannedDate) data.plannedDate = [data.startPlannedDate, data.endPlannedDate]
@@ -12,7 +12,7 @@
}
</style>
<div id="app" class="platform" v-cloak>
<div class="platform" id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
@@ -21,11 +21,11 @@
<div class="search-item-label">活动时间</div>
<div class="search-item-option">
<el-date-picker
placeholder="选择年"
style="width: 100%"
v-model="pageForm.year"
value-format="yyyy"
type="year"
placeholder="选择年">
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
</div>
</div>
@@ -33,57 +33,57 @@
<div class="search-item">
<div class="search-item-label">活动名称</div>
<div class="search-item-option">
<el-input v-model="pageForm.name" placeholder="请输入活动名称"
clearable></el-input>
<el-input clearable placeholder="请输入活动名称"
v-model="pageForm.name"></el-input>
</div>
</div>
<div class="search-item" v-if="type==1">
<div class="search-item-label">工会名称</div>
<div class="search-item-option">
<el-select v-model="pageForm.unionId" placeholder="请选择工会" filterable
clearable
style="width: 100%">
<el-select clearable filterable placeholder="请选择工会"
style="width: 100%"
v-model="pageForm.unionId">
<el-option
v-for="item in unionList"
:key="item.id"
:label="item.unionname"
:value="item.id">
:value="item.id"
v-for="item in unionList">
</el-option>
</el-select>
</div>
</div>
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="pageData">搜索
<el-button @click="pageData" icon="el-icon-search" type="primary">搜索
</el-button>
</div>
</div>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="活动列表" :app="this">
<el-card class="mt10" shadow="never">
<table-tool :app="this" label="活动列表">
</table-tool>
<el-table :data="tableData" style="width: 100%;margin-bottom: 20px" row-key="id"
@sort-change="pageOrder" v-loading="tableLoading" :size="tableSize"
class="vi-table">
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
class="vi-table" row-key="id" style="width: 100%;margin-bottom: 20px"
v-loading="tableLoading">
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
<el-table-column :index="indexMethod" align="center" header-align="center"
label="序号" type="index"
width="80px"></el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumns"
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
:width="column.width"
align="center"
header-align="center"
show-overflow-tooltip
:sortable="column.sortable">
v-for="column in tableColumns">
<template v-if="column.prop=='time'" scope="{row}">
<template scope="{row}" v-if="column.prop=='time'">
<span>
{{moment(row.startTime).format('YYYY-MM-DD')}} - {{moment(row.endTime).format('YYYY-MM-DD')}}
</span>
@@ -92,27 +92,38 @@
{{row.applyStartTime}}-{{row.applyEndTime}}
</template>
<template v-else-if="column.prop=='projectTypeName'" scope="{row}">
<template scope="{row}" v-else-if="column.prop=='projectTypeName'">
{{row.projectTypeName}}({{row.projectTypeCode}})
</template>
<template v-else-if="column.prop=='tussueName'" scope="{row}">
<template scope="{row}" v-else-if="column.prop=='isDisabled'">
<el-switch
:active-value="true"
:inactive-value="false"
@change="(val)=>{activityStatusChange(row.id,row.isDisabled == 1?1:0)}"
active-color="#13ce66"
inactive-color="#ff4949"
v-model="row.isDisabled">
</el-switch>
</template>
<template scope="{row}" v-else-if="column.prop=='tussueName'">
<span v-if="row.type==40002">{{row.unionname?row.unionname:'暂无'}}</span>
<span v-if="row.type==40003">{{row.clubName?row.clubName:'暂无'}}</span>
<span v-if="row.type==40001">校工会</span>
</template>
<template v-else-if="column.prop=='state'" scope="{row}">
<template scope="{row}" v-else-if="column.prop=='state'">
{{row.state===1?'未审核':row.state===2?'审核不通过':'审核通过'}}
</template>
</el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center"
label="操作" width="150px">
<el-table-column align="center" header-align="center" label="操作"
prop="userOnline" width="150px">
<template scope="{row}">
<el-dropdown @command="dropdownCommand">
<el-button size="mini" :loading="row.loading">
<el-button :loading="row.loading" size="mini">
<i class="ti-settings"></i>
<span class="ti-angle-down"></span>
</el-button>
@@ -155,9 +166,9 @@
</template>
</guava>
<send-msg ref="sendMsg" :url="url"></send-msg>
<send-msg :mobile_url="mobileUrl" :url="url" ref="sendMsg"></send-msg>
<open-qr-code ref="openQRCode" :url="url"></open-qr-code>
<open-qr-code :url="url" ref="openQRCode"></open-qr-code>
</div>
@@ -172,6 +183,7 @@
userTabLoading: false,
dialogVisible: false,
url: "",
mobileUrl: "",
userData: [],
userList: [],
unionList: [],
@@ -190,6 +202,7 @@
{prop: 'time', label: '活动日期'},
{prop: 'time2', label: '报名日期', width: '300'},
{prop: 'applyTime', label: '创建时间', sortable: true},
{prop: 'isDisabled', label: '是否开启'},
{prop: 'state', label: '审核状态', sortable: true},
],
@@ -213,11 +226,24 @@
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
'tissue-info': httpVueLoader('/components/activity/school/tissueInfo.vue?v=1.0.0'),
'send-msg': httpVueLoader('/components/plugins/SendMsgByGroupId.vue'),
'tissue-info': httpVueLoader('/components/activity/school/tissueInfo.vue'),
'send-msg': httpVueLoader('/components/plugins/SendMsgByGroupId.vue?v=' + new Date().getTime()),
'open-qr-code': httpVueLoader('/components/plugins/OpenQRCode.vue'),
},
methods: {
async activityStatusChange(id, isDisabled) {
const resp = await $.get('/platform/activity/info/mange/activityStatusChange', {
id: id,
isDisabled: isDisabled
})
if (resp.code === 0) {
this.pageData();
this.notifySuccess(resp.msg)
} else {
this.notifyError(resp.msg)
}
},
dropdownCommand(command) {
const {type, row} = command
if (type === 'view') {
@@ -237,31 +263,21 @@
openCode(row) {
this.$refs.openQRCode.openCode("/mobile/activity/unionActivity/goReg?id=" + row.id + "&signUpMethod=" + row.signUpMethod)
},
async sendMsg(row) {
if (!row.groupId){
this.$message.error("请选择参加人员后才能通知推送!")
return
sendMsg(row) {
if (row.signUpMethod === 1 || row.signUpMethod === 3) {
this.mobileUrl = "/mobile/activity/unionActivity/goReg?id=" + row.id + "&signUpMethod=" + row.signUpMethod
} else if (row.signUpMethod === 2) {
if (type === 40001) {
this.url = "/platform/activity/applyUser/school"
} else if (type === 40002) {
this.url = "/platform/activity/applyUser/union"
} else {
this.url = "/platform/activity/applyUser/club"
}
}
const confirm = await this.$confirm('确定要通知提醒参加人员吗? 确认后会有短信推送!', '提示', {type: 'warning'})
if (confirm !== 'confirm') return
const resp = await $.get('/platform/activity/info/mange/doSendMsg',{
activityId:row.id,
msgUrl:"/mobile/activity/unionActivity/goReg?id=" + row.id + "&signUpMethod=" + row.signUpMethod,
groupId:row.groupId
});
if (resp.code === 0){
this.$message.success("发送成功")
} else {
this.$message.error(resp.msg)
}
console.log(row)
// // this.url = `<a href="` + (APP_DOMAIN + "/mobile/activity/unionActivity/goReg?id=" + row.id + "&signUpMethod=" + row.signUpMethod) + `">点击参与</a>`
// this.url = "/mobile/activity/unionActivity/goReg?id=" + row.id + "&signUpMethod=" + row.signUpMethod
// this.$refs.sendMsg.openDialog(row.groupId)
this.$refs.sendMsg.openDialog(row.groupId, "文化活动")
},
async remoteMethod(query) {
if (query) {
@@ -353,12 +353,6 @@
keys.forEach(key => {
$("#" + key).html("")
editors[key] = new E('#' + key)
editors[key].config.excludeMenus = [
'video',
'image',
'link',
'code',
]
editors[key].config.onchange = (html) => {
this.formData[key] = html
}
@@ -1,4 +1,4 @@
<div id="app" class="platform" v-cloak>
<div class="platform" id="app" v-cloak>
<guava ref="guava">
<template>
@@ -9,11 +9,11 @@
<div class="search-item-option">
<el-date-picker
@change="getActivityByYearOrType"
placeholder="选择年"
style="width: 100%"
v-model="pageForm.year"
value-format="yyyy"
type="year"
placeholder="选择年">
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>
</div>
</div>
@@ -21,13 +21,13 @@
<div class="search-item">
<div class="search-item-label">活动名称</div>
<div class="search-item-option">
<el-select v-model="pageForm.activityId" placeholder="请选择活动" filterable
style="width: 100%">
<el-select filterable placeholder="请选择活动" style="width: 100%"
v-model="pageForm.activityId">
<el-option
v-for="item in activityList"
:key="item.id"
:label="item.name"
:value="item.id">
:value="item.id"
v-for="item in activityList">
</el-option>
</el-select>
</div>
@@ -36,14 +36,14 @@
<div class="search-item" v-if="type==40002||type==40001">
<div class="search-item-label">工会名称</div>
<div class="search-item-option">
<el-select v-model="pageForm.unionId" placeholder="请选择工会" filterable
clearable
style="width: 100%">
<el-select clearable filterable placeholder="请选择工会"
style="width: 100%"
v-model="pageForm.unionId">
<el-option
v-for="item in unionList"
:key="item.id"
:label="item.unionname"
:value="item.id">
:value="item.id"
v-for="item in unionList">
</el-option>
</el-select>
</div>
@@ -52,12 +52,12 @@
<div class="search-item">
<div class="search-item-label">姓名/工号</div>
<div class="search-item-option">
<el-input placeholder="请输入姓名/工号" clearable
v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend"
placeholder="姓名/工号"
style="width: 80px;">
<el-input @keyup.enter.native="doSearch" clearable
placeholder="请输入姓名/工号"
v-model="pageForm.searchKeyword">
<el-select placeholder="姓名/工号" slot="prepend"
style="width: 80px;"
v-model="pageForm.searchName">
<el-option label="姓名" value="u.username"></el-option>
<el-option label="工号" value="u.loginanme"></el-option>
</el-select>
@@ -66,36 +66,45 @@
</div>
<div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="pageData">搜索
<el-button @click="pageData" icon="el-icon-search" type="primary">搜索
</el-button>
</div>
</div>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="人员列表" :app="this">
<el-card class="mt10" shadow="never">
<table-tool :app="this" label="人员列表">
<template #func>
<el-button icon="el-icon-s-promotion" type="primary" @click="doExport">导出
<el-button @click="doExport" icon="el-icon-s-promotion" type="primary">导出
</el-button>
</template>
</table-tool>
<el-table :data="tableData" style="width: 100%;margin-bottom: 20px" row-key="id"
@sort-change="pageOrder" v-loading="tableLoading" :size="tableSize"
class="vi-table">
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
class="vi-table" row-key="id" style="width: 100%;margin-bottom: 20px"
v-loading="tableLoading">
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
<el-table-column :index="indexMethod" align="center" header-align="center"
label="序号" type="index"
width="80px"></el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumns"
:label="column.label"
:prop="column.prop"
sortable>
align="center"
header-align="center"
sortable
v-for="column in tableColumns">
</el-table-column>
<el-table-column align="center" header-align="center" label="操作"
v-if="${@shiro.hasRole('sysadmin')}"
width="100">
<template scope="{row}">
<el-button @click="doDelete(row)" size="mini" type="danger">
删除
</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
@@ -133,6 +142,22 @@
}
},
methods: {
doDelete(row) {
this.$confirm('您确认要取消报名吗?', '提示', {type: 'warning'}).then(async () => {
const resp = await $.post('/mobile/activity/unionActivity/doSingleCancelRegister', {
activityId: this.pageForm.activityId,
applyUserId: row.applyUserId,
id: row.atpId
})
if (resp.code === 0) {
this.doSearch()
this.$refs.guava.index()
this.notifySuccess(resp.msg)
} else {
this.notifyError(resp.msg)
}
})
},
async doExport() {
const {activityId, unionId} = this.pageForm
window.open("/platform/activity/info/mange/doExportUser?id=" + activityId +
@@ -174,4 +199,4 @@
}
})
</script>
</script>
@@ -356,7 +356,7 @@ layout("/layouts/platform.html"){
}
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
this.$set(this.pageForm, "unitId", null)
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}" === 'true') {
this.units = await getUnits(this.pageForm.unionId)
} else {
@@ -364,7 +364,7 @@ layout("/layouts/platform.html"){
}
},
async getHonorNum() {
const evaluateNum = await HonorApi.getEvaluateNum(1800)
const evaluateNum = await HonorApi.getEvaluateNum(1800, this.pageForm.year)
this.honorTypeList.map(v => {
if (v.code === "H1100") {
v.num = evaluateNum.gr
@@ -351,7 +351,7 @@ layout("/layouts/platform.html"){
}
},
async getHonorNum() {
const evaluateNum = await HonorApi.getEvaluateNum(1600)
const evaluateNum = await HonorApi.getEvaluateNum(1600, this.pageForm.year)
this.honorTypeList.map(v => {
if (v.code === "H1100") {
v.num = evaluateNum.gr
@@ -778,7 +778,7 @@ layout("/layouts/platform.html"){
} else {
this.$set(this.formData, 'userName', this.formData.userName)
}
this.formData.userId=data.username
this.formData.userId=data.userId
this.$set(this.formData, "unionId", data.unionId)
this.$set(this.formData, "political", data.political)
this.$set(this.formData, "position", data.position)
@@ -9,6 +9,10 @@ layout("/layouts/platform.html"){
.btn-group {
margin-right: 6px;
}
th {
min-width: 190px;
text-align: center !important;
}
</style>
@@ -185,7 +185,7 @@ layout("/layouts/platform.html"){
this.doSearch()
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
this.$set(this.pageForm, "unitId", null)
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}" === 'true') {
this.units = await getUnits(this.pageForm.unionId)
} else {
@@ -346,7 +346,7 @@ layout("/layouts/platform.html"){
address: [{required: true, message: '必填', trigger: ['blur', 'change']}],
activity_card_name: [{required: true, message: '必填', trigger: ['blur', 'change']}],
activity_card_number: [{required: true, message: '必填', trigger: ['blur', 'change']}],
// sign: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sign: [{required: true, message: '必填', trigger: ['blur', 'change']}],
},
}
},
@@ -198,7 +198,7 @@
},
formRules: {
idea: [{required: true, message: '请填写意见', trigger: ['blur', 'change']}],
sign: [{required: true, message: '必填', trigger: ['blur', 'change']}],
sign: [{required: true, message: '请签字', trigger: ['blur', 'change']}],
},
}
},
@@ -198,7 +198,7 @@
},
formRules: {
idea: [{required: true, message: '请填写意见', trigger: ['blur', 'change']}],
sign: [{required: true, message: '请填写意见', trigger: ['blur', 'change']}],
sign: [{required: true, message: '请签字', trigger: ['blur', 'change']}],
},
}
},
@@ -124,7 +124,7 @@
<el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
<el-dropdown-item v-if="[1010,1000].includes(row.state_id)"
<el-dropdown-item v-if="[1000,1005,1015,1025,1045].includes(row.state_id)"
:command="{type:'edit',data:row}">
编辑
</el-dropdown-item>
@@ -478,7 +478,7 @@ layout("/layouts/platform.html"){
this.formData.id = id
await this.activityChange(id);
}
this.dialogVisible = true
this.dialogVisible = false
await this.getUserClub();
}
})