当前位置: 首页 > news >正文

uniapp可视化-活动报名表单系统-代码生成器

活动报名表单系统小程序旨在为各类活动组织者提供一个便捷、高效的线上报名管理平台,同时为参与者提供简单易用的报名途径。

主要功能

  • 活动发布:活动组织者可以发布活动的详细信息,包括活动名称、时间、地点、活动内容等。用户可以在小程序中浏览并了解活动的相关信息,从而决定是否参与。
  • 个性化信息填写:针对不同活动,组织者可自定义预约时需填写的信息,支持多种自定义字段类型,如字符串、单选、复选、日期、列表、图片等。
  • 报名管理:活动组织者可以查看所有提交的报名信息,并进行审核、拒绝或确认等操作。同时,还可以对报名数据进行统计和分析,如已报名人数、各时段报名人数分布等,为活动的后续工作提供参考依据。
  • 新闻和动态:定期更新公司的新闻、行业动态和活动情况,让用户了解企业的最新进展。
  • 联系方式:提供公司的联系方式,如电话、地址、电子邮件和在线联系表单等,方便用户与企业进行沟通和联系。部分小程序还支持地图定位功能,用户点击“联系我们”即可获取企业位置。
  • 在线客服:提供在线客服功能,让用户可以直接与客服代表进行实时沟通和问题解答。
  • 搜索功能:提供搜索功能,方便用户快速找到所需的信息。
  • 用户互动:设置表单、留言等体系,方便企业与用户进行线上互动,收集用户线索。

软件架构

本系统使用thinkphp8+uniapp来实现。移动端APP所有界面功能都是DIYGW可视化开发完成,后台使用diygw-ui-php集成活动报名表单系统。

首页可视化

自定义公告、轮播、列表可视化内容

API可视化

快速对接API接口

数据绑定

生成的源码

<template><view class="container container335134"><view class="flex flex-wrap diygw-col-24 items-center flex13-clz"><view class="flex flex-wrap diygw-col-0 flex-direction-column flex14-clz"><text class="diygw-col-0 text7-clz"> 最新 </text><text class="diygw-col-0"> 公告 </text></view><view class="flex diygw-col-0 noticebar-clz"><diy-noticebar class="flex1 diy-notice-bar" :remote="true" :list="notices.rows" color="#00d6b9" bgColor="#fff" :speed="80" leftIcon="diy-icon-notification"><block v-slot:content><text class="diy-notice-item" v-for="(item, index) in notices.rows" :key="index">{{ item.title }}</text></block></diy-noticebar></view></view><view class="flex diygw-col-24 swiper-clz"><swiper :current="swiperIndex" class="swiper swiper-indicator_rect_radius" @change="changeSwiper" indicator-color="rgba(51, 51, 51, 0.39)" indicator-active-color="#fff" indicator-dots="true" autoplay interval="3000" circular="true" style="height: 300rpx"><swiper-item v-for="(item, index) in swipers.rows" :key="index" @tap="navigateTo" data-type="openFunction" :data-path="item.path" class="diygw-swiper-item"><view class="diygw-swiper-item-wrap"><image :src="item.img" class="diygw-swiper-image"></image><view class="diygw-swiper-item-title swiper-title">{{ item.title }}</view></view></swiper-item></swiper></view><view class="flex flex-wrap diygw-col-24 justify-between items-center flex32-clz"><view class="flex flex-wrap diygw-col-0 items-center"><view class="flex flex-wrap diygw-col-0 flex-direction-column"><text class="diygw-col-0 text19-clz"> </text><text class="diygw-col-0 text24-clz"> </text><text class="diygw-text-line1 diygw-col-0 text26-clz"> 为你推荐 </text></view><text class="diygw-text-line1 diygw-col-0 text27-clz"> 报名预约参加 </text></view><view class="flex flex-wrap diygw-col-0 items-center" @tap="navigateTo" data-type="page" data-url="/pages/huodong"><text class="diygw-col-0 text44-clz"> 查看更多 </text><text class="flex icon1 diygw-col-0 icon1-clz diy-icon-right"></text></view></view><view v-if="huodongs.total > 0" class="flex flex-wrap diygw-col-24 flex-direction-column"><view v-for="(item, index) in huodongs.rows" :key="index" class="flex flex-wrap diygw-col-24 flex-direction-column items-stretch flex6-clz" @tap="navigateTo" data-type="page" data-url="/pages/huodong/page" :data-id="item.id"><view class="flex flex-wrap diygw-col-24 items-center"><image :src="item.img" class="response diygw-col-24" mode="widthFix"></image></view><view class="flex flex-wrap diygw-col-0 items-center flex20-clz"><view class="flex flex-wrap diygw-col-0 flex-direction-column flex35-clz"><text class="diygw-col-0 text22-clz">{{ item.title }}</text><view class="flex flex-wrap diygw-col-24 items-center flex9-clz"><text class="flex icon2 diygw-col-0 diy-icon-time"></text><text class="diygw-text-line1 diygw-col-0 text2-clz"> {{ item.starttime }} 至 {{ item.endtime }} </text></view><view class="flex flex-wrap diygw-col-24 items-center flex15-clz"><text class="flex icon5 diygw-col-0 diy-icon-location"></text><text class="diygw-text-line1 diygw-col-0 text8-clz">{{ item.address }}</text></view></view></view></view></view><view v-if="globalData.isshow && huodongs.code == 200 && huodongs.total == 0" class="flex flex-wrap diygw-col-24 flex-direction-column items-center flex1-clz"><image src="/static/zwjl.png" class="image1-size diygw-image diygw-col-0" mode="widthFix"></image><text class="diygw-col-0 text-clz"> 未找到任何数据 </text></view><view class="flex flex-wrap diygw-col-24 items-end diygw-bottom flex2-clz"><view class="flex flex-wrap diygw-col-6 flex-direction-column items-center flex8-clz"><view class="flex flex-wrap diygw-col-0 flex-direction-column items-center"><image src="/static/sy.png" class="image2-size diygw-image diygw-col-0" mode="widthFix"></image></view><text class="diygw-text-line1 diygw-col-0 text3-clz"> 首页 </text></view><view class="flex flex-wrap diygw-col-6 flex-direction-column items-center flex4-clz" @tap="navigateTo" data-type="page" data-url="/pages/huodong"><view class="flex flex-wrap diygw-col-0 flex-direction-column items-center"><image src="/static/cp1.png" class="image3-size diygw-image diygw-col-0" mode="widthFix"></image></view><text class="diygw-text-line1 diygw-col-0"> 活动 </text></view><view class="flex flex-wrap diygw-col-6 flex-direction-column items-center flex11-clz" @tap="navigateTo" data-type="page" data-url="/pages/articles"><view class="flex flex-wrap diygw-col-0 flex-direction-column items-center"><text class="diygw-text-line1 diygw-col-0 animate__animated animate__heartBeat animate__infinite text15-clz"> </text><image src="/static/xw1.png" class="image8-size diygw-image diygw-col-0" mode="widthFix"></image></view><text class="diygw-text-line1 diygw-col-0"> 新闻资讯 </text></view><view class="flex flex-wrap diygw-col-6 flex-direction-column items-center flex12-clz" @tap="navigateTo" data-type="page" data-url="/pages/user"><view class="flex flex-wrap diygw-col-0 flex-direction-column items-center"><image src="/static/wd.png" class="image4-size diygw-image diygw-col-0" mode="widthFix"></image></view><text class="diygw-text-line1 diygw-col-0"> 我的 </text></view></view><view class="clearfix"></view></view>
</template><script>export default {data() {return {//用户全局信息userInfo: {},//页面传参globalOption: {},//自定义全局变量globalData: { isshow: false },swipersNum: 1,swipers: {rows: [{id: 0,title: '',remark: '',img: '',path: null,userId: 0,createTime: '',updateTime: '',deleteTime: null}],total: 0,code: 0,msg: ''},noticesNum: 1,notices: {rows: [{id: 0,title: '',remark: '',userId: 0,createTime: '',updateTime: '',deleteTime: null}],total: 0,code: 0,msg: ''},huodongsNum: 1,huodongs: {rows: [{id: 0,title: '',remark: '',starttime: null,endtime: '',address: null,num: 0,views: 0,baomingnum: 0,imgs: null,img: '',content: '',fields: '',userId: 0,createTime: '',updateTime: '',deleteTime: null,baomingEndtime: null}],total: 0,code: 0,msg: ''},swiperIndex: 0};},onShow() {this.setCurrentPage(this);},onLoad(option) {this.setCurrentPage(this);if (option) {this.setData({globalOption: this.getOption(option)});}this.init();},methods: {async init() {this.swipersApi();this.noticesApi();await this.huodongsApi();},// 轮播数据 API请求方法async swipersApi(param) {let thiz = this;param = param || {};//请求地址及请求数据,可以在加载前执行上面增加自己的代码逻辑let http_url = '/cms/api.swiper/list';let http_data = {pageNum: this.swipersNum,pageSize: 10,pageSize: param.pageSize || '5'};let http_header = {};let swipers = await this.$http.post(http_url, http_data, http_header, 'json');this.swipers = swipers;this.globalData.isshow = true;},// 公告数据 API请求方法async noticesApi(param) {let thiz = this;param = param || {};//请求地址及请求数据,可以在加载前执行上面增加自己的代码逻辑let http_url = '/cms/api.notice/list';let http_data = {pageNum: this.noticesNum,pageSize: 10,pageSize: param.pageSize || '5'};let http_header = {};let notices = await this.$http.post(http_url, http_data, http_header, 'json');this.notices = notices;},// 活动数据 API请求方法async huodongsApi(param) {let thiz = this;param = param || {};//如果请求要重置页面,请配置点击附加参数refresh=1  增加判断如输入框回调param不是对象if (param.refresh || typeof param != 'object') {this.huodongsNum = 1;}//请求地址及请求数据,可以在加载前执行上面增加自己的代码逻辑let http_url = '/cms/api.huodong/list';let http_data = {pageNum: this.huodongsNum,pageSize: 10};let http_header = {};http_data.baomingEndtime_gt = this.$tools.formatDateTime(new Date());let huodongs = await this.$http.post(http_url, http_data, http_header, 'json');let datarows = huodongs.rows;if (http_data.pageNum == 1) {this.huodongs = huodongs;} else if (datarows) {let rows = this.huodongs.rows.concat(datarows);huodongs.rows = rows;this.huodongs = Object.assign(this.huodongs, huodongs);}if (datarows && datarows.length > 0) {this.huodongsNum = this.huodongsNum + 1;}this.globalData.isshow = true;},// 打开链接 自定义方法async openFunction(param) {let thiz = this;let path = param && (param.path || param.path == 0) ? param.path : thiz.item.path || '';if (path) {this.navigateTo({type: 'page',url: path});}},changeSwiper(evt) {let swiperIndex = evt.detail.current;this.setData({ swiperIndex });}},onPullDownRefresh() {// 活动数据 API请求方法this.huodongsNum = 1;this.huodongsApi();uni.stopPullDownRefresh();},onReachBottom() {// 活动数据 API请求方法this.huodongsApi();}};
</script><style lang="scss" scoped>.flex13-clz {padding-top: 6rpx;border-bottom-left-radius: 12rpx;padding-left: 0rpx;padding-bottom: 6rpx;border-top-right-radius: 12rpx;margin-right: 20rpx;background-color: #ffffff;margin-left: 20rpx;box-shadow: 0rpx 0rpx 12rpx 2px rgba(219, 219, 219, 0.31);overflow: hidden;width: calc(100% - 20rpx - 20rpx) !important;border-top-left-radius: 12rpx;margin-top: 10rpx;border-bottom-right-radius: 12rpx;margin-bottom: 10rpx;padding-right: 0rpx;}.flex14-clz {margin-left: 10rpx;padding-top: 0rpx;z-index: 1;font-weight: bold;letter-spacing: 4rpx !important;padding-left: 10rpx;padding-bottom: 0rpx;margin-top: 0rpx;font-style: italic;margin-bottom: 0rpx;margin-right: -20rpx;padding-right: 10rpx;}.text7-clz {color: #00d6b9;}.noticebar-clz {flex: 1;}.swiper-clz {background-color: #ffffff;margin-left: 20rpx;border-bottom-left-radius: 12rpx;box-shadow: 0rpx 0rpx 12rpx 2px rgba(219, 219, 219, 0.31);overflow: hidden;width: calc(100% - 20rpx - 20rpx) !important;border-top-left-radius: 12rpx;margin-top: 10rpx;border-top-right-radius: 12rpx;border-bottom-right-radius: 12rpx;margin-bottom: 10rpx;margin-right: 20rpx;}.swiper-title {background-color: rgba(0, 0, 0, 0.281);color: #e6e6e6;}.flex32-clz {margin-left: 20rpx;padding-top: 10rpx;padding-left: 10rpx;width: calc(100% - 20rpx - 20rpx) !important;padding-bottom: 10rpx;margin-top: 10rpx;margin-bottom: 10rpx;margin-right: 20rpx;padding-right: 10rpx;}.text19-clz {background-color: #7feadb;flex-shrink: 0;transform: translate(0rpx, 0rpx) skew(-9deg, 0deg);top: -4rpx;width: 24rpx !important;position: absolute;right: -10rpx;height: 24rpx !important;}.text24-clz {background-color: #7feadb;flex-shrink: 0;transform: translate(0rpx, 0rpx) skew(-9deg, 0deg);left: -10rpx;bottom: -4rpx;width: 24rpx !important;position: absolute;height: 24rpx !important;}.text26-clz {padding-top: 0rpx;font-weight: bold;flex: 1;padding-left: 0rpx;font-size: 32rpx !important;padding-bottom: 0rpx;padding-right: 0rpx;}.text27-clz {margin-left: 30rpx;color: #b3b2b2;margin-top: 0rpx;margin-bottom: 0rpx;margin-right: 0rpx;}.text44-clz {color: #666666;text-align: right;}.icon1-clz {color: #666666;}.icon1 {font-size: 24rpx;}.flex6-clz {background-color: #ffffff;margin-left: 20rpx;border-bottom-left-radius: 12rpx;box-shadow: 0rpx 0rpx 12rpx 2px rgba(219, 219, 219, 0.31);overflow: hidden;width: calc(100% - 20rpx - 20rpx) !important;border-top-left-radius: 12rpx;margin-top: 10rpx;border-top-right-radius: 12rpx;border-bottom-right-radius: 12rpx;margin-bottom: 10rpx;margin-right: 20rpx;}.flex20-clz {padding-top: 10rpx;flex: 1;padding-left: 10rpx;padding-bottom: 10rpx;padding-right: 10rpx;}.flex35-clz {padding-top: 10rpx;flex: 1;padding-left: 10rpx;padding-bottom: 10rpx;padding-right: 10rpx;}.text22-clz {font-weight: bold;font-size: 28rpx !important;}.flex9-clz {margin-left: 0rpx;width: calc(100% - 0rpx - 0rpx) !important;margin-top: 10rpx;margin-bottom: 10rpx;margin-right: 0rpx;}.icon2 {font-size: 32rpx;}.text2-clz {padding-top: 0rpx;flex: 1;padding-left: 0rpx;font-size: 28rpx !important;padding-bottom: 0rpx;padding-right: 0rpx;}.flex15-clz {margin-left: 0rpx;width: calc(100% - 0rpx - 0rpx) !important;margin-top: 10rpx;margin-bottom: 10rpx;margin-right: 0rpx;}.icon5 {font-size: 32rpx;}.text8-clz {padding-top: 0rpx;flex: 1;padding-left: 0rpx;font-size: 28rpx !important;padding-bottom: 0rpx;padding-right: 0rpx;}.flex1-clz {padding-top: 20rpx;padding-left: 20rpx;padding-bottom: 20rpx;padding-right: 20rpx;}.image1-size {height: 400rpx !important;width: 400rpx !important;}.text-clz {color: #969696;font-size: 28rpx !important;}.flex2-clz {border-top: 2rpx solid #e4e4e4;padding-top: 16rpx;border-bottom-left-radius: 0rpx;bottom: 0rpx;padding-left: 16rpx;padding-bottom: 16rpx;border-top-right-radius: 24rpx;background-color: #ffffff;box-shadow: 0rpx 4rpx 12rpx rgba(31, 31, 31, 0.16);overflow: visible;left: 0rpx;border-top-left-radius: 24rpx;border-bottom-right-radius: 0rpx;padding-right: 16rpx;}.flex8-clz {flex: 1;}.image2-size {height: 48rpx !important;width: 48rpx !important;}.text3-clz {color: #031aeb;}.flex4-clz {flex: 1;}.image3-size {height: 48rpx !important;width: 48rpx !important;}.flex11-clz {flex: 1;}.text15-clz {border: 2rpx solid #eee;border-bottom-left-radius: 40rpx;-webkit-animation-duration: 5000ms;color: #ffffff;animation-delay: 1000ms;-webkit-animation-delay: 1000ms;border-top-right-radius: 40rpx;right: -8rpx;background-color: rgba(255, 17, 17, 0.91);animation-duration: 5000ms;flex-shrink: 0;overflow: hidden;top: -8rpx;width: 16rpx !important;border-top-left-radius: 40rpx;border-bottom-right-radius: 40rpx;position: absolute;height: 16rpx !important;}.image8-size {height: 48rpx !important;width: 48rpx !important;}.flex12-clz {flex: 1;}.image4-size {height: 48rpx !important;width: 48rpx !important;}.container335134 {padding-bottom: 160rpx;background-color: #f5f5f5;background-image: url(/static/loginbg.png);background-size: cover;background-repeat: no-repeat;}
</style>

活动发布

活动CRUD

活动发布CRUD功能发布,表单可视化

活动表单

活动表单可视化拖拉表单字段拖拉设计

<template><view class="container container335134"><u-form-item :borderBottom="false" v-if="!showForm && globalData.isshow" class="diygw-col-24 title-clz" labelPosition="top" prop="title"><u-input @blur="listApi" :data-title_like="title" data-isself="1" placeholder="请输入活动标题" v-model="title"></u-input><text @tap="navigateTo" data-type="listApi" :data-title_like="title" data-isself="1" class="diy-icon-search" style="color: #363636; font-size: 32rpx"></text></u-form-item><view v-if="!showForm && list.total > 0" class="flex flex-wrap diygw-col-24 flex-direction-column"><view v-for="(item, index) in list.rows" :key="index" class="flex flex-wrap diygw-col-24 flex-direction-column flex4-clz"><view class="flex flex-wrap diygw-col-24 flex-direction-column items-center" @tap="navigateTo" data-type="page" data-url="/pages/huodong/page" :data-id="item.id"><text class="diygw-text-line2 diygw-col-24 text1-clz">{{ item.title }}</text><text v-if="item.remark" class="diygw-text-line3 diygw-col-24 text2-clz">{{ item.remark }}</text></view><view class="flex flex-wrap diygw-col-24 justify-between items-center flex2-clz"><text @tap="navigateTo" data-type="page" data-url="/pages/huodong/data" :data-id="item.id" class="diygw-col-0 text7-clz"> 报名数据 </text><text @tap="navigateTo" data-type="page" data-url="/pages/huodong/field" :data-id="item.id" class="diygw-col-0 text5-clz"> 表单字段 </text><text @tap="navigateTo" data-type="editFunction" :data-index="index" class="diygw-col-0 text4-clz"> 修改 </text><text @tap="navigateTo" data-type="delApi" :data-id="item.id" :data-index="index" class="diygw-col-0 text13-clz"> 删除 </text></view></view></view><view v-if="globalData.isshow" class="flex flex-wrap diygw-col-24 justify-start diygw-bottom flex3-clz"><view v-if="showForm" class="flex diygw-col-24"><button @tap="showForm = false" class="diygw-btn red radius flex-sub margin-xs button-button-clz">取消</button><button @click="submitForm" class="diygw-btn green radius flex-sub margin-xs button-button-clz">保存</button></view><view v-if="!showForm" class="flex flex-wrap diygw-col-24 justify-center items-center green flex20-clz" @tap="showForm = true"><text class="flex icon2 diygw-col-0 diy-icon-add"></text><text class="diygw-col-0"> 新增活动 </text></view></view><view v-if="!showForm && globalData.isshow && list.code == 200 && list.total == 0" class="flex flex-wrap diygw-col-24 flex-direction-column items-center flex-clz"><image src="/static/zwjl.png" class="image-size diygw-image diygw-col-0" mode="widthFix"></image><text class="diygw-col-0 text-clz"> 未找到任何数据 </text></view><u-form :model="form" :rules="formRules" :errorType="['message', 'toast']" ref="formRef" v-if="showForm" class="flex diygw-form diygw-col-24 form-clz"><u-form-item class="diygw-col-24" :required="true" label="活动标题" prop="title"><u-input placeholder="请输入活动标题" v-model="form.title"></u-input></u-form-item><u-form-item class="diygw-col-24" label="开始时间" :required="true" prop="starttime"><u-input @click="formData.showStarttime = true" class="" placeholder="请选择开始时间" v-model="form.starttime" type="select"></u-input><u-picker :defaultTime="form.starttime" v-model="formData.showStarttime" mode="time" :params="formData.paramsStarttime" @confirm="changeFormStarttime"></u-picker></u-form-item><u-form-item class="diygw-col-24" label="结束时间" :required="true" prop="endtime"><u-input @click="formData.showEndtime = true" class="" placeholder="请选择结束时间" v-model="form.endtime" type="select"></u-input><u-picker :defaultTime="form.endtime" v-model="formData.showEndtime" mode="time" :params="formData.paramsEndtime" @confirm="changeFormEndtime"></u-picker></u-form-item><u-form-item class="diygw-col-24" :required="true" label="活动地点" prop="address"><u-input placeholder="请输入活动地点" v-model="form.address"></u-input></u-form-item><u-form-item :required="true" class="diygw-col-24" label="活动封面" prop="img"><u-upload width="160" height="160" margin="0" maxCount="1" @on-success="uploadFormImg" @on-remove="delFormImg" action="/sys/storage/upload" v-model="form.img"> </u-upload></u-form-item><u-form-item :required="true" class="diygw-col-24" label="活动轮播图" prop="imgs"><u-upload width="160" height="160" maxCount="6" @on-success="uploadFormImgs" @on-remove="delFormImgs" action="/sys/storage/upload" v-model="form.imgs"> </u-upload></u-form-item><u-form-item labelWidth="auto" class="diygw-col-24" label="报名结束时间" :required="true" prop="baomingEndtime"><u-input @click="formData.showBaomingEndtime = true" class="" placeholder="请选择结束时间" v-model="form.baomingEndtime" type="select"></u-input><u-picker :defaultTime="form.baomingEndtime" v-model="formData.showBaomingEndtime" mode="time" :params="formData.paramsBaomingEndtime" @confirm="changeFormBaomingEndtime"></u-picker></u-form-item><u-form-item class="diygw-col-24" label="活动描述" prop="remark"><u-input maxlength="200" height="60px" class="" placeholder="请输入备注" v-model="form.remark" type="textarea"></u-input></u-form-item><u-form-item :borderBottom="false" class="diygw-col-24" labelPosition="top" prop="content"><diy-editor height="400px" v-model="form.content"></diy-editor></u-form-item></u-form><view class="clearfix"></view></view>
</template><script>export default {data() {return {//用户全局信息userInfo: {},//页面传参globalOption: {},//自定义全局变量globalData: { isshow: false },listNum: 1,list: {rows: [],total: 0,code: 200,msg: 'success'},del: {code: 200,msg: '删除成功'},title: '',showForm: false,formRules: {title: [{trigger: ['change', 'blur'],required: true,message: '标题不能为空'}],starttime: [{trigger: ['change', 'blur'],required: true,message: '结束时间不能为空哟'}],endtime: [{trigger: ['change', 'blur'],required: true,message: '结束时间不能为空哟'}],address: [{trigger: ['change', 'blur'],required: true,message: '标题不能为空'}],img: [{trigger: ['change', 'blur'],required: true,message: '请上传图片哟'}],imgs: [{trigger: ['change', 'blur'],required: true,message: '请上传图片哟'}],baomingEndtime: [{trigger: ['change', 'blur'],required: true,message: '结束时间不能为空哟'}]},form: {title: '',starttime: '',endtime: '',address: '',img: '',imgs: '',baomingEndtime: '',remark: '',content: ''},formData: {paramsStarttime: {year: true,month: true,day: true,hour: true,minute: true,second: false},showStarttime: false,paramsEndtime: {year: true,month: true,day: true,hour: true,minute: true,second: false},showEndtime: false,paramsBaomingEndtime: {year: true,month: true,day: true,hour: true,minute: true,second: false},showBaomingEndtime: false}};},onShow() {this.setCurrentPage(this);},onLoad(option) {this.setCurrentPage(this);if (option) {this.setData({globalOption: this.getOption(option)});}this.init();},onReady() {this.$refs.formRef?.setRules(this.formRules);},methods: {async init() {await this.listApi();await this.initResetform();},// 列表数据 API请求方法async listApi(param) {let thiz = this;param = param || {};//如果请求要重置页面,请配置点击附加参数refresh=1  增加判断如输入框回调param不是对象if (param.refresh || typeof param != 'object') {this.listNum = 1;}//请求地址及请求数据,可以在加载前执行上面增加自己的代码逻辑let http_url = '/cms/huodong/list';let http_data = {pageNum: this.listNum,pageSize: 10,title_like: param.title_like || this.title,isself: param.isself || '1'};let http_header = {};//如果是管理员,可以看见所有的活动if (this.userInfo.username == 'admin') {delete http_data.isself;}let list = await this.$http.post(http_url, http_data, http_header, 'json');let datarows = list.rows;if (http_data.pageNum == 1) {this.list = list;} else if (datarows) {let rows = this.list.rows.concat(datarows);list.rows = rows;this.list = Object.assign(this.list, list);}if (datarows && datarows.length > 0) {this.listNum = this.listNum + 1;}this.globalData.isshow = true;},// 删除数据 API请求方法async delApi(param) {let thiz = this;param = param || {};//请求地址及请求数据,可以在加载前执行上面增加自己的代码逻辑let http_url = '/cms/huodong/del';let http_data = {id: param.id || this.item.id,index: param.index || this.index};let http_header = {};let flag = await this.showModal('是否确定删除该数据');if (!flag) {this.showToast('你已取消删');return;}let del = await this.$http.post(http_url, http_data, http_header, 'json');this.del = del;if (del.code == 200) {this.list.rows.splice(param.index, 1);this.list.total = this.list.rows.length;this.showToast('删除数据成功');} else {this.showToast('删除数据失败', 'error');}},// 修改数据 自定义方法async editFunction(param) {let thiz = this;let index = param && (param.index || param.index == 0) ? param.index : thiz.index || '';this.form = JSON.parse(JSON.stringify(this.list.rows[param.index]));this.showForm = true;},changeFormStarttime(evt) {this.form.starttime = evt.year + '-' + evt.month + '-' + evt.day + ' ' + evt.hour + ':' + evt.minute;},changeFormEndtime(evt) {this.form.endtime = evt.year + '-' + evt.month + '-' + evt.day + ' ' + evt.hour + ':' + evt.minute;},changeFormImg(index, lists) {},delFormImg(index, lists) {this.changeFormImg(index, lists);},uploadFormImg(res, index, lists) {this.changeFormImg(index, lists);},changeFormImgs(index, lists) {},delFormImgs(index, lists) {this.changeFormImgs(index, lists);},uploadFormImgs(res, index, lists) {this.changeFormImgs(index, lists);},changeFormBaomingEndtime(evt) {this.form.baomingEndtime = evt.year + '-' + evt.month + '-' + evt.day + ' ' + evt.hour + ':' + evt.minute;},initResetform() {this.initform = JSON.stringify(this.form);//如果想给表单默认初始值,其中row为某一行数据也可能是API返回的结果集,然后给到this.form//this.form = this.$tools.changeRowToForm(row,this.form)},resetForm() {this.form = JSON.parse(this.initform);},async submitForm(e) {this.$refs.formRef?.setRules(this.formRules);this.$nextTick(async () => {let valid = await this.$refs.formRef.validate();if (valid) {//保存数据let param = this.form;let header = {};let url = '/cms/huodong/add';if (this.form.id) {url = '/cms/huodong/update';}uni.showLoading({title: '正在保存...'});let res = await this.$http.post(url, param, header, 'json');uni.hideLoading();if (res.code == 200) {//更新列表数据this.listNum = 1;this.listApi();if (this.form.id) {this.showToast('更新成功');//关闭窗口this.showForm = false;} else {//提示是否继续新增let flag = await this.showModal('是否继续新增');if (flag) {//重置表单this.resetForm();} else {//关闭窗口this.showForm = false;}}} else {this.showModal(res.msg, '提示', false);}} else {console.log('验证失败');}});}},onPullDownRefresh() {// 列表数据 API请求方法this.listNum = 1;this.listApi();uni.stopPullDownRefresh();},onReachBottom() {// 列表数据 API请求方法this.listApi();}};
</script><style lang="scss" scoped>.title-clz {background-color: #ffffff;margin-left: 16rpx;border-bottom-left-radius: 12rpx;overflow: hidden;width: calc(100% - 16rpx - 16rpx) !important;border-top-left-radius: 12rpx;margin-top: 16rpx;border-top-right-radius: 12rpx;border-bottom-right-radius: 12rpx;margin-bottom: 16rpx;margin-right: 16rpx;}.flex4-clz {padding-top: 10rpx;border-bottom-left-radius: 12rpx;padding-left: 10rpx;padding-bottom: 10rpx;border-top-right-radius: 12rpx;margin-right: 20rpx;background-color: #ffffff;margin-left: 20rpx;overflow: hidden;width: calc(100% - 20rpx - 20rpx) !important;border-top-left-radius: 12rpx;margin-top: 10rpx;border-bottom-right-radius: 12rpx;margin-bottom: 10rpx;padding-right: 10rpx;}.text1-clz {padding-top: 10rpx;padding-left: 10rpx;font-size: 28rpx !important;padding-bottom: 10rpx;padding-right: 10rpx;}.text2-clz {padding-top: 10rpx;color: #7c7c7c;padding-left: 10rpx;padding-bottom: 10rpx;padding-right: 10rpx;}.flex2-clz {border-top: 2rpx solid #eee;padding-top: 10rpx;color: #6b6b6b;padding-left: 10rpx;padding-bottom: 10rpx;padding-right: 10rpx;}.text7-clz {border: 2rpx solid #038af2;padding-top: 10rpx;border-bottom-left-radius: 10rpx;color: #038af2;padding-left: 20rpx;padding-bottom: 10rpx;border-top-right-radius: 10rpx;margin-right: 10rpx;background-color: #f0f1ff;margin-left: 10rpx;overflow: hidden;border-top-left-radius: 10rpx;margin-top: 10rpx;border-bottom-right-radius: 10rpx;margin-bottom: 10rpx;padding-right: 20rpx;}.text5-clz {border: 2rpx solid #038af2;padding-top: 10rpx;border-bottom-left-radius: 10rpx;color: #038af2;padding-left: 20rpx;padding-bottom: 10rpx;border-top-right-radius: 10rpx;margin-right: 10rpx;background-color: #f0f1ff;margin-left: 10rpx;overflow: hidden;border-top-left-radius: 10rpx;margin-top: 10rpx;border-bottom-right-radius: 10rpx;margin-bottom: 10rpx;padding-right: 20rpx;}.text4-clz {border: 2rpx solid #038af2;padding-top: 10rpx;border-bottom-left-radius: 10rpx;color: #038af2;padding-left: 20rpx;padding-bottom: 10rpx;border-top-right-radius: 10rpx;margin-right: 10rpx;background-color: #f0f1ff;margin-left: 10rpx;overflow: hidden;border-top-left-radius: 10rpx;margin-top: 10rpx;border-bottom-right-radius: 10rpx;margin-bottom: 10rpx;padding-right: 20rpx;}.text13-clz {border: 2rpx solid #ffb08f;padding-top: 10rpx;border-bottom-left-radius: 10rpx;color: #ff592c;padding-left: 20rpx;padding-bottom: 10rpx;border-top-right-radius: 10rpx;margin-right: 10rpx;background-color: #fff4f0;margin-left: 10rpx;overflow: hidden;border-top-left-radius: 10rpx;margin-top: 10rpx;border-bottom-right-radius: 10rpx;margin-bottom: 10rpx;padding-right: 20rpx;}.flex3-clz {padding-top: 16rpx;border-bottom-left-radius: 0rpx;color: #747474;bottom: 0rpx;padding-left: 16rpx;padding-bottom: 16rpx;border-top-right-radius: 20rpx;background-color: #ffffff;overflow: hidden;left: 0rpx;border-top-left-radius: 20rpx;border-bottom-right-radius: 0rpx;padding-right: 16rpx;}.button-button-clz {margin: 6rpx !important;}.flex20-clz {padding-top: 16rpx;border-bottom-left-radius: 200rpx;overflow: hidden;font-weight: bold;padding-left: 10rpx;font-size: 28rpx !important;padding-bottom: 16rpx;border-top-left-radius: 200rpx;border-top-right-radius: 200rpx;border-bottom-right-radius: 200rpx;padding-right: 10rpx;}.icon2 {font-size: 40rpx;}.flex-clz {padding-top: 20rpx;padding-left: 20rpx;padding-bottom: 20rpx;padding-right: 20rpx;}.image-size {height: 400rpx !important;width: 400rpx !important;}.text-clz {color: #969696;font-size: 28rpx !important;}.form-clz {padding-top: 10rpx;border-bottom-left-radius: 12rpx;padding-left: 10rpx;padding-bottom: 10rpx;border-top-right-radius: 12rpx;margin-right: 20rpx;background-color: #ffffff;margin-left: 20rpx;overflow: hidden;width: calc(100% - 20rpx - 20rpx) !important;border-top-left-radius: 12rpx;margin-top: 10rpx;border-bottom-right-radius: 12rpx;margin-bottom: 10rpx;padding-right: 10rpx;}.container335134 {padding-bottom: 160rpx;background-color: #f5f5f5;}
</style>

活动表单自定义字段

自定义表单字段,支持多种字段类型

<template><view class="container container335134"><u-form :model="form" :rules="formRules" :errorType="['message', 'toast']" ref="formRef" class="flex diygw-form diygw-col-24"><u-form-item class="diygw-col-24 hidden" label="标题" prop="input"><u-input placeholder="由于表单验证至少保留一个输入" v-model="form.input"></u-input></u-form-item><view v-if="isData && form.fields.length > 0" class="flex flex-wrap diygw-col-24 flex-direction-column items-center flex8-clz"><text class="diygw-col-0"> 已存在预约数据,不要修改变量字段类型。 </text></view><view class="flex flex-wrap diygw-col-24 flex-direction-column flex2-clz"><view class="flex flex-wrap diygw-col-24"><view class="diygw-col-24" v-for="(fieldsItem, fieldsIndex) in form.fields" :key="fieldsItem"><u-form class="diygw-col-24" :model="form.fields[fieldsIndex]" :errorType="['message', 'toast']" ref="fieldsRef" :rules="fieldsItemRules"><view class="flex flex-wrap diygw-col-24 flex-direction-column flex-clz"><text class="diygw-col-24 text1-clz"> 字段{{ fieldsIndex + 1 }} </text><u-form-item class="diygw-col-24 diygw-form-border diygw-uform-item" label="字段标题" prop="title"><view class="flex flex-sub padding-top-xs padding-bottom-xs align-center solid"><u-input placeholder="请输入字段标题" v-model="fieldsItem.title"></u-input></view></u-form-item><u-form-item class="diygw-col-24" label="是否必填" prop="required"><view class="flex diygw-col-24 justify-end"><u-switch :size="44" :activeValue="1" :inactiveValue="0" inactiveTextColor="#000000" activeTextColor="#ffffff" v-model="fieldsItem.required" slot="right"></u-switch></view></u-form-item><u-form-item v-if="!isData || (isData && !fieldsItem.field)" class="diygw-col-24 diygw-uform-item diygw-form-border" label="字段类型" prop="type"><diy-selectinput @click="formData.fieldsItemDatas[fieldsIndex].showType = true" class="diygw-col-24 solid" valueName="value" labelName="label" :list="formData.fieldsItemDatas[fieldsIndex].typeDatas" placeholder="请选择" v-model="fieldsItem.type" type="select"></diy-selectinput><u-select mode="single-column" valueName="value" labelName="label" :list="formData.fieldsItemDatas[fieldsIndex].typeDatas" isDefaultSelect :defaultSelectValue="fieldsItem.type" v-model="formData.fieldsItemDatas[fieldsIndex].showType" @confirm="changeFieldsItemType($event, fieldsIndex, fieldsItem)"></u-select></u-form-item><view v-if="isData && fieldsItem.field" class="flex flex-wrap diygw-col-24 flex9-clz"><text class="diygw-col-0 text-clz"> 字段类型 </text><text class="diygw-col-0 text5-clz">{{ getType(fieldsItem) }}</text></view><view v-if="['radio', 'checkbox', 'select'].includes(fieldsItem.type)" class="flex flex-wrap diygw-col-24 flex-direction-column flex1-clz"><view class="flex flex-wrap diygw-col-24 flex-direction-column"><text class="diygw-col-24 text3-clz"> 选项值 </text><view class="flex flex-wrap diygw-col-24 datas-clz"><view class="diygw-col-24" v-for="(datasItem, datasIndex) in fieldsItem.datas" :key="datasItem"><u-form class="diygw-col-24" :model="fieldsItem.datas[datasIndex]" :errorType="['message', 'toast']" ref="datasRef" :rules="datasItemRules"><view class="flex flex-wrap diygw-col-24 flex5-clz"><u-form-item class="diygw-col-0 value-clz diygw-form-border diygw-uform-item diygw-form-item-notpadding" labelPosition="top" prop="value"><view class="flex flex-sub padding-top-xs padding-bottom-xs align-center solid"><u-input placeholder="请输入选项值" v-model="datasItem.value"></u-input></view></u-form-item><view class="flex flex-wrap diygw-col-0 flex4-clz"><text @tap="navigateTo" data-type="upDatasItemFunction" :data-index="datasIndex" :data-fields-index="fieldsIndex" class="flex icon diygw-col-0 icon-clz diy-icon-fold"></text><text @tap="navigateTo" data-type="downDatasItemFunction" :data-index="datasIndex" :data-fields-index="fieldsIndex" class="flex icon3 diygw-col-0 icon3-clz diy-icon-unfold"></text><text @tap="navigateTo" data-type="addDatasItemFunction" :data-fields-index="fieldsIndex" class="flex icon2 diygw-col-0 icon2-clz diy-icon-add"></text><text @tap="navigateTo" data-type="delDatasItemFunction" :data-fields-index="fieldsIndex" :data-index="datasIndex" class="flex icon1 diygw-col-0 icon1-clz diy-icon-close"></text></view></view></u-form></view></view></view></view></view></u-form><view class="formfieldstools flex justify-end"><button @tap="upFieldsItem" :data-index="fieldsIndex" class="diygw-btn flex-sub radius margin-xs"><text class="button-icon diy-icon-fold"></text></button><button @tap="downFieldsItem" :data-index="fieldsIndex" class="diygw-btn flex-sub radius margin-xs"><text class="button-icon diy-icon-unfold"></text></button><button @tap="addFieldsItem" :data-index="fieldsIndex" class="diygw-btn flex-sub radius margin-xs"><text class="button-icon diy-icon-add"></text></button><button @tap="delFieldsItem" :data-index="fieldsIndex" class="diygw-btn flex-sub radius margin-xs"><text class="button-icon diy-icon-close"></text></button></view></view></view></view></u-form><view v-if="isshow && form.fields.length == 0" class="flex flex-wrap diygw-col-24 flex-direction-column items-center"><text class="diygw-col-0"> 字段为空,是否添加自定义活动字段 </text><button @tap="addFieldsItem" class="diygw-col-24 btn-clz diygw-btn-default">新增字段</button></view><view v-if="form.fields.length > 0" class="flex flex-wrap diygw-col-24 justify-start diygw-bottom flex7-clz"><view class="flex diygw-col-24"><button @tap="$tools.backpage()" class="diygw-btn red radius flex-sub margin-xs button-button-clz">取消</button><button @click="submitForm" class="diygw-btn green radius flex-sub margin-xs button-button-clz">保存</button></view></view><view class="clearfix"></view></view>
</template><script>export default {data() {return {//用户全局信息userInfo: {},//页面传参globalOption: {},//自定义全局变量globalData: {},data: {code: 200,msg: 'success',data: {id: 5,title: 'cms',remark: 'cmscmscms',endtime: '2025-02-12 00:00:00',num: 0,img: 'http://sell.t.com/storage/image/20250212/fe98841d27ec081580410b325ecf552903d33e0b.png',content: '<p>cmscmscmscmscmscmscms</p>',fields: null,userId: 1,createTime: '2025-02-12 16:57:07',updateTime: '2025-02-12 16:57:07',deleteTime: null}},huodongDataNum: 1,huodongData: {rows: [{id: 0,title: '',img: '',remark: '',data: '',huodongId: 0,huodongTitle: '',userId: 0,createTime: '',updateTime: '',deleteTime: null}],total: 0,code: 0,msg: ''},isData: false,isshow: false,datasItem: {value: ''},datasItemRules: {},form: {input: '',fields: []},fieldsItem: {title: '',required: 1,type: 'input',datasItemDatas: [],datas: []},formRules: {},fieldsItemData: {showType: false,typeDatas: [{ value: 'input', label: '单选文本' },{ value: 'textarea', label: '多行文本' },{ value: 'phone', label: '手机号码' },{ value: 'number', label: '数字' },{ value: 'img', label: '图片' },{ value: 'date', label: '日期' },{ value: 'datetime', label: '年月日时分' },{ value: 'radio', label: '单选' },{ value: 'checkbox', label: '复选' },{ value: 'select', label: '下拉' },{ value: 'sign', label: '手写签名' }]},formData: {fieldsItemDatas: []},fieldsItemRules: {}};},onShow() {this.setCurrentPage(this);},onLoad(option) {this.setCurrentPage(this);if (option) {this.setData({globalOption: this.getOption(option)});}this.init();},onReady() {this.$refs.formRef?.setRules(this.formRules);this.initDatasData();},methods: {async init() {await this.dataApi();await this.initResetform();},// 获取数据 API请求方法async dataApi(param) {let thiz = this;param = param || {};//请求地址及请求数据,可以在加载前执行上面增加自己的代码逻辑let http_url = '/cms/huodong/get';let http_data = {id: param.id || this.globalOption.id || '5'};let http_header = {};if (!this.globalOption.id) {this.isshow = true;return;}let data = await this.$http.post(http_url, http_data, http_header, 'json');this.data = data;if (data.code == 200 && data.data.fields) {this.form.fields = JSON.parse(data.data.fields);let fieldsItemDatas = [];this.form.fields.forEach((item) => {fieldsItemDatas.push(JSON.parse(JSON.stringify(this.fieldsItemData)));});this.formData.fieldsItemDatas = fieldsItemDatas;}this.isChange = false;await this.huodongDataApi({});this.isshow = true;},// 预约数据 API请求方法async huodongDataApi(param) {let thiz = this;param = param || {};//请求地址及请求数据,可以在加载前执行上面增加自己的代码逻辑let http_url = '/cms/api.huodongData/list';let http_data = {pageNum: this.huodongDataNum,pageSize: 10,huodongId: param.huodongId || this.globalOption.id,pageSize: param.pageSize || '1'};let http_header = {};let huodongData = await this.$http.post(http_url, http_data, http_header, 'json');this.huodongData = huodongData;this.isData = huodongData.total;},// 新增选项值 自定义方法async addDatasItemFunction(param) {let thiz = this;let fieldsIndex = param && (param.fieldsIndex || param.fieldsIndex == 0) ? param.fieldsIndex : thiz.fieldsIndex || '0';//由于默认生成的不支持多层嵌套,所以选项值这些自定义实现let fieldsItem = this.form.fields[fieldsIndex];fieldsItem.datas.push(JSON.parse(JSON.stringify(this.datasItem)));this.fieldsItemData.datasItemDatas.push(JSON.parse(JSON.stringify(this.datasItemData)));this.initDatasValid();},// 下移子表单 自定义方法async downDatasItemFunction(param) {let thiz = this;let index = param && (param.index || param.index == 0) ? param.index : thiz.datasIndex || '';let fieldsIndex = param && (param.fieldsIndex || param.fieldsIndex == 0) ? param.fieldsIndex : thiz.fieldsIndex || '';let fieldsItem = this.form.fields[fieldsIndex];if (index == fieldsItem.datas.length - 1) {this.navigateTo({type: 'tip',tip: '已经是最后一个'});return false;}fieldsItem.datas[index] = fieldsItem.datas.splice(index + 1, 1, fieldsItem.datas[index])[0];this.fieldsItemData.datasItemDatas[index] = this.fieldsItemData.datasItemDatas.splice(index + 1, 1, this.fieldsItemData.datasItemDatas[index])[0];this.initDatasValid();},// 上移子表单 自定义方法async upDatasItemFunction(param) {let thiz = this;let index = param && (param.index || param.index == 0) ? param.index : thiz.datasIndex || '';let fieldsIndex = param && (param.fieldsIndex || param.fieldsIndex == 0) ? param.fieldsIndex : thiz.fieldsIndex || '';let fieldsItem = this.form.fields[fieldsIndex];if (index == 0) {this.navigateTo({type: 'tip',tip: '已经是第一个'});return false;}fieldsItem.datas[index] = fieldsItem.datas.splice(index - 1, 1, fieldsItem.datas[index])[0];this.fieldsItemData.datasItemDatas[index] = this.fieldsItemData.datasItemDatas.splice(index - 1, 1, this.fieldsItemData.datasItemDatas[index])[0];this.initDatasValid();},// 删除子表单 自定义方法async delDatasItemFunction(param) {let thiz = this;let fieldsIndex = param && (param.fieldsIndex || param.fieldsIndex == 0) ? param.fieldsIndex : thiz.fieldsIndex || '';let index = param && (param.index || param.index == 0) ? param.index : thiz.datasIndex || '';let fieldsItem = this.form.fields[fieldsIndex];fieldsItem.datas.splice(index, 1);this.fieldsItemData.datasItemDatas.splice(index, 1);this.initDatasValid();},//子表单验证initFieldsValid() {this.$nextTick(() => {this.$refs['fieldsRef']?.forEach((subform) => {subform.setRules(this.fieldsItemRules);});});},//验证所有的子表单checkFieldsValid() {let flag = true;this.$refs['fieldsRef']?.forEach((subform) => {subform.validate((valid) => {if (!valid) {flag = false;return false;}});});return flag;},//上移子表单upFieldsItem(evt) {let { index } = evt.currentTarget.dataset;if (index == 0) {this.navigateTo({type: 'tip',tip: '已经是第一个'});return false;}this.form.fields[index] = this.form.fields.splice(index - 1, 1, this.form.fields[index])[0];this.formData.fieldsItemDatas[index] = this.formData.fieldsItemDatas.splice(index - 1, 1, this.formData.fieldsItemDatas[index])[0];this.initFieldsValid();},//下移子表单downFieldsItem(evt) {let { index } = evt.currentTarget.dataset;if (index == this.form.fields.length - 1) {this.navigateTo({type: 'tip',tip: '已经是最后一个'});return false;}this.form.fields[index] = this.form.fields.splice(index + 1, 1, this.form.fields[index])[0];this.formData.fieldsItemDatas[index] = this.formData.fieldsItemDatas.splice(index + 1, 1, this.formData.fieldsItemDatas[index])[0];this.initFieldsValid();},//删除子表单delFieldsItem(evt) {let { index } = evt.currentTarget.dataset;this.form.fields.splice(index, 1);this.formData.fieldsItemDatas.splice(index, 1);this.initFieldsValid();},//增加子表单addFieldsItem() {this.form.fields.push(JSON.parse(JSON.stringify(this.fieldsItem)));this.formData.fieldsItemDatas.push(JSON.parse(JSON.stringify(this.fieldsItemData)));this.initFieldsValid();},changeFieldsItemType(evt, fieldsIndex, fieldsItem) {evt.map((val, index) => {fieldsItem.type = val.value;});},getType(item) {let find = this.fieldsItemData.typeDatas.find((type) => {return type.value == item.type;});return find ? find.label : '单行文本';},//初始化显示子表单数据条数initDatasData() {for (let i = 0; i < 1; i++) {this.fieldsItem.datas.push(JSON.parse(JSON.stringify(this.datasItem)));}this.initDatasValid();},//子表单验证initDatasValid() {this.$nextTick(() => {this.$refs['datasRef']?.forEach((subform) => {subform.setRules(this.datasItemRules);});});},//验证所有的子表单checkDatasValid() {let flag = true;this.$refs['datasRef']?.forEach((subform) => {subform.validate((valid) => {if (!valid) {flag = false;return false;}});});return flag;},initResetform() {this.initform = JSON.stringify(this.form);//如果想给表单默认初始值,其中row为某一行数据也可能是API返回的结果集,然后给到this.form//this.form = this.$tools.changeRowToForm(row,this.form)},resetForm() {this.form = JSON.parse(this.initform);},async submitForm(e) {this.$refs.formRef?.setRules(this.formRules);this.initFieldsValid();this.initDatasValid();this.$nextTick(async () => {let fieldsvalid = await this.checkFieldsValid();let datasvalid = await this.checkDatasValid();let valid = await this.$refs.formRef.validate();if (valid && fieldsvalid && datasvalid) {//保存数据let param = this.form;let header = {'Content-Type': 'application/json'};let url = '/cms/huodong/update';let find = this.form.fields.find((item) => {return !item.title;});if (find) {this.showToast('字段标题不能为空');return;}/*let finds = []this.form.fields.forEach(item=>{if(['radio', 'checkbox', 'select'].includes(item.type)){find = item.datas.find(data=>{return !data.value})if(find){finds.push(item)}}})if(finds.length>0){this.showToast(finds[0].title+"选项值不能为空")return}*/let time = new Date().getTime();this.form.fields.forEach((item, index) => {item.field = item.field ? item.field : 'field' + time + index;});param = {id: this.globalOption.id,fields: this.form.fields};let res = await this.$http.post(url, param, header, 'json');if (res.code == 200) {this.showToast(res.msg, 'success');uni.navigateBack();} else {this.showModal(res.msg, '提示', false);}if (res.code == 200) {this.showToast(res.msg, 'success');} else {this.showModal(res.msg, '提示', false);}} else {console.log('验证失败');}});}}};
</script><style lang="scss" scoped>.flex8-clz {padding-top: 10rpx;color: #ff0000;padding-left: 10rpx;padding-bottom: 10rpx;padding-right: 10rpx;}.flex2-clz {padding-top: 10rpx;padding-left: 10rpx;padding-bottom: 10rpx;padding-right: 10rpx;}.formfieldstools {position: absolute;z-index: 1;right: 12rpx;top: 12rpx;}.formfieldstools .diygw-btn {padding: 5px;height: auto;flex: inherit;border-radius: 20px;}.flex-clz {background-color: #ffffff;margin-left: 10rpx;border-bottom-left-radius: 12rpx;box-shadow: 0rpx 2rpx 6rpx rgba(31, 31, 31, 0.16);overflow: hidden;width: calc(100% - 10rpx - 10rpx) !important;border-top-left-radius: 12rpx;margin-top: 10rpx;border-top-right-radius: 12rpx;border-bottom-right-radius: 12rpx;margin-bottom: 10rpx;margin-right: 10rpx;}.text1-clz {padding-top: 20rpx;font-weight: bold;flex: 1;padding-left: 30rpx;padding-bottom: 20rpx;padding-right: 30rpx;}.flex9-clz {margin-left: 20rpx;width: calc(100% - 20rpx - 20rpx) !important;margin-top: 10rpx;margin-bottom: 10rpx;border-bottom: 2rpx solid #ebedf0;margin-right: 20rpx;}.text-clz {padding-top: 20rpx;font-weight: bold;padding-left: 10rpx;padding-bottom: 20rpx;padding-right: 10rpx;}.text5-clz {margin-left: 20rpx;padding-top: 20rpx;flex: 1;padding-left: 36rpx;padding-bottom: 20rpx;margin-top: 0rpx;margin-bottom: 0rpx;margin-right: 30rpx;padding-right: 16rpx;}.flex1-clz {background-color: #ffffff;margin-left: 20rpx;border-bottom-left-radius: 12rpx;overflow: hidden;width: calc(100% - 20rpx - 20rpx) !important;border-top-left-radius: 12rpx;margin-top: 10rpx;border-top-right-radius: 12rpx;border-bottom-right-radius: 12rpx;margin-bottom: 10rpx;margin-right: 20rpx;}.text3-clz {padding-top: 20rpx;font-weight: bold;flex: 1;padding-left: 16rpx;padding-bottom: 20rpx;padding-right: 16rpx;}.datas-clz {padding-top: 20rpx;font-weight: bold;flex: 1;padding-left: 16rpx;padding-bottom: 20rpx;padding-right: 16rpx;}.flex5-clz {margin-left: 0rpx;width: calc(100% - 0rpx - 0rpx) !important;margin-top: 10rpx;margin-bottom: 10rpx;margin-right: 0rpx;}.value-clz {flex: 1;}.flex4-clz {color: #989898;}.icon-clz {margin-left: 10rpx;padding-top: 10rpx;padding-left: 10rpx;padding-bottom: 10rpx;margin-top: 10rpx;margin-bottom: 10rpx;margin-right: 10rpx;padding-right: 10rpx;}.icon {font-size: 28rpx;}.icon3-clz {margin-left: 10rpx;padding-top: 10rpx;padding-left: 10rpx;padding-bottom: 10rpx;margin-top: 10rpx;margin-bottom: 10rpx;margin-right: 10rpx;padding-right: 10rpx;}.icon3 {font-size: 28rpx;}.icon2-clz {margin-left: 10rpx;padding-top: 10rpx;padding-left: 10rpx;padding-bottom: 10rpx;margin-top: 10rpx;margin-bottom: 10rpx;margin-right: 10rpx;padding-right: 10rpx;}.icon2 {font-size: 28rpx;}.icon1-clz {margin-left: 10rpx;padding-top: 10rpx;padding-left: 10rpx;padding-bottom: 10rpx;margin-top: 10rpx;margin-bottom: 10rpx;margin-right: 10rpx;padding-right: 10rpx;}.icon1 {font-size: 28rpx;}.btn-clz {padding-top: 16rpx;border-bottom-left-radius: 120rpx;color: #fff;padding-left: 20rpx;font-size: 28rpx !important;padding-bottom: 16rpx;border-top-right-radius: 120rpx;margin-right: 30rpx;background-color: #07c160;margin-left: 30rpx;overflow: hidden;width: calc(100% - 30rpx - 30rpx) !important;border-top-left-radius: 120rpx;margin-top: 10rpx;border-bottom-right-radius: 120rpx;margin-bottom: 10rpx;text-align: center;padding-right: 20rpx;}.flex7-clz {padding-top: 16rpx;border-bottom-left-radius: 0rpx;color: #747474;bottom: 0rpx;padding-left: 16rpx;padding-bottom: 16rpx;border-top-right-radius: 20rpx;background-color: #ffffff;overflow: hidden;left: 0rpx;border-top-left-radius: 20rpx;border-bottom-right-radius: 0rpx;padding-right: 16rpx;}.button-button-clz {margin: 6rpx !important;}.container335134 {padding-bottom: 160rpx;background-color: #f5f5f5;}
</style>

活动详情

活动展示页

活动详情包括轮播、签到时间、距活动结束

活动表单可视化

活动表单根据活动自定义的表单可视化、自定义表单字段。

<template><view class="container container335134"><u-form :model="form" :rules="formRules" :errorType="['message', 'toast']" ref="formRef" v-if="showForm" class="flex diygw-form diygw-col-24 form-clz"><u-form-item class="diygw-col-24" :required="true" label="联系人" prop="title"><u-input placeholder="请输入联系人" v-model="form.title"></u-input></u-form-item><u-form-item class="diygw-col-24" label="备注" prop="remark"><u-input maxlength="200" height="60px" class="" placeholder="请输入备注" v-model="form.remark" type="textarea"></u-input></u-form-item><view v-for="(item, index) in data.data.fields" :key="index" class="flex flex-wrap diygw-col-24 flex-direction-column"><u-form-item v-if="item.type == 'kaiguang'" :required="item.required" :newprop="item.field" class="diygw-col-24" :label="item.title" prop="kaiguang"><view class="flex diygw-col-24"><u-switch :size="44" :activeValue="1" :inactiveValue="0" inactiveTextColor="#000000" activeTextColor="#ffffff" v-model="item.kaiguang" slot="right"></u-switch></view></u-form-item><u-form-item v-if="item.type == 'date'" :required="item.required" :newprop="item.field" class="diygw-col-24" :label="item.title" prop="date"><u-input @click="item.showDate = true" class="" placeholder="请选择" v-model="item.date" type="select"></u-input><u-calendar maxDate="2050-12-31" v-model="item.showDate" mode="date" @change="changeItemDate($event, index, item)"></u-calendar></u-form-item><u-form-item v-if="item.type == 'input'" :required="item.required" :newprop="item.field" class="diygw-col-24" :label="item.title" prop="input"><u-input id="diyid" placeholder="请输入提示信息" v-model="item.input"></u-input></u-form-item><u-form-item v-if="item.type == 'phone'" :required="item.required" :newprop="item.field" class="diygw-col-24" :label="item.title" prop="phone"><u-input placeholder="请输入提示信息" v-model="item.phone"></u-input></u-form-item><u-form-item v-if="item.type == 'sign'" :required="item.required" :newprop="item.field" class="diygw-col-24" :label="item.title" prop="sign"><diy-signature v-model="item.sign"></diy-signature></u-form-item><u-form-item v-if="item.type == 'datetime'" :required="item.required" :newprop="item.field" class="diygw-col-24" :label="item.title" prop="datetime"><u-input @click="item.showDatetime = true" class="" placeholder="请选择" v-model="item.datetime" type="select"></u-input><u-picker :defaultTime="item.datetime" v-model="item.showDatetime" mode="time" :params="item.paramsDatetime" @confirm="changeItemDatetime($event, index, item)"></u-picker></u-form-item><u-form-item v-if="item.type == 'img'" :required="item.required" :newprop="item.field" class="diygw-col-24" :label="item.title" prop="img"><u-upload :index="index" width="160" height="160" maxCount="6" @on-success="uploadItemImg" @on-remove="delItemImg" action="/sys/storage/upload" v-model="item.img"> </u-upload></u-form-item><u-form-item v-if="item.type == 'rate'" :required="item.required" :newprop="item.field" class="diygw-col-24" :label="item.title" prop="rate"><view class="flex diygw-col-24"><u-rate activeColor="#07c160" active-icon="starfill" inactive-icon="starfill" custom-prefix="diy-icon" size="48" inactiveColor="#eee" :count="5" @change="changeItemRate($event, index, item)" v-model="item.rate"></u-rate></view></u-form-item><u-form-item v-if="item.type == 'textarea'" :required="item.required" :newprop="item.field" class="diygw-col-24" :label="item.title" prop="textarea"><u-input maxlength="200" height="60px" class="" placeholder="请输入提示信息" v-model="item.textarea" type="textarea"></u-input></u-form-item><u-form-item v-if="item.type == 'select'" :required="item.required" :newprop="item.field" class="diygw-col-24" :label="item.title" prop="select"><diy-selectinput @click="item.showSelect = true" class="diygw-col-24" valueName="value" labelName="value" :list="item.datas" placeholder="请选择" v-model="item.select" type="select"></diy-selectinput><u-select mode="single-column" valueName="value" labelName="value" :list="item.datas" isDefaultSelect :defaultSelectValue="item.select" v-model="item.showSelect" @confirm="changeItemSelect($event, index, item)"></u-select></u-form-item><u-form-item v-if="item.type == 'slider'" :required="item.required" :newprop="item.field" class="diygw-col-24" :label="item.title" prop="slider"><view class="flex1 flex align-center diygw-col-24"><u-slider class="flex1" active-color="#07c160" blockWidth="50" @change="changeItemSlider($event, index, item)" name="slider" v-model="item.slider" :min="0" :max="100" :step="1" /></view></u-form-item><u-form-item class="diygw-col-24" v-if="item.type == 'checkbox'" :required="item.required" :newprop="item.field" :label="item.title" prop="checkbox"><u-checkbox-group class="flex flex-wrap diygw-col-24 justify-between" wrapClass=" justify-between" v-model="item.checkbox"><u-checkbox class="diygw-col-24" v-for="(checkboxitem, checkboxindex) in item.datas" :key="checkboxindex" :name="checkboxitem.value">{{ checkboxitem.value }}</u-checkbox></u-checkbox-group></u-form-item><u-form-item v-if="item.type == 'radio'" :required="item.required" :newprop="item.field" class="diygw-col-24" :label="item.title" prop="radio"><u-radio-group class="flex flex-wrap diygw-col-24 justify-between" wrapClass=" justify-between" v-model="item.radio"><u-radio class="diygw-col-24" shape="circle" v-for="(radioitem, radioindex) in item.datas" :key="radioindex" :name="radioitem.value">{{ radioitem.value }}</u-radio></u-radio-group></u-form-item></view></u-form><view v-if="data.code == 200 && !showForm" class="flex flex-wrap diygw-col-24 flex-direction-column"><view class="flex diygw-col-24"><swiper :current="swiperIndex" class="swiper swiper-indicator_rect_radius" @change="changeSwiper" indicator-color="rgba(51, 51, 51, 0.39)" indicator-active-color="#fff" indicator-dots="true" autoplay interval="3000" circular="true" style="height: 300rpx"><swiper-item v-for="(item, index) in data.data.imgs" :key="index" class="diygw-swiper-item"><view class="diygw-swiper-item-wrap"><image :src="item" class="diygw-swiper-image"></image></view></swiper-item></swiper></view><view class="flex flex-wrap diygw-col-24 flex-direction-column justify-center items-center flex6-clz"><text class="diygw-text-line3 diygw-col-24 text20-clz">{{ data.data.title }}</text><view class="flex flex-wrap diygw-col-24 justify-between items-center flex4-clz"><view class="flex flex-wrap diygw-col-0 justify-between items-baseline flex9-clz"><text class="flex icon1 diygw-col-0 diy-icon-attention"></text><text class="diygw-text-line3 diygw-col-0"> 浏览: </text><text class="diygw-text-line3 diygw-col-0">{{ data.data.views }}</text></view><view class="flex flex-wrap diygw-col-0 justify-between items-baseline flex10-clz"><text class="flex icon3 diygw-col-0 diy-icon-people"></text><text class="diygw-text-line3 diygw-col-0"> 报名: </text><text class="diygw-text-line3 diygw-col-0">{{ data.data.baomingnum }}</text></view></view></view><view v-if="!data.data.isover" class="flex flex-wrap diygw-col-24 justify-between items-center flex16-clz"><view class="flex flex-wrap diygw-col-24 items-center flex17-clz"><text class="flex icon6 diygw-col-0 icon6-clz diy-icon-titles"></text><text class="diygw-text-line1 diygw-col-0 text11-clz"> 距活动结束 </text><view class="flex flex-direction-column diygw-col-0 countdown-clz"><u-count-down ref="refCountdown" :timestamp="data.data.countdown" format="DD天HH时mm分ss秒" @end="finishCountdown"> </u-count-down></view></view></view><view class="flex flex-wrap diygw-col-24 justify-between items-center flex7-clz"><view class="flex flex-wrap diygw-col-24 items-center flex34-clz"><text class="flex icon diygw-col-0 icon-clz diy-icon-titles"></text><text class="diygw-text-line1 diygw-col-0 text26-clz"> 签到时间 </text></view><view class="flex flex-wrap diygw-col-24 items-center flex8-clz"><text class="flex icon2 diygw-col-0 diy-icon-time"></text><text class="diygw-text-line1 diygw-col-0 text1-clz"> {{ data.data.starttime }} 至 {{ data.data.endtime }} </text></view></view><view class="flex flex-wrap diygw-col-24 justify-between items-center flex11-clz"><view class="flex flex-wrap diygw-col-24 items-center flex12-clz"><text class="flex icon4 diygw-col-0 icon4-clz diy-icon-titles"></text><text class="diygw-text-line1 diygw-col-0 text2-clz"> 活动地点 </text></view><view class="flex flex-wrap diygw-col-24 items-center flex13-clz"><text class="flex icon5 diygw-col-0 diy-icon-location"></text><text class="diygw-text-line1 diygw-col-0 text4-clz">{{ data.data.address }}</text></view></view><view v-if="data.data.content" class="flex flex-wrap diygw-col-24 flex-direction-column justify-center items-center flex5-clz"><view class="flex flex-wrap diygw-col-24 items-center flex14-clz"><view class="flex diygw-col-0 line1-clz"><view class="diygw-pzx" style="border-bottom: 1px solid #eee"></view></view><text class="diygw-text-line1 diygw-col-0 text5-clz"> 活动详情 </text><view class="flex diygw-col-0 line-clz"><view class="diygw-pzx" style="border-bottom: 1px solid #eee"></view></view></view><mp-html :content="data.data.content" class="diygw-col-24 ucontent1-clz"></mp-html></view></view><view v-if="globalData.isshow" class="flex flex-wrap diygw-col-24 justify-start diygw-bottom flex3-clz"><view v-if="showForm" class="flex diygw-col-24"><button @tap="showForm = false" class="diygw-btn red radius flex-sub margin-xs button1-button-clz">取消</button><button @click="submitForm" class="diygw-btn green radius flex-sub margin-xs button1-button-clz">预约</button></view><view v-if="!showForm && data.data.isover" class="flex flex-wrap diygw-col-24 justify-center items-center flex20-clz" @tap="showForm = true"><text class="diygw-col-0"> 活动已结束 </text></view><view v-if="!showForm && !data.data.isover && data.data.isuser" class="flex flex-wrap diygw-col-24 justify-center items-center flex15-clz" @tap="showForm = true"><text class="diygw-col-0"> 已报名 </text></view><view v-if="!showForm && !data.data.isover && !data.data.isuser" class="flex flex-wrap diygw-col-24 justify-center items-center green flex2-clz" @tap="navigateTo" data-type="addFunction"><text class="diygw-col-0"> 立即预约 </text></view></view><view class="clearfix"></view></view>
</template><script>export default {data() {return {//用户全局信息userInfo: {},//页面传参globalOption: {},//自定义全局变量globalData: {datas: [{field: 'radio',options: [{ id: 'A', content: '微信小程序' },{ id: 'B', content: '支付宝小程序' },{ id: 'C', content: 'UniApp小程序' },{ id: 'D', content: 'UniApp-uView小程序' }],title: '单选标题',type: 'radio',radio: ''},{select: '',field: 'select',options: [{ id: 'A', content: '微信小程序' },{ id: 'B', content: '支付宝小程序' },{ id: 'C', content: 'UniApp小程序' },{ id: 'D', content: 'UniApp-uView小程序' }],title: '下拉标题',type: 'select'},{field: 'checkbox',options: [{ id: 'A', content: 'UniApp' },{ id: 'B', content: '微信小程序' },{ id: 'C', content: '支付宝小程序' },{ id: 'D', content: 'QQ小程序' }],checkbox: [],title: '多选标题',type: 'checkbox'},{ input: '', field: 'input', title: '单行输入', type: 'input' },{ kaiguang: '', field: 'kaiguang', title: '开关标题', type: 'kaiguang' },{ slider: '', field: 'slider', title: '滑块', type: 'slider' },{ field: 'textarea', textarea: '', title: '多行输入', type: 'textarea' },{ field: 'rate', rate: '', title: '评分', type: 'rate' },{ date: '', field: 'date', title: '日期', type: 'date' }]},dataNum: 1,data: {code: 0,msg: '',data: {id: 0,title: '',remark: '',starttime: '',endtime: '',address: '',num: 0,views: 0,baomingnum: 0,imgs: [],img: '',content: '',fields: [],userId: 0,createTime: '',updateTime: '',deleteTime: null,baomingEndtime: ''}},huodongDataNum: 1,huodongData: {rows: [{id: 0,title: '',img: '',remark: '',data: null,huodongId: 0,huodongTitle: '',userId: 0,createTime: '',updateTime: '',deleteTime: null}],total: 0,code: 0,msg: ''},viewNum: 1,view: {code: 200,msg: '设置成功'},swiperIndex: 0,showForm: false,item: {kaiguang: 1,showDate: false,date: '',input: '',phone: '',sign: '',paramsDatetime: {year: true,month: true,day: true,hour: true,minute: true,second: false},showDatetime: false,datetime: '',img: '',rateCount: 5,rate: 3,textarea: '',showSelect: false,select: '',slider: 66,checkbox: [],radio: ''},formRules: {title: [{trigger: ['change', 'blur'],required: true,message: '不能为空哟'}]},form: {title: '',remark: ''}};},watch: {data: {handler(newVal, oldVal) {newVal.data.fields.forEach((item) => {this.form[item.field] = item[item.type];});},deep: true}},onShow() {this.setCurrentPage(this);},onLoad(option) {this.setCurrentPage(this);if (option) {this.setData({globalOption: this.getOption(option)});}this.init();},onReady() {this.$refs.formRef?.setRules(this.formRules);},methods: {async init() {this.dataApi();await this.initResetform();},// 文章数据 API请求方法async dataApi(param) {let thiz = this;param = param || {};//请求地址及请求数据,可以在加载前执行上面增加自己的代码逻辑let http_url = '/cms/api.huodong/get';let http_data = {pageNum: this.dataNum,pageSize: 10,id: param.id || this.globalOption.id};let http_header = {};let data = await this.$http.post(http_url, http_data, http_header, 'json');if (!data.data) {this.showToast('详情不存在');uni.navigateBack();return;}data.data.imgs = data.data.imgs ? data.data.imgs.split(',') : [];data.data.fields = data.data.fields ? JSON.parse(data.data.fields) : [];data.data.isover = new Date(data.data.baomingEndtime).getTime() < new Date().getTime();data.data.countdown = data.data.isover ? 0 : new Date(data.data.baomingEndtime).getTime() - new Date().getTime();data.data.isuser = false;data.data.fields.forEach((item) => {item['show' + item.type.charAt(0).toUpperCase() + item.type.slice(1)] = false;if (item.required) {let rule = {trigger: ['change', 'blur'],required: true,message: item.title + '不能为空哟'};if (item.type == 'checkbox') {rule.type = 'array';}if (['checkbox', 'radio', 'select', 'date', 'datetime'].includes(item.type)) {rule.message = '请选择' + item.title;} else if (['img'].includes(item.type)) {rule.message = '请上传' + item.title;}this.formRules[item.field] = [rule];}if (item.type == 'datetime') {item.paramsDatetime = {year: true,month: true,day: true,hour: true,minute: true,second: false};}if (item.type == 'checkbox') {item['checkbox'] = [];this.form[item.field] = [];} else if (item.type == 'number') {item['number'] = undefined;this.form[item.field] = undefined;} else {item[item.type] = '';this.form[item.field] = '';}});this.form.title = this.userInfo.nickname;this.data = data;if (this.userInfo.token) {await this.huodongDataApi({});}await this.viewApi({});this.data.data.view = this.data.data.view + 1;this.globalData.isshow = true;uni.setNavigationBarTitle({title: data.data.title});},// 查询用户是否已报名 API请求方法async huodongDataApi(param) {let thiz = this;param = param || {};//请求地址及请求数据,可以在加载前执行上面增加自己的代码逻辑let http_url = '/cms/api.huodongData/list';let http_data = {pageNum: this.huodongDataNum,pageSize: 10,huodongId: param.huodongId || this.globalOption.id,isself: param.isself || '1'};let http_header = {};let huodongData = await this.$http.post(http_url, http_data, http_header, 'json');this.huodongData = huodongData;this.data.data.isuser = huodongData.total > 0;},// 查看数据增加 API请求方法async viewApi(param) {let thiz = this;param = param || {};//如果请求要重置页面,请配置点击附加参数refresh=1  增加判断如输入框回调param不是对象if (param.refresh || typeof param != 'object') {this.viewNum = 1;}//请求地址及请求数据,可以在加载前执行上面增加自己的代码逻辑let http_url = '/cms/api.huodong/incOrDec';let http_data = {pageNum: this.viewNum,pageSize: 10,id: param.id || this.globalOption.id,key: param.key || 'views',value: param.value || '1'};let http_header = {};let view = await this.$http.post(http_url, http_data, http_header, 'json');let datarows = view.rows;if (http_data.pageNum == 1) {this.view = view;} else if (datarows) {let rows = this.view.rows.concat(datarows);view.rows = rows;this.view = Object.assign(this.view, view);}if (datarows && datarows.length > 0) {this.viewNum = this.viewNum + 1;}},// 倒计时结束 自定义方法async overFunction(param) {let thiz = this;this.data.data.isover = true;},// 新增预约 自定义方法async addFunction(param) {let thiz = this;if (!this.$session.getToken()) {//比如未登录,转身到其他页面等this.showToast('请先登录');this.navigateTo({type: 'page',url: 'login'});return;}this.showForm = true;this.$nextTick(() => {if (this.$refs.formRef) {this.$refs.formRef.setRules(this.formRules);}});},changeItemDate(evt, index, item) {item.date = evt.result;},changeItemDatetime(evt, index, item) {item.datetime = evt.year + '-' + evt.month + '-' + evt.day + ' ' + evt.hour + ':' + evt.minute;},changeItemImg(index, lists, dataindex) {},delItemImg(index, lists, dataindex) {this.changeItemImg(index, lists, index);},uploadItemImg(res, index, lists, dataindex) {this.changeItemImg(index, lists, dataindex);},changeItemRate(evt, index, item) {},changeItemSelect(evt, index, item) {evt.map((val, index) => {item.select = val.value;});},changeItemSlider(evt, index, item) {},initResetform() {this.initform = JSON.stringify(this.form);//如果想给表单默认初始值,其中row为某一行数据也可能是API返回的结果集,然后给到this.form//this.form = this.$tools.changeRowToForm(row,this.form)},resetForm() {this.form = JSON.parse(this.initform);},async submitForm(e) {this.$refs.formRef?.setRules(this.formRules);this.$nextTick(async () => {let valid = await this.$refs.formRef.validate();if (valid) {//保存数据let param = this.form;let header = {};let url = '/cms/huodongData/add';param.huodongId = this.data.data.id;param.huodongTitle = this.data.data.title;param.img = this.data.data.img;param.data = JSON.stringify(param);param.fields = JSON.stringify(this.data.data.fields);let res = await this.$http.post(url, param, header, 'json');this.data.data.isuer = true;this.showForm = false;this.data.data.baomingnum = this.data.data.baomingnum + 1;if (res.code == 200) {this.showToast('预约成功', 'success');} else {this.showModal(res.msg, '提示', false);}} else {console.log('验证失败');}});},changeSwiper(evt) {let swiperIndex = evt.detail.current;this.setData({ swiperIndex });},finishCountdown() {this.navigateTo({ type: 'overFunction' });}},onPullDownRefresh() {// 查看数据增加 API请求方法this.viewNum = 1;this.viewApi();uni.stopPullDownRefresh();},onReachBottom() {// 查看数据增加 API请求方法this.viewApi();}};
</script><style lang="scss" scoped>.form-clz {background-color: #ffffff;margin-left: 10rpx;border-bottom-left-radius: 12rpx;overflow: hidden;width: calc(100% - 10rpx - 10rpx) !important;border-top-left-radius: 12rpx;margin-top: 10rpx;border-top-right-radius: 12rpx;border-bottom-right-radius: 12rpx;margin-bottom: 10rpx;margin-right: 10rpx;}.swiper-title {background-color: rgba(0, 0, 0, 0.281);}.flex6-clz {background-color: #fcfcfc;}.text20-clz {padding-top: 20rpx;font-weight: bold;padding-left: 20rpx;font-size: 28rpx !important;padding-bottom: 20rpx;border-bottom: 2rpx solid #eee;padding-right: 20rpx;}.flex4-clz {padding-top: 20rpx;padding-left: 20rpx;font-size: 28rpx !important;padding-bottom: 20rpx;padding-right: 20rpx;}.flex9-clz {padding-top: 10rpx;padding-left: 0rpx;padding-bottom: 10rpx;padding-right: 0rpx;}.icon1 {font-size: 32rpx;}.flex10-clz {padding-top: 10rpx;padding-left: 0rpx;padding-bottom: 10rpx;padding-right: 0rpx;}.icon3 {font-size: 32rpx;}.flex16-clz {background-color: #ffffff;margin-left: 0rpx;width: calc(100% - 0rpx - 0rpx) !important;margin-top: 20rpx;margin-bottom: 0rpx;border-bottom: 2rpx solid #eee;margin-right: 0rpx;}.flex17-clz {padding-top: 16rpx;padding-left: 10rpx;padding-bottom: 16rpx;border-bottom: 2rpx solid #eee;padding-right: 20rpx;}.icon6-clz {color: #00bc25;}.icon6 {font-size: 32rpx;}.text11-clz {padding-top: 0rpx;flex: 1;padding-left: 0rpx;font-size: 28rpx !important;padding-bottom: 0rpx;padding-right: 0rpx;}.countdown-clz {font-weight: bold;font-size: 28rpx !important;}.flex7-clz {background-color: #ffffff;margin-left: 0rpx;width: calc(100% - 0rpx - 0rpx) !important;margin-top: 20rpx;margin-bottom: 0rpx;border-bottom: 2rpx solid #eee;margin-right: 0rpx;}.flex34-clz {padding-top: 16rpx;padding-left: 10rpx;padding-bottom: 16rpx;border-bottom: 2rpx solid #eee;padding-right: 10rpx;}.icon-clz {color: #00bc25;}.icon {font-size: 32rpx;}.text26-clz {padding-top: 0rpx;flex: 1;padding-left: 0rpx;font-size: 28rpx !important;padding-bottom: 0rpx;padding-right: 0rpx;}.flex8-clz {padding-top: 16rpx;padding-left: 20rpx;padding-bottom: 16rpx;padding-right: 20rpx;}.icon2 {font-size: 32rpx;}.text1-clz {padding-top: 0rpx;flex: 1;padding-left: 0rpx;font-size: 28rpx !important;padding-bottom: 0rpx;padding-right: 0rpx;}.flex11-clz {background-color: #ffffff;margin-left: 0rpx;width: calc(100% - 0rpx - 0rpx) !important;margin-top: 20rpx;margin-bottom: 0rpx;border-bottom: 2rpx solid #eee;margin-right: 0rpx;}.flex12-clz {padding-top: 16rpx;padding-left: 10rpx;padding-bottom: 16rpx;border-bottom: 2rpx solid #eee;padding-right: 10rpx;}.icon4-clz {color: #00bc25;}.icon4 {font-size: 32rpx;}.text2-clz {padding-top: 0rpx;flex: 1;padding-left: 0rpx;font-size: 28rpx !important;padding-bottom: 0rpx;padding-right: 0rpx;}.flex13-clz {padding-top: 16rpx;padding-left: 20rpx;padding-bottom: 16rpx;padding-right: 20rpx;}.icon5 {font-size: 32rpx;}.text4-clz {padding-top: 0rpx;flex: 1;padding-left: 0rpx;font-size: 28rpx !important;padding-bottom: 0rpx;padding-right: 0rpx;}.flex5-clz {background-color: #ffffff;margin-left: 0rpx;width: calc(100% - 0rpx - 0rpx) !important;margin-top: 20rpx;margin-bottom: 0rpx;border-bottom: 2rpx solid #eee;margin-right: 0rpx;}.flex14-clz {padding-top: 16rpx;padding-left: 10rpx;padding-bottom: 16rpx;border-bottom: 2rpx solid #eee;padding-right: 10rpx;}.line1-clz {flex: 1;}.text5-clz {margin-left: 10rpx;font-size: 28rpx !important;margin-top: 10rpx;margin-bottom: 10rpx;margin-right: 10rpx;}.line-clz {flex: 1;}.ucontent1-clz {padding-top: 16rpx;padding-left: 20rpx;padding-bottom: 16rpx;border-bottom: 2rpx solid #eee;padding-right: 20rpx;}.flex3-clz {border-top: 2rpx solid #eee;padding-top: 16rpx;border-bottom-left-radius: 0rpx;color: #747474;bottom: 0rpx;padding-left: 16rpx;padding-bottom: 16rpx;border-top-right-radius: 20rpx;background-color: #ffffff;box-shadow: 0rpx 2rpx 6rpx rgba(31, 31, 31, 0.21);overflow: hidden;left: 0rpx;border-top-left-radius: 20rpx;border-bottom-right-radius: 0rpx;padding-right: 16rpx;}.button1-button-clz {margin: 6rpx !important;}.flex20-clz {background-color: #d6d6d6;padding-top: 16rpx;border-bottom-left-radius: 200rpx;overflow: hidden;font-weight: bold;padding-left: 10rpx;font-size: 28rpx !important;padding-bottom: 16rpx;border-top-left-radius: 200rpx;border-top-right-radius: 200rpx;border-bottom-right-radius: 200rpx;padding-right: 10rpx;}.flex15-clz {background-color: #d6d6d6;padding-top: 16rpx;border-bottom-left-radius: 200rpx;overflow: hidden;font-weight: bold;padding-left: 10rpx;font-size: 28rpx !important;padding-bottom: 16rpx;border-top-left-radius: 200rpx;border-top-right-radius: 200rpx;border-bottom-right-radius: 200rpx;padding-right: 10rpx;}.flex2-clz {padding-top: 16rpx;border-bottom-left-radius: 200rpx;overflow: hidden;font-weight: bold;padding-left: 10rpx;font-size: 28rpx !important;padding-bottom: 16rpx;border-top-left-radius: 200rpx;border-top-right-radius: 200rpx;border-bottom-right-radius: 200rpx;padding-right: 10rpx;}.container335134 {padding-bottom: 160rpx;background-color: #f5f5f5;}
</style>

个人中心

个人中心把其他功能串起来,方便发布其他内容 

<template><view class="container container335134"><!-- #ifdef MP-WEIXIN --><u-navbar @change="changeNavbarHeight" :isFixed="true" :isMarginRight="false" :borderBottom="false" title="" :background="{}" :backTextStyle="{ color: 'inherit' }" backIconColor="#fff" titleColor="inherit" :isHome="false" :isBack="false"><view class="flex align-center diygw-text-md text-bold align-center flex-nowrap diygw-col-24"> </view></u-navbar><!--  #endif --><view class="flex diygw-col-24 flex-direction-column items-start flex-nowrap flex73-clz"><view class="flex flex-wrap diygw-col-24 items-center flex74-clz"><image :src="userInfo.avatar || '/static/avatar.png'" class="image8-size diygw-image diygw-col-0 image8-clz" mode="widthFix"></image><view class="flex flex-wrap diygw-col-0 justify-between flex3-clz"><text class="diygw-text-line1 diygw-col-0 text5-clz">{{ userInfo.nickname || '请先登录' }}</text></view></view><view class="flex flex-wrap diygw-col-24 flex-direction-column flex-clz"><view class="flex flex-wrap diygw-col-24"><view class="flex flex-wrap diygw-col-8 flex-direction-column items-center" @tap="navigateTo" data-type="page" data-url="/pages/cms/cate"><image src="/static/sc.png" class="image7-size diygw-image diygw-col-0" mode="widthFix"></image><text class="diygw-text-line1 diygw-col-0"> 我的收藏 </text></view><view class="flex flex-wrap diygw-col-8 flex-direction-column items-center" @tap="navigateTo" data-type="page" data-url="/pages/huodong/mydata"><image src="/static/bmjl.png" class="image10-size diygw-image diygw-col-0" mode="widthFix"></image><text class="diygw-text-line1 diygw-col-0"> 我的报名 </text></view><view class="flex flex-wrap diygw-col-8 flex-direction-column items-center" @tap="navigateTo" data-type="page" data-url="/pages/article" data-id="1"><image src="/static/gy.png" class="image11-size diygw-image diygw-col-0" mode="widthFix"></image><text class="diygw-text-line1 diygw-col-0"> 关于我们 </text></view></view></view><view class="flex flex-wrap diygw-col-24 flex-direction-column flex1-clz"><view class="flex flex-wrap diygw-col-24"><view class="flex flex-wrap diygw-col-24 items-center flex2-clz" @tap="navigateTo" data-type="page" data-url="/pages/huodong/index"><image src="/static/yy.png" class="image17-size diygw-image diygw-col-0" mode="widthFix"></image><text class="diygw-text-line1 diygw-col-0 text-clz"> 我的活动 </text></view><view class="flex flex-wrap diygw-col-24 items-center flex27-clz" @tap="navigateTo" data-type="phone" data-phone="15913132246"><image src="/static/kfdh.png" class="image12-size diygw-image diygw-col-0" mode="widthFix"></image><text class="diygw-text-line1 diygw-col-0 text18-clz"> 客服电话 </text></view><view class="flex flex-wrap diygw-col-24 items-center flex30-clz" @tap="navigateTo" data-type="page" data-url="/pages/msg/edit"><image src="/static/fkjl.png" class="image19-size diygw-image diygw-col-0" mode="widthFix"></image><text class="diygw-text-line1 diygw-col-0 text21-clz"> 在线预约 </text></view><view class="flex flex-wrap diygw-col-24 items-center flex5-clz" @tap="navigateTo" data-type="page" data-url="/pages/article" data-id="1"><image src="/static/gy.png" class="image-size diygw-image diygw-col-0" mode="widthFix"></image><text class="diygw-text-line1 diygw-col-0 text1-clz"> 关于我们 </text></view></view></view><view v-if="userInfo.username == 'admin'" class="flex flex-wrap diygw-col-24 flex-direction-column flex7-clz"><text class="diygw-col-24 text17-clz"> 管理员管理功能 </text><view class="flex flex-wrap diygw-col-24"><view class="flex flex-wrap diygw-col-6 flex-direction-column items-center" @tap="navigateTo" data-type="page" data-url="/pages/cms/cate"><image src="/static/cl.png" class="image2-size diygw-image diygw-col-0 image2-clz" mode="widthFix"></image><text class="diygw-text-line1 diygw-col-0 text3-clz"> 我的收藏 </text></view><view class="flex flex-wrap diygw-col-6 flex-direction-column items-center" @tap="navigateTo" data-type="page" data-url="/pages/cms/article"><image src="/static/zxxjsbbf.png" class="image9-size diygw-image diygw-col-0 image9-clz" mode="widthFix"></image><text class="diygw-text-line1 diygw-col-0 text11-clz"> 文章管理 </text></view><view class="flex flex-wrap diygw-col-6 flex-direction-column items-center" @tap="navigateTo" data-type="page" data-url="/pages/cms/product"><image src="/static/zxxjsbbf.png" class="image13-size diygw-image diygw-col-0 image13-clz" mode="widthFix"></image><text class="diygw-text-line1 diygw-col-0 text14-clz"> 产品管理 </text></view><view class="flex flex-wrap diygw-col-6 flex-direction-column items-center" @tap="navigateTo" data-type="page" data-url="/pages/cms/swiper"><image src="/static/cb.png" class="image14-size diygw-image diygw-col-0 image14-clz" mode="widthFix"></image><text class="diygw-text-line1 diygw-col-0 text15-clz"> 轮播管理 </text></view><view class="flex flex-wrap diygw-col-6 flex-direction-column items-center" @tap="navigateTo" data-type="page" data-url="/pages/cms/notice"><image src="/static/cb.png" class="image15-size diygw-image diygw-col-0 image15-clz" mode="widthFix"></image><text class="diygw-text-line1 diygw-col-0 text16-clz"> 消息管理 </text></view></view></view></view><view class="flex flex-wrap diygw-col-24 items-end diygw-bottom flex6-clz"><view class="flex flex-wrap diygw-col-6 flex-direction-column items-center flex8-clz" @tap="navigateTo" data-type="page" data-url="/pages/index" data-redirect="1"><view class="flex flex-wrap diygw-col-0 flex-direction-column items-center"><image src="/static/sy3.png" class="image1-size diygw-image diygw-col-0" mode="widthFix"></image></view><text class="diygw-text-line1 diygw-col-0"> 首页 </text></view><view class="flex flex-wrap diygw-col-6 flex-direction-column items-center flex10-clz" @tap="navigateTo" data-type="page" data-url="/pages/huodong" data-redirect="1"><view class="flex flex-wrap diygw-col-0 flex-direction-column items-center"><image src="/static/cp1.png" class="image3-size diygw-image diygw-col-0" mode="widthFix"></image></view><text class="diygw-text-line1 diygw-col-0"> 活动 </text></view><view class="flex flex-wrap diygw-col-6 flex-direction-column items-center flex14-clz" @tap="navigateTo" data-type="page" data-url="/pages/articles" data-redirect="1"><view class="flex flex-wrap diygw-col-0 flex-direction-column items-center"><text class="diygw-text-line1 diygw-col-0 animate__animated animate__heartBeat animate__infinite text7-clz"> </text><image src="/static/xw1.png" class="image4-size diygw-image diygw-col-0" mode="widthFix"></image></view><text class="diygw-text-line1 diygw-col-0"> 新闻资讯 </text></view><view class="flex flex-wrap diygw-col-6 flex-direction-column items-center flex15-clz"><view class="flex flex-wrap diygw-col-0 flex-direction-column items-center"><image src="/static/wd1.png" class="image5-size diygw-image diygw-col-0" mode="widthFix"></image></view><text class="diygw-text-line1 diygw-col-0 text9-clz"> 我的 </text></view></view><view class="clearfix"></view></view>
</template><script>export default {data() {return {//用户全局信息userInfo: {},//页面传参globalOption: {},//自定义全局变量globalData: {},navbarHeight: 0};},onShow() {this.setCurrentPage(this);},onLoad(option) {this.setCurrentPage(this);if (option) {this.setData({globalOption: this.getOption(option)});}this.init();},methods: {async init() {await this.isloginFunction();},// 判断是否登录 自定义方法async isloginFunction(param) {let thiz = this;if (!this.$session.getToken()) {//比如未登录,转身到其他页面等this.showToast('请先登录');this.navigateTo({type: 'page',url: 'login'});return;}},changeNavbarHeight(val) {this.navbarHeight = val;}}};
</script><style lang="scss" scoped>.flex73-clz {margin-left: 10rpx;padding-top: 20rpx;padding-left: 20rpx;width: calc(100% - 10rpx - 10rpx) !important;padding-bottom: 20rpx;margin-top: 10rpx;margin-bottom: 10rpx;margin-right: 10rpx;padding-right: 20rpx;}.flex74-clz {margin-left: 0rpx;width: calc(100% - 0rpx - 0rpx) !important;margin-top: 10rpx;margin-bottom: 10rpx;margin-right: 0rpx;}.image8-clz {border-bottom-left-radius: 120rpx;overflow: hidden;border-top-left-radius: 120rpx;border-top-right-radius: 120rpx;border-bottom-right-radius: 120rpx;}.image8-size {height: 96rpx !important;width: 96rpx !important;}.flex3-clz {padding-top: 10rpx;flex: 1;padding-left: 10rpx;padding-bottom: 10rpx;padding-right: 10rpx;}.text5-clz {font-weight: bold;font-size: 40rpx !important;}.flex-clz {padding-top: 20rpx;border-bottom-left-radius: 12rpx;padding-left: 10rpx;padding-bottom: 20rpx;border-top-right-radius: 12rpx;margin-right: 0rpx;background-color: #ffffff;margin-left: 0rpx;overflow: hidden;width: calc(100% - 0rpx - 0rpx) !important;border-top-left-radius: 12rpx;margin-top: 20rpx;border-bottom-right-radius: 12rpx;margin-bottom: 20rpx;padding-right: 10rpx;}.image7-size {height: 72rpx !important;width: 72rpx !important;}.image10-size {height: 72rpx !important;width: 72rpx !important;}.image11-size {height: 72rpx !important;width: 72rpx !important;}.flex1-clz {padding-top: 10rpx;border-bottom-left-radius: 12rpx;padding-left: 10rpx;padding-bottom: 10rpx;border-top-right-radius: 12rpx;margin-right: 0rpx;background-color: #ffffff;margin-left: 0rpx;overflow: hidden;width: calc(100% - 0rpx - 0rpx) !important;border-top-left-radius: 12rpx;margin-top: 20rpx;border-bottom-right-radius: 12rpx;margin-bottom: 20rpx;padding-right: 10rpx;}.flex2-clz {margin-left: 10rpx;padding-top: 10rpx;padding-left: 10rpx;width: calc(100% - 10rpx - 10rpx) !important;padding-bottom: 10rpx;margin-top: 10rpx;margin-bottom: 10rpx;border-bottom: 2rpx solid #eee;margin-right: 10rpx;padding-right: 10rpx;}.image17-size {height: 60rpx !important;width: 60rpx !important;}.text-clz {padding-top: 10rpx;padding-left: 10rpx;padding-bottom: 10rpx;padding-right: 10rpx;}.flex27-clz {margin-left: 10rpx;padding-top: 10rpx;padding-left: 10rpx;width: calc(100% - 10rpx - 10rpx) !important;padding-bottom: 10rpx;margin-top: 10rpx;margin-bottom: 10rpx;border-bottom: 2rpx solid #eee;margin-right: 10rpx;padding-right: 10rpx;}.image12-size {height: 60rpx !important;width: 60rpx !important;}.text18-clz {padding-top: 10rpx;padding-left: 10rpx;padding-bottom: 10rpx;padding-right: 10rpx;}.flex30-clz {margin-left: 10rpx;padding-top: 10rpx;padding-left: 10rpx;width: calc(100% - 10rpx - 10rpx) !important;padding-bottom: 10rpx;margin-top: 10rpx;margin-bottom: 10rpx;border-bottom: 2rpx solid #eee;margin-right: 10rpx;padding-right: 10rpx;}.image19-size {height: 64rpx !important;width: 64rpx !important;}.text21-clz {padding-top: 10rpx;padding-left: 10rpx;padding-bottom: 10rpx;padding-right: 10rpx;}.flex5-clz {margin-left: 10rpx;padding-top: 10rpx;padding-left: 10rpx;width: calc(100% - 10rpx - 10rpx) !important;padding-bottom: 10rpx;margin-top: 10rpx;margin-bottom: 10rpx;border-bottom: 2rpx solid #eee;margin-right: 10rpx;padding-right: 10rpx;}.image-size {height: 64rpx !important;width: 64rpx !important;}.text1-clz {padding-top: 10rpx;padding-left: 10rpx;padding-bottom: 10rpx;padding-right: 10rpx;}.flex7-clz {padding-top: 10rpx;border-bottom-left-radius: 12rpx;padding-left: 10rpx;padding-bottom: 10rpx;border-top-right-radius: 12rpx;margin-right: 0rpx;background-color: #ffffff;margin-left: 0rpx;overflow: hidden;width: calc(100% - 0rpx - 0rpx) !important;border-top-left-radius: 12rpx;margin-top: 20rpx;border-bottom-right-radius: 12rpx;margin-bottom: 20rpx;padding-right: 10rpx;}.text17-clz {margin-left: 10rpx;padding-top: 10rpx;font-weight: bold;padding-left: 10rpx;width: calc(100% - 10rpx - 10rpx) !important;font-size: 28rpx !important;padding-bottom: 10rpx;margin-top: 10rpx;margin-bottom: 10rpx;margin-right: 10rpx;padding-right: 10rpx;}.image2-clz {border-bottom-left-radius: 120rpx;overflow: hidden;border-top-left-radius: 120rpx;border-top-right-radius: 120rpx;border-bottom-right-radius: 120rpx;}.image2-size {height: 80rpx !important;width: 80rpx !important;}.text3-clz {padding-top: 10rpx;padding-left: 10rpx;padding-bottom: 10rpx;padding-right: 10rpx;}.image9-clz {border-bottom-left-radius: 120rpx;overflow: hidden;border-top-left-radius: 120rpx;border-top-right-radius: 120rpx;border-bottom-right-radius: 120rpx;}.image9-size {height: 80rpx !important;width: 80rpx !important;}.text11-clz {padding-top: 10rpx;padding-left: 10rpx;padding-bottom: 10rpx;padding-right: 10rpx;}.image13-clz {border-bottom-left-radius: 120rpx;overflow: hidden;border-top-left-radius: 120rpx;border-top-right-radius: 120rpx;border-bottom-right-radius: 120rpx;}.image13-size {height: 80rpx !important;width: 80rpx !important;}.text14-clz {padding-top: 10rpx;padding-left: 10rpx;padding-bottom: 10rpx;padding-right: 10rpx;}.image14-clz {border-bottom-left-radius: 120rpx;overflow: hidden;border-top-left-radius: 120rpx;border-top-right-radius: 120rpx;border-bottom-right-radius: 120rpx;}.image14-size {height: 80rpx !important;width: 80rpx !important;}.text15-clz {padding-top: 10rpx;padding-left: 10rpx;padding-bottom: 10rpx;padding-right: 10rpx;}.image15-clz {border-bottom-left-radius: 120rpx;overflow: hidden;border-top-left-radius: 120rpx;border-top-right-radius: 120rpx;border-bottom-right-radius: 120rpx;}.image15-size {height: 80rpx !important;width: 80rpx !important;}.text16-clz {padding-top: 10rpx;padding-left: 10rpx;padding-bottom: 10rpx;padding-right: 10rpx;}.flex6-clz {border-top: 2rpx solid #e4e4e4;padding-top: 16rpx;border-bottom-left-radius: 0rpx;bottom: 0rpx;padding-left: 16rpx;padding-bottom: 16rpx;border-top-right-radius: 24rpx;background-color: #ffffff;box-shadow: 0rpx 4rpx 12rpx rgba(31, 31, 31, 0.16);overflow: visible;left: 0rpx;border-top-left-radius: 24rpx;border-bottom-right-radius: 0rpx;padding-right: 16rpx;}.flex8-clz {flex: 1;}.image1-size {height: 48rpx !important;width: 48rpx !important;}.flex10-clz {flex: 1;}.image3-size {height: 48rpx !important;width: 48rpx !important;}.flex14-clz {flex: 1;}.text7-clz {border: 2rpx solid #eee;border-bottom-left-radius: 40rpx;-webkit-animation-duration: 5000ms;color: #ffffff;animation-delay: 1000ms;-webkit-animation-delay: 1000ms;border-top-right-radius: 40rpx;right: -8rpx;background-color: rgba(255, 17, 17, 0.91);animation-duration: 5000ms;flex-shrink: 0;overflow: hidden;top: -8rpx;width: 16rpx !important;border-top-left-radius: 40rpx;border-bottom-right-radius: 40rpx;position: absolute;height: 16rpx !important;}.image4-size {height: 48rpx !important;width: 48rpx !important;}.flex15-clz {flex: 1;}.image5-size {height: 48rpx !important;width: 48rpx !important;}.text9-clz {color: #031aeb;}.container335134 {background-image: url(/static/loginbg.png);background-position: top center;background-size: cover;background-repeat: no-repeat;}
</style>

相关文章:

uniapp可视化-活动报名表单系统-代码生成器

活动报名表单系统小程序旨在为各类活动组织者提供一个便捷、高效的线上报名管理平台&#xff0c;同时为参与者提供简单易用的报名途径。 主要功能 活动发布&#xff1a;活动组织者可以发布活动的详细信息&#xff0c;包括活动名称、时间、地点、活动内容等。用户可以在小程序中…...

1.从零开始学会Vue--{{基础指令}}

全新专栏带你快速掌握Vue2Vue3 1.插值表达式{{}} 插值表达式是一种Vue的模板语法 我们可以用插值表达式渲染出Vue提供的数据 1.作用&#xff1a;利用表达式进行插值&#xff0c;渲染到页面中 表达式&#xff1a;是可以被求值的代码&#xff0c;JS引擎会将其计算出一个结果 …...

深入解析操作系统控制台:阿里云Alibaba Cloud Linux(Alinux)的运维利器

作为一位个人开发者兼产品经理&#xff0c;我的工作日常紧密围绕着云资源的运维和管理。在这个过程中&#xff0c;操作系统扮演了至关重要的角色&#xff0c;而操作系统控制台则成为了我们进行系统管理的得力助手。本文将详细介绍阿里云的Alibaba Cloud Linux操作系统控制台的功…...

CSS Grid 网格布局,以及 Flexbox 弹性盒布局模型,它们的适用场景是什么?

CSS Grid网格布局和Flexbox弹性盒布局模型都是现代CSS布局的重要工具&#xff0c;它们各自具有独特的优势和适用场景。 作为前端开发工程师&#xff0c;理解这些布局模型的差异和适用场景对于编写高效、可维护的代码至关重要。 CSS Grid网格布局 适用场景&#xff1a; 复杂…...

2025.2.16机器学习笔记:TimeGan文献阅读

2025.2.9周报 一、文献阅读题目信息摘要Abstract创新点网络架构一、嵌入函数二、恢复函数三、序列生成器四、序列判别器损失函数 实验结论后续展望 一、文献阅读 题目信息 题目&#xff1a; Time-series Generative Adversarial Networks会议&#xff1a; Neural Information…...

高通推出骁龙游戏超级分辨率™:充分释放移动游戏性能,带来更持久的续航

Snapdragon Elite Gaming 一直致力于为每位用户打造卓越游戏体验。骁龙支持众多端游级特性&#xff0c;包括144FPS游戏体验、True 10-bit HDR支持的最高视觉质量的超流畅图形&#xff0c;让玩家可以畅享超10亿色的游戏体验。骁龙将许多移动端首创特性引入备受玩家喜爱的游戏中&…...

golangAPI调用deepseek

目录 1.deepseek官方API调用文档1.访问格式2.curl组装 2.go代码1. config 配置2.模型相关3.错误处理4.deepseekAPI接口实现5. 调用使用 3.响应实例 1.deepseek官方API调用文档 1.访问格式 现在我们来解析这个curl 2.curl组装 // 这是请求头要加的参数-H "Content-Type:…...

SOC芯片前端设计对芯片电源完整性的影响

在进行芯片的电源完整性时&#xff0c;因为PI受影响的因素较多&#xff0c;出现问题debug也比较难&#xff0c;所以在进行芯片设计时&#xff0c;需要端到端从前到后进行考虑设计&#xff0c;本篇文章将从芯片前端设计的角度来看看哪些因素会影响到PI的设计。 芯片前端设计的主…...

【区块链】零知识证明基础概念详解

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 零知识证明基础概念详解引言1. 零知识证明的定义与特性1.1 基本定义1.2 三个核心…...

面基Spring Boot项目中实用注解一

在Spring Boot项目中&#xff0c;实用注解根据功能可以分为多个类别。以下是常见的注解分类、示例说明及对比分析&#xff1a; 1. 核心配置注解 SpringBootApplication 作用&#xff1a;标记主启动类&#xff0c;组合了Configuration、EnableAutoConfiguration和ComponentScan…...

最新智能优化算法: 中华穿山甲优化( Chinese Pangolin Optimizer ,CPO)算法求解23个经典函数测试集,MATLAB代码

中华穿山甲优化&#xff08; Chinese Pangolin Optimizer &#xff0c;CPO&#xff09;算法由GUO Zhiqing 等人提出&#xff0c;该算法的灵感来自中华穿山甲独特的狩猎行为&#xff0c;包括引诱和捕食行为。 算法流程如下&#xff1a; 1. 开始 设置算法参数和最大迭代次数&a…...

shell脚本备份MySQL数据库和库下表

目录 注意&#xff1a; 一.脚本内容 二.执行效果 三.创建定时任务 注意&#xff1a; 以下为对MySQL5.7.42版本数据库备份shell脚本参考运行备份的机器请确认mysqldump版本>5.7&#xff0c;否则备份参数--set-gtid-purgedOFF无效&#xff0c;考虑到一般数据库节点和备份…...

Unity Shader Graph 2D - Procedural程序化图形之渐变的正弦波形

前言 正弦波形也是一种常用、常见的程序化图形&#xff0c;合理的使用正弦波形会创作出一些有趣、美观和丰富的效果&#xff0c;本文将使用Unity Shader Graph来实现一个正弦波形效果&#xff0c;帮助理解和实践Unity Shader Graph以及正弦函数。 创建一个名为SineWave的Shader…...

【算法与数据结构】并查集详解+题目

目录 一&#xff0c;什么是并查集 二&#xff0c;并查集的结构 三&#xff0c;并查集的代码实现 1&#xff0c;并查集的大致结构和初始化 2&#xff0c;find操作 3&#xff0c;Union操作 4&#xff0c;优化 小结&#xff1a; 四&#xff0c;并查集的应用场景 省份…...

国家队出手!DeepSeek上线国家超算互联网平台!

目前,国家超算互联网平台已推出 DeepSeek – R1 模型的 1.5B、7B、8B、14B 版本,后续还会在近期更新 32B、70B 等版本。 DeepSeek太火爆了!在这个春节档,直接成了全民热议的话题。 DeepSeek也毫无悬念地干到了全球增速最快的AI应用。这几天,国内的云计算厂家都在支持Dee…...

H5接入支付宝手机网站支付并实现

小程序文档 - 支付宝文档中心 1.登录 支付宝开放平台 创建 网页/移动应用 2.填写创建应用信息 3.配置开发设置 4.网页/移动应用&#xff1a;需要手动上线。提交审核后&#xff0c;预计 1 个工作日的审核时间。详细步骤可点击查看 上线应用 。应用上线后&#xff0c;还需要完成…...

Win10环境借助DockerDesktop部署大数据时序数据库Apache Druid

Win10环境借助DockerDesktop部署最新版大数据时序数据库Apache Druid32.0.0 前言 大数据分析中&#xff0c;有一种常见的场景&#xff0c;那就是时序数据&#xff0c;简言之&#xff0c;数据一旦产生绝对不会修改&#xff0c;随着时间流逝&#xff0c;每个时间点都会有个新的…...

(三)Axure制作转动的唱片

效果图 属性&#xff1a; 图标库&#xff1a;iconfont-阿里巴巴矢量图标库 方形图片转为圆角图片&#xff0c;裁剪&#xff0c;然后加圆角&#xff0c; 唱片和底图是两个图片&#xff0c;点击播放&#xff0c;唱片在旋转。 主要是播放按钮和停止按钮&#xff0c;两个动态面板…...

[JVM篇]分代垃圾回收

分代垃圾回收 分代收集法是目前大部分 JVM 所采用的方法&#xff0c;其核心思想是根据对象存活的不同生命周期将内存划分为不同的域&#xff0c;一般情况下将 GC 堆划分为老生代(Tenured/Old Generation)和新生代(Young Generation)。老生代的特点是每次垃圾回收时只有少量对象…...

SpringBoot多数据源实践:基于场景的构建、实现和事务一体化研究

1. 多数据源应用场景剖析 1.1 业务驱动的多数据源需求 数据量与业务复杂度引发的分库分表&#xff1a;在现代企业级应用中&#xff0c;随着业务的不断拓展和用户量的持续增长&#xff0c;数据量呈爆炸式增长。例如&#xff0c;在大型电商平台中&#xff0c;用户数据、订单数据…...

鸿蒙应用开发者基础

目录 判断题 单选题 多选题 判断题 1、 在http模块中&#xff0c;多个请求可以使用同一个httpRequest对象&#xff0c;httpRequest对象可以复用。&#xff08;错误&#xff09; 2、订阅dataReceiverProgress响应事件是用来接收HTTP流式响应数据。&#xff08;错误&#xff0…...

Java面试第二山!《计算机网络》!

在 Java 面试里&#xff0c;计算机网络知识是高频考点&#xff0c;今天就来盘点那些最容易被问到的计算机网络面试题&#xff0c;帮你轻松应对面试&#xff0c;也方便和朋友们一起探讨学习。 一、HTTP 和 HTTPS 的区别 1. 面试题呈现 HTTP 和 HTTPS 有什么区别&#xff1f;在…...

2025最新Java面试题大全(整理版)2000+ 面试题附答案详解

很多 Java 工程师的技术不错&#xff0c;但是一面试就头疼&#xff0c;10 次面试 9 次都是被刷&#xff0c;过的那次还是去了家不知名的小公司。 问题就在于&#xff1a;面试有技巧&#xff0c;而你不会把自己的能力表达给面试官。 应届生&#xff1a;你该如何准备简历&#…...

低空经济:开启未来空中生活的全新蓝海

引言 随着科技的进步&#xff0c;我们不再仅仅依赖地面交通和传统物流。你是否曾幻想过&#xff0c;未来的某一天&#xff0c;快递、外卖可以像魔法一样直接从空中送到你手中&#xff1f;或者&#xff0c;你能乘坐小型飞行器&#xff0c;快速穿梭于城市之间&#xff0c;告别拥堵…...

【机器学习】线性回归与一元线性回归

【机器学习系列】 KNN算法 KNN算法原理简介及要点 特征归一化的重要性及方式线性回归算法 线性回归与一元线性回归 线性回归模型的损失函数 多元线性回归 多项式线性回归 线性回归与一元线性回归 V1.1线性回归问题线性方程的最优解一元线性回归一元线性回归的方程一元线性回归…...

MongoDB 7 分片副本集升级方案详解(上)

#作者&#xff1a;任少近 文章目录 前言&#xff1a;Mongodb版本升级升级步骤环境1.1环境准备1.2standalone升级1.3分片、副本集升级 前言&#xff1a;Mongodb版本升级 在开始升级之前&#xff0c;请参阅 MongoDB下个版本中的兼容性变更文档&#xff0c;以确保您的应用程序和…...

Fiori APP配置中的Semantic object 小bug

在配置自开发程序的Fiori Tile时&#xff0c;需要填入Semantic Object。正常来说&#xff0c;是需要通过事务代码/N/UI2/SEMOBJ来提前新建的。 但是在S4 2022中&#xff0c;似乎存在一个bug&#xff0c;即无需新建也能输入自定义的Semantic Object。 如下&#xff0c;当我们任…...

坑多多之AC8257 i2c1 rtc-pcf8563

pcf85163 ordering information Ordering information Package Description Version Marking code PCF85163T/1 SO8 ① SOT96-1 PF85163 PCF85163TS/1 TSSOP8 ② SOT505-1 85163 ①plastic small outline package; 8 leads;body width 3.9 mm ②plastic thin…...

制作一个项目用于研究elementUI的源码

需求&#xff1a;修改el-tooltip的颜色&#xff0c;发现传递参数等方法都不太好用&#xff0c;也可以使用打断点的方式&#xff0c;但也有点麻烦&#xff0c;因此打算直接修改源码&#xff0c;把组件逻辑给修改了 第一步下载源码 源码地址 GitHub - ElemeFE/element: A Vue.j…...

Docker高级篇

1.Mysql主从复制Docker版本 mysql主从复制原理 binlog 1.新建主服务器容器实例 docker run -d -p 3307:3306 --privilegedtrue \ -v /opt/mysql8.4.3/log:/var/log/mysql \ -v /opt/mysql8.4.3/conf:/etc/mysql/conf.d \ -v /opt/mysql8.4.3/data:/var/lib/mysql \ -e MYSQL…...

OSI 参考模型和 TCP/IP 参考模型

数据通信是很复杂的&#xff0c;很难在一个协议中完成所有功能。因此在制定协议时经常采用的思路是将复杂的数据通信功能由若干协议分别完成&#xff0c;然后将这些协议按照一定的方式组织起来。最典型的是采用分层的方式来组织协议&#xff0c;每一层都有一套清晰明确的功能和…...

rocketmq-netty通信设计-request和response

1、NettyRemotingServer启动分析 org.apache.rocketmq.remoting.netty.NettyRemotingServer#start public void start() {this.defaultEventExecutorGroup new DefaultEventExecutorGroup(nettyServerConfig.getServerWorkerThreads(),new ThreadFactory() {private AtomicI…...

初识计算机网络

从此篇我将开始网络新篇章&#xff01; 1. 网络发展史 最初的计算机之间相互独立存在&#xff0c;每个计算机只能持有自己的数据&#xff0c;数据无法共享。此时的计算机为独立模式 随着时代的发展&#xff0c;越来越需要计算机之间互相通信&#xff0c;共享软件和数据&#x…...

kamailio常见问题解答

常见问题解答 本页面接受贡献&#xff0c;你必须通过注册表单创建一个用户账户&#xff1a; https://www.kamailio.org/wiki/start?doregister 如果你有一个适合收录进常见问题解答的问题&#xff0c;并且你不知道答案&#xff0c;那就添加这个问题&#xff0c;并将答案设置…...

Flask框架入门完全指南

一、初识Flask&#xff1a;轻量级框架的魅力 1.1 Flask框架定位 Flask作为Python最受欢迎的轻量级Web框架&#xff0c;以"微核心可扩展"的设计哲学著称。其核心代码仅约2000行&#xff0c;却支持通过扩展实现完整Web开发功能。这种设计使得开发者可以&#xff1a; …...

用deepseek学大模型05逻辑回归

deepseek.com:逻辑回归的目标函数&#xff0c;损失函数&#xff0c;梯度下降 标量和矩阵形式的数学推导&#xff0c;pytorch真实能跑的代码案例以及模型,数据&#xff0c;预测结果的可视化展示&#xff0c; 模型应用场景和优缺点&#xff0c;及如何改进解决及改进方法数据推导。…...

为什么要选择3D机器视觉检测

选择3D机器视觉检测的原因主要包括以下几点&#xff1a; 高精度测量 复杂几何形状&#xff1a;能够精确测量复杂的三维几何形状。 微小细节&#xff1a;可捕捉微小细节&#xff0c;适用于高精度要求的行业。全面数据获取 深度信息&#xff1a;提供深度信息&#xff0c;弥补2D视…...

CentOS上安装WordPress

在CentOS上安装WordPress是一个相对直接的过程&#xff0c;可以通过多种方法完成&#xff0c;包括使用LAMP&#xff08;Linux, Apache, MySQL, PHP&#xff09;栈或使用更现代的LEMP&#xff08;Linux, Nginx, MySQL, PHP&#xff09;栈。 我选择的是&#xff08;Linux, Nginx…...

webshell通信流量分析

环境安装 Apatche2 php sudo apt install apache2 -y sudo apt install php libapache2-mod-php php-mysql -y echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php sudo ufw allow Apache Full 如果成功访问info.php&#xff0c;则环境安…...

高效高并发调度架构

以下是从架构层面为你提供的适合多核CPU、多GPU环境下API客户端、服务端高级调度&#xff0c;以实现高效并发大规模与用户交互的技术栈&#xff1a; 通信协议 gRPC&#xff1a;基于HTTP/2协议&#xff0c;具有高性能、低延迟的特点&#xff0c;支持二进制序列化&#xff08;通…...

MYSQL下载安装及使用

MYSQL官网下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 也可以直接在服务器执行指令下载&#xff0c;但是下载速度比较慢。还是自己下载好拷贝过来比较快。 wget https://dev.mysql.com/get/Downloads/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz 1…...

Python elasticsearch客户端连接常见问题整理

python 访问 elasticsearch 在python语言中&#xff0c;我们一般使用 pip install elasticsearch 软件包&#xff0c;来访问es服务器。 正确用法 本地安装elasticsearch时&#xff0c;应指定与服务端相同的大版本号&#xff1a; pip install elasticsearch7.17.0然后就可以…...

相得益彰,Mendix AI connector 秒连DeepSeek ,实现研发制造域场景

在当今快速发展的科技领域&#xff0c;低代码一体化平台已成为企业数字化转型的关键工具&#xff0c;同时&#xff0c;大型语言模型&#xff08;LLM&#xff09;如 DeepSeek 在自动生成代码和提供智能建议方面表现出色。 Mendix 于近期发布的 GenAI 万能连接器&#xff0c;目前…...

Python PyCharm DeepSeek接入

Python PyCharm DeepSeek接入 创建API key 首先进入DeepSeek官网&#xff0c;https://www.deepseek.com/ 点击左侧“API Keys”&#xff0c;创建API key&#xff0c;输出名称为“AI” 点击“创建"&#xff0c;将API key保存&#xff0c;复制在其它地方。 在PyCharm中下…...

pytest测试专题 - 2.1 一种推荐的测试目录结构

<< 返回目录 1 pytest测试专题 - 2.1 一种推荐的测试目录结构 2 pytest 项目目录结构及文件功能 以下是典型 pytest 项目中常见的文件和目录结构及其功能的概述&#xff1a; 2.1 文件/目录结构 文件/目录功能描述test_ 文件* 主测试文件&#xff0c;命名通常以 test_…...

Dify本地安装

目录 方式一docker安装&#xff1a; 方式二源码安装&#xff1a; Dify本地安装可以用docker方式&#xff0c;和源码编译方式。 先到云厂商平台申请一台Centos系统云主机&#xff0c;网络选择海外&#xff0c;需要公网IP&#xff0c;再按一下流程操作&#xff1a; 方式一doc…...

MySQL、MariaDB 和 TDSQL 的区别

MySQL、MariaDB 和 TDSQL 是三种不同的数据库管理系统&#xff0c;它们在设计理念、功能、性能和使用场景上有一些显著的区别。 以下是对这三者的详细比较和介绍。 1. MySQL 概述 类型&#xff1a;关系型数据库管理系统&#xff08;RDBMS&#xff09;。开发者&#xff1a;最…...

Java 设计模式之桥接模式

文章目录 Java 设计模式之桥接模式概述UML代码实现 Java 设计模式之桥接模式 概述 桥接模式(Bridge)&#xff1a;将抽象部分与它的实现部分分离&#xff0c;使它们都可以独立地变化。通过桥接模式&#xff0c;可以避免类爆炸问题&#xff0c;并提高系统的可扩展性。 UML 核心…...

【Linux】网络基础

目录 一、协议分层 &#xff08;一&#xff09;计算机网络 &#xff08;二&#xff09;协议分层 &#xff08;三&#xff09;OSI模型 &#xff08;四&#xff09;TCP/IP协议 二、网络传输过程 三、IP地址和MAC地址 &#xff08;一&#xff09;IP地址 &#xff08;二&a…...

[C++]多态详解

目录 一、多态的概念 二、静态的多态 三、动态的多态 3.1多态的定义 3.2虚函数 四、虚函数的重写&#xff08;覆盖&#xff09; 4.1虚函数 4.2三同 4.3两种特殊情况 &#xff08;1&#xff09;协变 &#xff08;2&#xff09;析构函数的重写 五、C11中的final和over…...