This commit is contained in:
server
2025-11-01 09:57:06 +08:00
parent af130baaf7
commit 114dcf014c
26 changed files with 183 additions and 160 deletions
@@ -84,10 +84,10 @@
securityJsCode: "4fa1e1aeabba7eb9518129cf57ab17c1"
}
</script>
<!-- <script-->
<!-- type="text/javascript"-->
<!-- src="https://webapi.amap.com/maps?v=2.0&key=57f0d098ba1b881ecc436c4cfd23bbbf&plugin=AMap.PolyEditor,AMap.Geolocation,AMap.PlaceSearch"-->
<!-- ></script>-->
<!-- <script-->
<!-- type="text/javascript"-->
<!-- src="https://webapi.amap.com/maps?v=2.0&key=e913d40c4546d8bb4d521b4a8aef0fff&plugin=AMap.PolyEditor,AMap.Geolocation,AMap.PlaceSearch"-->
<!-- ></script>-->
<script type="text/javascript">
Vue.config.devtools = false
@@ -129,14 +129,14 @@ layout("/layouts/platform.html"){
</div>
<script>
<!--#include("../../../zhgh/staffmanage/member/common/audit/memberAuditChangeInfo.js"){}#-->
<!--#include("../../../zhgh/staffmanage/member/change/common/memberAllChangeInfo.js"){}#-->
new Vue({
el: "#app",
dicts: ["MEMBER_CHANGE_TYPE"],
mixins: [initTableMixins],
components: {
"member-audit-change-info": MEMBER_AUDIT_CHANGE_INFO
"member-audit-change-info": MEMBER_ALL_CHANGE_INFO
},
data() {
return {
@@ -177,7 +177,7 @@ layout("/layouts/platform.html"){
methods: {
openCurrentUserChangeInfo(row) {
this.$refs.guava.public(() => {
this.$refs.memberAuditChangeInfoRef.onOpen({recordId: row.userHistoryId, userId: row.id})
this.$refs.memberAuditChangeInfoRef.onOpen(row.id)
})
},
getChangeTypes(changeTypes) {
@@ -109,10 +109,8 @@ layout("/layouts/platform.html"){
</div>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool :app="this" label="活动列表">
<template #func>
<table-tool label="活动列表">
<el-button icon="el-icon-plus" type="primary" size="small" @click="openAdd">创建活动</el-button>
</template>
</table-tool>
<el-table :data="tableData" style="width: 100%" row-key="_id" @sort-change="pageOrder"
v-loading="tabLoading">
@@ -129,15 +127,15 @@ layout("/layouts/platform.html"){
<el-table-column label="活动地址" prop="address"></el-table-column>
<el-table-column label="报名时间">
<template scope="scope">
{{moment(scope.row.applyStartTime).format('YYYY-MM-DD HH:mm:ss')}} -
{{moment(scope.row.applyEndTime).format('YYYY-MM-DD HH:mm:ss')}}
{{$moment(scope.row.applyStartTime).format('YYYY-MM-DD HH:mm:ss')}} -
{{$moment(scope.row.applyEndTime).format('YYYY-MM-DD HH:mm:ss')}}
</template>
</el-table-column>
<el-table-column label="活动时间">
<template scope="scope">
{{moment(scope.row.startTime).format('YYYY-MM-DD HH:mm:ss')}} -
{{moment(scope.row.endTime).format('YYYY-MM-DD HH:mm:ss')}}
{{$moment(scope.row.startTime).format('YYYY-MM-DD HH:mm:ss')}} -
{{$moment(scope.row.endTime).format('YYYY-MM-DD HH:mm:ss')}}
</template>
</el-table-column>
@@ -192,7 +190,7 @@ layout("/layouts/platform.html"){
<div v-show="stepActive==0" class="transition-box" style="margin-top: 20px;">
<el-form :model="formData" ref="form" :rules="formRules"
label-width="150px">
<vi-title title="填写活动信息"></vi-title>
<div class="process-title">填写活动信息</div>
<el-row :gutter="20" type="flex">
<el-col :span="12">
@@ -344,20 +342,20 @@ layout("/layouts/platform.html"){
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12" v-if="formData.isQuestion">
<el-form-item label="答题试卷" prop="questionId">
<el-select v-model="formData.questionId" filterable style="width: 100%"
clearable style="width: 100%"
placeholder="选择答题试卷">
<el-option
v-for="item in questionOptions"
:label="item.qtitle"
:key="item.qid"
:value="item.qid">
</el-option>
</el-select>
</el-form-item>
</el-col>
<!-- <el-col :span="12" v-if="formData.isQuestion">-->
<!-- <el-form-item label="答题试卷" prop="questionId">-->
<!-- <el-select v-model="formData.questionId" filterable style="width: 100%"-->
<!-- clearable style="width: 100%"-->
<!-- placeholder="选择答题试卷">-->
<!-- <el-option-->
<!-- v-for="item in questionOptions"-->
<!-- :label="item.qtitle"-->
<!-- :key="item.qid"-->
<!-- :value="item.qid">-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
</el-row>
@@ -403,6 +401,7 @@ layout("/layouts/platform.html"){
class="pictureUpload"
:auto-upload="false"
:limit="1"
action
list-type="picture-card"
:on-change="certificatePictureChange"
:on-remove="certificatePictureRemove"
@@ -413,7 +412,7 @@ layout("/layouts/platform.html"){
</el-col>
</el-row>
<el-row type="flex" gutter="20">
<el-row type="flex" :gutter="20">
<el-col :span="12" v-if="formData.activityModel === 'punch'">
<el-form-item label="报名时间" prop="applyTime"
:rules="[{ required:true, message: '请选择报名时间' }]">
@@ -682,13 +681,14 @@ layout("/layouts/platform.html"){
<el-form-item label="活动介绍" prop="note"
:rules="[{ required:true, message: '请填写活动介绍' }]">
<div id="noteEditor"></div>
<text-editor v-model="formData.note"></text-editor>
</el-form-item>
<el-form-item label="学习卡" prop="stepPics">
<el-upload
list-type="picture-card"
multiple
action
class="pictureUpload"
:on-change="stepPictureChange"
:on-remove="stepPictureRemove"
@@ -703,6 +703,7 @@ layout("/layouts/platform.html"){
class="pictureUpload"
:auto-upload="false"
:limit="1"
action
list-type="picture-card"
:on-change="pictureChange"
:on-remove="pictureRemove"
@@ -725,7 +726,7 @@ layout("/layouts/platform.html"){
<transition name="el-zoom-in-top">
<div v-show="stepActive==1" class="transition-box" style="margin-top: 20px;">
<el-form label-width="120px" label-position="left">
<vi-title title="创建点位坐标"></vi-title>
<div class="process-title">创建点位坐标</div>
</el-form>
<el-table :data="formData.pts" size="medium">
<el-table-column type="index" label=""></el-table-column>
@@ -746,6 +747,7 @@ layout("/layouts/platform.html"){
<template scope="scope">
<el-input-number type="text" v-model="scope.row.radius"
:min="0"
style="width: 100%"
:max="9999999"
placeholder="请填写点位半径">
<temnplate slot="append">m</temnplate>
@@ -869,7 +871,7 @@ layout("/layouts/platform.html"){
<!-- <el-form-item label="基础信息&emsp;" label-width="135px" class="view-header">-->
<!-- </el-form-item>-->
<el-row gutter="20">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="活动名称:">
{{viewData.name}}
@@ -883,32 +885,32 @@ layout("/layouts/platform.html"){
</el-row>
<el-row gutter="20">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="开始报名时间:">
{{moment(viewData.apply_start_time).format('YYYY-MM-DD HH:mm:ss')}}
{{$moment(viewData.apply_start_time).format('YYYY-MM-DD HH:mm:ss')}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="结束报名时间:">
{{moment(viewData.apply_end_time).format('YYYY-MM-DD HH:mm:ss')}}
{{$moment(viewData.apply_end_time).format('YYYY-MM-DD HH:mm:ss')}}
</el-form-item>
</el-col>
</el-row>
<el-row gutter="20">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="活动开始时间:">
{{moment(viewData.start_time).format('YYYY-MM-DD HH:mm:ss')}}
{{$moment(viewData.start_time).format('YYYY-MM-DD HH:mm:ss')}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="活动结束时间:">
{{moment(viewData.end_time).format('YYYY-MM-DD HH:mm:ss')}}
{{$moment(viewData.end_time).format('YYYY-MM-DD HH:mm:ss')}}
</el-form-item>
</el-col>
</el-row>
<el-row gutter="20">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="活动模式:">
<span v-if="viewData.activityModel=='punch'">打卡模式</span>
@@ -928,7 +930,7 @@ layout("/layouts/platform.html"){
</el-col>
</el-row>
<el-row gutter="20">
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="活动介绍:">
<div v-if="!viewData.note">暂无</div>
@@ -936,13 +938,13 @@ layout("/layouts/platform.html"){
</el-form-item>
</el-col>
</el-row>
<el-row gutter="20">
<el-row :gutter="20">
<el-col :span="24">
</el-col>
</el-row>
<el-row gutter="20">
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="活动封面:">
<el-image style="width: 100px; height: 100px" :src="picSrc" fit="cover"/>
@@ -974,7 +976,6 @@ layout("/layouts/platform.html"){
<script>
let E = window.wangEditor
let noteEditor = null
let icon = new AMap.Icon({
size: new AMap.Size(25, 34),
image: '//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png',
@@ -1002,7 +1003,9 @@ layout("/layouts/platform.html"){
viewDialogVisible: false,
dwDialogVisible: false,
tabLoading: false,
formData: {},
formData: {
pts: []
},
tableData: [],
pageForm: {
searchName: "name",
@@ -1062,8 +1065,7 @@ layout("/layouts/platform.html"){
}
},
components: {
'user-scope': httpVueLoader('/components/plugins/UserScope.vue'),
'drawer-user-scope': httpVueLoader('/components/plugins/DrawerUserScope.vue'),
"drawer-user-scope": httpVueLoader("/components/module/activity/DrawerUserScope.vue")
},
methods: {
pictureRemove() {
@@ -1233,16 +1235,6 @@ layout("/layouts/platform.html"){
})
}
this.$nextTick(() => {
$("#noteEditor").html("")
noteEditor = new E("#noteEditor")
noteEditor.config.onchange = (html) => {
this.formData.note = html
}
noteEditor.config.uploadImgShowBase64 = true // 使用 base64 保存图片
noteEditor.create()
noteEditor.txt.html(data.note)
})
if (data.tag !== "") {
this.hasChildrenAct = true
}
@@ -1280,7 +1272,7 @@ layout("/layouts/platform.html"){
let map = new AMap.Map("viewXlMap", {
resizeEnable: true,
center: [AppMapCenterPointX, AppMapCenterPointY],
center: [118.92, 32.11],
zoom: 16
});
@@ -1398,7 +1390,7 @@ layout("/layouts/platform.html"){
this.$nextTick(() => {
map = new AMap.Map("dwMap", {
resizeEnable: true,
center: [AppMapCenterPointX, AppMapCenterPointY],
center: [118.92, 32.11],
zoom: 16
});
this.placeSearchComponent = new AMap.PlaceSearch({
@@ -1527,7 +1519,7 @@ layout("/layouts/platform.html"){
xlMap() {
let map = new AMap.Map("xlMap", {
resizeEnable: true,
center: [AppMapCenterPointX, AppMapCenterPointY],
center: [118.92, 32.11],
zoom: 16
});
@@ -1804,16 +1796,6 @@ layout("/layouts/platform.html"){
})
}
this.$nextTick(() => {
$("#noteEditor").html("")
noteEditor = new E("#noteEditor")
noteEditor.config.onchange = (html) => {
this.formData.note = html
}
noteEditor.config.uploadImgShowBase64 = true // 使用 base64 保存图片
noteEditor.create()
noteEditor.txt.html(data.note)
})
if (data.tag !== "") {
this.hasChildrenAct = true
}
@@ -1888,15 +1870,6 @@ layout("/layouts/platform.html"){
this.stepActive = 0
await this.getActivityData()
this.$nextTick(() => {
$("#noteEditor").html("")
noteEditor = new E("#noteEditor")
noteEditor.config.onchange = (html) => {
this.formData.note = html
}
noteEditor.config.uploadImgShowBase64 = true // 使用 base64 保存图片
noteEditor.create()
})
},
async pageData() {
this.tabLoading = true
@@ -1931,28 +1904,28 @@ layout("/layouts/platform.html"){
})
},
async getWelfareProject() {
const resp = await this.$axios.post('/platform/welfare/common/welfareProjects')
if (resp.code === 0) {
const options = resp.data.find(v => v.label === new Date().getFullYear())
if (options && options.children.length > 0) {
this.welfareProjectOptions = options.children
}
}
// const resp = await this.$axios.post('/platform/welfare/common/welfareProjects')
// if (resp.code === 0) {
// const options = resp.data.find(v => v.label === new Date().getFullYear())
// if (options && options.children.length > 0) {
// this.welfareProjectOptions = options.children
// }
// }
}
},
watch: {
'formData.questionId': {
async handler(newVal, oldVal) {
if(newVal){
this.getIssueByQuestionId(newVal)
// this.formData.pts.map(v => v.issueIds = [])
}else{
this.formData.pts.map(v => v.issueIds = [])
}
},
deep: true,
immediate:true
},
// 'formData.questionId': {
// async handler(newVal, oldVal) {
// if(newVal){
// this.getIssueByQuestionId(newVal)
// // this.formData.pts.map(v => v.issueIds = [])
// }else{
// this.formData.pts.map(v => v.issueIds = [])
// }
// },
// deep: true,
// immediate:true
// },
'formData.groupId': {
async handler(newVal, oldVal) {
this.getActivityGroup()
@@ -1968,7 +1941,7 @@ layout("/layouts/platform.html"){
},
async created() {
this.getActivityGroup()
this.getQuestion()
// this.getQuestion()
// this.questionOptions = await Jsz.getQuestion()
this.pageForm.year = (new Date().getFullYear()).toString()
@@ -35,6 +35,7 @@ const answer = {
this.$axios.post("/platform/qsv/survey/userAnswer", { activityId: this.activityId }).then((res) => {
if (res.code === 0) {
this.tableColumns = res.data.tableColumns
console.log(this.tableColumns)
this.tableData = res.data.tableData
}
})
@@ -265,7 +265,7 @@ var ACTIVITY_SPORTS_APPLY_USER = {
:remote-method="querySearchAsync"
@change="addUserChange"
filterable
placeholder="请输入工号或者姓名查询"
placeholder="请输入工号或者姓名查询"
remote
reserve-keyword
style="width: 100%"
@@ -392,6 +392,7 @@ var ACTIVITY_SPORTS_APPLY_USER = {
this.$set(this.formData, 'loginname', user ? user.loginname : null)
this.$set(this.formData, 'username', user ? user.username : null)
this.$set(this.formData, 'unitId', user ? user.unitId : null)
this.$set(this.formData, 'unionId', user ? user.unionId : null)
this.$set(this.formData, 'sex', user ? user.sex : null)
this.$set(this.formData, 'idcard', user ? user.idCard : null)
this.$set(this.formData, 'mobile', user ? user.mobile : null)
@@ -113,7 +113,7 @@ layout("/layouts/platform.html"){
</div>
<div class="text item">
<span style="color: gray">活动时间:</span>
{{$moment(item.startTime).format('YYYY/MM/DD HH:mm')}} 至 {{$moment(item.endTime).format('YYYY/MM/DD')}}
{{$moment(item.startTime).format('YYYY/MM/DD')}} 至 {{$moment(item.endTime).format('YYYY/MM/DD')}}
</div>
</div>
</el-card>
@@ -154,12 +154,12 @@ layout("/layouts/platform.html"){
</div>
<div class="mr10 ml20" v-if="unionLeaderCoach">
领队:
<span style="color: #419bf8">{{leaderData.username?leaderData.username:'暂无'}}</span>
<span style="color: #419bf8">{{leaderData.username?leaderData.username:'暂无'}}</span><!--
&emsp13; 教练:
<span style="color: #419bf8">{{coachData.username ?coachData.username:'暂无'}}</span>
<span style="color: #419bf8">{{coachData.username ?coachData.username:'暂无'}}</span>-->
</div>
<div>
<el-button @click="openLeaderCoach" size="medium" type="primary" v-if="unionLeaderCoach">设置领队/教练</el-button>
<el-button @click="openLeaderCoach" size="medium" type="primary" v-if="unionLeaderCoach">设置领队</el-button>
</div>
</table-tool>
<el-table
@@ -241,10 +241,10 @@ layout("/layouts/platform.html"){
</template>
</guava>
<el-dialog :visible.sync="dialogLeaderCoach" title="添加领队/教练" width="60%">
<el-dialog :visible.sync="dialogLeaderCoach" title="添加领队" width="40%">
<el-form :model="headData" :rules="formRules" label-width="100px" ref="form" v-loading="formLoading">
<el-row :gutter="20">
<el-col :span="12">
<el-col :span="24">
<table-tool label="填写领队信息"></table-tool>
<el-form-item label="姓&emsp;&emsp;名" prop="userId">
<user-select
@@ -266,7 +266,7 @@ layout("/layouts/platform.html"){
<el-input maxlength="50" placeholder="请填写电话" type="text" v-model="leaderData.mobile"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<!--<el-col :span="12">
<table-tool label="填写教练信息"></table-tool>
<el-form-item label="姓&emsp;&emsp;名" prop="userId">
<user-select
@@ -287,7 +287,7 @@ layout("/layouts/platform.html"){
<el-form-item label="电&emsp;&emsp;话" prop="mobile">
<el-input maxlength="50" placeholder="请填写电话" type="text" v-model="coachData.mobile"></el-input>
</el-form-item>
</el-col>
</el-col>-->
</el-row>
</el-form>
<span class="dialog-footer" slot="footer">
@@ -362,7 +362,7 @@ layout("/layouts/platform.html"){
this.$set(this.leaderData, "unionLeader", true)
this.$set(this.leaderData, "unionId", user.unionId)
this.$set(this.leaderData, "identity", ["3"])
this.$set(this.leaderData, "status", 0)
this.$set(this.leaderData, "status", 2)
this.$set(this.leaderData, "awardsMode", 2)
this.$set(this.leaderData, "activityId", this.activityData.id)
}
@@ -380,7 +380,7 @@ layout("/layouts/platform.html"){
this.$set(this.coachData, "unionCoach", true)
this.$set(this.coachData, "unionId", user.unionId)
this.$set(this.coachData, "identity", ["2"])
this.$set(this.coachData, "status", 0)
this.$set(this.coachData, "status", 2)
this.$set(this.coachData, "awardsMode", 2)
this.$set(this.coachData, "activityId", this.activityData.id)
}
@@ -182,6 +182,7 @@ const CLUB_INFO_MANAGE_TEMPLATE = {
openAuth(row) {
this.authDialogVisible = true
this.authFormData = {
id: row.id,
userId: row.userId,
userName: row.userName,
loginName: row.loginName,
@@ -203,6 +204,7 @@ const CLUB_INFO_MANAGE_TEMPLATE = {
}).then((res) => {
this.$axios
.post("/platform/club/infoManage/manage/doAuthRole", {
id: this.authFormData.id,
userId: this.authFormData.userId,
clubId: this.authFormData.clubId,
roleCode: JSON.stringify(this.authFormData.roleCode)
@@ -115,8 +115,8 @@ layout("/layouts/platform.html"){
formData.sponsor = this.$refs.clubSponsorRef.sponsorData
.filter((o) => o.userId !== "" && o.userId !== undefined)
.map((o) => o.userId)
if (type === "doSubmit" && formData.sponsor && formData.sponsor.length < 3) {
this.$message.warning({ title: "警告", message: "发起人要求不少于3人" })
if (type === "doSubmit" && formData.sponsor && formData.sponsor.length < 1) {
this.$message.warning({ title: "警告", message: "发起人要求不少于1人" })
return
}
let manageValid = false
@@ -56,7 +56,7 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
<el-row class="query-row">
<el-col class="query-row-title">性别:</el-col>
<el-col class="query-row-content">
<el-col class="query-row-content query-row-content-tag">
<el-tag
:effect="pageForm.sexTypes.includes(item.name)?'dark':'plain'"
:key="item.code"
@@ -62,9 +62,9 @@ layout("/layouts/platform.html"){
<el-table-column prop="maleMember" label="男会员" align="center" sortable></el-table-column>
<el-table-column prop="femaleMember" label="女会员" align="center" sortable></el-table-column>
<el-table-column prop="smallForty" label="小于等于40岁会员" align="center" sortable></el-table-column>
<el-table-column prop="smallFifty" label="40-50" align="center" sortable></el-table-column>
<el-table-column prop="smallFiftyFive" label="50-55" align="center" sortable></el-table-column>
<el-table-column prop="smallFiftyFive2" label="大于55" align="center" sortable></el-table-column>
<el-table-column prop="smallFifty" label="41-50" align="center" sortable></el-table-column>
<el-table-column prop="smallFiftyFive" label="51-55" align="center" sortable></el-table-column>
<el-table-column prop="smallFiftyFive2" label="大于等于56" align="center" sortable></el-table-column>
</el-table>
</el-card>
</template>
@@ -106,18 +106,13 @@ layout("/layouts/platform_h5.html"){
<p>{{index+1}}、{{ subject.title }}</p>
<div class="tag">
<van-tag v-if="subject.type === 'checkbox'" type="primary" size="large">多选</van-tag>
<van-tag v-if="subject.type === 'checkbox' && subject.maxSelectNum && subject.minSelectNum && subject.maxSelectNum === subject.minSelectNum" type="success" size="large">
只能选择{{subject.maxSelectNum}}项
</van-tag>
<van-tag v-if="subject.type === 'checkbox' && subject.maxSelectNum && (!subject.minSelectNum || subject.maxSelectNum !== subject.minSelectNum)" type="primary" size="large">
<van-tag v-if="subject.type === 'checkbox' && subject.maxSelectNum" type="primary" size="large">
最多可选{{subject.maxSelectNum}}
</van-tag>
<van-tag v-if="subject.type === 'checkbox' && subject.minSelectNum && subject.minSelectNum > 1 && (!subject.maxSelectNum || subject.maxSelectNum !== subject.minSelectNum)" type="warning" size="large">
<van-tag v-if="subject.type === 'checkbox' && subject.minSelectNum && subject.minSelectNum > 1" type="warning" size="large">
最少选择{{subject.minSelectNum}}
</van-tag>
<van-tag v-if="subject.type === 'radio'" type="primary" size="large">单选</van-tag>
<van-tag v-if="subject.score" type="primary" size="large">{{subject.score}}分</van-tag>
</div>
<!--单选、多选-->