优化一系列
This commit is contained in:
parent
d3089285fb
commit
d7fdf23901
@ -22,7 +22,7 @@
|
|||||||
<span class="first-name white-space">{{detail.title}}</span>
|
<span class="first-name white-space">{{detail.title}}</span>
|
||||||
<view class="rbot flex align-items">
|
<view class="rbot flex align-items">
|
||||||
<image src="/static/center/address.png" mode="" style="width: 32rpx;height: 32rpx;margin-right: 20rpx;"></image>
|
<image src="/static/center/address.png" mode="" style="width: 32rpx;height: 32rpx;margin-right: 20rpx;"></image>
|
||||||
<span class="white-space">{{detail.address_detail}}</span>
|
<span class="white-space">{{detail.address}}{{detail.address_detail}}</span>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@ -507,7 +507,7 @@
|
|||||||
width: 430rpx;
|
width: 430rpx;
|
||||||
// height: 77rpx;
|
// height: 77rpx;
|
||||||
font-family: PingFang SC, PingFang SC;
|
font-family: PingFang SC, PingFang SC;
|
||||||
font-weight: 400;
|
font-weight: 600;
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
color: #323232;
|
color: #323232;
|
||||||
// margin-left: 16rpx;
|
// margin-left: 16rpx;
|
||||||
@ -695,12 +695,12 @@
|
|||||||
// height: 1100rpx;
|
// height: 1100rpx;
|
||||||
|
|
||||||
.popup_tk{
|
.popup_tk{
|
||||||
font-size: 42rpx;font-weight: 800;margin: 12rpx 0 24rpx 0;height: 120rpx;
|
font-size: 42rpx;font-weight: 800;margin: 12rpx 0 24rpx 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.popup-content{
|
.popup-content{
|
||||||
height: 700rpx;
|
height: 700rpx;
|
||||||
margin-bottom: 140rpx;
|
margin-bottom: 75rpx;
|
||||||
// overflow-y: auto;
|
// overflow-y: auto;
|
||||||
}
|
}
|
||||||
.popup-content-item{
|
.popup-content-item{
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<view class="con-center w-100 flex justify-center flex-column align-items flex-start">
|
<view class="con-center w-100 flex justify-center flex-column align-items flex-start">
|
||||||
|
|
||||||
<view class="first-box flex flex-start flex-column justify-start">
|
<view class="first-box flex flex-start flex-column justify-start">
|
||||||
<view class="flex align-items justify-center">
|
<view class="flex align-items justify-center" @click="toDetail">
|
||||||
<image class="head_img" :src="info.detail.images[0]" mode=""></image>
|
<image class="head_img" :src="info.detail.images[0]" mode=""></image>
|
||||||
<view style="margin-left: 20rpx;">
|
<view style="margin-left: 20rpx;">
|
||||||
<view class="flex align-items">
|
<view class="flex align-items">
|
||||||
@ -187,7 +187,7 @@
|
|||||||
<view class="first-image flex align-items space-between" style="width: 100%;margin-top: 30rpx;">
|
<view class="first-image flex align-items space-between" style="width: 100%;margin-top: 30rpx;">
|
||||||
<view class="flex" style="align-items: center;">
|
<view class="flex" style="align-items: center;">
|
||||||
<image src="/static/center/address.png" mode="" class="icon-size"></image>
|
<image src="/static/center/address.png" mode="" class="icon-size"></image>
|
||||||
<text>{{ info.detail.address_detail }}</text>
|
<text>{{ info.detail.address }}{{ info.detail.address_detail }}</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@ -231,7 +231,7 @@
|
|||||||
<view class="first-image flex align-items space-between" style="width: 100%;margin-top: 30rpx;">
|
<view class="first-image flex align-items space-between" style="width: 100%;margin-top: 30rpx;">
|
||||||
<view class="flex" style="align-items: center;">
|
<view class="flex" style="align-items: center;">
|
||||||
<image src="/static/center/address.png" mode="" class="icon-size"></image>
|
<image src="/static/center/address.png" mode="" class="icon-size"></image>
|
||||||
<text>{{ info.detail.address_detail }}</text>
|
<text>{{ info.detail.address }}{{ info.detail.address_detail }}</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@ -299,6 +299,11 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
toDetail() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/packageA/center/detail?id=' + this.info.activity_id
|
||||||
|
});
|
||||||
|
},
|
||||||
SuccessDo(type) {
|
SuccessDo(type) {
|
||||||
uni.$u.http.post('/api/school.newworker.activity.order/shop_confirmation', {
|
uni.$u.http.post('/api/school.newworker.activity.order/shop_confirmation', {
|
||||||
order_no: this.id,
|
order_no: this.id,
|
||||||
@ -483,7 +488,7 @@ export default {
|
|||||||
width: 440rpx;
|
width: 440rpx;
|
||||||
height: 39rpx;
|
height: 39rpx;
|
||||||
font-family: PingFang SC, PingFang SC;
|
font-family: PingFang SC, PingFang SC;
|
||||||
font-weight: 400;
|
font-weight: 600;
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
color: #323232;
|
color: #323232;
|
||||||
// margin-left: 16rpx;
|
// margin-left: 16rpx;
|
||||||
|
@ -305,8 +305,8 @@
|
|||||||
<u-popup @touchmove.native.stop.prevent :closeOnClickOverlay="false" :closeable="false" :show="show" :round="10" mode="center"
|
<u-popup @touchmove.native.stop.prevent :closeOnClickOverlay="false" :closeable="false" :show="show" :round="10" mode="center"
|
||||||
@close="close" @open="open" :custom-style="popupStylezf">
|
@close="close" @open="open" :custom-style="popupStylezf">
|
||||||
<span style="font-size: 40rpx;font-weight: 800;height: 120rpx;">《用户参与须知》</span>
|
<span style="font-size: 40rpx;font-weight: 800;height: 120rpx;">《用户参与须知》</span>
|
||||||
<scroll-view ref="scrollView" :scroll-top="scrollTop" :show-scrollbar='true'
|
<scroll-view ref="scrollView" :scroll-top="scrollTop"
|
||||||
@scrolltolower="handleScroll" scroll-y="true" style="height: 800rpx;margin-bottom: 24rpx;">
|
@scrolltolower="handleScroll" :scroll-y="true" style="height: 800rpx;margin-bottom: 24rpx;">
|
||||||
<view class="popup flex align-items flex-column">
|
<view class="popup flex align-items flex-column">
|
||||||
<rich-text style="text-align: justify;" :nodes="Negotiate"></rich-text>
|
<rich-text style="text-align: justify;" :nodes="Negotiate"></rich-text>
|
||||||
</view>
|
</view>
|
||||||
@ -408,8 +408,8 @@ export default {
|
|||||||
qrUrl: '',
|
qrUrl: '',
|
||||||
is_collect: 0,
|
is_collect: 0,
|
||||||
popupStylezf: {
|
popupStylezf: {
|
||||||
width: '642rpx',
|
width: '620rpx',
|
||||||
padding: '24rpx 24rpx 42rpx 24rpx',
|
padding: '50rpx 40rpx 40rpx 40rpx',
|
||||||
height: '984rpx',
|
height: '984rpx',
|
||||||
margin: '0 auto', // 水平居中
|
margin: '0 auto', // 水平居中
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
@ -1135,7 +1135,7 @@ export default {
|
|||||||
width: 430rpx;
|
width: 430rpx;
|
||||||
// height: 77rpx;
|
// height: 77rpx;
|
||||||
font-family: PingFang SC, PingFang SC;
|
font-family: PingFang SC, PingFang SC;
|
||||||
font-weight: 400;
|
font-weight: 600;
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
color: #323232;
|
color: #323232;
|
||||||
// margin-left: 16rpx;
|
// margin-left: 16rpx;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<view class="detail_all">
|
<view class="detail_all">
|
||||||
<view class="nav">
|
<view class="nav">
|
||||||
<u-navbar :is-back="true" leftIconColor="#000000" :autoBack="true" :bgColor="background"
|
<u-navbar :is-back="true" leftIconColor="#000000" :autoBack="true" :bgColor="background"
|
||||||
title="详情" :titleStyle="{color:'#000000',fontSize:'32rpx'}"></u-navbar>
|
title="详情" :titleStyle="{color:'#000000',fontSize:'34rpx',fontWeight:'bold'}"></u-navbar>
|
||||||
</view>
|
</view>
|
||||||
<view class="box flex justify-start flex-column align-items" :class="overlay ? 'no-scroll' : ''">
|
<view class="box flex justify-start flex-column align-items" :class="overlay ? 'no-scroll' : ''">
|
||||||
<view class="swiper">
|
<view class="swiper">
|
||||||
@ -110,7 +110,7 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="third-center">
|
<view class="third-center">
|
||||||
<view class="v_html">
|
<view class="v_html">
|
||||||
<rich-text :nodes="detail.content"></rich-text>
|
<rich-text style="white-space: pre-line;" :nodes="detail.content"></rich-text>
|
||||||
</view>
|
</view>
|
||||||
<image mode="widthFix" class="imgs" v-for="(item, index) in detail.images" :key="index" :src="item">
|
<image mode="widthFix" class="imgs" v-for="(item, index) in detail.images" :key="index" :src="item">
|
||||||
</image>
|
</image>
|
||||||
@ -1236,10 +1236,8 @@
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
.v_html {
|
.v_html {
|
||||||
word-wrap: break-word;
|
font-size: 28rpx;
|
||||||
word-break: break-all;
|
line-height: 44rpx;
|
||||||
font-size: 26rpx;
|
|
||||||
line-height: 42rpx;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.imgs {
|
.imgs {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<view class="detail_all">
|
<view class="detail_all">
|
||||||
<view class="nav">
|
<view class="nav">
|
||||||
<u-navbar :is-back="true" leftIconColor="#000000" :autoBack="true" :bgColor="background" title="详情"
|
<u-navbar :is-back="true" leftIconColor="#000000" :autoBack="true" :bgColor="background" title="详情"
|
||||||
:titleStyle="{color:'#000000',fontSize:'32rpx'}"></u-navbar>
|
:titleStyle="{color:'#000000',fontSize:'34rpx',fontWeight:'bold'}"></u-navbar>
|
||||||
</view>
|
</view>
|
||||||
<view class="box flex justify-start flex-column align-items" :class="overlay ? 'no-scroll' : ''">
|
<view class="box flex justify-start flex-column align-items" :class="overlay ? 'no-scroll' : ''">
|
||||||
<view class="swiper">
|
<view class="swiper">
|
||||||
@ -162,7 +162,7 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="third-center">
|
<view class="third-center">
|
||||||
<view class="v_html">
|
<view class="v_html">
|
||||||
<rich-text class="rich_class" :nodes="detail.content"></rich-text>
|
<rich-text style="white-space: pre-line;" :nodes="detail.content"></rich-text>
|
||||||
</view>
|
</view>
|
||||||
<image mode="widthFix" class="imgs" v-for="(item, index) in detail.images" :key="index" :src="item">
|
<image mode="widthFix" class="imgs" v-for="(item, index) in detail.images" :key="index" :src="item">
|
||||||
</image>
|
</image>
|
||||||
@ -1176,8 +1176,8 @@
|
|||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
|
|
||||||
.v_html {
|
.v_html {
|
||||||
word-wrap: break-word;
|
font-size: 28rpx;
|
||||||
word-break: break-all;
|
line-height: 44rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.imgs {
|
.imgs {
|
||||||
|
@ -81,6 +81,7 @@
|
|||||||
uni.$u.http.get('/api/school.newworker.activity.order/order_list', {
|
uni.$u.http.get('/api/school.newworker.activity.order/order_list', {
|
||||||
params: {
|
params: {
|
||||||
activity_id: that.id,
|
activity_id: that.id,
|
||||||
|
status:'2,3,9',
|
||||||
page: 1,
|
page: 1,
|
||||||
limit: 1000,
|
limit: 1000,
|
||||||
},
|
},
|
||||||
|
@ -7,10 +7,17 @@
|
|||||||
@touchstart="touchStart"
|
@touchstart="touchStart"
|
||||||
@touchmove="touchMove"
|
@touchmove="touchMove"
|
||||||
@touchend="touchEnd"
|
@touchend="touchEnd"
|
||||||
:style="{ width: cropperOpt.width, height: cropperOpt.height, backgroundColor: 'rgba(0, 0, 0, 0.8)' }"
|
:style="{ width: cropperOpt.width, height: cropperOpt.height }"
|
||||||
canvas-id="cropper"
|
canvas-id="cropper"
|
||||||
id="cropper"
|
id="cropper"
|
||||||
></canvas>
|
></canvas>
|
||||||
|
<view class="cropper-circle-mask" v-show="circularCrop" :style="{
|
||||||
|
left: `${cropperOpt.cut.x}px`,
|
||||||
|
top: `${cropperOpt.cut.y}px`,
|
||||||
|
width: `${cropperOpt.cut.width}px`,
|
||||||
|
height: `${cropperOpt.cut.height}px`,
|
||||||
|
zIndex: 100
|
||||||
|
}"></view>
|
||||||
<canvas
|
<canvas
|
||||||
class="cropper"
|
class="cropper"
|
||||||
:disable-scroll="true"
|
:disable-scroll="true"
|
||||||
@ -19,7 +26,8 @@
|
|||||||
top: `-${cropperOpt.width * cropperOpt.pixelRatio}px`,
|
top: `-${cropperOpt.width * cropperOpt.pixelRatio}px`,
|
||||||
left: `-${cropperOpt.height * cropperOpt.pixelRatio}px`,
|
left: `-${cropperOpt.height * cropperOpt.pixelRatio}px`,
|
||||||
width: `${cropperOpt.width * cropperOpt.pixelRatio}px`,
|
width: `${cropperOpt.width * cropperOpt.pixelRatio}px`,
|
||||||
height: `${cropperOpt.height * cropperOpt.pixelRatio}`
|
height: `${cropperOpt.height * cropperOpt.pixelRatio}`,
|
||||||
|
|
||||||
}"
|
}"
|
||||||
canvas-id="targetId"
|
canvas-id="targetId"
|
||||||
id="targetId"
|
id="targetId"
|
||||||
@ -48,42 +56,15 @@ export default {
|
|||||||
default() {
|
default() {
|
||||||
return {
|
return {
|
||||||
lineWidth: 4,
|
lineWidth: 4,
|
||||||
borderColor: 'rgb(245, 245, 245)',
|
borderColor: 'rgb(245, 245, 245)'
|
||||||
mask: 'rgba(0, 0, 0, 0.35)'
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
// 是否使用圆形裁剪
|
||||||
|
circularCrop: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
}
|
}
|
||||||
// // 裁剪框宽度,单位rpx
|
|
||||||
// rectWidth: {
|
|
||||||
// type: [String, Number],
|
|
||||||
// default: 400
|
|
||||||
// },
|
|
||||||
// // 裁剪框高度,单位rpx
|
|
||||||
// rectHeight: {
|
|
||||||
// type: [String, Number],
|
|
||||||
// default: 400
|
|
||||||
// },
|
|
||||||
// // 输出图片宽度,单位rpx
|
|
||||||
// destWidth: {
|
|
||||||
// type: [String, Number],
|
|
||||||
// default: 400
|
|
||||||
// },
|
|
||||||
// // 输出图片高度,单位rpx
|
|
||||||
// destHeight: {
|
|
||||||
// type: [String, Number],
|
|
||||||
// default: 400
|
|
||||||
// },
|
|
||||||
// // 输出的图片类型,如果发现裁剪的图片很大,可能是因为设置为了"png",改成"jpg"即可
|
|
||||||
// fileType: {
|
|
||||||
// type: String,
|
|
||||||
// default: 'jpg',
|
|
||||||
// },
|
|
||||||
// // 生成的图片质量
|
|
||||||
// // H5上无效,目前不考虑使用此参数
|
|
||||||
// quality: {
|
|
||||||
// type: [Number, String],
|
|
||||||
// default: 1
|
|
||||||
// }
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -95,7 +76,7 @@ export default {
|
|||||||
cropper: '',
|
cropper: '',
|
||||||
cropperOpt: {
|
cropperOpt: {
|
||||||
id: 'cropper',
|
id: 'cropper',
|
||||||
targetId: 'targetCropper',
|
targetId: 'targetId',
|
||||||
pixelRatio: 1,
|
pixelRatio: 1,
|
||||||
width: 0,
|
width: 0,
|
||||||
height: 0,
|
height: 0,
|
||||||
@ -108,9 +89,7 @@ export default {
|
|||||||
height: this.originWidth
|
height: this.originWidth
|
||||||
},
|
},
|
||||||
boundStyle: {
|
boundStyle: {
|
||||||
lineWidth: uni.upx2px(this.boundStyle.lineWidth),
|
lineWidth: uni.upx2px(this.boundStyle.lineWidth)
|
||||||
mask: this.boundStyle.mask,
|
|
||||||
color: this.boundStyle.borderColor
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 裁剪框和输出图片的尺寸,高度默认等于宽度
|
// 裁剪框和输出图片的尺寸,高度默认等于宽度
|
||||||
@ -119,7 +98,7 @@ export default {
|
|||||||
// 裁剪框宽度,单位px
|
// 裁剪框宽度,单位px
|
||||||
rectWidth: 200,
|
rectWidth: 200,
|
||||||
// 输出的图片类型,如果'png'类型发现裁剪的图片太大,改成"jpg"即可
|
// 输出的图片类型,如果'png'类型发现裁剪的图片太大,改成"jpg"即可
|
||||||
fileType: 'jpg',
|
fileType: 'png', // 改为png以支持透明背景
|
||||||
src: '' // 选择的图片路径,用于在点击确定时,判断是否选择了图片
|
src: '' // 选择的图片路径,用于在点击确定时,判断是否选择了图片
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@ -143,6 +122,17 @@ export default {
|
|||||||
}
|
}
|
||||||
this.rectWidth = Number(option.rectWidth);
|
this.rectWidth = Number(option.rectWidth);
|
||||||
if (option.fileType) this.fileType = option.fileType;
|
if (option.fileType) this.fileType = option.fileType;
|
||||||
|
|
||||||
|
// 圆形裁剪需要PNG格式支持透明
|
||||||
|
if (this.circularCrop && this.fileType === 'jpg') {
|
||||||
|
this.fileType = 'png';
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置圆形样式边界
|
||||||
|
if (this.circularCrop) {
|
||||||
|
this.cropperOpt.boundStyle.isCircle = true;
|
||||||
|
}
|
||||||
|
|
||||||
// 初始化
|
// 初始化
|
||||||
this.cropper = new WeCropper(this.cropperOpt)
|
this.cropper = new WeCropper(this.cropperOpt)
|
||||||
.on('ready', ctx => {
|
.on('ready', ctx => {
|
||||||
@ -186,29 +176,138 @@ export default {
|
|||||||
getCropperImage(isPre = false) {
|
getCropperImage(isPre = false) {
|
||||||
if (!this.src) return this.$toast('请先选择图片再裁剪');
|
if (!this.src) return this.$toast('请先选择图片再裁剪');
|
||||||
|
|
||||||
|
// 如果是圆形裁剪,使用与 directCircleCrop 相同的方法
|
||||||
|
if (this.circularCrop) {
|
||||||
|
// 使用最简单直接的方式裁剪
|
||||||
|
const size = 300;
|
||||||
|
|
||||||
|
// 1. 先使用weCropper获取矩形裁剪图片
|
||||||
|
const options = {
|
||||||
|
destWidth: size,
|
||||||
|
destHeight: size,
|
||||||
|
fileType: 'png'
|
||||||
|
};
|
||||||
|
|
||||||
|
this.cropper.getCropperImage(options, (rectPath, err) => {
|
||||||
|
if (err) {
|
||||||
|
console.error('矩形裁剪失败:', err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('矩形裁剪成功,路径:', rectPath);
|
||||||
|
|
||||||
|
// 2. 创建新画布进行圆形裁剪
|
||||||
|
const ctx = uni.createCanvasContext('targetId');
|
||||||
|
|
||||||
|
// 先清空画布
|
||||||
|
ctx.clearRect(0, 0, size, size);
|
||||||
|
|
||||||
|
// 设置背景为透明
|
||||||
|
ctx.setFillStyle('rgba(0,0,0,0)');
|
||||||
|
ctx.fillRect(0, 0, size, size);
|
||||||
|
|
||||||
|
// 创建圆形裁剪区域
|
||||||
|
ctx.save();
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.arc(size/2, size/2, size/2, 0, 2 * Math.PI);
|
||||||
|
ctx.clip();
|
||||||
|
|
||||||
|
// 绘制图片到圆形区域
|
||||||
|
ctx.drawImage(rectPath, 0, 0, size, size);
|
||||||
|
ctx.restore();
|
||||||
|
|
||||||
|
// 绘制并导出
|
||||||
|
ctx.draw(false, () => {
|
||||||
|
setTimeout(() => {
|
||||||
|
uni.canvasToTempFilePath({
|
||||||
|
canvasId: 'targetId',
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
width: size,
|
||||||
|
height: size,
|
||||||
|
destWidth: size,
|
||||||
|
destHeight: size,
|
||||||
|
fileType: 'png',
|
||||||
|
backgroundColor: 'transparent',
|
||||||
|
success: (res) => {
|
||||||
|
console.log('圆形裁剪成功:', res.tempFilePath);
|
||||||
|
if (isPre) {
|
||||||
|
uni.previewImage({
|
||||||
|
urls: [res.tempFilePath]
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
uni.$emit('uAvatarCropper', res.tempFilePath);
|
||||||
|
uni.navigateBack();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
fail: (err) => {
|
||||||
|
console.error('圆形裁剪失败:', err);
|
||||||
|
// 失败时使用矩形图片
|
||||||
|
if (isPre) {
|
||||||
|
uni.previewImage({
|
||||||
|
urls: [rectPath]
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
uni.$emit('uAvatarCropper', rectPath);
|
||||||
|
uni.navigateBack();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, 300);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 原始矩形裁剪方法
|
||||||
|
this.useOriginalCrop(isPre);
|
||||||
|
},
|
||||||
|
|
||||||
|
// 使用原始裁剪方法
|
||||||
|
useOriginalCrop(isPre = false) {
|
||||||
|
// 确保使用合适的尺寸
|
||||||
|
const size = 300; // 增大尺寸
|
||||||
|
|
||||||
let cropper_opt = {
|
let cropper_opt = {
|
||||||
destHeight: Number(this.destWidth), // uni.canvasToTempFilePath要求这些参数为数值
|
destHeight: size,
|
||||||
destWidth: Number(this.destWidth),
|
destWidth: size,
|
||||||
fileType: this.fileType
|
fileType: this.fileType
|
||||||
};
|
};
|
||||||
|
|
||||||
|
console.log('使用原始裁剪方法,参数:', cropper_opt);
|
||||||
|
|
||||||
|
try {
|
||||||
this.cropper.getCropperImage(cropper_opt, (path, err) => {
|
this.cropper.getCropperImage(cropper_opt, (path, err) => {
|
||||||
|
console.log('裁剪回调被调用', path, err);
|
||||||
if (err) {
|
if (err) {
|
||||||
|
console.error('裁剪出错:', err);
|
||||||
uni.showModal({
|
uni.showModal({
|
||||||
title: '温馨提示',
|
title: '温馨提示',
|
||||||
content: err.message
|
content: err.message
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
console.log('裁剪成功,路径:', path);
|
||||||
|
|
||||||
if (isPre) {
|
if (isPre) {
|
||||||
|
console.log('预览图片');
|
||||||
uni.previewImage({
|
uni.previewImage({
|
||||||
current: '', // 当前显示图片的 http 链接
|
current: '', // 当前显示图片的 http 链接
|
||||||
urls: [path] // 需要预览的图片 http 链接列表
|
urls: [path] // 需要预览的图片 http 链接列表
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
console.log('返回上一页');
|
||||||
uni.$emit('uAvatarCropper', path);
|
uni.$emit('uAvatarCropper', path);
|
||||||
uni.navigateBack();
|
uni.navigateBack();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.error('调用 getCropperImage 出错:', error);
|
||||||
|
uni.showModal({
|
||||||
|
title: '裁剪出错',
|
||||||
|
content: error.message || '未知错误'
|
||||||
|
});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
uploadTap() {
|
uploadTap() {
|
||||||
const self = this;
|
const self = this;
|
||||||
@ -223,7 +322,7 @@ export default {
|
|||||||
self.cropper.pushOrign(this.src);
|
self.cropper.pushOrign(this.src);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
@ -242,6 +341,15 @@ export default {
|
|||||||
z-index: 11;
|
z-index: 11;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.cropper-circle-mask {
|
||||||
|
position: absolute;
|
||||||
|
border-radius: 50%;
|
||||||
|
box-shadow: 0 0 0 999px rgba(0, 0, 0, 0.35);
|
||||||
|
z-index: 12;
|
||||||
|
pointer-events: none; /* Allow touches to pass through to the canvas underneath */
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
.cropper-buttons {
|
.cropper-buttons {
|
||||||
background-color: #000000;
|
background-color: #000000;
|
||||||
color: #eee;
|
color: #eee;
|
||||||
@ -270,8 +378,12 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.cropper-buttons .upload,
|
.cropper-buttons .upload,
|
||||||
.cropper-buttons .getCropperImage {
|
.cropper-buttons .getCropperImage,
|
||||||
width: 50%;
|
.cropper-buttons .test,
|
||||||
|
.cropper-buttons .test2,
|
||||||
|
.cropper-buttons .test3,
|
||||||
|
.cropper-buttons .test4 {
|
||||||
|
width: 16.6%;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,6 +392,22 @@ export default {
|
|||||||
padding-left: 50rpx;
|
padding-left: 50rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.cropper-buttons .test {
|
||||||
|
color: #ffeb3b;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cropper-buttons .test2 {
|
||||||
|
color: #4caf50;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cropper-buttons .test3 {
|
||||||
|
color: #ff9800;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cropper-buttons .test4 {
|
||||||
|
color: #e91e63;
|
||||||
|
}
|
||||||
|
|
||||||
.cropper-buttons .getCropperImage {
|
.cropper-buttons .getCropperImage {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
padding-right: 50rpx;
|
padding-right: 50rpx;
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
{{ dateWeeks(item.detail.start_time) + '-'+dateWeekends(item.detail.end_time)}}</span>
|
{{ dateWeeks(item.detail.start_time) + '-'+dateWeekends(item.detail.end_time)}}</span>
|
||||||
</view>
|
</view>
|
||||||
<span class="line"></span>
|
<span class="line"></span>
|
||||||
<view style="margin:30rpx;" class="flex" @click="toInfo(item.activity_id)">
|
<view style="margin:30rpx;" class="flex" @click="toDetail(item.id, item.order_no, item.status)">
|
||||||
<image class="tut" :src="item.detail.images[0]"></image>
|
<image class="tut" :src="item.detail.images[0]"></image>
|
||||||
<view style="margin-left: 20rpx;width: 80%;">
|
<view style="margin-left: 20rpx;width: 80%;">
|
||||||
<view>
|
<view>
|
||||||
|
@ -32,8 +32,8 @@
|
|||||||
<view :class="['hot', 'flex', 'flex-column', status == 0 || status == -2 ? 'wsh_hot' : '']">
|
<view :class="['hot', 'flex', 'flex-column', status == 0 || status == -2 ? 'wsh_hot' : '']">
|
||||||
<view class="content flex align-items flex-column">
|
<view class="content flex align-items flex-column">
|
||||||
<view class="flex flex-column w-100 bbb" style="position: relative;"
|
<view class="flex flex-column w-100 bbb" style="position: relative;"
|
||||||
v-for="(item, index) in hotList" :key="index" @click.stop="detail(item.id)">
|
v-for="(item, index) in hotList" :key="index" >
|
||||||
<view v-if="status != -2">
|
<view v-if="status != -2" @click.stop="detail(item.id)">
|
||||||
<image v-if="item.auth_status == 0" src="/static/my/daishenhe.png"
|
<image v-if="item.auth_status == 0" src="/static/my/daishenhe.png"
|
||||||
style="width: 134rpx; height: 106rpx;position: absolute;right: 0;"></image>
|
style="width: 134rpx; height: 106rpx;position: absolute;right: 0;"></image>
|
||||||
<image v-if="item.auth_status == 2" src="/static/my/wtg.png"
|
<image v-if="item.auth_status == 2" src="/static/my/wtg.png"
|
||||||
@ -110,7 +110,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view v-if="status == -2">
|
<view v-if="status == -2" @click.stop="detail(item.activity_id)">
|
||||||
<view class="flex" style="margin-top: 30rpx">
|
<view class="flex" style="margin-top: 30rpx">
|
||||||
<view class="right flex flex-column" style="align-items: self-start;padding-left: 15px;">
|
<view class="right flex flex-column" style="align-items: self-start;padding-left: 15px;">
|
||||||
<view class="flex flex-column">
|
<view class="flex flex-column">
|
||||||
@ -676,7 +676,7 @@
|
|||||||
.shenhe {
|
.shenhe {
|
||||||
width: 94%;
|
width: 94%;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 85rpx;
|
top: 75rpx;
|
||||||
//background: #f7f7f7;
|
//background: #f7f7f7;
|
||||||
background: #f7f7f7;
|
background: #f7f7f7;
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
|
@ -856,7 +856,7 @@
|
|||||||
width: 440rpx;
|
width: 440rpx;
|
||||||
height: 39rpx;
|
height: 39rpx;
|
||||||
font-family: PingFang SC, PingFang SC;
|
font-family: PingFang SC, PingFang SC;
|
||||||
font-weight: 400;
|
font-weight: 600;
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
color: #323232;
|
color: #323232;
|
||||||
// margin-left: 16rpx;
|
// margin-left: 16rpx;
|
||||||
|
@ -101,135 +101,52 @@
|
|||||||
v-if="detailAny.detail.feel == 0 && (detailAny.status == 9 || detailAny.status == 2 || detailAny.status == 3) && (detail.status==4|| detail.status==5)">
|
v-if="detailAny.detail.feel == 0 && (detailAny.status == 9 || detailAny.status == 2 || detailAny.status == 3) && (detail.status==4|| detail.status==5)">
|
||||||
<text> 申请售后 </text>
|
<text> 申请售后 </text>
|
||||||
</view>
|
</view>
|
||||||
<view @click="paidcancel(detailAny.id)" class="footer-right flex justify-center align-items"
|
<view @click="openCancels" class="footer-right flex justify-center align-items"
|
||||||
v-if="detailAny.detail.feel == 0 && detailAny.status == 2 && (detail.status==1 || detail.status==2 || detail.status==3)">
|
v-if="detailAny.detail.feel == 0 && detailAny.status == 2 && (detail.status==1 || detail.status==2 || detail.status==3)">
|
||||||
<text> 取消订单 </text>
|
<text>取消订单</text>
|
||||||
</view>
|
</view>
|
||||||
<view @click="cancelOrder(detailAny.id)" class="footer-right flex justify-center align-items"
|
<view @click="openCancels" class="footer-right flex justify-center align-items"
|
||||||
v-if="detailAny.detail.feel == 1 && detailAny.status == 2 && (detail.status==1 || detail.status==2 || detail.status==3)">
|
v-if="detailAny.detail.feel == 1 && detailAny.status == 2 && (detail.status==1 || detail.status==2 || detail.status==3)">
|
||||||
<text> 取消订单 </text>
|
<text>取消订单</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
<!-- 二次确认弹窗 -->
|
||||||
|
<u-popup :show="cancelsShow" mode="center" :round="10" :zIndex="99999" :custom-style="popupStyleOk"
|
||||||
<u-popup :show="buyShow" mode="center" :round="10" :zIndex="99999" :custom-style="popupStyle"
|
:safeAreaInsetBottom="false" :closeable="false">
|
||||||
@close="buyClose" @open="buyOpen" :safeAreaInsetBottom="false" :closeable="true">
|
|
||||||
<view class="popupBox flex justify-start align-items flex-column">
|
<view class="popupBox flex justify-start align-items flex-column">
|
||||||
<view class="pop-header flex align-items flex-column flex-start">
|
<view class="pop-header flex align-items flex-column flex-start">
|
||||||
<view class="name white-space">{{ detail.title }}</view>
|
<span class="name white-space">是否取消参与活动</span>
|
||||||
<view class="price">
|
<span class="price">
|
||||||
<text v-if="detail.feel == 0">¥{{ detail.price }}</text>
|
多次取消参与,会限制账号权限请谨慎操作
|
||||||
<text v-if="detail.feel == 1">公益</text>
|
</span>
|
||||||
</view>
|
</view>
|
||||||
<!-- <image src="../../static/center/buy.png" mode="" style="width: 168rpx; height: 48rpx;">
|
<view
|
||||||
</image> -->
|
style="display: flex;align-items: center;justify-content: space-between;width: 89%;gap: 30rpx;padding-top: 120rpx;">
|
||||||
</view>
|
<view @click="closeCancels" class="btn_2">关闭</view>
|
||||||
<view class="popup flex-column">
|
<view @click="paidcancel(detailAny.id)"
|
||||||
<view class="first-image flex align-items" style="margin: 16rpx 0;">
|
v-if="detailAny.detail.feel == 0 && detailAny.status == 2 && (detail.status==1 || detail.status==2 || detail.status==3)"
|
||||||
<image src="../../static/center/Alarm.png" mode="" class="icon-size"></image>
|
class="btn_1">确认取消</view>
|
||||||
<text>{{ formattedTime.formattedTime }} (共计{{ formattedTimeList.length }}节)</text>
|
<view @click="cancelOrder(detailAny.id)"
|
||||||
</view>
|
v-if="detailAny.detail.feel == 1 && detailAny.status == 2 && (detail.status==1 || detail.status==2 || detail.status==3)"
|
||||||
<view class="first-image flex align-items">
|
class="btn_1">确认取消</view>
|
||||||
<image src="../../static/center/address.png" mode="" class="icon-size"></image>
|
|
||||||
<text>{{ detail.address_detail }}</text>
|
|
||||||
</view>
|
|
||||||
<!-- <image :src="detail.headimage" mode="" style="width: 200rpx; height: 140rpx;"></image>
|
|
||||||
<view class="popur-right flex flex-column">
|
|
||||||
<text class="name white-space">{{detail.title}}</text>
|
|
||||||
<text class="address">地址:{{detail.address_detail}}</text>
|
|
||||||
<text class="date">开始时间:{{detail.start_time_text}}</text>
|
|
||||||
<text class="time">结束时间:{{detail.end_time_text}}</text>
|
|
||||||
<text class="line-row"></text>
|
|
||||||
<text class="price">
|
|
||||||
课程价格:
|
|
||||||
<text v-if="detail.feel == 0">¥{{detail.price}}</text>
|
|
||||||
<text v-if="detail.feel == 1">免费</text>
|
|
||||||
</text>
|
|
||||||
</view> -->
|
|
||||||
</view>
|
|
||||||
<view class="popup-footer flex " @click="buy()">
|
|
||||||
<text v-if="type == 1 && detail.feel == 0">立 即 支 付</text>
|
|
||||||
<text v-if="type == 1 && detail.feel == 1">确 认 报 名</text>
|
|
||||||
<!-- <image src="../../static/center/price.png" mode="" style="width: 642rpx;height: 80rpx;"></image> -->
|
<!-- <image src="../../static/center/price.png" mode="" style="width: 642rpx;height: 80rpx;"></image> -->
|
||||||
<u-loading-icon :vertical="true" v-if="uloadingShow"></u-loading-icon>
|
<!-- <u-loading-icon :vertical="true" v-if="uloadingShow"></u-loading-icon> -->
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</u-popup>
|
</u-popup>
|
||||||
|
|
||||||
<!-- 分享海报 -->
|
|
||||||
<u-overlay :show="overlay" class="pos">
|
|
||||||
<view class="btnList">
|
|
||||||
<text class="save" @click.stop="save()">保 存 海 报</text>
|
|
||||||
<!-- <text class="sharePoster" @click.stop="sharePoster()">
|
|
||||||
分 享
|
|
||||||
</text> -->
|
|
||||||
<button open-type="share" class="no-border-button" plain="true">
|
|
||||||
<text>分 享 发 布</text>
|
|
||||||
</button>
|
|
||||||
</view>
|
|
||||||
<!-- <view class="Poster" style="z-index: 9999;height: 1230rpx;">
|
|
||||||
<text class="posterClose" @click.stop="overlay = false">
|
|
||||||
<image src="../../static/center/close.png" mode="" style="width: 64rpx;height: 64rpx;"></image>
|
|
||||||
</text>
|
|
||||||
|
|
||||||
<image :src="path" mode="widthFix" style="width: 690rpx;height: 1230rpx;"></image>
|
|
||||||
<l-painter isCanvasToTempFilePath ref="painter" @success="path = $event" hidden
|
|
||||||
css="width: 750rpx;height:1230rpx; padding-bottom: 40rpx; background-image: url('https://testy.hschool.com.cn//uploads/20241219/6f46474364fe7ae36295cb8d96854b52.png')">
|
|
||||||
<l-painter-image :src="userInfo.avatar"
|
|
||||||
css="margin-left: 40rpx; margin-top: 100rpx; width: 90rpx; height: 90rpx; border-radius: 50%;" />
|
|
||||||
<l-painter-view css="margin-top: 100rpx; padding-left: 20rpx; display: inline-block">
|
|
||||||
<l-painter-text :text="userInfo.realname || userInfo.nickname"
|
|
||||||
css="display: block; padding-bottom: 10rpx; color: #181818; font-size: 34rpx; fontWeight: bold" />
|
|
||||||
<l-painter-text text="邀请您一起上课" css="color: #7A7A7A; font-size: 24rpx" />
|
|
||||||
</l-painter-view>
|
|
||||||
<l-painter-view
|
|
||||||
css="margin-left: 35rpx; margin-top: 24rpx; padding: 32rpx; box-sizing: border-box; background: #fff; border-radius: 16rpx; width: 690rpx; box-shadow: 0 20rpx 58rpx rgba(0,0,0,.15)">
|
|
||||||
<l-painter-image :src="detail.headimage"
|
|
||||||
css="object-fit: cover; object-position: 50% 50%; width: 626rpx; height: 448rpx; border-radius: 12rpx;" />
|
|
||||||
|
|
||||||
<l-painter-view css=" width: 626rpx;display: flex;alignItems: center;">
|
|
||||||
<l-painter-view>
|
|
||||||
<l-painter-view
|
|
||||||
css="margin-top: 32rpx; color: #FF0000; font-weight: bold; font-size: 28rpx; line-height: 1em;">
|
|
||||||
<l-painter-text text="¥" css="vertical-align: bottom;font-size: 42rpx"
|
|
||||||
v-if="detail.feel == 0" />
|
|
||||||
<l-painter-text :text="detail.price" css="vertical-align: bottom; font-size: 58rpx"
|
|
||||||
v-if="detail.feel == 0" />
|
|
||||||
<l-painter-text text="免费" css="vertical-align: bottom;font-size: 42rpx"
|
|
||||||
v-if="detail.feel == 1" />
|
|
||||||
</l-painter-view>
|
|
||||||
<l-painter-view css="margin-top: 24rpx;">
|
|
||||||
<l-painter-text :text="formattedTitle" css="color: #343434;font-size: 36rpx;" />
|
|
||||||
</l-painter-view>
|
|
||||||
<l-painter-text
|
|
||||||
css="line-clamp: 2; color: #333333; line-height: 1.8em; font-size: 26rpx;display: block; width: 380rpx; padding-right:32rpx; box-sizing: border-box"
|
|
||||||
:text="'讲师:' + detail.teacher.name"></l-painter-text>
|
|
||||||
<l-painter-text
|
|
||||||
css="line-clamp: 2; color: #333333; line-height: 1.8em; font-size: 26rpx;display: block;margin-bottom:30rpx; width: 380rpx; padding-right:32rpx; box-sizing: border-box"
|
|
||||||
:text="detail.address_detail"></l-painter-text>
|
|
||||||
</l-painter-view>
|
|
||||||
<l-painter-view css="margin-top: 24rpx;">
|
|
||||||
<l-painter-qrcode css="width: 200rpx; height: 200rpx;" :text="qrUrl"></l-painter-qrcode>
|
|
||||||
</l-painter-view>
|
|
||||||
</l-painter-view>
|
|
||||||
|
|
||||||
</l-painter-view>
|
|
||||||
</l-painter>
|
|
||||||
</view> -->
|
|
||||||
</u-overlay>
|
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import qrcodeSwiper from '@/packageA/qrcodeSwiper.vue'
|
import qrcodeSwiper from '@/packageA/qrcodeSwiper.vue'
|
||||||
import {
|
import {
|
||||||
dateWeek
|
dateWeek
|
||||||
} from '../../utils/dateFormat'
|
} from '../../utils/dateFormat'
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
qrcodeSwiper
|
qrcodeSwiper
|
||||||
},
|
},
|
||||||
@ -262,6 +179,7 @@ export default {
|
|||||||
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
||||||
style: {
|
style: {
|
||||||
// 字符串的形式
|
// 字符串的形式
|
||||||
img: 'width: 100%'
|
img: 'width: 100%'
|
||||||
@ -286,6 +204,15 @@ export default {
|
|||||||
people: {},
|
people: {},
|
||||||
qrUrl: '',
|
qrUrl: '',
|
||||||
is_collect: 0,
|
is_collect: 0,
|
||||||
|
popupStyleOk: {
|
||||||
|
width: '640rpx',
|
||||||
|
height: '414rpx',
|
||||||
|
margin: '0 auto', // 水平居中
|
||||||
|
display: 'flex',
|
||||||
|
justifyContent: 'flex-start',
|
||||||
|
alignItems: 'center',
|
||||||
|
borderRadius: '50rpx'
|
||||||
|
},
|
||||||
popupStyle: {
|
popupStyle: {
|
||||||
width: '690rpx',
|
width: '690rpx',
|
||||||
height: '716rpx',
|
height: '716rpx',
|
||||||
@ -308,7 +235,8 @@ export default {
|
|||||||
},
|
},
|
||||||
// qrList:[],//二维码地址列表
|
// qrList:[],//二维码地址列表
|
||||||
//二维码图片列表
|
//二维码图片列表
|
||||||
qrimages: []
|
qrimages: [],
|
||||||
|
cancelsShow: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -345,6 +273,12 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
openCancels() {
|
||||||
|
this.cancelsShow = true;
|
||||||
|
},
|
||||||
|
closeCancels() {
|
||||||
|
this.cancelsShow = false;
|
||||||
|
},
|
||||||
toInfo(id) {
|
toInfo(id) {
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: "/packageA/center/detail?id=" + id
|
url: "/packageA/center/detail?id=" + id
|
||||||
@ -355,6 +289,7 @@ export default {
|
|||||||
uni.showLoading({
|
uni.showLoading({
|
||||||
title: '处理中...'
|
title: '处理中...'
|
||||||
});
|
});
|
||||||
|
this.cancelsShow = false;
|
||||||
uni.$u.http.post('/api/school.newactivity.order/paidcancel', {
|
uni.$u.http.post('/api/school.newactivity.order/paidcancel', {
|
||||||
order_no: this.order_no
|
order_no: this.order_no
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
@ -384,14 +319,19 @@ export default {
|
|||||||
icon: 'none',
|
icon: 'none',
|
||||||
duration: 2000
|
duration: 2000
|
||||||
});
|
});
|
||||||
uni.hideLoading();
|
//uni.hideLoading();
|
||||||
}
|
}
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
uni.hideLoading();
|
uni.showToast({
|
||||||
|
title: error.msg,
|
||||||
|
icon: 'none',
|
||||||
|
duration: 2000
|
||||||
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
// 取消订单 (0)
|
// 取消订单 (0)
|
||||||
cancelOrder() {
|
cancelOrder() {
|
||||||
|
this.cancelsShow = false;
|
||||||
uni.$u.http.post('/api/school.newactivity.order/freecancel', {
|
uni.$u.http.post('/api/school.newactivity.order/freecancel', {
|
||||||
order_no: this.order_no
|
order_no: this.order_no
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
@ -418,7 +358,7 @@ export default {
|
|||||||
duration: 2000
|
duration: 2000
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}).catch(error => { });
|
}).catch(error => {});
|
||||||
},
|
},
|
||||||
// 批量生成二维码
|
// 批量生成二维码
|
||||||
// generateAllQRCodes() {
|
// generateAllQRCodes() {
|
||||||
@ -474,8 +414,8 @@ export default {
|
|||||||
title: '请登录',
|
title: '请登录',
|
||||||
icon: 'none',
|
icon: 'none',
|
||||||
duration: 2000,
|
duration: 2000,
|
||||||
complete: function () {
|
complete: function() {
|
||||||
setTimeout(function () {
|
setTimeout(function() {
|
||||||
uni.switchTab({
|
uni.switchTab({
|
||||||
url: '/pages/my/index',
|
url: '/pages/my/index',
|
||||||
});
|
});
|
||||||
@ -559,7 +499,7 @@ export default {
|
|||||||
duration: 2000
|
duration: 2000
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}).catch(error => { });
|
}).catch(error => {});
|
||||||
},
|
},
|
||||||
// 报名 0 支付 1 立即购买 2 预约 3确认时间
|
// 报名 0 支付 1 立即购买 2 预约 3确认时间
|
||||||
|
|
||||||
@ -624,8 +564,8 @@ export default {
|
|||||||
title: res.msg,
|
title: res.msg,
|
||||||
icon: 'none',
|
icon: 'none',
|
||||||
duration: 2000,
|
duration: 2000,
|
||||||
complete: function () {
|
complete: function() {
|
||||||
setTimeout(function () {
|
setTimeout(function() {
|
||||||
uni.reLaunch({
|
uni.reLaunch({
|
||||||
url: "/packageA/my/makeList?status=" + -1
|
url: "/packageA/my/makeList?status=" + -1
|
||||||
})
|
})
|
||||||
@ -659,7 +599,7 @@ export default {
|
|||||||
latitude: parseFloat(latitude),
|
latitude: parseFloat(latitude),
|
||||||
longitude: parseFloat(longitude),
|
longitude: parseFloat(longitude),
|
||||||
name: name,
|
name: name,
|
||||||
success: function () {
|
success: function() {
|
||||||
console.log('success');
|
console.log('success');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -818,7 +758,7 @@ export default {
|
|||||||
timeSelected(time) {
|
timeSelected(time) {
|
||||||
return this.selectedTime === time;
|
return this.selectedTime === time;
|
||||||
},
|
},
|
||||||
moveScroll() { },
|
moveScroll() {},
|
||||||
// 获取价格
|
// 获取价格
|
||||||
getMoney() {
|
getMoney() {
|
||||||
uni.$u.http.post('/api/school.newactivity.order/confirm', {
|
uni.$u.http.post('/api/school.newactivity.order/confirm', {
|
||||||
@ -858,8 +798,8 @@ export default {
|
|||||||
title: '创建成功',
|
title: '创建成功',
|
||||||
icon: 'success',
|
icon: 'success',
|
||||||
duration: 2000,
|
duration: 2000,
|
||||||
complete: function () {
|
complete: function() {
|
||||||
setTimeout(function () {
|
setTimeout(function() {
|
||||||
uni.redirectTo({
|
uni.redirectTo({
|
||||||
url: "/packageA/my/orderList?status=" + 3
|
url: "/packageA/my/orderList?status=" + 3
|
||||||
})
|
})
|
||||||
@ -927,43 +867,43 @@ export default {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.detail_all {
|
.detail_all {
|
||||||
background-color: #f7f7f7;
|
background-color: #f7f7f7;
|
||||||
}
|
}
|
||||||
|
|
||||||
.w-100 {
|
.w-100 {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.flex {
|
.flex {
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
.flex-start {
|
.flex-start {
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.justify-center {
|
.justify-center {
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.align-items {
|
.align-items {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.flex-column {
|
.flex-column {
|
||||||
flex-flow: column;
|
flex-flow: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
.justify-start {
|
.justify-start {
|
||||||
justify-content: start;
|
justify-content: start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.white-space {
|
.white-space {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
/* 确保超出容器的文本被隐藏 */
|
/* 确保超出容器的文本被隐藏 */
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
@ -971,34 +911,34 @@ export default {
|
|||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
/* 使用省略号表示被截断的文本 */
|
/* 使用省略号表示被截断的文本 */
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.con-center {
|
.con-center {
|
||||||
// background: white;
|
// background: white;
|
||||||
border-radius: 44rpx;
|
border-radius: 44rpx;
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-top: 30rpx;
|
margin-top: 30rpx;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.space-between {
|
.space-between {
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
.swiper {
|
.swiper {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 580rpx;
|
height: 580rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.box {
|
.box {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin: 0 30rpx;
|
margin: 0 30rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.first-box {
|
.first-box {
|
||||||
width: 690rpx;
|
width: 690rpx;
|
||||||
background: #FFFFFF;
|
background: #FFFFFF;
|
||||||
padding: 30rpx;
|
padding: 30rpx;
|
||||||
@ -1044,9 +984,9 @@ export default {
|
|||||||
border-radius: 8rpx;
|
border-radius: 8rpx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.second-box {
|
.second-box {
|
||||||
width: 690rpx;
|
width: 690rpx;
|
||||||
height: 64rpx;
|
height: 64rpx;
|
||||||
border-radius: 16rpx 16rpx 16rpx 16rpx;
|
border-radius: 16rpx 16rpx 16rpx 16rpx;
|
||||||
@ -1071,9 +1011,9 @@ export default {
|
|||||||
margin: 0 22rpx 0 4rpx;
|
margin: 0 22rpx 0 4rpx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.third {
|
.third {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background: #ffffff;
|
background: #ffffff;
|
||||||
margin-top: 20rpx;
|
margin-top: 20rpx;
|
||||||
@ -1130,23 +1070,23 @@ export default {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.line {
|
.line {
|
||||||
width: 630rpx;
|
width: 630rpx;
|
||||||
height: 1rpx;
|
height: 1rpx;
|
||||||
background: #F0F0F0;
|
background: #F0F0F0;
|
||||||
margin: 30rpx 0;
|
margin: 30rpx 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon-size {
|
.icon-size {
|
||||||
width: 32rpx;
|
width: 32rpx;
|
||||||
height: 32rpx;
|
height: 32rpx;
|
||||||
margin-right: 12rpx;
|
margin-right: 12rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.footer {
|
.footer {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 166rpx;
|
height: 166rpx;
|
||||||
margin-top: 50rpx;
|
margin-top: 50rpx;
|
||||||
@ -1179,21 +1119,24 @@ export default {
|
|||||||
color: #9C9C9C;
|
color: #9C9C9C;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.popupBox {
|
||||||
.popupBox {
|
width: 640rpx;
|
||||||
width: 690rpx;
|
height: 414rpx;
|
||||||
height: 716rpx;
|
background-image: url("https://naweigetetest2.hschool.com.cn/dyqc/confirm2.png");
|
||||||
|
background-size: 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
border-radius: 44rpx;
|
||||||
|
|
||||||
.pop-header {
|
.pop-header {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background-image: url("/static/center/bg.png");
|
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: left bottom;
|
background-position: left bottom;
|
||||||
height: 265rpx;
|
margin-top: 50rpx;
|
||||||
|
|
||||||
text {
|
span {
|
||||||
font-family: PingFang SC, PingFang SC;
|
font-family: PingFang SC, PingFang SC;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-size: 20rpx;
|
font-size: 20rpx;
|
||||||
@ -1201,31 +1144,30 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.name {
|
.name {
|
||||||
width: 594rpx;
|
width: 288rpx;
|
||||||
height: 66rpx;
|
height: 36rpx;
|
||||||
font-family: Source Han Sans CN, Source Han Sans CN;
|
font-family: PingFang SC Bold, PingFang SC Bold;
|
||||||
font-weight: bold;
|
font-weight: 600;
|
||||||
font-size: 44rpx;
|
font-size: 36rpx;
|
||||||
color: #222222;
|
color: #202020;
|
||||||
margin-top: 80rpx;
|
line-height: 36rpx;
|
||||||
|
text-align: center;
|
||||||
|
font-style: normal;
|
||||||
|
text-transform: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.price {
|
.price {
|
||||||
width: 594rpx;
|
width: 520rpx;
|
||||||
height: 66rpx;
|
height: 68rpx;
|
||||||
font-family: Source Han Sans CN, Source Han Sans CN;
|
margin-top: 30rpx;
|
||||||
font-weight: bold;
|
|
||||||
font-size: 44rpx;
|
|
||||||
color: #FF4810;
|
|
||||||
margin-top: 16rpx;
|
|
||||||
|
|
||||||
text {
|
|
||||||
font-family: PingFang SC, PingFang SC;
|
font-family: PingFang SC, PingFang SC;
|
||||||
font-weight: 800;
|
font-weight: 400;
|
||||||
font-size: 36rpx;
|
font-size: 24rpx;
|
||||||
color: #FF2323;
|
color: #202020;
|
||||||
line-height: 32rpx;
|
line-height: 34rpx;
|
||||||
}
|
text-align: center;
|
||||||
|
font-style: normal;
|
||||||
|
text-transform: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1238,22 +1180,29 @@ export default {
|
|||||||
|
|
||||||
.popup-footer {
|
.popup-footer {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 48rpx;
|
left: 75rpx;
|
||||||
bottom: 48rpx;
|
bottom: 60rpx;
|
||||||
|
|
||||||
text {
|
span {
|
||||||
width: 594rpx;
|
width: 230rpx;
|
||||||
height: 100rpx;
|
height: 90rpx;
|
||||||
background: #222222;
|
background: #323232;
|
||||||
border-radius: 200rpx 200rpx 200rpx 200rpx;
|
border-radius: 200rpx 200rpx 200rpx 200rpx;
|
||||||
font-family: Source Han Sans CN, Source Han Sans CN;
|
font-family: PingFang SC Regular, PingFang SC Regular;
|
||||||
font-weight: bold;
|
font-weight: 400;
|
||||||
font-size: 32rpx;
|
font-size: 32rpx;
|
||||||
color: #BEEE03;
|
color: #BBFC5B;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.span1 {
|
||||||
|
background: rgba(193, 193, 193, 0.22);
|
||||||
|
color: #202020;
|
||||||
|
margin-right: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1261,43 +1210,11 @@ export default {
|
|||||||
width: 642rpx;
|
width: 642rpx;
|
||||||
height: 1rpx;
|
height: 1rpx;
|
||||||
background: #F0F0F0;
|
background: #F0F0F0;
|
||||||
//box-shadow: 1rpx 1rpx 0rpx 0rpx rgba(102, 102, 102, 0.25);
|
box-shadow: 1rpx 1rpx 0rpx 0rpx rgba(102, 102, 102, 0.25);
|
||||||
//border-radius: 0rpx 0rpx 0rpx 0rpx;
|
border-radius: 0rpx 0rpx 0rpx 0rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.times {
|
|
||||||
width: 93%;
|
|
||||||
|
|
||||||
.selectTime {
|
|
||||||
width: 288rpx;
|
|
||||||
height: 50rpx;
|
|
||||||
background: #FFFFFF;
|
|
||||||
border-radius: 12rpx 12rpx 12rpx 12rpx;
|
|
||||||
border: 1rpx solid #D9D9D9;
|
|
||||||
color: #4B4B4B;
|
|
||||||
font-family: 'PingFang SC', 'PingFang SC';
|
|
||||||
font-weight: 500;
|
|
||||||
font-size: 24rpx;
|
|
||||||
padding-left: 15rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
margin: 24rpx 32rpx 0 0;
|
|
||||||
white-space: nowrap;
|
|
||||||
/* 防止文本换行 */
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
/* 超出部分显示省略号 */
|
|
||||||
overflow: hidden;
|
|
||||||
/* 隐藏超出部分 */
|
|
||||||
text-align: left;
|
|
||||||
/* 文字靠左对齐 */
|
|
||||||
line-height: 50rpx;
|
|
||||||
/* 垂直居中对齐 */
|
|
||||||
box-sizing: border-box;
|
|
||||||
/* 确保 padding 和 border 不影响宽度和高度 */
|
|
||||||
display: inline-block;
|
|
||||||
/* 确保容器内文字正确对齐 */
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.selectTime.selected {
|
.selectTime.selected {
|
||||||
width: 288rpx;
|
width: 288rpx;
|
||||||
@ -1312,9 +1229,9 @@ export default {
|
|||||||
margin: 24rpx 32rpx 0 0;
|
margin: 24rpx 32rpx 0 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.share {
|
.share {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
right: 0;
|
right: 0;
|
||||||
@ -1324,9 +1241,9 @@ export default {
|
|||||||
border-top-left-radius: 50px;
|
border-top-left-radius: 50px;
|
||||||
border-bottom-left-radius: 50px;
|
border-bottom-left-radius: 50px;
|
||||||
box-shadow: 0 0 20upx rgba(0, 0, 0, .09);
|
box-shadow: 0 0 20upx rgba(0, 0, 0, .09);
|
||||||
}
|
}
|
||||||
|
|
||||||
.cancel {
|
.cancel {
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
padding: 30rpx;
|
padding: 30rpx;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@ -1334,49 +1251,49 @@ export default {
|
|||||||
color: red;
|
color: red;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 30rpx;
|
font-size: 30rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.md-content {
|
.md-content {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 50rpx 0;
|
padding: 50rpx 0;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.md-content-item {
|
.md-content-item {
|
||||||
margin: 0 70rpx;
|
margin: 0 70rpx;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.md-content-item image {
|
.md-content-item image {
|
||||||
width: 100rpx;
|
width: 100rpx;
|
||||||
height: 100rpx;
|
height: 100rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.md-content-item view {
|
.md-content-item view {
|
||||||
margin-top: 15rpx;
|
margin-top: 15rpx;
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sharebtn {
|
.sharebtn {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cu-modal {
|
.cu-modal {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 166rpx;
|
bottom: 166rpx;
|
||||||
left: 0;
|
left: 0;
|
||||||
z-index: 999999;
|
z-index: 999999;
|
||||||
}
|
}
|
||||||
|
|
||||||
.gj {
|
.gj {
|
||||||
.title {
|
.title {
|
||||||
font-family: PingFang SC, PingFang SC;
|
font-family: PingFang SC, PingFang SC;
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
@ -1427,9 +1344,9 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep ::-webkit-scrollbar {
|
::v-deep ::-webkit-scrollbar {
|
||||||
/*滚动条整体样式*/
|
/*滚动条整体样式*/
|
||||||
width: 4px !important;
|
width: 4px !important;
|
||||||
height: 1px !important;
|
height: 1px !important;
|
||||||
@ -1437,40 +1354,40 @@ export default {
|
|||||||
background: #ccc !important;
|
background: #ccc !important;
|
||||||
-webkit-appearance: auto !important;
|
-webkit-appearance: auto !important;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep ::-webkit-scrollbar-thumb {
|
::v-deep ::-webkit-scrollbar-thumb {
|
||||||
/*滚动条里面小方块*/
|
/*滚动条里面小方块*/
|
||||||
border-radius: 10px !important;
|
border-radius: 10px !important;
|
||||||
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2) !important;
|
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2) !important;
|
||||||
background: #7b7979 !important;
|
background: #7b7979 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep ::-webkit-scrollbar-track {
|
::v-deep ::-webkit-scrollbar-track {
|
||||||
/*滚动条里面轨道*/
|
/*滚动条里面轨道*/
|
||||||
// box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2) !important;
|
// box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2) !important;
|
||||||
// border-radius: 10px !important;
|
// border-radius: 10px !important;
|
||||||
background: #FFFFFF !important;
|
background: #FFFFFF !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Poster {
|
.Poster {
|
||||||
position: relative;
|
position: relative;
|
||||||
top: 21rpx;
|
top: 21rpx;
|
||||||
left: 30rpx;
|
left: 30rpx;
|
||||||
width: 690rpx;
|
width: 690rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.posterClose {
|
.posterClose {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 8rpx;
|
right: 8rpx;
|
||||||
top: 8rpx;
|
top: 8rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pos {
|
.pos {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btnList {
|
.btnList {
|
||||||
width: 690rpx;
|
width: 690rpx;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 150rpx;
|
bottom: 150rpx;
|
||||||
@ -1493,18 +1410,18 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.save {}
|
.save {}
|
||||||
}
|
}
|
||||||
|
|
||||||
.no-scroll {
|
.no-scroll {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep ._root {
|
::v-deep ._root {
|
||||||
padding: 0 10rpx;
|
padding: 0 10rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.no-border-button {
|
.no-border-button {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
/* 去掉背景色 */
|
/* 去掉背景色 */
|
||||||
border: none;
|
border: none;
|
||||||
@ -1536,5 +1453,31 @@ export default {
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.btn_1 {
|
||||||
|
width: 100%;
|
||||||
|
height: 90rpx;
|
||||||
|
background: #323232;
|
||||||
|
border-radius: 198rpx 198rpx 198rpx 198rpx;
|
||||||
|
font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: #BBFC5B;
|
||||||
|
line-height: 90rpx;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn_2 {
|
||||||
|
width: 100%;
|
||||||
|
height: 90rpx;
|
||||||
|
background: #E2E2E2;
|
||||||
|
border-radius: 198rpx 198rpx 198rpx 198rpx;
|
||||||
|
font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: #999999;
|
||||||
|
line-height: 90rpx;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
@ -9,7 +9,7 @@
|
|||||||
<view class="con-center w-100 flex justify-center flex-column align-items flex-start">
|
<view class="con-center w-100 flex justify-center flex-column align-items flex-start">
|
||||||
|
|
||||||
<view class="first-box flex flex-start flex-column justify-start">
|
<view class="first-box flex flex-start flex-column justify-start">
|
||||||
<view class="flex align-items justify-center">
|
<view class="flex align-items justify-center" @click="openInfo()">
|
||||||
<image class="head_img" v-if="detail.images.length > 0" :src="detail.images[0]" mode="" ></image>
|
<image class="head_img" v-if="detail.images.length > 0" :src="detail.images[0]" mode="" ></image>
|
||||||
<view style="margin-left: 20rpx;">
|
<view style="margin-left: 20rpx;">
|
||||||
<view class="flex align-items">
|
<view class="flex align-items">
|
||||||
@ -167,7 +167,8 @@
|
|||||||
background: '#ffffff00',
|
background: '#ffffff00',
|
||||||
titleStyle: {
|
titleStyle: {
|
||||||
color: '#000000',
|
color: '#000000',
|
||||||
fontSize: '32rpx'
|
fontSize: '32rpx',
|
||||||
|
fontWeight: 'bold'
|
||||||
},
|
},
|
||||||
status:null,
|
status:null,
|
||||||
toptitle: '',
|
toptitle: '',
|
||||||
@ -196,6 +197,11 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
openInfo(){
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/packageA/center/detail?id=${this.detail.activity_id}`
|
||||||
|
})
|
||||||
|
},
|
||||||
//申请售后
|
//申请售后
|
||||||
service(id) {
|
service(id) {
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
<view class="right">
|
<view class="right">
|
||||||
<view>
|
<view>
|
||||||
<text v-if="bankInfo.withdrawal == null"
|
<text v-if="bankInfo.withdrawal == null"
|
||||||
style="color: #9C9C9C;font-size: 26rpx;">未认证</text>
|
style="color: #9C9C9C;font-size: 26rpx;">未设置</text>
|
||||||
<text v-if="bankInfo.withdrawal != null" style="font-size: 26rpx;">已认证</text>
|
<text v-if="bankInfo.withdrawal != null" style="font-size: 26rpx;">已认证</text>
|
||||||
</view>
|
</view>
|
||||||
<view><u-icon name="arrow-right"></u-icon></view>
|
<view><u-icon name="arrow-right"></u-icon></view>
|
||||||
|
@ -1,15 +1,17 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="box flex justify-center ">
|
<view class="box">
|
||||||
<view class="center">
|
<view style="height: 1px;background-color: #eeeeee;width: 100%;"></view>
|
||||||
<!-- <span class="title">{{detail.title}}</span> -->
|
<view class=" flex justify-center ">
|
||||||
|
|
||||||
<view>
|
<view class="center">
|
||||||
|
<span class="title">{{detail.title}}</span>
|
||||||
|
<view style="margin-top: 15rpx;">
|
||||||
<!-- <u-parse :content="detail.desc" :selectable="true"></u-parse> -->
|
<!-- <u-parse :content="detail.desc" :selectable="true"></u-parse> -->
|
||||||
<rich-text :nodes="detail.desc" selectable user-select></rich-text>
|
<rich-text :nodes="detail.desc" selectable user-select></rich-text>
|
||||||
<view style="margin:16rpx 0;">{{detail.createtime_text}}</view>
|
<view style="margin:16rpx 0;">{{detail.createtime_text}}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -49,7 +51,7 @@
|
|||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.box {
|
.box {
|
||||||
background: #f5f5f5;
|
background: #ffffff;
|
||||||
width: 750rpx;
|
width: 750rpx;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
}
|
}
|
||||||
@ -92,10 +94,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.center {
|
.center {
|
||||||
margin-top: 42rpx;
|
|
||||||
width: 640rpx;
|
width: 640rpx;
|
||||||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||||||
padding: 25rpx;
|
padding:50rpx 30rpx 30rpx 30rpx;
|
||||||
font-family: PingFang SC, PingFang SC;
|
font-family: PingFang SC, PingFang SC;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-size: 32rpx;
|
font-size: 32rpx;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="page">
|
<view class="page">
|
||||||
<view class="nav">
|
<view class="nav">
|
||||||
<u-navbar :titleStyle="{color:'#000000',fontSize:'32rpx'}" :is-back="true" leftIconColor="#000000" :autoBack="true" :bgColor="'#ffffff'" :title="title"
|
<u-navbar :titleStyle="{color:'#000000',fontSize:'34rpx',fontWeight:'bold'}" :is-back="true" leftIconColor="#000000" :autoBack="true" :bgColor="'#ffffff'" :title="title"
|
||||||
></u-navbar>
|
></u-navbar>
|
||||||
</view>
|
</view>
|
||||||
<view style="padding:30rpx;margin-top: 180rpx;" v-if="istype">
|
<view style="padding:30rpx;margin-top: 180rpx;" v-if="istype">
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
settleInfo.settled_amount }}</text>
|
settleInfo.settled_amount }}</text>
|
||||||
</view>
|
</view>
|
||||||
<view style="background-color: #eeeeee;height: 1px;width: 100%;margin-top: 20rpx;"></view>
|
<view style="background-color: #eeeeee;height: 1px;width: 100%;margin-top: 20rpx;"></view>
|
||||||
<view style="line-height:40rpx;">
|
<view style="line-height:40rpx;padding-bottom: 200rpx;">
|
||||||
<view style="font-size: 24rpx;color: #000000;font-weight: 600;margin-top: 20rpx;">
|
<view style="font-size: 24rpx;color: #000000;font-weight: 600;margin-top: 20rpx;">
|
||||||
<view>1、提现金额:</view>
|
<view>1、提现金额:</view>
|
||||||
<view style="text-indent: 2em;color: #FF4810;">本平台的提现操作默认将您当前“可提现金额”的全部款项一次性提现,暂不支持部分提现。</view>
|
<view style="text-indent: 2em;color: #FF4810;">本平台的提现操作默认将您当前“可提现金额”的全部款项一次性提现,暂不支持部分提现。</view>
|
||||||
@ -50,6 +50,9 @@
|
|||||||
<view style="text-indent: 2em;">如在提现过程中遇到任何问题,或超过预计到账时间仍未收到款项,请及时联系平台客服。</view>
|
<view style="text-indent: 2em;">如在提现过程中遇到任何问题,或超过预计到账时间仍未收到款项,请及时联系平台客服。</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view style="position: fixed;bottom: 0;width: 100%;background-color: #ffffff;padding: 20px 0px;">
|
||||||
<view class="btn_1" @click="withdraw()">确认提现</view>
|
<view class="btn_1" @click="withdraw()">确认提现</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@ -176,7 +179,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.btn_1 {
|
.btn_1 {
|
||||||
width: 100%;
|
width: 94%;
|
||||||
height: 90rpx;
|
height: 90rpx;
|
||||||
background: #323232;
|
background: #323232;
|
||||||
border-radius: 198rpx 198rpx 198rpx 198rpx;
|
border-radius: 198rpx 198rpx 198rpx 198rpx;
|
||||||
@ -186,6 +189,6 @@ export default {
|
|||||||
color: #BBFC5B;
|
color: #BBFC5B;
|
||||||
line-height: 90rpx;
|
line-height: 90rpx;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin-top: 70rpx;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
slot="center"
|
slot="center"
|
||||||
@click="one"
|
@click="one"
|
||||||
>
|
>
|
||||||
<span style="padding-right: 20rpx;">系统消息</span>
|
<span style="padding-right: 20rpx;font-size: 34rpx;font-weight: bold;">系统消息</span>
|
||||||
<u-icon
|
<u-icon
|
||||||
size="19"
|
size="19"
|
||||||
name="/static/clearicon.png"
|
name="/static/clearicon.png"
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<view class="row flex align-items textarea_fb" style="margin-top: 25rpx;">
|
<view class="row flex align-items textarea_fb" style="margin-top: 25rpx;">
|
||||||
<u--textarea v-model="form.content" :maxlength="800"
|
<u--textarea :confirmType="null" v-model="form.content" :maxlength="800"
|
||||||
placeholder="描述一下活动的亮点、活动内容、推荐的人群、叫大家一起运动吧~" :height="120"
|
placeholder="描述一下活动的亮点、活动内容、推荐的人群、叫大家一起运动吧~" :height="120"
|
||||||
placeholder-class="bttop"></u--textarea>
|
placeholder-class="bttop"></u--textarea>
|
||||||
</view>
|
</view>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
<view class="nav">
|
<view class="nav">
|
||||||
<u-navbar :is-back="true" leftIconColor="#000000" :autoBack="true" :bgColor="'transparent'"
|
<u-navbar :is-back="true" leftIconColor="#000000" :autoBack="true" :bgColor="'transparent'"
|
||||||
></u-navbar>
|
:titleStyle="{color:'#000000',fontSize:'34rpx',fontWeight:'bold'}"></u-navbar>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="center flex flex-column align-items">
|
<view class="center flex flex-column align-items">
|
||||||
|
@ -358,14 +358,25 @@
|
|||||||
while (len-- > 0) args[len] = arguments[len + 1];
|
while (len-- > 0) args[len] = arguments[len + 1];
|
||||||
|
|
||||||
if (obj === void 0) obj = {};
|
if (obj === void 0) obj = {};
|
||||||
|
console.log('wxPromise 调用:', fn.name || '未知函数', '参数:', JSON.stringify(obj));
|
||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function(resolve, reject) {
|
||||||
obj.success = function(res) {
|
obj.success = function(res) {
|
||||||
|
console.log('wxPromise 成功:', fn.name || '未知函数', '结果:', res);
|
||||||
resolve(res);
|
resolve(res);
|
||||||
};
|
};
|
||||||
obj.fail = function(err) {
|
obj.fail = function(err) {
|
||||||
|
console.error('wxPromise 失败:', fn.name || '未知函数', '错误:', err);
|
||||||
reject(err);
|
reject(err);
|
||||||
};
|
};
|
||||||
|
obj.complete = function() {
|
||||||
|
console.log('wxPromise 完成:', fn.name || '未知函数');
|
||||||
|
};
|
||||||
|
try {
|
||||||
fn.apply(void 0, [obj].concat(args));
|
fn.apply(void 0, [obj].concat(args));
|
||||||
|
} catch (error) {
|
||||||
|
console.error('wxPromise 执行异常:', fn.name || '未知函数', '错误:', error);
|
||||||
|
reject(error);
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -373,8 +384,27 @@
|
|||||||
function draw(ctx, reserve) {
|
function draw(ctx, reserve) {
|
||||||
if (reserve === void 0) reserve = false;
|
if (reserve === void 0) reserve = false;
|
||||||
|
|
||||||
return new Promise(function(resolve) {
|
console.log('开始绘制 canvas');
|
||||||
ctx.draw(reserve, resolve);
|
return new Promise(function(resolve, reject) {
|
||||||
|
try {
|
||||||
|
if (!ctx) {
|
||||||
|
console.error('绘制失败: ctx 为空');
|
||||||
|
reject(new Error('绘制失败: ctx 为空'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 直接绘制,不使用延时,避免额外问题
|
||||||
|
ctx.draw(reserve, function(res) {
|
||||||
|
console.log('绘制完成', res);
|
||||||
|
// 给一点时间让绘制完成
|
||||||
|
setTimeout(function() {
|
||||||
|
resolve(res);
|
||||||
|
}, 200);
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.error('绘制出错:', error);
|
||||||
|
reject(error);
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -420,7 +450,7 @@
|
|||||||
|
|
||||||
// `decode` is designed to be fully compatible with `atob` as described in the
|
// `decode` is designed to be fully compatible with `atob` as described in the
|
||||||
// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob
|
// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob
|
||||||
// The optimized base64-decoding algorithm used is based on @atk’s excellent
|
// The optimized base64-decoding algorithm used is based on @atk's excellent
|
||||||
// implementation. https://gist.github.com/atk/1020396
|
// implementation. https://gist.github.com/atk/1020396
|
||||||
var decode = function(input) {
|
var decode = function(input) {
|
||||||
input = String(input)
|
input = String(input)
|
||||||
@ -907,6 +937,81 @@
|
|||||||
fn = customOptions;
|
fn = customOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if circular crop is requested
|
||||||
|
var isCircular = customOptions && customOptions.shape === 'circle';
|
||||||
|
|
||||||
|
if (isCircular) {
|
||||||
|
// 使用更简单的方法实现圆形裁剪
|
||||||
|
console.log('使用简化方法进行圆形裁剪');
|
||||||
|
|
||||||
|
// 先使用普通方式裁剪出矩形
|
||||||
|
var rectOptions = Object.assign({}, canvasOptions);
|
||||||
|
|
||||||
|
// 确保有正确的输出尺寸
|
||||||
|
var destWidth = customOptions.destWidth || width;
|
||||||
|
var destHeight = customOptions.destHeight || height;
|
||||||
|
|
||||||
|
// 先获取矩形裁剪的临时文件
|
||||||
|
return canvasToTempFilePath.apply(null, [rectOptions])
|
||||||
|
.then(function(res) {
|
||||||
|
console.log('矩形裁剪完成,开始圆形处理');
|
||||||
|
var rectPath = res.tempFilePath;
|
||||||
|
|
||||||
|
// 创建新的画布进行圆形裁剪
|
||||||
|
var circleCanvas = self.targetCtx;
|
||||||
|
|
||||||
|
// 清空画布
|
||||||
|
circleCanvas.clearRect(0, 0, destWidth, destHeight);
|
||||||
|
|
||||||
|
// 创建圆形路径
|
||||||
|
circleCanvas.save();
|
||||||
|
circleCanvas.beginPath();
|
||||||
|
var centerX = destWidth / 2;
|
||||||
|
var centerY = destHeight / 2;
|
||||||
|
var radius = Math.min(destWidth, destHeight) / 2;
|
||||||
|
circleCanvas.arc(centerX, centerY, radius, 0, 2 * Math.PI);
|
||||||
|
circleCanvas.clip();
|
||||||
|
|
||||||
|
// 加载裁剪后的图片
|
||||||
|
return getImageInfo({ src: rectPath })
|
||||||
|
.then(function(imgInfo) {
|
||||||
|
console.log('加载裁剪图片信息:', imgInfo);
|
||||||
|
|
||||||
|
// 绘制到圆形区域
|
||||||
|
circleCanvas.drawImage(
|
||||||
|
rectPath,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
imgInfo.width,
|
||||||
|
imgInfo.height,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
destWidth,
|
||||||
|
destHeight
|
||||||
|
);
|
||||||
|
|
||||||
|
circleCanvas.restore();
|
||||||
|
|
||||||
|
// 绘制并导出 - 不再绘制边框
|
||||||
|
return draw(circleCanvas)
|
||||||
|
.then(function() {
|
||||||
|
var circleOptions = {
|
||||||
|
canvasId: targetId,
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
width: destWidth,
|
||||||
|
height: destHeight,
|
||||||
|
destWidth: destWidth,
|
||||||
|
destHeight: destHeight,
|
||||||
|
fileType: customOptions.fileType || 'png'
|
||||||
|
};
|
||||||
|
|
||||||
|
return canvasToTempFilePath.apply(null, [circleOptions]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
var arg = canvasOptions.componentContext ?
|
var arg = canvasOptions.componentContext ?
|
||||||
[canvasOptions, canvasOptions.componentContext] :
|
[canvasOptions, canvasOptions.componentContext] :
|
||||||
[canvasOptions];
|
[canvasOptions];
|
||||||
@ -1120,13 +1225,43 @@
|
|||||||
self.setBoundStyle = function(ref) {
|
self.setBoundStyle = function(ref) {
|
||||||
if (ref === void 0) ref = {};
|
if (ref === void 0) ref = {};
|
||||||
var color = ref.color;
|
var color = ref.color;
|
||||||
if (color === void 0) color = '#04b00f';
|
if (color === void 0) color = '#ffffff';
|
||||||
var mask = ref.mask;
|
var mask = ref.mask;
|
||||||
if (mask === void 0) mask = 'rgba(0, 0, 0, 0.3)';
|
if (mask === void 0) mask = 'rgba(0, 0, 0, 0)';
|
||||||
var lineWidth = ref.lineWidth;
|
var lineWidth = ref.lineWidth;
|
||||||
if (lineWidth === void 0) lineWidth = 1;
|
if (lineWidth === void 0) lineWidth = 1;
|
||||||
|
var isCircle = ref.isCircle;
|
||||||
|
if (isCircle === void 0) isCircle = true; // 默认使用圆形边框
|
||||||
|
|
||||||
var half = lineWidth / 2;
|
var half = lineWidth / 2;
|
||||||
|
|
||||||
|
// Check if we want a circular boundary instead of rectangular
|
||||||
|
if (isCircle) {
|
||||||
|
// Calculate center and radius
|
||||||
|
var centerX = x + width / 2;
|
||||||
|
var centerY = y + height / 2;
|
||||||
|
var radius = width / 2; // Assuming width = height for a circle
|
||||||
|
|
||||||
|
// Draw the mask (everything outside the circle)
|
||||||
|
self.ctx.beginPath();
|
||||||
|
self.ctx.setFillStyle(mask);
|
||||||
|
// Draw a rectangle covering the entire canvas
|
||||||
|
self.ctx.fillRect(0, 0, boundWidth, boundHeight);
|
||||||
|
|
||||||
|
// Create a circular hole in the mask
|
||||||
|
self.ctx.beginPath();
|
||||||
|
self.ctx.arc(centerX, centerY, radius, 0, 2 * Math.PI);
|
||||||
|
self.ctx.setFillStyle('transparent');
|
||||||
|
self.ctx.fill();
|
||||||
|
|
||||||
|
// Draw the border circle
|
||||||
|
self.ctx.beginPath();
|
||||||
|
self.ctx.arc(centerX, centerY, radius, 0, 2 * Math.PI);
|
||||||
|
self.ctx.setStrokeStyle(color);
|
||||||
|
self.ctx.setLineWidth(lineWidth);
|
||||||
|
self.ctx.stroke();
|
||||||
|
} else {
|
||||||
|
// Original rectangular boundary code
|
||||||
var boundOption = [{
|
var boundOption = [{
|
||||||
start: {
|
start: {
|
||||||
x: x - half,
|
x: x - half,
|
||||||
@ -1203,6 +1338,7 @@
|
|||||||
self.ctx.lineTo(op.step2.x, op.step2.y);
|
self.ctx.lineTo(op.step2.x, op.step2.y);
|
||||||
self.ctx.stroke();
|
self.ctx.stroke();
|
||||||
});
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user