香樟工会讲堂:

1、活动管理:微信二维码删除无效
2、活动报名控制不签到两次,一年之内不能报名。一年之后,自动解除限制。
3、报名统计 查看页面添加工号/姓名查询
This commit is contained in:
2026-05-14 16:59:22 +08:00
parent 9061d1e266
commit 6b9beb7a5e
12 changed files with 512 additions and 71 deletions
@@ -106,13 +106,14 @@ layout("/layouts/platform.html"){
},
methods: {
async openSign(row) {
const resp = await this.$axios.post(loc() + "/signChange", { courseId: row.id, openOtherUnion: !row.openOtherUnion })
if (resp.code === 0) {
this.$message.success(resp.msg)
this.doSearch()
} else {
this.$message.warning(resp.msg)
}
return this.$axios.post(loc() + "/signChange", { courseId: row.id, openOtherUnion: !row.openOtherUnion }).then((resp) => {
if (resp.code === 0) {
this.$message.success(resp.msg)
this.doSearch()
} else {
this.$message.warning(resp.msg)
}
})
},
activityChange(val) {
this.$nextTick(() => {
@@ -130,12 +131,13 @@ layout("/layouts/platform.html"){
await this.doSearch()
},
async getActivityList() {
const resp = await this.$axios.post(loc() + "/activityList", { year: this.pageForm.year })
this.activityList = resp.data
if (this.activityList && this.activityList.length > 0) {
this.pageForm.activityId = this.activityList[0].id
this.activityChange(this.activityList[0].id)
}
return this.$axios.post(loc() + "/activityList", { year: this.pageForm.year }).then((resp) => {
this.activityList = resp.data
if (this.activityList && this.activityList.length > 0) {
this.pageForm.activityId = this.activityList[0].id
this.activityChange(this.activityList[0].id)
}
})
},
async initData() {
await this.getActivityList()
@@ -3,6 +3,15 @@ const info = {
<div>
<el-tabs>
<el-tab-pane label="报名人员">
<el-form :inline="true" :model="registerQueryForm" class="mt20" size="small" @submit.native.prevent>
<el-form-item label="工号/姓名">
<el-input clearable placeholder="请输入工号或姓名" v-model="registerQueryForm.keyword" @keyup.enter.native.prevent="registerUserList()"></el-input>
</el-form-item>
<el-form-item>
<el-button @click="registerUserList" type="primary">查询</el-button>
<el-button @click="resetRegisterQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="registerUserTableData" class="mt20" max-height="600">
<el-table-column
:label="column.label"
@@ -24,6 +33,15 @@ const info = {
</el-table>
</el-tab-pane>
<el-tab-pane label="签到情况" v-if="clickRow.isMobileSign === true && timeList.length > 0">
<el-form :inline="true" :model="signQueryForm" class="mt20" size="small" @submit.native.prevent>
<el-form-item label="工号/姓名">
<el-input clearable placeholder="请输入工号或姓名" v-model="signQueryForm.keyword" @keyup.enter.native.prevent="doSearch()"></el-input>
</el-form-item>
<el-form-item>
<el-button @click="doSearch" type="primary">查询</el-button>
<el-button @click="resetSignQuery">重置</el-button>
</el-form-item>
</el-form>
<el-tabs style="height: 660px" tab-position="left" class="mt20" @tab-click="tabClick">
<el-tab-pane v-for="item,index in timeList" :key="index">
<span slot="label">
@@ -87,11 +105,20 @@ const info = {
signUserList: [],
timeId: '',
pageForm: {},
registerQueryForm: {
keyword: ""
},
signQueryForm: {
keyword: ""
},
}
},
methods: {
async onOpen(row) {
this.clickRow = row
this.registerQueryForm.keyword = ""
this.signQueryForm.keyword = ""
this.pageForm.pageNumber = 1
await this.registerUserList()
await this.selectTimes()
await this.getTaleColumnInfo()
@@ -100,6 +127,14 @@ const info = {
this.pageForm.pageNumber = 1
await this.selectSignUsers(this.timeId)
},
async resetRegisterQuery() {
this.registerQueryForm.keyword = ""
await this.registerUserList()
},
async resetSignQuery() {
this.signQueryForm.keyword = ""
await this.doSearch()
},
async pageNumberChange(val) {
this.pageForm.pageNumber = val
await this.selectSignUsers(this.timeId)
@@ -126,25 +161,41 @@ const info = {
await this.selectSignUsers(this.timeList[val.index].id)
},
async registerUserList() {
const res = await this.$axios.post(loc() + "/registerUserList", { courseId: this.clickRow.id })
this.registerUserTableData = res.data
const params = {
courseId: this.clickRow.id
}
const keyword = this.registerQueryForm.keyword ? this.registerQueryForm.keyword.trim() : ""
if (keyword) {
params.keyword = keyword
}
return this.$axios.post(loc() + "/registerUserList", params).then((res) => {
this.registerUserTableData = res.data
})
},
async selectTimes() {
const res = await this.$axios.post(loc() + "/selectTimes", { courseId: this.clickRow.id })
this.timeList = res.data
if(this.timeList.length > 0) {
await this.selectSignUsers(this.timeList[0].id)
}
return this.$axios.post(loc() + "/selectTimes", { courseId: this.clickRow.id }).then(async (res) => {
this.timeList = res.data
if(this.timeList.length > 0) {
await this.selectSignUsers(this.timeList[0].id)
}
})
},
async selectSignUsers(timeId) {
this.timeId = timeId
this.$set(this.pageForm, 'courseId', this.clickRow.id)
this.$set(this.pageForm, 'timeId', timeId)
const res = await this.$axios.post(loc() + "/getSignInfo", this.pageForm)
if (res.code === 0) {
this.signUserList = res.data.list
this.pageForm.totalCount = res.data.totalCount
const keyword = this.signQueryForm.keyword ? this.signQueryForm.keyword.trim() : ""
if (keyword) {
this.$set(this.pageForm, 'keyword', keyword)
} else {
this.$delete(this.pageForm, 'keyword')
}
return this.$axios.post(loc() + "/getSignInfo", this.pageForm).then((res) => {
if (res.code === 0) {
this.signUserList = res.data.list
this.pageForm.totalCount = res.data.totalCount
}
})
},
async getTaleColumnInfo() {
const res = await $.get(loc() + '/getTaleColumnInfo', { courseId: this.clickRow.id })
@@ -22,7 +22,9 @@ layout("/layouts/platform.html"){
</search>
</el-card>
<el-card shadow="never">
<table-tool :columns.sync="tableColumns"></table-tool>
<table-tool :columns.sync="tableColumns">
<el-button size="small" type="primary" icon="el-icon-upload2" @click="showImportDialog = true">导入意见</el-button>
</table-tool>
<el-table :data="tableData" @sort-change="pageOrder" header-align="center" style="width: 100%" row-key="id">
<el-table-column label="序号" width="50" type="index" :index="indexMethod" fixed="left"></el-table-column>
<el-table-column
@@ -66,6 +68,17 @@ layout("/layouts/platform.html"){
</template>
</guava>
<excel-import
ref="excelImportRef"
url="/platform/opinion/mine/importOpinion"
template_url="/platform/opinion/mine/downloadImportTemplate"
:visible.sync="showImportDialog"
title="意见导入"
width="700px"
@import-success="doSearch"
:extra_params="{}"
></excel-import>
</div>
<script>
@@ -82,6 +95,7 @@ layout("/layouts/platform.html"){
return {
sessionOptions: [],
businessNo: null,
showImportDialog: false,
tableColumns: [
{label: "意见编号", prop: "code"},
{label: "意见和建议", prop: "name", width: "200px"},