This commit is contained in:
server
2026-04-30 17:15:17 +08:00
parent 89a9ec271c
commit a44d24eab1
4 changed files with 112 additions and 75 deletions
@@ -210,8 +210,8 @@ public class ActivitySchool extends BaseModel implements Serializable, SysHomeCo
} else {
sysHomeActivity.setH5Url(null);
}
sysHomeActivity.setStartDate(DateUtil.parseDate(this.getApplyStartTime()));
sysHomeActivity.setEndDate(DateUtil.parseDate(this.getApplyEndTime()));
sysHomeActivity.setStartDate(DateUtil.parse(this.getApplyStartTime(), "yyyy-MM-dd HH:mm"));
sysHomeActivity.setEndDate(DateUtil.parse(this.getApplyEndTime(), "yyyy-MM-dd HH:mm"));
sysHomeActivity.setAllowUserGroupId(this.getActivityGroupId());
sysHomeActivity.setEnable(true);
sysHomeActivity.setClassPath(this.getClass().getPackageName() + this.getClass().getName());
@@ -66,7 +66,6 @@
:required="column.isRequired"
@click="selectFieldClick(column)"
></van-field>
<van-popup
v-if="['SELECT'].includes(column.columnFormType)"
v-model="pickerStates[column.columnCode + 'Picker']"
@@ -75,6 +74,8 @@
>
<template v-if="['DATETIME', 'DATE'].includes(column.columnType)">
<van-datetime-picker
v-model="column.currentDate"
:min-date="column.minDate"
:title="column.columnName"
:type="column.columnType.toLocaleLowerCase()"
show-toolbar
@@ -448,6 +449,10 @@ module.exports = {
if (!["DATE", "DATETIME"].includes(column.columnType)) {
//说明是普通的下拉框
// column.selectValues = ['1', '2', '3']
}else{
this.$set(column, "minDate", new Date(1900, 0, 1))
this.$set(column, "currentDate", new Date(column.columnValue))
}
},
/**
@@ -93,12 +93,12 @@ layout("/layouts/platform.html"){
<search @search="doSearch">
<search-item label="年度:">
<el-date-picker
placeholder="选择年度"
type="year"
style="width: 100%"
v-model="pageForm.year"
value-format="yyyy"
@change="activityData"
placeholder="选择年度"
type="year"
style="width: 100%"
v-model="pageForm.year"
value-format="yyyy"
@change="activityData"
></el-date-picker>
</search-item>
<search-item label="活动状态:" style="width: 340px">
@@ -117,11 +117,12 @@ layout("/layouts/platform.html"){
<el-row :gutter="20">
<el-col v-for="(item, i) in activityList.slice((index-1)*4,index*4)" :key="i" :span="6">
<el-card
@click="openApply(item)"
:class="'box-card '+(item.id===pageForm.activityId?'activeCard':'')"
style="border-radius: 10px"
@click="openApply(item)"
:class="'box-card '+(item.id===pageForm.activityId?'activeCard':'')"
style="border-radius: 10px"
>
<div slot="header" class="clearfix" style="width: 100%; word-break: break-all; white-space: pre-wrap">
<div slot="header" class="clearfix"
style="width: 100%; word-break: break-all; white-space: pre-wrap">
<div>{{item.activityName}}</div>
<!--<el-button @click="openApply(item)" class="reserve_btn" type="text">请选择活动报名</el-button>-->
</div>
@@ -151,26 +152,26 @@ layout("/layouts/platform.html"){
<!-- <span style="color: gray">活动类型:</span>
<span>{{item.activityMode == 1 ? '校工会' : '分工会'}}</span>-->
<el-tag
type="danger"
effect="dark"
style="border-radius: 50%"
v-if="$moment(item.activitySignUpEndTime).valueOf() < $moment().valueOf()"
type="danger"
effect="dark"
style="border-radius: 50%"
v-if="$moment(item.activitySignUpEndTime).valueOf() < $moment().valueOf()"
>
报名结束
</el-tag>
<el-tag
type="success"
effect="dark"
style="border-radius: 50%"
v-else-if="$moment().valueOf()>$moment(item.activitySignUpStartTime).valueOf()&&$moment().valueOf()<$moment(item.activitySignUpEndTime).valueOf()"
type="success"
effect="dark"
style="border-radius: 50%"
v-else-if="$moment().valueOf()>$moment(item.activitySignUpStartTime).valueOf()&&$moment().valueOf()<$moment(item.activitySignUpEndTime).valueOf()"
>
报名中
</el-tag>
<el-tag
type="danger"
effect="dark"
style="border-radius: 50%"
v-else-if="$moment().valueOf()<$moment(item.activitySignUpEndTime).valueOf()"
type="danger"
effect="dark"
style="border-radius: 50%"
v-else-if="$moment().valueOf()<$moment(item.activitySignUpEndTime).valueOf()"
>
报名未开始
</el-tag>
@@ -190,14 +191,15 @@ layout("/layouts/platform.html"){
<template #label_end>
<div class="search-item-option">
<el-select
v-model="pageForm.courseTypeId"
:placeholder="'请选择' + trainType + '类型'"
filterable
clearable
style="width: 100%; margin-bottom: 5px; margin-left: 10px"
@change="doSearch"
v-model="pageForm.courseTypeId"
:placeholder="'请选择' + trainType + '类型'"
filterable
clearable
style="width: 100%; margin-bottom: 5px; margin-left: 10px"
@change="doSearch"
>
<el-option v-for="item in courseTypeList" :key="item.id" :label="item.lxname" :value="item.id"></el-option>
<el-option v-for="item in courseTypeList" :key="item.id" :label="item.lxname"
:value="item.id"></el-option>
</el-select>
</div>
</template>
@@ -206,21 +208,24 @@ layout("/layouts/platform.html"){
<el-table :data="tableData" row-key="id" @sort-change="pageOrder" v-loading="tableLoading">
<el-table-column type="index" :index="indexMethod" label="序号" width="80px"></el-table-column>
<el-table-column
v-for="(column, index) in tableColumns"
:key="column.prop"
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
show-overflow-tooltip
v-for="(column, index) in tableColumns"
:key="column.prop"
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
show-overflow-tooltip
>
<template v-slot="{row}" v-if="column.prop=='courseLocationCoordinates'">
<el-button style="padding: 0" @click="openViewMap(row.courseLocationCoordinates)" type="text">
<el-button style="padding: 0" @click="openViewMap(row.courseLocationCoordinates)"
type="text">
{{row.courseLocation}}
</el-button>
</template>
<template v-slot="{row}" v-else-if="column.prop=='courseTime'">
<el-button style="padding: 0" @click="openViewCourseTime(row.id)" type="text">点击查看{{trainType}}时间</el-button>
<el-button style="padding: 0" @click="openViewCourseTime(row.id)" type="text">
点击查看{{trainType}}时间
</el-button>
</template>
<template v-slot="{row}" v-else-if="column.prop=='applyNum'">
@@ -230,8 +235,13 @@ layout("/layouts/platform.html"){
<el-table-column align="center" label="操作" width="150px">
<template v-slot="scope">
<el-button v-if="!scope.row.isSign" type="primary" size="mini" @click="doApply(scope.row)">我要报名</el-button>
<el-button v-else type="danger" size="mini" @click="doCancel(scope.row)">取消报名</el-button>
<span v-if="!trainSignUpActivity.signPointCount">
<el-button v-if="!scope.row.isSign" type="primary" size="mini"
@click="doApply(scope.row)">我要报名</el-button>
<el-button v-else type="danger" size="mini"
@click="doCancel(scope.row)">取消报名</el-button>
</span>
<span v-else>请扫码签到报名</span>
</template>
</el-table-column>
</el-table>
@@ -281,41 +291,46 @@ layout("/layouts/platform.html"){
<el-row>
<el-col :span="24">
<el-form-item
v-for="(column, index) in formData.trainMobileSignColumnList"
:prop="'trainMobileSignColumnList.' + index + '.columnValue'"
:label="column.columnName"
:key="column.columnCode"
:rules="{ required: column.isRequired,
v-for="(column, index) in formData.trainMobileSignColumnList"
:prop="'trainMobileSignColumnList.' + index + '.columnValue'"
:label="column.columnName"
:key="column.columnCode"
:rules="{ required: column.isRequired,
message: (['SELECT', 'FILE'].includes(column.columnFormType) ? '请选择' : '请填写') + column.columnName,
trigger: 'blur'}"
>
<!--文本框-->
<template v-if="!['SELECT'].includes(column.columnFormType) && ['VARCHAR','TEXT','INT'].includes(column.columnType)">
<template
v-if="!['SELECT'].includes(column.columnFormType) && ['VARCHAR','TEXT','INT'].includes(column.columnType)">
<el-input
v-model="column.columnValue"
:placeholder="'请填写' + column.columnName"
:type="['INT'].includes(column.columnType) ? 'number' : ''"
v-model="column.columnValue"
:placeholder="'请填写' + column.columnName"
:type="['INT'].includes(column.columnType) ? 'number' : ''"
></el-input>
</template>
<!--选择框-->
<template v-else-if="['SELECT'].includes(column.columnFormType) && ['VARCHAR','TEXT','INT'].includes(column.columnType)">
<el-select v-model="column.columnValue" :placeholder="'请选择' + column.columnName" style="width: 100%">
<el-option v-for="item in column.selectValues" :key="item" :label="item" :value="item"></el-option>
<template
v-else-if="['SELECT'].includes(column.columnFormType) && ['VARCHAR','TEXT','INT'].includes(column.columnType)">
<el-select v-model="column.columnValue" :placeholder="'请选择' + column.columnName"
style="width: 100%">
<el-option v-for="item in column.selectValues" :key="item" :label="item"
:value="item"></el-option>
</el-select>
</template>
<!--时间框-->
<template v-else-if="['DATE', 'DATETIME'].includes(column.columnType)">
<el-date-picker
style="width: 100%"
v-model="column.columnValue"
:type="column.columnType === 'DATE' ? 'date' : 'datetime'"
:placeholder="'请选择' + column.columnName"
:value-format="column.columnType === 'DATE' ? 'yyyy-MM-dd' : 'yyyy-MM-dd HH:mm:ss'"
style="width: 100%"
v-model="column.columnValue"
:type="column.columnType === 'DATE' ? 'date' : 'datetime'"
:placeholder="'请选择' + column.columnName"
:value-format="column.columnType === 'DATE' ? 'yyyy-MM-dd' : 'yyyy-MM-dd HH:mm:ss'"
></el-date-picker>
</template>
<!--文件-->
<template v-else-if="['JSON'].includes(column.columnType)">
<file-upload :files.sync="column.columnValue" :max="column.fileNumber" :type="column.fileType"></file-upload>
<file-upload :files.sync="column.columnValue" :max="column.fileNumber"
:type="column.fileType"></file-upload>
</template>
</el-form-item>
</el-col>
@@ -364,20 +379,20 @@ layout("/layouts/platform.html"){
courseTypeList: [],
tableColumns: [
/* {prop: 'name', label: '活动名称'},*/
{ prop: "courseName", label: "名称" },
{ prop: "lxname", label: "类型" },
{ prop: "coursePeopleNumber", label: "总人数" },
{ prop: "courseLocationCoordinates", label: "地点" },
{ prop: "courseInstructor", label: "联系人" },
{ prop: "courseTime", label: "时间" },
{ prop: "applyNum", label: "已报名人数" }
{prop: "courseName", label: "名称"},
{prop: "lxname", label: "类型"},
{prop: "coursePeopleNumber", label: "总人数"},
{prop: "courseLocationCoordinates", label: "地点"},
{prop: "courseInstructor", label: "联系人"},
{prop: "courseTime", label: "时间"},
{prop: "applyNum", label: "已报名人数"}
],
viewMapDialog: false,
courseTimeListDialog: false,
courseTimeList: [],
formData: {},
formRules: {
mobile: [{ required: true, message: "必填", trigger: ["blur", "change"] }]
mobile: [{required: true, message: "必填", trigger: ["blur", "change"]}]
},
choose: {},
trainType: "培训班"
@@ -479,7 +494,7 @@ layout("/layouts/platform.html"){
})
},
async getScopeUser(activityGroupId) {
const resp = await this.$axios.post("/platform/activity/basic/scope/getScopeUser", { activityGroupId: activityGroupId })
const resp = await this.$axios.post("/platform/activity/basic/scope/getScopeUser", {activityGroupId: activityGroupId})
return resp.data
},
async doApply(row) {
@@ -516,9 +531,18 @@ layout("/layouts/platform.html"){
mobile: this.$store.state.user.mobile,
trainMobileSignColumnList: o.trainMobileSignColumnList
}
this.formData.trainMobileSignColumnList.forEach((item) => {
item.columnValue = ""
this.formData.trainMobileSignColumnList.map((item) => {
if (item.columnCode==="idCard" && this.$store.state.user.idCard) {
item.columnValue = this.$store.state.user.idCard
} else if (item.columnCode==="birthday" && this.$store.state.user.birthday) {
item.columnValue = this.$moment(this.$store.state.user.birthday).format("YYYY-MM-DD")
} else if (item.columnCode==="nation" && this.$store.state.user.nation) {
item.columnValue = this.$store.state.user.nation
} else {
item.columnValue = ""
}
})
console.log(this.formData.trainMobileSignColumnList)
this.$refs.guava.edit()
this.$nextTick(() => {
this.$refs.form.clearValidate()
@@ -581,7 +605,7 @@ layout("/layouts/platform.html"){
}
},
async openViewCourseTime(id) {
const resp = await this.$axios.post(loc() + "/getCourseTime", { id: id })
const resp = await this.$axios.post(loc() + "/getCourseTime", {id: id})
this.courseTimeList = resp.data
this.courseTimeListDialog = true
}
@@ -406,7 +406,7 @@ layout("/layouts/platform_h5.html"){
}
},
components: {
"train-dynamic-form": httpVueLoader("/components/module/trainSignUp/TrainDynamicForm.vue")
"train-dynamic-form": httpVueLoader("/components/module/trainSignUp/TrainDynamicForm.vue?v=" + new Date().getTime())
},
methods: {
tabClick(name, title) {
@@ -602,8 +602,16 @@ layout("/layouts/platform_h5.html"){
const column = this.allColumnsData.find((x) => x.id === o.courseType)
this.dynamicColumnsData = column ? column.trainMobileSignColumnList : []
this.dynamicColumnsData.forEach((item) => {
item.columnValue = ""
this.dynamicColumnsData.map((item) => {
if (item.columnCode==="idCard" && this.$store.state.user.idCard) {
item.columnValue = this.$store.state.user.idCard
} else if (item.columnCode==="birthday" && this.$store.state.user.birthday) {
item.columnValue = this.$moment(this.$store.state.user.birthday).format("YYYY-MM-DD")
} else if (item.columnCode==="nation" && this.$store.state.user.nation) {
item.columnValue = this.$store.state.user.nation
} else {
item.columnValue = ""
}
})
this.joinPopup = true
})