1454 lines
35 KiB
Vue
Raw Permalink Normal View History

<template>
<view class="allbg">
<view class="backImg flex flex-column align-items">
<!-- logo -->
<view class="title_logo">
<image src="/static/fabu/fabuhd.png" style="width: 237rpx; height: 57rpx"></image>
</view>
<view class="box flex flex-column align-items">
<view class="first flex flex-column align-items justify-start">
<view class="row flex align-items" style="margin-top: 25rpx;">
<span>
<input type="text" maxlength="20" placeholder="填写清晰的活动标题" class="inputl"
v-model="form.title" placeholder-class="bttop" />
</span>
<span style="font-size: 24rpx;color: #9C9C9C;">(必填20字内)</span>
</view>
<view class="row flex align-items textarea_fb" style="margin-top: 25rpx;">
<u--textarea v-model="form.content" maxlength="400" placeholder="描述一下活动的亮点、活动内容、推荐的人群、叫大家一起运动吧~"
height="60" placeholder-class="bttop"></u--textarea>
</view>
<span class="line-row" style="margin-top: 0;"></span>
<!-- 图片 -->
<view class="shenfen row flex flex-column" style="margin-top: 42rpx;">
<u-upload :fileList="fileList1" @afterRead="afterRead" :previewFullImage="true"
@delete="deletePic" @oversize="oversize" name="1" multiple :maxSize="1 * 1024 * 1024"
:maxCount="5">
<view class="pic_view">
<image src="@/static/index/upload1.png" mode="widthFix"
style="width: 44rpx;height: 44rpx;" />
<span class="texts">添加图片</span>
</view>
</u-upload>
</view>
<span class="line-row"></span>
<view class="row flex align-items" style="margin-top: 25rpx; ">
<span class="label flex align-items">
<image src="@/static/fabu/jhdd.png" mode="widthFix" style="width: 44rpx;height: 44rpx;padding-right: 8rpx;" />
集合地点
</span>
<span class="row-right" @click="choose()">
<input class="input" type="text" disabled="true" placeholder="请填写地址" v-model="form.address"
placeholder-class="plasty" />
<u-icon name="arrow-right" color="#323232"></u-icon>
</span>
</view>
<view class="row flex align-items textarea_mph" style="margin-top: 30rpx;">
<u--textarea v-model="form.address_detail" maxlength="400" placeholder-class="bttops"
placeholder="请输入详细地址/楼、门牌号"></u--textarea>
</view>
<view class="row flex align-items" style="margin: 30rpx 0;">
<span class="label flex align-items">
<image src="@/static/fabu/hdsj.png" mode="widthFix" style="width: 44rpx;height: 44rpx;padding-right: 8rpx;" />
活动时间
</span>
<span class="row-right" @click="dateShowHidden()">
<input type="text" placeholder="请选择活动时间" class="input" disabled="true" v-model="form.time"
placeholder-class="plasty" />
<u-icon name="arrow-right" color="#323232"></u-icon>
</span>
</view>
</view>
<view class="first flex flex-column align-items justify-start" style="margin-top: 20rpx;">
<view class="row flex align-items" style="margin-top: 25rpx;">
<span class="label flex align-items ">
<span style="color: #3D3D3D;">*</span>活动分类
</span>
<span class="row-right" @click="openBq">
<input type="text" placeholder="请选择活动分类" class="input" disabled="true"
v-model="form.cate_idsName" placeholder-class="plasty" />
<u-icon name="arrow-right" color="#323232"></u-icon>
</span>
</view>
<span class="line-row"></span>
<view class="row flex align-items" style="margin: 25rpx 0;" v-if="form.price != 0">
<span class="label flex align-items ">
<span style="color: #3D3D3D;">*</span>退款政策
</span>
<!-- -->
<span class="row-right" @click="tuikuan = true">
<input type="text" placeholder="请选择退款政策" class="input" disabled="true"
v-model="form.refund_idn" placeholder-class="plasty_c" />
<u-icon name="arrow-right" color="#323232"></u-icon>
</span>
</view>
</view>
<view class="first flex flex-column align-items justify-start" style="margin-top: 20rpx;">
<view class="row flex align-items" style="margin-top: 25rpx;">
<span class="label flex align-items ">
<span style="color: #3D3D3D;">*</span>
活动人数
</span>
<span class="row-right">
<input type="number" placeholder="请填写活动人数" class="input" v-model="form.stock"
/>
</span>
</view>
<span class="line-row"></span>
<view class="row flex align-items" style="margin-top: 25rpx;">
<span class="label flex align-items ">
<span style="color: #3D3D3D;">*</span>
活动价格
</span>
<span class="row-right">
<input type="text" placeholder="请填写活动价格" class="input" v-model="form.price"
placeholder-class="plasty" />
</span>
</view>
<span class="line-row"></span>
<view class="row flex align-items" style="margin: 25rpx 0;">
<span class="label flex align-items ">
<span style="color: #3D3D3D;">*</span>
报名时间
</span>
<span class="row-right" @click="birthShowHidden()">
<input type="text" placeholder="请选择报名时间" class="input" disabled="true"
v-model="form.sign_time" placeholder-class="plasty" />
<u-icon name="arrow-right" color="#323232"></u-icon>
</span>
</view>
</view>
</view>
<span style="margin: 30rpx 0 320rpx 0; width: 750rpx;" v-if="status == -1 || status == 2">
<cc-protocolBox :agree="agree" :protocolArr="protocolArr" @click="agree = false"
@protocolClick="protocolClick"></cc-protocolBox>
</span>
<view class="bottom flex align-items justify-center" v-if="status == -1 || status == 2">
<span class="flex align-items justify-center" @click="apply()" v-if="agree == true">确认发布</span>
<span class="flex align-items justify-center" v-if="agree == false"
style="background: #EEEEEE;color: #9C9C9C;">确认发布</span>
</view>
<!-- 退款政策 -->
<u-popup @touchmove.native.stop.prevent :closeable="false" :show="tuikuan" :round="22" mode="bottom"
@close="closetuikuan" @open="opentuikuan" :custom-style="popupStyletk">
<view class="popup_tkall">
<view class="popup_tk"> 选择退款政策</view>
<view class="closetk" @click="closetuikuan">取消</view>
<view class="confirmtk" @click="closetuikuan">确认</view>
<scroll-view scroll-y="true" class="popup-content">
<view class="popup-content-item flex align-items" :class="[{ active: currents === index }]"
v-for="(item, index) in refund_list" :key="index" @click="selectItem(index, item)">
<view style="width: 540rpx;">
<span class="popup-content-item-title">{{ item.title }}</span>
<span v-html="item.desc" class="popup-content-item-content"
style="margin-top: 20rpx;"></span>
</view>
<image v-if="currents === index" src="@/static/fabu/check.png" mode="widthFix"
style="width: 44rpx;height: 44rpx;" />
<image v-else src="@/static/fabu/nocheck.png" mode="widthFix"
style="width: 44rpx;height: 44rpx;" />
</view>
</scroll-view>
</view>
</u-popup>
2025-04-24 09:31:50 +08:00
<!-- 声明 -->
<u-popup @touchmove.native.stop.prevent :closeable="true" :show="show" :round="10" mode="center"
@close="close" @open="open" :custom-style="popupStyle">
<span style="font-size: 42rpx;font-weight: 800;margin: 12rpx 0 24rpx 0;height: 120rpx;">免责声明</span>
<scroll-view ref="scrollView" :scroll-top="scrollTop" :show-scrollbar='true'
@scrolltolower="handleScroll" scroll-y="true" style="height: 800rpx;margin-bottom: 24rpx;">
<view class="popup flex align-items flex-column">
<rich-text :nodes="Negotiate"></rich-text>
2025-04-24 09:31:50 +08:00
</view>
</scroll-view>
<view class="popup-footer">
<span class="zhixiao" v-if="agreeShow == false">我同意</span>
<span class="zhixiao shows_zhidao" v-if="agreeShow == true" @click="change">我同意</span>
</view>
</u-popup>
<!-- 活动分类 -->
<u-popup :show="showPopbq" mode="bottom" round="20" :customStyle="{ 'width': '750rpx', 'height': '1040rpx','zIndex': '20000'}"
:closeable="false" @close="closebq">
<image @click="closebq" src="@/static/center/close.png" mode="" style="width: 44rpx;height: 44rpx;position: absolute;right: 30rpx;top: -160rpx;z-index: 55;" ></image>
<view class="popup_bq">
<img src="https://naweigetetest2.hschool.com.cn/dyqc/hdfenlei.png" alt="" />
2025-04-24 09:31:50 +08:00
<view class="flex flex-column w-100 bqlist">
<scroll-view scroll-y="true" class="flex align-items allbqs">
<view class="titles_fl">最近使用</view>
<view class="flex align-items allmybqs">
<view class="flex align-items bqpiece" v-for="(item_bq, index) in list" :key="index">
<span>
{{ item_bq.name }}
</span>
<u-icon name="close" color="#babdc7" @click="removebq(index)"></u-icon>
</view>
2025-04-24 09:31:50 +08:00
</view>
<view class="titles_fl" style="margin-top: 50rpx;">全部标签</view>
2025-04-24 09:31:50 +08:00
<view style="display: flex; flex-wrap: wrap;">
<view class="flex align-items" :class="['bqpiece', { active: current === index }]"
v-for="(item, index) in bqList" :key="index">
<span @click="addbq(item, index)">
{{ item.name }}
</span>
2025-04-24 09:31:50 +08:00
</view>
</view>
</scroll-view>
</view>
</view>
</u-popup>
<!-- 活动时间 -->
<u-datetime-picker @cancel="datecel" ref="dateRef" title="开始时间" :minDate="minDate" confirmText="下一步"
@confirm="datefirm" :show="dateShow" v-model="form.date" mode="datetime"></u-datetime-picker>
<u-datetime-picker @cancel="datecel1" ref="dateRef" title="结束时间" :minDate="minDate1" @confirm="datefirm1"
:show="dateShow1" v-model="form.date1" mode="datetime"></u-datetime-picker>
<!-- 报名时间 -->
<u-datetime-picker @cancel="birthCancel" ref="birthRef" title="开始时间" :minDate="minDate"
@confirm="birthConfirm" :show="birthShow" v-model="form.birth" mode="datetime"></u-datetime-picker>
<u-datetime-picker @cancel="birthCancel1" ref="birthRef" title="结束时间" :minDate="minDate1"
@confirm="birthConfirm1" :show="birthShow1" v-model="form.birth1" mode="datetime"></u-datetime-picker>
</view>
<tab-bar :tabBarShow="1"></tab-bar>
</view>
</template>
<script>
import dayjs from 'dayjs';
import {
dateWeek
} from '../../utils/dateFormat'
export default {
data() {
return {
showPopbq: false,//标签弹窗
bqList: [],//标签列表
cate_id: '',//标签id
list: [],
refund_list: [],//退款list
peopleShow: false, //活动弹窗
inputValue: '', // 用于绑定输入框的值
inputType: 'text',// 输入框类型
birthShow: false, // 日期弹窗
birthShow1: false, // 报名日期弹窗
value: false,
scrollTop: 0,
minDate: dayjs().startOf('day').valueOf(),
minDate1: dayjs().startOf('day').valueOf(),
old: {
scrollTop: 0
},
status: -1,
reason: '',
dateShow: false,
dateShow1: false,
show: false,
tuikuan: false,
State: '',
Negotiate: null, // 入驻协议
agree: false,
agreeShow: false,
protocolArr: ["<入驻协议>"],
form: {
cate_ids: '',
// 活动分类名字
cate_idsName: "",
content: '',
refund_id: '',
refund_idn: '',
price: 1,
stock: '',
sign_time: '',
time: '',
images: '',
title: '',
address: '',
latitude: '',
longitude: '',
address_detail: '', //详细位置
date: dayjs().add(4,'hour').valueOf(), //活动开始时间
date1: dayjs().add(8,'hour').valueOf(), //活动结束时间
birth: dayjs().add(4,'hour').valueOf(), //报名开始日期
birth1: dayjs().add(8,'hour').valueOf(), //报名结束日期
},
apply_info: {},
popupStyle: {
width: '642rpx',
padding: '24rpx 24rpx 42rpx 24rpx',
height: '984rpx',
margin: '0 auto', // 水平居中
display: 'flex',
justifyContent: 'start',
alignItems: 'center',
flexColumn: 'column'
},
popupStyletk: {
width: '710rpx',
padding: '24rpx 24rpx 42rpx 24rpx',
height: '984rpx',
margin: '0 auto', // 水平居中
display: 'flex',
justifyContent: 'start',
alignItems: 'center',
flexColumn: 'column'
},
current: 0,
currents: 0,
institutionList: [],
images: '',
fileList1: [], // 用于存储第一个上传组件的文件列表
list1: '', // 存储第一个上传组件的图片URL最多3张
//活动转换的时间
times_b: '',
times_e: '',
//报名转换的时间
times_sinb: '',
times_sine: ''
};
},
onLoad() {
// this.tofb();
// this.searchStatus()
this.getAgreement()
this.getBqList();
this.getrefund_list();
this.getitembq();
},
filters: {
formatTimestamp(value) {
if (!value) return '';
const date = new Date(value * 1000); // 将秒转换为毫秒
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始需要加1并补零
const day = String(date.getDate()).padStart(2, '0'); // 补零
return `${year}-${month}-${day}`;
}
},
methods: {
//选择政策
selectItem(index, item) {
this.currents = index;
this.form.refund_id = item.id;
this.form.refund_idn = item.title;
},
//登录及发布
// tofb() {
// const token = uni.getStorageSync('token')
// if (token) {
// return true;
// } else {
// uni.showToast({
// title: '请登录',
// icon: 'none',
// duration: 2000,
// complete: function() {
// setTimeout(function() {
// uni.switchTab({
// url: '/pages/my/index',
// });
// }, 2000);
// }
// });
// }
// },
// 获取本地最近使用
getitembq() {
if (uni.getStorageSync("zjlist") != "") {
this.list = JSON.parse(uni.getStorageSync("zjlist"));
let arr = this.list.map((item) => {
2025-04-24 09:31:50 +08:00
return item.name
})
this.form.cate_idsName = arr.join(',');
} else {
uni.setStorageSync('zjlist', JSON.stringify(this.list))
}
},
//删除标签(本地)
removebq(i) {
this.list.splice(i, 1);
uni.setStorageSync('zjlist', JSON.stringify(this.list))
let arr = this.list.map((item) => {
return item.name
})
this.form.cate_idsName = arr.join(',')
},
addbq(val, index) {
this.current = index;
let arrbql = uni.getStorageSync("zjlist");
let arrbq = JSON.parse(arrbql);
let isbq = true;
for (let i = 0; i < arrbq.length; i++) {
if (arrbq[i].id == val.id) {
uni.showToast({
title: "已选择该标签",
icon: "none",
duration: 2000,
});
return isbq = false;
}
}
if (this.list.length < 3) {
if (isbq) {
this.list.push(val);
uni.setStorageSync('zjlist', JSON.stringify(this.list))
}
} else {
uni.showToast({
title: "最多添加3个标签",
icon: "none",
duration: 2000,
});
}
let arr = this.list.map((item) => {
return item.name
})
this.form.cate_idsName = arr.join(',');
},
dateWeeks(e) {
return dateWeek(e);
},
closebq() {
this.showPopbq = false
},
openBq() {
this.showPopbq = true
},
// 退费规则
getrefund_list() {
uni.$u.http
.get("/api/school.new_activity/refund_list", {
params: {
page: 1,
limit: 100
},
})
.then((res) => {
if (res.code == 1) {
this.refund_list = res.data.list;
} else {
uni.showToast({
title: res.msg,
icon: "none",
duration: 2000,
});
}
})
.catch((error) => {
uni.showToast({
title: "请求失败,请稍后再试",
icon: "none",
duration: 2000,
});
});
},
// 获取标签
getBqList() {
uni.$u.http
.get("/api/school.new_activity/cate_list", {
params: {
page: 1,
limit: 100
},
})
.then((res) => {
if (res.code == 1) {
this.bqList = res.data.list;
} else {
uni.showToast({
title: res.msg,
icon: "none",
duration: 2000,
});
}
})
.catch((error) => {
uni.showToast({
title: "请求失败,请稍后再试",
icon: "none",
duration: 2000,
});
});
},
//同意
handleScroll() {
this.agreeShow = true
},
getTime() {
const currentDate = new Date();
const year = currentDate.getFullYear();
const month = String(currentDate.getMonth() + 1).padStart(2, '0'); // 月份从0开始需要加1
const day = String(currentDate.getDate()).padStart(2, '0');
const formattedDate = `${year}-${month}-${day}`;
return formattedDate;
},
dateShowHidden() {
this.dateShow = true;
},
birthShowHidden() {
this.birthShow = true;
},
// 活动开始时间
datefirm(e) {
console.log(e)
// this.form.date = dayjs(e.value).format('YYYY-MM-DD HH:mm:ss');
this.times_b = this.dateWeeks(e.value / 1000);
this.dateShow = false
this.dateShow1 = true
},
// 活动结束时间
datefirm1(e) {
console.log(e)
// this.form.date1 = dayjs(e.value).format('YYYY-MM-DD HH:mm:ss');
this.times_e = this.dateWeeks(e.value / 1000);
this.form.time = this.times_b + ' - ' + this.times_e
this.dateShow1 = false
},
datecel(e) {
this.dateShow = false
},
datecel1(e) {
this.dateShow1 = false
},
// 报名开始日期
birthConfirm(e) {
// this.form.birth = dayjs(e.value).format('YYYY-MM-DD HH:mm:ss');
this.times_sinb = this.dateWeeks(e.value / 1000);
this.birthShow = false
this.birthShow1 = true
},
// 报名结束日期
birthConfirm1(e) {
// this.form.birth1 = dayjs(e.value).format('YYYY-MM-DD HH:mm:ss');
this.times_sine = this.dateWeeks(e.value / 1000);
this.form.sign_time = this.times_sinb + ' - ' + this.times_sine
this.birthShow1 = false
},
birthCancel() {
this.birthShow = false
},
birthCancel1() {
this.birthShow1 = false
},
close() {
this.show = false
},
closetuikuan() {
this.tuikuan = false
},
open() {
this.show = true
},
opentuikuan() {
this.tuikuan = true;
this.form.refund_id = 1;
this.form.refund_idn = '随时退';
},
change() {
this.agree = true
this.show = false
},
// 选择机构地址
protocolClick(tag) {
console.log(tag)
this.show = true
},
// 获取入驻协议文章
getAgreement() {
uni.$u.http.get('/api/index/agreement', {
params: {
}
}).then(res => {
if (res.code == 1) {
this.Negotiate = (res.data.entry_agreement).replace(/\<img/gi,
'<img style="max-width:100%;height:auto" ');
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
}).catch(error => {
uni.showToast({
title: '请求失败,请稍后再试',
icon: 'none',
duration: 2000
});
});
},
choose() {
console.log(11111)
const that = this
uni.chooseLocation({
success: function (res) {
console.log(res)
that.form.address = res.name
// that.form.address_detail = res.address
that.form.latitude = res.latitude
that.form.longitude = res.longitude
},
fail: function (rot) {
console.log(rot)
}
});
},
// 回调参数为包含columnIndex、value、values
confirm(e) {
console.log('confirm', e.value)
this.form.cut = e.value[0]
this.fileList1 = [],
this.list1 = '',
this.name = ''
},
oversize(e) {
this.$u.toast("请传1MB以内大小的图片");
return false;
},
// 删除图片
deletePic(event) {
const {
name,
index
} = event;
if (index >= 0 && index < this[`fileList${name}`].length) {
this[`fileList${name}`].splice(index, 1);
if (name === '1') {
//单张
// this.list1 = this.fileList1.length > 0 ? this.fileList1[0].url : '';
this.list1 = this.fileList1.map(item => item.url).join(',');
console.log('Updated list1:', this.list1);
}
// 确保对应的 list 字段是一个数组
let list = this[`list${name}`];
if (!Array.isArray(list)) {
console.warn(`list${name} is not an array, skipping splice operation`);
} else {
list.splice(index, 1);
console.log(`Updated list${name}:`, list);
}
} else {
console.error('Invalid index');
}
},
// 新增图片
async afterRead(event) {
let lists = [].concat(event.file);
let fileListLen = this[`fileList${event.name}`].length;
let categoryMap = [{
category: 'user'
},
{
category: 'user'
},
{
category: 'user'
},
{
category: 'cert'
},
{
category: 'cert'
},
{
category: 'cert'
},
];
lists.map((item) => {
this[`fileList${event.name}`].push({
...item,
status: 'uploading',
message: '上传中'
});
});
for (let i = 0; i < lists.length; i++) {
const result = await this.uploadFilePromise(lists[i].url, categoryMap[event.name - 1].category);
let item = this[`fileList${event.name}`][fileListLen];
this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
status: 'success',
message: '',
url: result
}));
console.log(this[`fileList${event.name}`], ` this[\`fileList${event.name}\`]`)
fileListLen++;
// 更新对应的list字段
if (event.name === '1') {
// this.list1 = this.fileList1[0]?.url || ''; //单张
this.list1 = this.fileList1.map(item => item.url).join(',');
}
}
},
uploadFilePromise(url, category) {
console.log('category', category)
return new Promise((resolve, reject) => {
let a = uni.uploadFile({
url: 'https://naweigetetest2.hschool.com.cn/api/common/upload', // 仅为示例,非真实的接口地址
filePath: url,
name: 'file',
formData: {
user: 'test',
category: category
},
header: {
"token": uni.getStorageSync("token")
},
success: (res) => {
resolve(JSON.parse(res.data).data.fullurl);
},
fail: (err) => {
reject(err);
}
});
});
},
// 查询状态
// -1未申请 0待审核 1审核通过 2审核失败
searchStatus() {
uni.$u.http.get('/api/school/shop/auth_info', {
params: {}
}).then(res => {
if (res.code == 1) {
this.apply_info = res.data.apply_info
this.State = res.data.type
console.log(res.data.type)
if (res.data.auth_status == 2) {
this.status = 2
this.reason = res.data.reason
} else if (res.data.auth_status == 0) {
this.status = 0
} else if (res.data.auth_status == 1) {
this.status = 1
}
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
}).catch(error => {
uni.showToast({
title: '请求失败,请稍后再试',
icon: 'none',
duration: 2000
});
});
},
// 验证电话号码格式的方法
validateTel(tel) {
// 这里使用一个简单的正则表达式来验证电话号码格式
const telRegex = /^1[3-9]\d{9}$/; // 假设是中国大陆的手机号码格式
return telRegex.test(tel);
},
apply() {
let url = '/api/school.new_activity/add';
let params = {};
this.form.cate_ids = this.list.map(item => item.id).join(',');
// 校验详细地址
if (this.form.address_detail == '') {
uni.showToast({
title: '请输入详细地址!',
icon: 'none',
duration: 2000
});
return;
}
// 校验位置
if (this.form.address == '') {
uni.showToast({
title: '请选择位置!',
icon: 'none',
duration: 2000
});
return;
}
// 校验标题
if (this.form.title == '') {
uni.showToast({
title: '请输入标题!',
icon: 'none',
duration: 2000
});
return;
}
// 校验详情
if (this.form.content == '') {
uni.showToast({
title: '请输入详情!',
icon: 'none',
duration: 2000
});
return;
}
// 校验照片
if (this.list1 == '') {
uni.showToast({
title: '请上传活动照片!',
icon: 'none',
duration: 2000
});
return;
}
// 校验照片至少上传3张
if (this.fileList1.length < 3) {
uni.showToast({
title: '活动照片至少三张!',
icon: 'none',
duration: 2000
});
return;
}
// 校验金额
if (this.form.price == '') {
uni.showToast({
title: '请输入金额!',
icon: 'none',
duration: 2000
});
return;
}
// 校验退款政策
if (this.form.refund_id == '') {
uni.showToast({
title: '请选择退款政策!',
icon: 'none',
duration: 2000
});
return;
}
// 校验人数
if (this.form.stock == '' || this.form.stock < 1) {
uni.showToast({
title: '请输入正确的活动人数!',
icon: 'none',
duration: 2000
});
return;
}
// 校验报名时间
if (this.form.sign_time == '') {
uni.showToast({
title: '请选择报名时间!',
icon: 'none',
duration: 2000
});
return;
}
// 校验活动时间
if (this.form.time == '') {
uni.showToast({
title: '请选择活动时间!',
icon: 'none',
duration: 2000
});
return;
}
let hdtime = dayjs(this.form.date).format('YYYY-MM-DD HH:mm:ss') + ' - ' + dayjs(this.form.date1).format('YYYY-MM-DD HH:mm:ss');
let bmtime = dayjs(this.form.birth).format('YYYY-MM-DD HH:mm:ss') + ' - ' + dayjs(this.form.birth1).format('YYYY-MM-DD HH:mm:ss');
params = {
title: this.form.title,
cate_ids: this.form.cate_ids,
content: this.form.content,
// refund_id: 1,
refund_id: this.form.refund_id,
price: this.form.price,
stock: this.form.stock,
sign_time: bmtime,
time: hdtime,
images: this.list1,
longitude: this.form.longitude,
latitude: this.form.latitude,
address: this.form.address,
address_detail: this.form.address_detail
}
uni.$u.http.post(url, params).then(res => {
if (res.code == 1) {
uni.showToast({
title: '发布中',
icon: 'none',
duration: 2000,
complete: function () {
setTimeout(function () {
uni.switchTab({
url: "/pages/my/index"
})
}, 2000);
//置空
this.form = {
cate_ids: '',
// 活动分类名字
cate_idsName: "",
content: '',
refund_id: '',
refund_idn: '',
price: 1,
stock: '',
sign_time: '',
time: '',
images: '',
title: '',
address: '',
latitude: '',
longitude: '',
address_detail: '', //详细位置
date: '', //活动开始时间
date1: '', //活动结束时间
birth: '', //报名开始日期
birth1: '', //报名结束日期
}
}
});
2025-05-01 19:11:36 +08:00
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
}).catch(error => {
uni.showToast({
title: '请求失败,请稍后再试',
icon: 'none',
duration: 2000
});
});
}
}
}
</script>
<style lang="scss" scoped>
// .allbg{
// }
.title_logo {
width: 690rpx;
margin-top: 110rpx;
display: flex;
}
.backImg {
// background: linear-gradient(to bottom, #F1F2F8 0%, #F1F2F8 50%, #FFFFFF 100%);
width: 750rpx;
background-color: #f7f7f7;
background-image: url("https://naweigetetest2.hschool.com.cn/dyqc/bgx2.png");
background-size: 100%;
background-repeat: no-repeat;
}
.w-100 {
width: 100%;
}
.flex {
display: flex;
}
.justify-center {
justify-content: center;
}
.space-between {
justify-content: space-between;
}
.align-items {
align-items: center;
}
.flex-column {
flex-flow: column;
}
.justify-start {
justify-content: start;
}
.mar-top-30 {
margin-top: 30rpx;
}
.box {
width: 690rpx;
margin-top: 40rpx;
.title {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 32rpx;
color: #C0C0C0;
margin: 42rpx 0 24rpx 0;
}
.reason {
width: 100%;
background: #FFFFFF;
border-radius: 20rpx 20rpx 20rpx 20rpx;
margin-top: 32rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 36rpx;
color: #343434;
line-height: 36rpx;
padding: 30rpx;
width: 630rpx;
letter-spacing: 4.5rpx;
}
.first {
width: 100%;
// height: 266rpx;
background: #FFFFFF;
border-radius: 20rpx 20rpx 20rpx 20rpx;
// margin-top: 32rpx;
.row {
width: 642rpx;
margin-top: 7rpx;
justify-content: space-between;
.label {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #343434;
line-height: 32rpx;
width: 150rpx;
}
.pic_view {
width: 190rpx;
height: 190rpx;
background: #F7F7F7;
border-radius: 10rpx;
display: flex;
justify-content: center;
align-items: center;
flex-flow: column;
.texts {
margin-top: 20rpx;
font-size: 24rpx;
color: #3D3D3D;
}
}
.row-right {
display: flex;
justify-content: flex-end;
align-items: center;
}
}
.line-row {
margin-top: 25rpx;
width: 642rpx;
height: 1rpx;
background: #F0F0F0;
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
}
::v-deep .plasty {
text-align: right;
z-index: 10;
}
::v-deep .plasty_c {
text-align: right;
color: #FF4810;
}
::v-deep .bttop {
font-size: 32rpx;
color: #9C9C9C;
}
.second {
width: 690rpx;
// height: 340rpx;
background: #FFFFFF;
border-radius: 20rpx 20rpx 20rpx 20rpx;
margin-top: 32rpx;
margin-bottom: 32rpx;
::v-deep .bttops {
font-size: 26rpx;
color: #9C9C9C;
}
}
.third {
width: 690rpx;
.header {
margin: 42rpx 0 24rpx 0;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 28rpx;
color: #343434;
line-height: 32rpx;
}
}
}
.textarea_fb {
::v-deep .u-textarea {
height: 100%;
padding: 0;
border: none;
font-size: 26rpx;
color: #9C9C9C;
}
::v-deep .bttextarea {
font-size: 24rpx;
color: #9C9C9C;
}
}
.shenfen ::v-deep .u-upload .u-upload__wrap__preview__image {
width: 196rpx !important;
height: 196rpx !important;
}
.bottom {
width: 750rpx;
height: 162rpx;
background: #FFFFFF;
box-shadow: 0rpx -6rpx 12rpx 0rpx rgba(111, 190, 255, 0.1);
border-radius: 0rpx 0rpx 0rpx 0rpx;
bottom: 128rpx;
position: fixed;
z-index: 10;
span {
width: 642rpx;
height: 80rpx;
background: #323232;
border-radius: 401rpx 401rpx 401rpx 401rpx;
font-family: YouSheBiaoTiHei;
font-weight: 400;
font-size: 36rpx;
color: #BBFC5B;
line-height: 32rpx;
}
}
.inputl {
text-align: left;
font-family: PingFang SC, PingFang SC;
font-size: 28rpx;
color: #343434;
line-height: 32rpx;
width: 500rpx;
}
.input {
text-align: right;
font-family: PingFang SC, PingFang SC;
font-size: 26rpx;
color: #343434;
line-height: 32rpx;
width: 450rpx;
}
.shenfen ::v-deep .u-transition.data-v-39e33bf2.vue-ref.u-fade-enter-to.u-fade-enter-active:not(:first-child) {
margin-top: 20rpx;
}
.popup {
// width: 690rpx;
height: 950rpx;
margin-top: 40rpx;
}
.popup-footer {
display: flex;
justify-content: center;
align-items: center;
// margin: 30rpx 0;
height: 146rpx;
.zhixiao {
height: 80rpx;
background: #E8E8E8;
//border-radius: 401rpx 401rpx 401rpx 401rpx;
font-family: YouSheBiaoTiHei;
font-weight: 400;
font-size: 36rpx;
color: #9C9C9C;
line-height: 32rpx;
display: flex;
justify-content: center;
align-items: center;
position: absolute;
width: 100%;
bottom: 0;
border-radius: 0rpx 0rpx 20rpx 20rpx;
}
.shows_zhidao {
background-color: #323232;
color: #BBFC5B;
font-weight: 400;
font-size: 36rpx;
}
}
// 滚动条样式
::v-deep ::-webkit-scrollbar {
/*滚动条整体样式*/
width: 4px !important;
height: 1px !important;
overflow: auto !important;
background: #ccc !important;
-webkit-appearance: auto !important;
display: block;
}
::v-deep ::-webkit-scrollbar-thumb {
/*滚动条里面小方块*/
border-radius: 10px !important;
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2) !important;
background: #7b7979 !important;
}
::v-deep ::-webkit-scrollbar-track {
/*滚动条里面轨道*/
// box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2) !important;
// border-radius: 10px !important;
background: #FFFFFF !important;
}
.textarea_mph {
::v-deep .u-textarea {
height: 100%;
padding: 20rpx;
border: none;
font-size: 26rpx;
color: #9C9C9C;
background: #F7F7F7;
border-radius: 18rpx;
}
::v-deep .bttextarea {
font-size: 24rpx;
color: #9C9C9C;
}
}
.popup_bq {
display: flex;
flex-direction: column;
align-items: center;
height: 1040rpx;
position: relative;
img {
position: absolute;
width: 750rpx;
height: 1040rpx;
top: -164rpx;
z-index: 0;
}
.bqlist {
margin-top: 160rpx;
z-index: 1;
margin-left: 80rpx;
height: 100%;
.allmybqs {
flex-wrap: wrap;
width: 720rpx;
}
.allbqs {
overflow-y: auto;
-webkit-overflow-scrolling: touch;
flex-wrap: wrap;
height: 760rpx;
width: 700rpx;
.titles_fl{
width: 112rpx;
height: 39rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 600;
font-size: 28rpx;
color: #999999;
line-height: 39rpx;
text-align: left;
font-style: normal;
text-transform: none;
}
}
.bqpiece {
width: 210rpx;
height: 70rpx;
background: #F7F7F7;
border-radius: 12rpx 12rpx 12rpx 12rpx;
display: flex;
justify-content: space-around;
align-items: center;
margin: 20rpx 20rpx 20rpx 0;
span {
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 26rpx;
color: #323232;
display: flex;
align-items: center;
}
}
.bqpiece.active {
background: #C9FC7E;
}
}
}
.popup_tkall {
// height: 1100rpx;
.popup_tk {
font-size: 42rpx;
font-weight: 800;
margin: 12rpx 0 24rpx 0;
height: 120rpx;
text-align: center;
}
.popup-content {
height: 900rpx;
overflow-y: auto;
}
.popup-content-item {
width: 690rpx;
padding: 30rpx;
box-sizing: border-box;
background: #F7F7F7;
border-radius: 18rpx;
border: 5rpx solid #EAEAEA;
margin-bottom: 30rpx;
font-family: PingFang SC, PingFang SC;
justify-content: space-between;
color: #3D3D3D;
2025-04-24 09:31:50 +08:00
&.active {
background: #FAFFF3;
border: 5rpx solid;
border-image: linear-gradient(270deg, rgba(251, 246, 109, 1), rgba(156, 234, 162, 1)) 2 2;
border-radius: 18rpx;
clip-path: inset(0px round 16rpx);
2025-04-24 09:31:50 +08:00
}
.popup-content-item-title {
font-weight: bold;
font-size: 36rpx;
2025-04-24 09:31:50 +08:00
}
.popup-content-item-content {
2025-04-24 09:31:50 +08:00
font-weight: 400;
font-size: 26rpx;
line-height: 45rpx;
::v-deep rich-text {
margin-top: 20rpx;
display: flex;
}
2025-04-24 09:31:50 +08:00
}
}
.closetk {
position: absolute;
top: 46rpx;
left: 30rpx;
color: #9C9C9C;
font-size: 28rpx;
font-weight: 400;
font-family: PingFang SC, PingFang SC;
}
.confirmtk {
position: absolute;
top: 46rpx;
right: 30rpx;
color: #3D3D3D;
font-size: 28rpx;
font-weight: 400;
font-family: PingFang SC, PingFang SC;
}
}
</style>