Merge branch 'youda' into youda_wz
This commit is contained in:
commit
55a6b589ab
15
App.vue
15
App.vue
|
|
@ -222,4 +222,19 @@ button.hide {
|
|||
.uni-tabbar__icon {
|
||||
height: 50px !important;
|
||||
}
|
||||
|
||||
@keyframes m-zoom {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: scale(0.9);
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -25,6 +25,14 @@ class RequestManager {
|
|||
return whitelistUrls.some(whiteItem => url.indexOf(whiteItem) > -1)
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成唯一的nonce值
|
||||
* @returns {String} nonce值
|
||||
*/
|
||||
static generateNonce() {
|
||||
return md5(Date.now() + Math.random().toString(36).substring(2, 15));
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送网络请求
|
||||
* @param {Object} param 请求参数
|
||||
|
|
@ -43,7 +51,7 @@ class RequestManager {
|
|||
return new Promise((resolve, reject) => {
|
||||
// 参数检查
|
||||
if (!param || typeof param !== 'object') {
|
||||
reject(new Error('请求参数错误11'))
|
||||
reject(new Error('请求参数错误'))
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -90,9 +98,48 @@ class RequestManager {
|
|||
|
||||
console.log('请求URL:', requestUrl)
|
||||
|
||||
// 使用正则表达式从URL中提取主机名
|
||||
const hostRegex = /^(?:https?:\/\/)?([^\/]+)/i
|
||||
const matches = requestUrl.match(hostRegex)
|
||||
const host = matches && matches[1] ? matches[1] : 'localhost'
|
||||
|
||||
let header = {}
|
||||
|
||||
// 添加签名和防重放攻击参数
|
||||
// 1. 添加时间戳
|
||||
data.timestamp = Math.floor(Date.now() / 1000)
|
||||
// 2. 添加nonce随机字符串
|
||||
data.nonce = RequestManager.generateNonce()
|
||||
|
||||
if (method.toUpperCase() == 'POST') {
|
||||
// 按照键名对参数进行排序
|
||||
const sortedParams = {}
|
||||
Object.keys(data).sort().forEach(key => {
|
||||
sortedParams[key] = data[key]
|
||||
})
|
||||
|
||||
// 组合参数为字符串
|
||||
let signStr = ''
|
||||
for (const key in sortedParams) {
|
||||
if (typeof sortedParams[key] === 'object') {
|
||||
signStr += key + '=' + JSON.stringify(sortedParams[key]) + '&'
|
||||
} else {
|
||||
signStr += key + '=' + sortedParams[key] + '&'
|
||||
}
|
||||
}
|
||||
|
||||
// 获取时间戳,组合为密钥
|
||||
const timestamp = data.timestamp
|
||||
const appSecret = host + timestamp
|
||||
|
||||
// 添加密钥并去除最后的&
|
||||
signStr = signStr.substring(0, signStr.length - 1) + appSecret
|
||||
console.log('签名字符串:', signStr)
|
||||
|
||||
// 使用MD5生成签名
|
||||
const sign = md5(signStr)
|
||||
data.sign = sign
|
||||
|
||||
header = {
|
||||
'content-type': 'application/x-www-form-urlencoded',
|
||||
client: client,
|
||||
|
|
@ -102,41 +149,32 @@ class RequestManager {
|
|||
}
|
||||
} else {
|
||||
// GET请求,添加签名
|
||||
if (data) {
|
||||
// 添加时间戳参数
|
||||
data.timestamp = Math.floor(Date.now() / 1000);
|
||||
// 按照键名对参数进行排序
|
||||
const sortedParams = {}
|
||||
Object.keys(data).sort().forEach(key => {
|
||||
sortedParams[key] = data[key]
|
||||
})
|
||||
|
||||
// 按照键名对参数进行排序
|
||||
const sortedParams = {};
|
||||
Object.keys(data).sort().forEach(key => {
|
||||
sortedParams[key] = data[key];
|
||||
});
|
||||
|
||||
// 组合参数为字符串
|
||||
let signStr = '';
|
||||
for (const key in sortedParams) {
|
||||
signStr += key + '=' + sortedParams[key] + '&';
|
||||
}
|
||||
|
||||
// 获取当前请求的域名和时间戳,组合为密钥
|
||||
// 使用正则表达式从URL中提取主机名
|
||||
const hostRegex = /^(?:https?:\/\/)?([^\/]+)/i;
|
||||
const matches = requestUrl.match(hostRegex);
|
||||
const host = matches && matches[1] ? matches[1] : 'localhost';
|
||||
const timestamp = data.timestamp;
|
||||
const appSecret = host + timestamp;
|
||||
|
||||
// 添加密钥并去除最后的&
|
||||
signStr = signStr.substring(0, signStr.length - 1) + appSecret;
|
||||
console.log(signStr);
|
||||
|
||||
// 使用MD5生成签名
|
||||
const sign = md5(signStr);
|
||||
|
||||
// 添加签名到请求参数
|
||||
data.sign = sign;
|
||||
// 组合参数为字符串
|
||||
let signStr = ''
|
||||
for (const key in sortedParams) {
|
||||
signStr += key + '=' + sortedParams[key] + '&'
|
||||
}
|
||||
|
||||
// 获取时间戳,组合为密钥
|
||||
const timestamp = data.timestamp
|
||||
const appSecret = host + timestamp
|
||||
|
||||
// 添加密钥并去除最后的&
|
||||
signStr = signStr.substring(0, signStr.length - 1) + appSecret
|
||||
console.log('签名字符串:', signStr)
|
||||
|
||||
// 使用MD5生成签名
|
||||
const sign = md5(signStr)
|
||||
|
||||
// 添加签名到请求参数
|
||||
data.sign = sign
|
||||
|
||||
header = {
|
||||
'content-type': 'application/json',
|
||||
token: token,
|
||||
|
|
|
|||
|
|
@ -4,17 +4,17 @@
|
|||
<view class="banner-slot-container" v-if="$slots.default">
|
||||
<slot></slot>
|
||||
</view>
|
||||
|
||||
<swiper class="swiper-box" :style="{ height: height + 'rpx' }" :autoplay="true" :indicator-dots="false" :circular="true" :interval="3000"
|
||||
@change="swChange">
|
||||
|
||||
<swiper class="swiper-box" :style="{ height: height + 'rpx' }" :autoplay="true" :indicator-dots="false"
|
||||
:circular="true" :interval="3000" @change="swChange">
|
||||
<swiper-item v-for="(v, i) in advert" :key="i" @click="navTo(v)">
|
||||
<image class="yh_bg" :src="v.imgurl"></image>
|
||||
<image class="yh_bg" :src="v.imgurl" :style="{ width: imgWidth + '%' }"></image>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
|
||||
|
||||
<!-- 指示器 (可选) -->
|
||||
<view class="sw-dot relative" v-if="showIndicator">
|
||||
<view class="sw-dot-item" v-for="(item, i) in advert" :key="i" :class="{act: swCur == i}"></view>
|
||||
<view class="sw-dot-item" v-for="(item, i) in advert" :key="i" :class="{ act: swCur == i }"></view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
|
@ -37,7 +37,12 @@ export default {
|
|||
height: {
|
||||
type: [Number, String],
|
||||
default: 465
|
||||
}
|
||||
},
|
||||
// 图片自定义样式
|
||||
imgWidth: {
|
||||
type: Number,
|
||||
default: 92
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
|
@ -63,55 +68,17 @@ export default {
|
|||
}
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
// 轮播切换事件
|
||||
swChange(e) {
|
||||
this.swCur = e.detail.current;
|
||||
},
|
||||
|
||||
|
||||
// 点击轮播图跳转
|
||||
navTo(item) {
|
||||
/* 领券中心 */
|
||||
if (item.ttype == 1) {
|
||||
this.$c.to({
|
||||
url: '/package/index/coupon-center',
|
||||
query: {
|
||||
coupon_id: item.coupon_id
|
||||
}
|
||||
})
|
||||
}
|
||||
this.$c.navTo(item);
|
||||
|
||||
if (item.goods_id > 0) {
|
||||
if (item.ttype == 2) {
|
||||
/* 一番赏 */
|
||||
this.$c.to({
|
||||
url: '/pages/shouye/detail',
|
||||
query: {
|
||||
goods_id: item.goods_id
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/* 无限赏 */
|
||||
if (item.ttype == 3) {
|
||||
this.$c.to({
|
||||
url: '/pages/shouye/detail_wuxian',
|
||||
query: {
|
||||
goods_id: item.goods_id
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/* 连击赏 */
|
||||
if (item.ttype == 4) {
|
||||
this.$c.to({
|
||||
url: '/package/index/lian-ji',
|
||||
query: {
|
||||
goods_id: item.goods_id
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -133,7 +100,7 @@ export default {
|
|||
}
|
||||
|
||||
/* 允许插槽内的元素可以被点击 */
|
||||
.banner-slot-container > * {
|
||||
.banner-slot-container>* {
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
|
|
@ -157,7 +124,7 @@ export default {
|
|||
position: absolute;
|
||||
bottom: 20rpx;
|
||||
width: 100%;
|
||||
|
||||
|
||||
&-item {
|
||||
width: 12rpx;
|
||||
height: 12rpx;
|
||||
|
|
@ -165,7 +132,7 @@ export default {
|
|||
background-color: rgba(255, 255, 255, 0.5);
|
||||
margin: 0 5rpx;
|
||||
transition: all 0.3s;
|
||||
|
||||
|
||||
&.act {
|
||||
width: 24rpx;
|
||||
border-radius: 6rpx;
|
||||
|
|
@ -173,4 +140,4 @@ export default {
|
|||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
|
@ -16,6 +16,9 @@
|
|||
<text>{{ localBossCardData.king_user.z_nums }}</text>
|
||||
发
|
||||
</view>
|
||||
<view class="" v-if="localBossCardData.king_user == null">
|
||||
虚位以待
|
||||
</view>
|
||||
</view>
|
||||
<view class="flex ml40 mr30" @click="openBossPop">
|
||||
<text style="font-size: 20rpx; color: #999999;">查看更多 ></text>
|
||||
|
|
@ -24,7 +27,7 @@
|
|||
|
||||
<!-- 领主弹窗 - 显示领主详细信息和挑战人数/领主记录 -->
|
||||
<uni-popup ref="bossPop" type="bottom" mask-background-color="rgba(0,0,0,0.8)">
|
||||
<view v-if="localBossCardData && localBossCardData.king_user" class="boss-pop relative">
|
||||
<view v-if="localBossCardData" class="boss-pop relative">
|
||||
<!-- 弹窗标题 -->
|
||||
<view class="boss-pop-title">
|
||||
<text>领主接力</text>
|
||||
|
|
@ -41,7 +44,7 @@
|
|||
<image :src="$img1('index/king.png')"></image>
|
||||
|
||||
<view class="boss-name hang1">
|
||||
{{ localBossCardData.king_user.nickname }}
|
||||
{{ (localBossCardData.king_user == null ? "虚位以待" : localBossCardData.king_user.nickname) }}
|
||||
</view>
|
||||
|
||||
<!-- 规则按钮 -->
|
||||
|
|
@ -67,8 +70,7 @@
|
|||
</view>
|
||||
|
||||
<!-- 滚动列表区域 - 显示挑战人数或领主记录 -->
|
||||
<child-scroll class="list-wrap" height="350rpx" ref="bossScroll" :fixed="false" :size="20"
|
||||
@up="getBossData">
|
||||
<child-scroll class="list-wrap" height="350rpx" ref="bossScroll" :fixed="false" :size="20" @up="getBossData">
|
||||
<view class="boss-list">
|
||||
<template v-for="(item, i) in bossList">
|
||||
<!-- 挑战人数列表项 -->
|
||||
|
|
@ -208,13 +210,13 @@ export default {
|
|||
}
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* 打开领主弹窗
|
||||
*/
|
||||
openBossPop() {
|
||||
this.$refs.bossPop.open();
|
||||
|
||||
|
||||
// // 打开弹窗的同时加载挑战人数数据
|
||||
// this.$nextTick(() => {
|
||||
// // 确保bossList是空的,避免重复加载
|
||||
|
|
@ -224,19 +226,19 @@ export default {
|
|||
// this.$refs.bossScroll.mescroll.resetUpScroll();
|
||||
// this.$refs.bossScroll.mescroll.scrollTo(0, 0);
|
||||
// }
|
||||
|
||||
|
||||
// // 主动获取挑战人数数据
|
||||
// this.getBossData({ num: 1, init: false });
|
||||
// });
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* 打开指定弹窗
|
||||
* @param {String} popName - 弹窗引用名称
|
||||
*/
|
||||
open(popName) {
|
||||
this.$refs[popName].open();
|
||||
|
||||
|
||||
// 如果是玩法规则弹窗,需要获取规则数据
|
||||
if (popName === 'playPop') {
|
||||
this.$c.getRule(14).then(res => {
|
||||
|
|
@ -246,7 +248,7 @@ export default {
|
|||
});
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* 关闭指定弹窗
|
||||
* @param {String} popName - 弹窗引用名称
|
||||
|
|
@ -254,7 +256,7 @@ export default {
|
|||
close(popName) {
|
||||
this.$refs[popName].close();
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* 切换标签页
|
||||
* @param {Number} i - 标签页索引
|
||||
|
|
@ -267,7 +269,7 @@ export default {
|
|||
this.$refs.bossScroll.mescroll.resetUpScroll();
|
||||
this.$refs.bossScroll.mescroll.scrollTo(0, 0);
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* 获取挑战人数/领主记录列表数据
|
||||
* @param {Object} params - 参数对象
|
||||
|
|
@ -341,6 +343,7 @@ export default {
|
|||
}
|
||||
|
||||
&-content {
|
||||
|
||||
/* 领主昵称 */
|
||||
>view:nth-child(1) {
|
||||
font-weight: normal;
|
||||
|
|
@ -612,6 +615,7 @@ export default {
|
|||
height: 300rpx;
|
||||
|
||||
.p-item {
|
||||
|
||||
/* 物品图片 */
|
||||
.play-pic {
|
||||
margin: 0 auto 0;
|
||||
|
|
@ -642,4 +646,4 @@ export default {
|
|||
color: #8A8A8A;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
148
components/float-ball/FloatBall.vue
Normal file
148
components/float-ball/FloatBall.vue
Normal file
|
|
@ -0,0 +1,148 @@
|
|||
<template>
|
||||
<view>
|
||||
<!-- 悬浮球 -->
|
||||
<template v-if="floatBall">
|
||||
<view v-for="(item, index) in floatBall" :style="[getBallStyle(item)]" :key="index" class="group-fixed1"
|
||||
@click="BallClick(item)">
|
||||
<image :src="item.image"></image>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<!-- 悬浮球弹窗 -->
|
||||
<uni-popup ref="floatBall_popup" type="center" maskBackgroundColor="rgba(0,0,0,0.8)">
|
||||
<view class="pop-ball"
|
||||
:style="{ backgroundImage: 'url(' + ballItem.image_bj + ')', backgroundSize: '100% 99.5%', backgroundRepeat: 'no-repeat' }">
|
||||
<image show-menu-by-longpress v-if="ballItem != null" :src="ballItem.image_details" mode="aspectFit"
|
||||
:style="[getPopupStyle(ballItem)]">
|
||||
</image>
|
||||
</view>
|
||||
<view class="pop-ball-close flex" @click="$refs.floatBall_popup.close()">
|
||||
<view style="width: 48rpx;height: 48rpx;border-radius: 50%;opacity: 0.5;">
|
||||
<image show-menu-by-longpress :src="$img1('common/close.png')" class="img100" />
|
||||
</view>
|
||||
</view>
|
||||
</uni-popup>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'FloatBall',
|
||||
data() {
|
||||
return {
|
||||
floatBall: [],
|
||||
ballItem: null
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
getBallStyle() {
|
||||
return (item) => {
|
||||
let s = {
|
||||
width: item.width,
|
||||
height: item.height,
|
||||
top: item.position_y,
|
||||
};
|
||||
if (item.position_x.indexOf('-') > -1) {
|
||||
let position_x = item.position_x.split('-')[1];
|
||||
s.right = position_x;
|
||||
} else {
|
||||
s.left = item.position_x;
|
||||
}
|
||||
if (item.effect == 1) {
|
||||
s.animation = "m-zoom 1.2s ease-in-out infinite";
|
||||
}
|
||||
return s;
|
||||
}
|
||||
},
|
||||
getPopupStyle() {
|
||||
return (item) => {
|
||||
if (item == null) {
|
||||
return {};
|
||||
}
|
||||
let s = {
|
||||
width: item.image_details_w,
|
||||
height: item.image_details_h,
|
||||
position: 'relative',
|
||||
};
|
||||
if (item.image_details_x != "0") {
|
||||
s.left = item.image_details_x;
|
||||
}
|
||||
if (item.image_details_y != "0") {
|
||||
s.top = item.image_details_y;
|
||||
}
|
||||
return s;
|
||||
};
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
BallClick(item) {
|
||||
if (item.type == 2) {
|
||||
this.$c.nav(item.link_url);
|
||||
return;
|
||||
}
|
||||
if (item.type == 1) {
|
||||
this.ballItem = item;
|
||||
this.$refs.floatBall_popup.open();
|
||||
}
|
||||
},
|
||||
async getFloatBall() {
|
||||
const { status, data, msg } = await this.$request.get("getFloatBall");
|
||||
if (status == 1) {
|
||||
this.floatBall = data;
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getFloatBall();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.group-fixed1 {
|
||||
width: 52rpx;
|
||||
height: 120rpx;
|
||||
position: fixed;
|
||||
z-index: 10;
|
||||
right: 0;
|
||||
top: 21vh;
|
||||
|
||||
image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.pop-ball {
|
||||
width: 85vw;
|
||||
// height: 400px;
|
||||
position: relative;
|
||||
border-radius: 25rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.pop-ball-close {
|
||||
margin-top: 20rpx;
|
||||
width: 100%;
|
||||
height: 50rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
@keyframes m-zoom {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: scale(0.9);
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -6,8 +6,11 @@
|
|||
<view class="_rule_pop common_bg">
|
||||
<view class="_rule_pop_title">{{ ruleData.title }}</view>
|
||||
|
||||
<scroll-view scroll-y class="_rule_pop_bd" :class="{'has-check': noticeCheck}">
|
||||
<view v-html="ruleData.content"></view>
|
||||
<scroll-view scroll-y class="_rule_pop_bd" :class="{ 'has-check': noticeCheck }">
|
||||
<view v-if="is_image_optimizer&&images.length>0" class="image-optimizer">
|
||||
<image show-menu-by-longpress v-for="(image, index) in images" :key="index" :src="image" mode="widthFix" style="width: 100%;"></image>
|
||||
</view>
|
||||
<view v-else v-html="ruleData.content"></view>
|
||||
</scroll-view>
|
||||
|
||||
<view v-if="noticeCheck" class="check-btn" @click="todayHide = !todayHide">
|
||||
|
|
@ -28,116 +31,137 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
noticeCheck: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
export default {
|
||||
props: {
|
||||
noticeCheck: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
ruleData: '',
|
||||
todayHide: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
ruleData: '',
|
||||
todayHide: false,
|
||||
is_image_optimizer: false,
|
||||
images: []
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
console.log(this.noticeCheck)
|
||||
},
|
||||
mounted() {
|
||||
console.log(this.noticeCheck)
|
||||
},
|
||||
|
||||
methods: {
|
||||
popChange({
|
||||
show
|
||||
}) {
|
||||
if (!show) {
|
||||
if (this.todayHide) {
|
||||
uni.setStorageSync('_last_notice_date', this.$c.getDateTime())
|
||||
}
|
||||
methods: {
|
||||
popChange({
|
||||
show
|
||||
}) {
|
||||
if (!show) {
|
||||
if (this.todayHide) {
|
||||
uni.setStorageSync('_last_notice_date', this.$c.getDateTime())
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
close() {
|
||||
this.$refs._rule_pop.close()
|
||||
},
|
||||
close() {
|
||||
this.$refs._rule_pop.close()
|
||||
},
|
||||
|
||||
open(opt) {
|
||||
this.ruleData = opt
|
||||
open(opt) {
|
||||
this.ruleData = opt
|
||||
|
||||
this.$refs._rule_pop.open()
|
||||
},
|
||||
this.$refs._rule_pop.open()
|
||||
},
|
||||
|
||||
async getRule(id, title = '') {
|
||||
let res = await this.$c.getRule(id, true)
|
||||
async getRule(id, title = '') {
|
||||
this.is_image_optimizer = false;
|
||||
this.images = [];
|
||||
let { status, data, msg, is_image_optimizer } = await this.$c.getRule(id, true)
|
||||
if (status) {
|
||||
if (is_image_optimizer != null && is_image_optimizer == 1) {
|
||||
console.log('开启图片优化');
|
||||
this.is_image_optimizer = true;
|
||||
// 正则表达式获取所有图片地址
|
||||
const imgRegex = /<img[^>]+src="([^"]+)"[^>]*>/g;
|
||||
let match;
|
||||
while ((match = imgRegex.exec(data)) !== null) {
|
||||
// images.push(match[1]);
|
||||
this.images.push(match[1]);
|
||||
}
|
||||
console.log('提取的图片地址:', this.images);
|
||||
// 这里可以添加图片优化的逻辑
|
||||
}
|
||||
this.open({
|
||||
title: title,
|
||||
content: res.data
|
||||
content: data
|
||||
})
|
||||
} else {
|
||||
this.$c.toast(msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
._rule_pop {
|
||||
width: 610rpx;
|
||||
height: 820rpx;
|
||||
box-sizing: border-box;
|
||||
padding: 0 40rpx 0;
|
||||
background: #FFFFFF;
|
||||
border-radius: 30rpx;
|
||||
._rule_pop {
|
||||
width: 610rpx;
|
||||
height: 820rpx;
|
||||
box-sizing: border-box;
|
||||
padding: 0 40rpx 0;
|
||||
background: #FFFFFF;
|
||||
border-radius: 30rpx;
|
||||
|
||||
._rule_pop_title {
|
||||
padding: 40rpx 0;
|
||||
text-align: center;
|
||||
font-weight: 500;
|
||||
font-size: 36rpx;
|
||||
color: #333333;
|
||||
// font-family: YouSheBiaoTiHei;
|
||||
}
|
||||
._rule_pop_title {
|
||||
padding: 40rpx 0;
|
||||
text-align: center;
|
||||
font-weight: 500;
|
||||
font-size: 36rpx;
|
||||
color: #333333;
|
||||
// font-family: YouSheBiaoTiHei;
|
||||
}
|
||||
|
||||
._rule_pop_bd {
|
||||
height: 670rpx;
|
||||
._rule_pop_bd {
|
||||
height: 670rpx;
|
||||
|
||||
font-size: 26rpx;
|
||||
font-family: Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #999999;
|
||||
font-size: 26rpx;
|
||||
font-family: Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
color: #999999;
|
||||
|
||||
&.has-check {
|
||||
height: 620rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.check-btn {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 20rpx 0 0;
|
||||
|
||||
.icon {
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
margin-right: 10rpx;
|
||||
|
||||
image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
font-size: 24rpx;
|
||||
color: #888;
|
||||
}
|
||||
|
||||
.close {
|
||||
width: 48rpx;
|
||||
height: 48rpx;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
bottom: 0;
|
||||
transform: translate(-50%, 150%);
|
||||
&.has-check {
|
||||
height: 620rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.check-btn {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 20rpx 0 0;
|
||||
|
||||
.icon {
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
margin-right: 10rpx;
|
||||
|
||||
image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
font-size: 24rpx;
|
||||
color: #888;
|
||||
}
|
||||
|
||||
.close {
|
||||
width: 48rpx;
|
||||
height: 48rpx;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
bottom: 0;
|
||||
transform: translate(-50%, 150%);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -47,8 +47,8 @@
|
|||
</view>
|
||||
</view>
|
||||
<view class="swiper-container">
|
||||
<swiper class="swiper-box" :current="currentItemId" :autoplay="false"
|
||||
@change="handleSwiperChange" :indicator-dots="false" :circular="true" :interval="3000">
|
||||
<swiper class="swiper-box" :current="currentItemId" :autoplay="false" @change="handleSwiperChange"
|
||||
:indicator-dots="false" :circular="true" :interval="3000">
|
||||
<swiper-item v-for="(item, index) in goodsList" :key="index" :item-id="item.index">
|
||||
<view class="swiper-item-content">
|
||||
<view class="item-background">
|
||||
|
|
@ -74,10 +74,8 @@
|
|||
|
||||
|
||||
<scroll-view v-if="currentTab == 1" scroll-y="true" style="width: 100%; height: 890rpx; padding: 24rpx;">
|
||||
<view class="row align-center participant-row"
|
||||
:class="{ 'show': participantRowsShow[index] }"
|
||||
v-for="(item, index) in participantList" :key="index"
|
||||
style="height: 76rpx; margin-bottom: 24rpx;">
|
||||
<view class="row align-center participant-row" :class="{ 'show': participantRowsShow[index] }"
|
||||
v-for="(item, index) in participantList" :key="index" style="height: 76rpx; margin-bottom: 24rpx;">
|
||||
|
||||
<view class="center" style="width: 30rpx;">
|
||||
<text style="color: #999999; font-size: 20rpx;">{{ index + 1 }}</text>
|
||||
|
|
@ -96,10 +94,8 @@
|
|||
</view>
|
||||
</scroll-view>
|
||||
<scroll-view v-if="currentTab == 2" scroll-y="true" style="width: 100%; height: 890rpx; padding: 24rpx;">
|
||||
<view class="row align-center award-row"
|
||||
:class="{ 'show': awardRowsShow[index] }"
|
||||
v-for="(item, index) in awardRecordList" :key="index"
|
||||
style="height: 76rpx; margin-bottom: 24rpx;">
|
||||
<view class="row align-center award-row" :class="{ 'show': awardRowsShow[index] }"
|
||||
v-for="(item, index) in awardRecordList" :key="index" style="height: 76rpx; margin-bottom: 24rpx;">
|
||||
|
||||
<view class="center" style="width: 30rpx;">
|
||||
<text style="color: #999999; font-size: 20rpx;">{{ index + 1 }}</text>
|
||||
|
|
@ -122,8 +118,7 @@
|
|||
<view class="column align-center"
|
||||
style="width: 100%; height: 198rpx; background-color: #fff; margin-top: 8rpx;">
|
||||
|
||||
<view class="participation-button"
|
||||
:class="{ 'show': buttonShow, 'pulse': buttonPulse }"
|
||||
<view class="participation-button" :class="{ 'show': buttonShow, 'pulse': buttonPulse }"
|
||||
@click="handleButtonPulse">
|
||||
<text class="button-text">{{ buttonText }}</text>
|
||||
</view>
|
||||
|
|
@ -147,7 +142,7 @@
|
|||
</view>
|
||||
<view class="popup-content">
|
||||
提示:需在指定时间{{ bonusData.start_time }}-{{ bonusData.end_time }}消耗达到{{ bonusData.choujiang_xianzhi
|
||||
}}钻石,即可加入房间,还需{{ remainingDiamond }}钻石.
|
||||
}}钻石,即可加入房间,还需{{ $c.removeTrailingZeros(remainingDiamond) }}钻石.
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
|
@ -224,7 +219,7 @@ export default {
|
|||
isAgree: true,
|
||||
loading: false,
|
||||
user_count: 0, //用户已经购买的次数
|
||||
|
||||
|
||||
// 动画状态控制变量
|
||||
headerShow: false,
|
||||
contentShow: false,
|
||||
|
|
@ -232,7 +227,7 @@ export default {
|
|||
tabsShow: [false, false, false],
|
||||
participantRowsShow: [],
|
||||
awardRowsShow: [],
|
||||
|
||||
|
||||
// 按钮脉冲动画
|
||||
buttonPulse: false
|
||||
}
|
||||
|
|
@ -245,7 +240,7 @@ export default {
|
|||
return '';
|
||||
},
|
||||
remainingDiamond() {
|
||||
let t = this.bonusData.choujiang_xianzhi - this.user_total_consumption;
|
||||
let t = (this.bonusData.choujiang_xianzhi - this.user_total_consumption).toFixed(2);
|
||||
return t > 0 ? t : 0;
|
||||
}
|
||||
},
|
||||
|
|
@ -253,7 +248,7 @@ export default {
|
|||
console.log(options)
|
||||
this.goods_id = options.goods_id
|
||||
await this.load(options.goods_id)
|
||||
|
||||
|
||||
// 添加页面加载动画
|
||||
setTimeout(() => {
|
||||
this.applyPageTransitions();
|
||||
|
|
@ -475,11 +470,11 @@ export default {
|
|||
this.remainingTime = this.formatRemainingTime(endDate - serverNow, "距离开奖时间:");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}, 1000);
|
||||
|
||||
|
||||
|
||||
},
|
||||
|
||||
onUnload() {
|
||||
|
|
@ -512,7 +507,7 @@ export default {
|
|||
} catch (error) {
|
||||
console.error("加载参与人数列表失败", error);
|
||||
}
|
||||
|
||||
|
||||
if (this.currentTab === 1) {
|
||||
setTimeout(() => {
|
||||
this.animateListItems('participant-row');
|
||||
|
|
@ -543,7 +538,7 @@ export default {
|
|||
} catch (error) {
|
||||
console.error("加载赏品记录失败", error);
|
||||
}
|
||||
|
||||
|
||||
if (this.currentTab === 2) {
|
||||
setTimeout(() => {
|
||||
this.animateListItems('award-row');
|
||||
|
|
@ -566,7 +561,7 @@ export default {
|
|||
// 根据列表类型初始化动画状态数组
|
||||
if (className === 'participant-row') {
|
||||
this.participantRowsShow = Array(this.participantList.length).fill(false);
|
||||
|
||||
|
||||
// 逐个显示列表项
|
||||
for (let i = 0; i < this.participantList.length; i++) {
|
||||
((index) => {
|
||||
|
|
@ -577,7 +572,7 @@ export default {
|
|||
}
|
||||
} else if (className === 'award-row') {
|
||||
this.awardRowsShow = Array(this.awardRecordList.length).fill(false);
|
||||
|
||||
|
||||
// 逐个显示列表项
|
||||
for (let i = 0; i < this.awardRecordList.length; i++) {
|
||||
((index) => {
|
||||
|
|
@ -595,7 +590,7 @@ export default {
|
|||
const endDate = new Date(this.bonusData.end_time.replace(/-/g, '/'));
|
||||
const openDate = new Date(this.bonusData.open_time.replace(/-/g, '/'));
|
||||
// console.log(currentDate,startDate);
|
||||
|
||||
|
||||
if (currentDate < startDate) {
|
||||
this.buttonText = "未开始";
|
||||
} else if (currentDate >= startDate && currentDate <= endDate) {
|
||||
|
|
@ -617,7 +612,7 @@ export default {
|
|||
setTimeout(() => {
|
||||
this.buttonPulse = false;
|
||||
}, 400); // 动画时长结束后移除类
|
||||
|
||||
|
||||
// 调用原始点击处理程序
|
||||
this.handleButtonClick();
|
||||
},
|
||||
|
|
@ -700,19 +695,19 @@ export default {
|
|||
url: '/pages/shouye/index'
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
applyPageTransitions() {
|
||||
// 头部信息
|
||||
this.headerShow = true;
|
||||
|
||||
|
||||
// 标签
|
||||
setTimeout(() => { this.tabsShow[0] = true; }, 100);
|
||||
setTimeout(() => { this.tabsShow[1] = true; }, 200);
|
||||
setTimeout(() => { this.tabsShow[2] = true; }, 300);
|
||||
|
||||
|
||||
// 内容区
|
||||
setTimeout(() => { this.contentShow = true; }, 200);
|
||||
|
||||
|
||||
// 按钮
|
||||
setTimeout(() => { this.buttonShow = true; }, 300);
|
||||
}
|
||||
|
|
@ -736,7 +731,7 @@ export default {
|
|||
position: relative;
|
||||
margin-right: 25rpx;
|
||||
transition: all 0.3s ease;
|
||||
|
||||
|
||||
&:active {
|
||||
transform: scale(0.95);
|
||||
}
|
||||
|
|
@ -764,7 +759,7 @@ export default {
|
|||
font-weight: 400;
|
||||
font-size: 28rpx;
|
||||
color: #CCCCCC;
|
||||
|
||||
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
|
|
@ -784,6 +779,7 @@ export default {
|
|||
from {
|
||||
width: 0;
|
||||
}
|
||||
|
||||
to {
|
||||
width: 48rpx;
|
||||
}
|
||||
|
|
@ -807,25 +803,25 @@ export default {
|
|||
padding: 8rpx;
|
||||
border-radius: 12rpx;
|
||||
position: relative;
|
||||
|
||||
|
||||
&:active {
|
||||
transform: translateY(-6rpx) scale(1.05);
|
||||
background-color: rgba(0, 0, 0, 0.02);
|
||||
}
|
||||
|
||||
|
||||
image {
|
||||
transition: all 0.25s ease;
|
||||
box-shadow: 0 2rpx 6rpx rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
|
||||
&:active image {
|
||||
box-shadow: 0 8rpx 12rpx rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
|
||||
text {
|
||||
transition: color 0.25s ease;
|
||||
}
|
||||
|
||||
|
||||
&:active text {
|
||||
color: #666 !important;
|
||||
}
|
||||
|
|
@ -839,11 +835,11 @@ export default {
|
|||
overflow: visible;
|
||||
border: none !important;
|
||||
outline: none !important;
|
||||
|
||||
|
||||
&::after {
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
|
|
@ -857,11 +853,11 @@ export default {
|
|||
opacity: 0;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
|
||||
&:active {
|
||||
transform: scale(0.9) rotate(15deg);
|
||||
}
|
||||
|
||||
|
||||
&:active::before {
|
||||
transform: scale(1);
|
||||
opacity: 1;
|
||||
|
|
@ -924,18 +920,18 @@ export default {
|
|||
box-shadow: 0 4rpx 8rpx rgba(0, 0, 0, 0.1);
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
|
||||
// 页面加载动画
|
||||
opacity: 0;
|
||||
transform: translateY(20rpx);
|
||||
transition: transform 0.5s ease, opacity 0.5s ease, background-color 0.2s ease, box-shadow 0.2s ease;
|
||||
transition-delay: 0.3s;
|
||||
|
||||
|
||||
&.show {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
|
||||
&.pulse {
|
||||
animation: buttonPulse 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
|
||||
}
|
||||
|
|
@ -969,7 +965,7 @@ export default {
|
|||
font-size: 35rpx;
|
||||
background-color: #f9f9f9;
|
||||
position: relative;
|
||||
|
||||
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
|
|
@ -1011,11 +1007,11 @@ export default {
|
|||
transition: all 0.25s ease;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
|
||||
&:active {
|
||||
transform: scale(0.95);
|
||||
}
|
||||
|
||||
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
|
|
@ -1029,12 +1025,12 @@ export default {
|
|||
opacity: 0;
|
||||
transition: all 0.3s ease-out;
|
||||
}
|
||||
|
||||
|
||||
&:active::after {
|
||||
transform: translate(-50%, -50%) scale(3);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
|
||||
text {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
|
|
@ -1046,11 +1042,11 @@ export default {
|
|||
.cancel-button {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #eee;
|
||||
|
||||
|
||||
text {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
|
||||
&:active {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
|
@ -1059,11 +1055,11 @@ export default {
|
|||
.confirm-button {
|
||||
background-color: #CDEF27;
|
||||
box-shadow: 0 4rpx 8rpx rgba(205, 239, 39, 0.3);
|
||||
|
||||
|
||||
text {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
|
||||
&:active {
|
||||
background-color: #b9d721;
|
||||
box-shadow: 0 2rpx 4rpx rgba(205, 239, 39, 0.2);
|
||||
|
|
@ -1075,6 +1071,7 @@ export default {
|
|||
transform: scale(0.9);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {
|
||||
transform: scale(1);
|
||||
opacity: 1;
|
||||
|
|
@ -1086,6 +1083,7 @@ export default {
|
|||
opacity: 0;
|
||||
transform: translateY(20rpx);
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
|
|
@ -1096,7 +1094,7 @@ export default {
|
|||
opacity: 0;
|
||||
transform: translateX(-20rpx);
|
||||
transition: all 0.4s ease;
|
||||
|
||||
|
||||
&.show {
|
||||
opacity: 1;
|
||||
transform: translateX(0);
|
||||
|
|
@ -1107,7 +1105,7 @@ export default {
|
|||
opacity: 0;
|
||||
transform: translateX(-20rpx);
|
||||
transition: all 0.4s ease;
|
||||
|
||||
|
||||
&.show {
|
||||
opacity: 1;
|
||||
transform: translateX(0);
|
||||
|
|
@ -1118,7 +1116,7 @@ export default {
|
|||
opacity: 0;
|
||||
transform: translateY(-20rpx);
|
||||
transition: all 0.5s ease;
|
||||
|
||||
|
||||
&.show {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
|
|
@ -1129,7 +1127,7 @@ export default {
|
|||
opacity: 0;
|
||||
transform: translateY(10rpx);
|
||||
transition: all 0.4s ease;
|
||||
|
||||
|
||||
&.show {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
|
|
@ -1141,7 +1139,7 @@ export default {
|
|||
transform: translateY(20rpx);
|
||||
transition: all 0.5s ease;
|
||||
transition-delay: 0.2s;
|
||||
|
||||
|
||||
&.show {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
|
|
@ -1153,15 +1151,18 @@ export default {
|
|||
transform: scale(1);
|
||||
box-shadow: 0 4rpx 8rpx rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
40% {
|
||||
transform: scale(0.92);
|
||||
box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
80% {
|
||||
transform: scale(1.05);
|
||||
box-shadow: 0 6rpx 10rpx rgba(0, 0, 0, 0.15);
|
||||
background-color: #e0ff3a;
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: scale(1);
|
||||
box-shadow: 0 4rpx 8rpx rgba(0, 0, 0, 0.1);
|
||||
|
|
|
|||
|
|
@ -1,87 +1,81 @@
|
|||
<template>
|
||||
<view style="padding-bottom: 300rpx; background-color: white;">
|
||||
<view class="" style="display: flex; flex-direction: column;">
|
||||
<view style="position: relative;">
|
||||
<view class="title">
|
||||
商城好物
|
||||
</view>
|
||||
<image v-if="advert != null && advert.length > 0" :src="advert[0].imgurl"
|
||||
style="width: 100%; margin-top:10rpx ;" mode=""></image>
|
||||
</view>
|
||||
<view class="grid-container">
|
||||
<view v-for="(item, index) in datas" :key="index" class="grid-item" @click="order_money(item)">
|
||||
<page-container title="商城好物">
|
||||
<banner :type-id="10" :height="326"></banner>
|
||||
<view style="padding-bottom: 300rpx; background-color: white;">
|
||||
<view class="" style="display: flex; flex-direction: column;">
|
||||
<view class="grid-container">
|
||||
<view v-for="(item, index) in datas" :key="index" class="grid-item" @click="order_money(item)">
|
||||
|
||||
<view class=""
|
||||
style="background-color: #D8D8D8; height: 324rpx; border-radius: 16rpx 16rpx 0rpx 0rpx;">
|
||||
<image :src="item.imgurl"
|
||||
style=" width: 326.39rpx; height: 324rpx; position: absolute; left: 2rpx; border-radius: 16rpx"
|
||||
mode="">
|
||||
</image>
|
||||
</view>
|
||||
<view class="goods-name hang1" style=" width: 290rpx;">
|
||||
<text style="color: #333333; font-size: 27rpx;">{{ item.title }}</text>
|
||||
</view>
|
||||
<view class="price-box">
|
||||
<view class="price">
|
||||
<text>¥<text style="font-size: 24rpx;">{{ item.price }}</text></text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="num-box">
|
||||
<view class="num ml10"> {{ item.sale_stock }}/{{ item.stock }} </view>
|
||||
<view class="box icon">
|
||||
<image :src="$img1('index/box.png')" lazy-load></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<uni-popup ref="pop" type="bottom">
|
||||
<view v-if="orderData" class="buy-pop relative">
|
||||
<view class="buy-pop-hd">
|
||||
<view style="width: 24rpx;">
|
||||
</view>
|
||||
<text class="">确认订单</text>
|
||||
<view class="close icon" @click="close('pop')">
|
||||
<image :src="$img('/static/img/close2.png')" lazy-load></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="buy-card">
|
||||
<view class="buy-info">
|
||||
<view class="pic">
|
||||
<image :src="orderData.goods.imgurl_detail" style="width: 190rpx; height: 190rpx;"
|
||||
lazy-load>
|
||||
<view class="" style="background-color: #D8D8D8; height: 324rpx; border-radius: 16rpx 16rpx 0rpx 0rpx;">
|
||||
<image :src="item.imgurl"
|
||||
style=" width: 326.39rpx; height: 324rpx; position: absolute; left: 2rpx; border-radius: 16rpx"
|
||||
mode="">
|
||||
</image>
|
||||
</view>
|
||||
<view class="info-r">
|
||||
<view class="hang1" style="width: 100%; color: #333333; font-size: 24rpx;">
|
||||
{{ orderData.goods.title }}
|
||||
<view class="goods-name hang1" style=" width: 290rpx;">
|
||||
<text style="color: #333333; font-size: 27rpx;">{{ item.title }}</text>
|
||||
</view>
|
||||
<view class="price-box">
|
||||
<view class="price">
|
||||
<text>¥<text style="font-size: 24rpx;">{{ item.price }}</text></text>
|
||||
</view>
|
||||
<view class="type">类型:明信片</view>
|
||||
|
||||
<view class="price-num">
|
||||
<view class="price" style="font-size: 16rpx;">
|
||||
¥<text style="font-size: 28rpx;">{{ orderData.goods.price }}</text>
|
||||
</view>
|
||||
<view class="num">×{{ orderData.goods.prize_num }}</view>
|
||||
</view>
|
||||
<view class="num-box">
|
||||
<view class="num ml10"> {{ item.sale_stock }}/{{ item.stock }} </view>
|
||||
<view class="box icon">
|
||||
<image :src="$img1('index/box.png')" lazy-load></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<view class="br20 mt20" style="background: #FFFFFF;">
|
||||
<view class="pay-type" @click="changePay(0)">
|
||||
<view class="" style="width: 100%; color: #333333;">
|
||||
微信支付
|
||||
</view>
|
||||
<view class="icon">
|
||||
<image v-if="zhifu == 0" :src="$img1('common/check_act.png')" lazy-load></image>
|
||||
|
||||
<image v-else :src="$img1('common/check.png')" lazy-load></image>
|
||||
</view>
|
||||
<uni-popup ref="pop" type="bottom">
|
||||
<view v-if="orderData" class="buy-pop relative">
|
||||
<view class="buy-pop-hd">
|
||||
<view style="width: 24rpx;">
|
||||
</view>
|
||||
<text class="">确认订单</text>
|
||||
<view class="close icon" @click="close('pop')">
|
||||
<image :src="$img('/static/img/close2.png')" lazy-load></image>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="pay-type" @click="changePay(1)">
|
||||
<view class="buy-card">
|
||||
<view class="buy-info">
|
||||
<view class="pic">
|
||||
<image :src="orderData.goods.imgurl_detail" style="width: 190rpx; height: 190rpx;"
|
||||
lazy-load>
|
||||
</image>
|
||||
</view>
|
||||
<view class="info-r">
|
||||
<view class="hang1" style="width: 100%; color: #333333; font-size: 24rpx;">
|
||||
{{ orderData.goods.title }}
|
||||
</view>
|
||||
<view class="type">类型:明信片</view>
|
||||
|
||||
<view class="price-num">
|
||||
<view class="price" style="font-size: 16rpx;">
|
||||
¥<text style="font-size: 28rpx;">{{ orderData.goods.price }}</text>
|
||||
</view>
|
||||
<view class="num">×{{ orderData.goods.prize_num }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<view class="br20 mt20" style="background: #FFFFFF;">
|
||||
<view class="pay-type" @click="changePay(0)">
|
||||
<view class="" style="width: 100%; color: #333333;">
|
||||
微信支付
|
||||
</view>
|
||||
<view class="icon">
|
||||
<image v-if="zhifu == 0" :src="$img1('common/check_act.png')" lazy-load></image>
|
||||
|
||||
<image v-else :src="$img1('common/check.png')" lazy-load></image>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="pay-type" @click="changePay(1)">
|
||||
|
||||
<view class="" style="width: 100%; color: #333333;">
|
||||
{{ $config.getAppSetting('currency2_name') }}
|
||||
|
|
@ -94,48 +88,50 @@
|
|||
</view>
|
||||
</view> -->
|
||||
|
||||
</view>
|
||||
|
||||
<view class="rule">
|
||||
<scroll-view class="rule-inner" scroll-y>
|
||||
<view v-html="sendRuleData"></view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
<view class="agree" @click="isAgree = !isAgree">
|
||||
<view class="icon">
|
||||
<image v-if="isAgree" :src="$img1('common/check_act.png')" lazy-load></image>
|
||||
|
||||
<image v-else :src="$img1('common/check.png')" lazy-load></image>
|
||||
</view>
|
||||
|
||||
我已满18岁,阅读并同意
|
||||
<view class="rule">
|
||||
<scroll-view class="rule-inner" scroll-y>
|
||||
<view v-html="sendRuleData"></view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
<view class="agree" @click="isAgree = !isAgree">
|
||||
<view class="icon">
|
||||
<image v-if="isAgree" :src="$img1('common/check_act.png')" lazy-load></image>
|
||||
|
||||
<text @click.stop="$c.to({ url: '/pages/guize/guize?type=4' })">
|
||||
《用户协议》
|
||||
</text>
|
||||
<image v-else :src="$img1('common/check.png')" lazy-load></image>
|
||||
</view>
|
||||
|
||||
<text @click.stop="$c.to({ url: '/pages/guize/guize?type=5' })">
|
||||
《隐私政策》
|
||||
</text>
|
||||
我已满18岁,阅读并同意
|
||||
|
||||
<text @click.stop="$c.to({ url: '/pages/guize/guize?type=4' })">
|
||||
《用户协议》
|
||||
</text>
|
||||
|
||||
<text @click.stop="$c.to({ url: '/pages/guize/guize?type=5' })">
|
||||
《隐私政策》
|
||||
</text>
|
||||
</view>
|
||||
|
||||
|
||||
|
||||
<view class="pay-btn" v-if="zhifu == 0" @click="$c.noDouble(confirmSubmit(1))">
|
||||
<text>
|
||||
{{
|
||||
` ¥${orderData.price}`
|
||||
}}
|
||||
</text>
|
||||
</view>
|
||||
<view class="pay-btn" v-if="zhifu == 1" @click="$c.noDouble(pay(1))">
|
||||
<text>{{ orderData.price * 100 }}{{ $config.getAppSetting('currency2_name') }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</uni-popup>
|
||||
</view>
|
||||
</page-container>
|
||||
|
||||
|
||||
|
||||
<view class="pay-btn" v-if="zhifu == 0" @click="$c.noDouble(confirmSubmit(1))">
|
||||
<text>
|
||||
{{
|
||||
` ¥${orderData.price}`
|
||||
}}
|
||||
</text>
|
||||
</view>
|
||||
<view class="pay-btn" v-if="zhifu == 1" @click="$c.noDouble(pay(1))">
|
||||
<text>{{ orderData.price * 100 }}{{ $config.getAppSetting('currency2_name') }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</uni-popup>
|
||||
</view>
|
||||
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
|
|
@ -252,7 +248,7 @@ export default {
|
|||
if (this.zhifu == 1) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
|
||||
confirmSubmit(type) {
|
||||
|
|
|
|||
|
|
@ -1,58 +1,33 @@
|
|||
<template>
|
||||
<!-- @touchstart="touchStart" @touchend="touchEnd" -->
|
||||
<view
|
||||
class="content"
|
||||
:style="{
|
||||
'padding-top': `calc(${$sys().statusBarHeight}px + 330rpx)`
|
||||
}"
|
||||
>
|
||||
<view class="content" :style="{
|
||||
'padding-top': `calc(${$sys().statusBarHeight}px + 330rpx)`
|
||||
}">
|
||||
<!-- 发货须知 -->
|
||||
<view
|
||||
class="head commng_bg"
|
||||
:style="{
|
||||
'background-image': `url(${$img('/static/img/global_page_bg.png')})`
|
||||
}"
|
||||
>
|
||||
<view class="head commng_bg" :style="{
|
||||
'background-image': `url(${$img('/static/img/global_page_bg.png')})`
|
||||
}">
|
||||
<view class="head_top">
|
||||
<view
|
||||
class="status_bar"
|
||||
:style="{
|
||||
height: `calc(${$sys().statusBarHeight}px + 88rpx)`
|
||||
}"
|
||||
></view>
|
||||
<view class="status_bar" :style="{
|
||||
height: `calc(${$sys().statusBarHeight}px + 88rpx)`
|
||||
}"></view>
|
||||
</view>
|
||||
<!-- 功能切换 -->
|
||||
<view class="qiehuan_box">
|
||||
<view class="qiehuan">
|
||||
<view @click="getlist(v.id)" v-for="(v, i) in arr" :key="i">
|
||||
<view :class="show == v.id ? 'xzs' : 'wzs'">{{ v.title }}</view>
|
||||
<image
|
||||
:src="$img('/static/img/tab_arrow.png')"
|
||||
class="activeImg"
|
||||
v-if="show == v.id"
|
||||
></image>
|
||||
<image :src="$img('/static/img/tab_arrow.png')" class="activeImg" v-if="show == v.id"></image>
|
||||
</view>
|
||||
</view>
|
||||
<image
|
||||
:src="$img('/static/img/bag_fhxz.png')"
|
||||
@click="$refs.shuoming.open()"
|
||||
></image>
|
||||
<image :src="$img('/static/img/bag_fhxz.png')" @click="$refs.shuoming.open()"></image>
|
||||
</view>
|
||||
<!-- 搜索 -->
|
||||
<view
|
||||
class="title_ipt common_bg"
|
||||
:style="{
|
||||
'background-image': `url(${$img('/static/img/bag_search_box.png')})`
|
||||
}"
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
placeholder="请输入关键字"
|
||||
placeholder-style="color:rgba(255,255,255,0.6)"
|
||||
confirm-type="search"
|
||||
v-model="keyword"
|
||||
@confirm="search()"
|
||||
/>
|
||||
<view class="title_ipt common_bg" :style="{
|
||||
'background-image': `url(${$img('/static/img/bag_search_box.png')})`
|
||||
}">
|
||||
<input type="text" placeholder="请输入关键字" placeholder-style="color:rgba(255,255,255,0.6)" confirm-type="search"
|
||||
v-model="keyword" @confirm="search()" />
|
||||
<image @click="search()" :src="$img('/static/icon/search.png')"></image>
|
||||
</view>
|
||||
<view class="header" v-if="show != 3">
|
||||
|
|
@ -77,27 +52,14 @@
|
|||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
<mescroll-body
|
||||
ref="mescrollRef"
|
||||
@init="mescrollInit"
|
||||
:down="downOption"
|
||||
@down="downCallback"
|
||||
@up="upCallback"
|
||||
>
|
||||
<mescroll-body ref="mescrollRef" @init="mescrollInit" :down="downOption" @down="downCallback" @up="upCallback">
|
||||
<!-- 赏池预览 -->
|
||||
<view class="shop_con" v-if="show != 3">
|
||||
<template v-for="(item, index) in goodsdata">
|
||||
<view
|
||||
class="shop"
|
||||
v-for="(v, i) in item.orderlist"
|
||||
:key="v.prize_code"
|
||||
>
|
||||
<view
|
||||
class="shop-inner common_bg"
|
||||
:style="{
|
||||
'background-image': `url(${$img('/static/img/yf_ib.png')})`
|
||||
}"
|
||||
>
|
||||
<view class="shop" v-for="(v, i) in item.orderlist" :key="v.prize_code">
|
||||
<view class="shop-inner common_bg" :style="{
|
||||
'background-image': `url(${$img('/static/img/yf_ib.png')})`
|
||||
}">
|
||||
<view class="pic">
|
||||
<image :src="v.goodslist_imgurl" mode="scaleToFill" />
|
||||
|
||||
|
|
@ -116,21 +78,11 @@
|
|||
</view>
|
||||
|
||||
<view class="num-box">
|
||||
<image
|
||||
@click.stop="jian(v)"
|
||||
class="btn"
|
||||
:src="$img('/static/icon/jian.png')"
|
||||
mode="scaleToFill"
|
||||
/>
|
||||
<image @click.stop="jian(v)" class="btn" :src="$img('/static/icon/jian.png')" mode="scaleToFill" />
|
||||
|
||||
<input @blur="verifyNum(v)" v-model="v.number" />
|
||||
|
||||
<image
|
||||
@click.stop="jia(v)"
|
||||
class="btn"
|
||||
:src="$img('/static/icon/jia.png')"
|
||||
mode="scaleToFill"
|
||||
/>
|
||||
<image @click.stop="jia(v)" class="btn" :src="$img('/static/icon/jia.png')" mode="scaleToFill" />
|
||||
</view>
|
||||
|
||||
<!-- <view class="shop_title">
|
||||
|
|
@ -175,26 +127,16 @@
|
|||
</view>
|
||||
<!-- 卡册 -->
|
||||
<view v-if="show == 3" style="margin-top: 40rpx">
|
||||
<view
|
||||
:style="
|
||||
'background: url(' +
|
||||
z_imgPath +
|
||||
'ka_bg.png' +
|
||||
') no-repeat 0 0 / 100% 100%;'
|
||||
"
|
||||
class="caStyle"
|
||||
@click="gotoPage('caceDetail?caId=' + item.goods_id)"
|
||||
v-for="(item, index) in goodsdata"
|
||||
:key="index"
|
||||
>
|
||||
<view :style="'background: url(' +
|
||||
z_imgPath +
|
||||
'ka_bg.png' +
|
||||
') no-repeat 0 0 / 100% 100%;'
|
||||
" class="caStyle" @click="gotoPage('caceDetail?caId=' + item.goods_id)" v-for="(item, index) in goodsdata"
|
||||
:key="index">
|
||||
<image :src="item.goods_imgurl" mode="aspectFill"></image>
|
||||
<view style="width: 630rpx; margin: 8rpx auto 0; height: 33rpx">
|
||||
<cmd-progress
|
||||
:percent="item.gailv"
|
||||
:show-info="false"
|
||||
stroke-color="#1AC762"
|
||||
:strokeWidth="10"
|
||||
></cmd-progress>
|
||||
<cmd-progress :percent="item.gailv" :show-info="false" stroke-color="#1AC762"
|
||||
:strokeWidth="10"></cmd-progress>
|
||||
</view>
|
||||
<view class="caTitle">
|
||||
<view>{{ item.goods_title }}</view>
|
||||
|
|
@ -211,47 +153,27 @@
|
|||
<!-- huisou_click -->
|
||||
<!-- <image :src="z_imgPath + 'qujiaoliu.png'" @click="toNewMp()" v-if="show<4" class="dabao"></image> 暂时隐藏 -->
|
||||
<!-- 换为打包 -->
|
||||
<view
|
||||
@click="huisou_click()"
|
||||
class="common_bg"
|
||||
:style="{
|
||||
'background-image': `url(${$img('/static/img/bag_hb.png')})`
|
||||
}"
|
||||
v-if="show == 1 || show == 5 || show == 2"
|
||||
>
|
||||
<view @click="huisou_click()" class="common_bg" :style="{
|
||||
'background-image': `url(${$img('/static/img/bag_hb.png')})`
|
||||
}" v-if="show == 1 || show == 5 || show == 2">
|
||||
<!-- 环保 -->
|
||||
</view>
|
||||
<view
|
||||
@click="fahuo_click()"
|
||||
class="common_bg"
|
||||
:style="{
|
||||
'background-image': `url(${$img('/static/img/bag_fh.png')})`
|
||||
}"
|
||||
v-if="show == 1 || show == 5 || show == 2"
|
||||
>
|
||||
<view @click="fahuo_click()" class="common_bg" :style="{
|
||||
'background-image': `url(${$img('/static/img/bag_fh.png')})`
|
||||
}" v-if="show == 1 || show == 5 || show == 2">
|
||||
<!-- 发货 -->
|
||||
</view>
|
||||
<view
|
||||
@click="suo_click()"
|
||||
class="common_bg"
|
||||
:style="{
|
||||
'background-image': `url(${$img('/static/img/bag_ss.png')})`
|
||||
}"
|
||||
v-if="show == 1 || show == 5 || show == 2"
|
||||
>
|
||||
<view @click="suo_click()" class="common_bg" :style="{
|
||||
'background-image': `url(${$img('/static/img/bag_ss.png')})`
|
||||
}" v-if="show == 1 || show == 5 || show == 2">
|
||||
<!-- 上锁 -->
|
||||
</view>
|
||||
<!-- <image :src="z_imgPath + 'dabao.png'" @click="huisou_click()" v-if="show==1 ||show==5||show==2"></image>
|
||||
<image :src="z_imgPath + 'fahuo.png'" @click="fahuo_click()" v-if="show==1 ||show==5||show==2"></image>
|
||||
<image :src="z_imgPath + 'shangsuo.png'" @click="suo_click()" v-if="show==1 ||show==5||show==2"></image> -->
|
||||
<view
|
||||
@click="jiesuo_click()"
|
||||
class="common_bg"
|
||||
:style="{
|
||||
'background-image': `url(${$img('/static/img/bag_js.png')})`
|
||||
}"
|
||||
v-if="show == 4"
|
||||
>
|
||||
<view @click="jiesuo_click()" class="common_bg" :style="{
|
||||
'background-image': `url(${$img('/static/img/bag_js.png')})`
|
||||
}" v-if="show == 4">
|
||||
<!-- 解锁 -->
|
||||
</view>
|
||||
<!-- <image :src="z_imgPath + 'jiesuo.png'" @click="jiesuo_click()" v-if="show==4" class="jiesuo"></image> -->
|
||||
|
|
@ -260,25 +182,15 @@
|
|||
<!-- 刷新浮框 -->
|
||||
<view class="xuanfu">
|
||||
<!-- <image :src="z_imgPath + 'jiaoliu.png?12'" @click="toNewMp()"></image> -->
|
||||
<image
|
||||
:src="$img('/static/img/yf_rb.png')"
|
||||
@click="getlist(show)"
|
||||
></image>
|
||||
<image
|
||||
:src="$img('/static/img/bag_qx.png')"
|
||||
@click="quanxuan_click()"
|
||||
v-if="show != 3"
|
||||
></image>
|
||||
<image :src="$img('/static/img/yf_rb.png')" @click="getlist(show)"></image>
|
||||
<image :src="$img('/static/img/bag_qx.png')" @click="quanxuan_click()" v-if="show != 3"></image>
|
||||
</view>
|
||||
|
||||
<!-- 发货说明 -->
|
||||
<uni-popup ref="shuoming" type="center">
|
||||
<view
|
||||
class="pop common_bg"
|
||||
:style="{
|
||||
'background-image': `url(${$img('/static/img/yf_rule_pop_bg.png')})`
|
||||
}"
|
||||
>
|
||||
<view class="pop common_bg" :style="{
|
||||
'background-image': `url(${$img('/static/img/yf_rule_pop_bg.png')})`
|
||||
}">
|
||||
<view class="pop_title">发货须知</view>
|
||||
<view class="pop_con">
|
||||
<scroll-view scroll-y="true" style="height: 600rpx">
|
||||
|
|
@ -286,11 +198,7 @@
|
|||
</scroll-view>
|
||||
</view>
|
||||
|
||||
<image
|
||||
@click="$refs.shuoming.close()"
|
||||
class="close"
|
||||
:src="$img('/static/icon/close.png')"
|
||||
></image>
|
||||
<image @click="$refs.shuoming.close()" class="close" :src="$img('/static/icon/close.png')"></image>
|
||||
</view>
|
||||
</uni-popup>
|
||||
|
||||
|
|
@ -314,14 +222,9 @@
|
|||
</view>
|
||||
</view>
|
||||
<view class="xuyuan_con">
|
||||
<view
|
||||
class="xuyuan_item common_bg"
|
||||
:style="{
|
||||
'background-image': `url(${$img('/static/img/yf_ib.png')})`
|
||||
}"
|
||||
v-for="(item, index) in huishou_Arr"
|
||||
:key="index"
|
||||
>
|
||||
<view class="xuyuan_item common_bg" :style="{
|
||||
'background-image': `url(${$img('/static/img/yf_ib.png')})`
|
||||
}" v-for="(item, index) in huishou_Arr" :key="index">
|
||||
<view class="shop_item_img">
|
||||
<image :src="item.goodslist_imgurl"></image>
|
||||
<view>
|
||||
|
|
@ -348,13 +251,9 @@
|
|||
<view class="pop-ft">
|
||||
<view class="price">环保合计:{{ zong_price.toFixed(2) }}元</view>
|
||||
|
||||
<view
|
||||
@click="huisou_btn"
|
||||
class="confirm-btn common_bg"
|
||||
:style="{
|
||||
'background-image': `url(${$img('/static/img/bag_qrhs.png')})`
|
||||
}"
|
||||
></view>
|
||||
<view @click="huisou_btn" class="confirm-btn common_bg" :style="{
|
||||
'background-image': `url(${$img('/static/img/bag_qrhs.png')})`
|
||||
}"></view>
|
||||
</view>
|
||||
<!-- <view
|
||||
class="pop_huishou"
|
||||
|
|
@ -391,14 +290,9 @@
|
|||
</view>
|
||||
</view>
|
||||
<view class="xuyuan_con" style="border: none">
|
||||
<view
|
||||
class="xuyuan_item common_bg"
|
||||
v-for="(item, index) in huishou_Arr"
|
||||
:key="index"
|
||||
:style="{
|
||||
'background-image': `url(${$img('/static/img/yf_ib.png')})`
|
||||
}"
|
||||
>
|
||||
<view class="xuyuan_item common_bg" v-for="(item, index) in huishou_Arr" :key="index" :style="{
|
||||
'background-image': `url(${$img('/static/img/yf_ib.png')})`
|
||||
}">
|
||||
<view class="shop_item_img">
|
||||
<image :src="item.goodslist_imgurl"></image>
|
||||
<view>
|
||||
|
|
@ -414,11 +308,7 @@
|
|||
</view>
|
||||
</view>
|
||||
<view class="xuyuan kuaidi">
|
||||
<view
|
||||
@click="showMulLinkageThreePicker()"
|
||||
class="flex_center"
|
||||
style="justify-content: space-between"
|
||||
>
|
||||
<view @click="showMulLinkageThreePicker()" class="flex_center" style="justify-content: space-between">
|
||||
<view style="width: 580rpx; font-size: 28rpx">
|
||||
{{ selectCity }}
|
||||
</view>
|
||||
|
|
@ -428,11 +318,7 @@
|
|||
<view class="kuaidi_text">
|
||||
如果不满{{ post.free_post }}件,需支付{{ post.post_money }}元运费
|
||||
</view>
|
||||
<textarea
|
||||
placeholder="请输入留言内容"
|
||||
maxlength="50"
|
||||
v-model="message"
|
||||
></textarea>
|
||||
<textarea placeholder="请输入留言内容" maxlength="50" v-model="message"></textarea>
|
||||
</view>
|
||||
|
||||
<view class="pop-ft">
|
||||
|
|
@ -440,13 +326,9 @@
|
|||
需支付:{{ num >= post.free_post ? 0 : post.post_money }}元
|
||||
</view>
|
||||
|
||||
<view
|
||||
@click="fahuo_btn"
|
||||
class="confirm-btn common_bg"
|
||||
:style="{
|
||||
'background-image': `url(${$img('/static/img/bag_qrfh.png')})`
|
||||
}"
|
||||
></view>
|
||||
<view @click="fahuo_btn" class="confirm-btn common_bg" :style="{
|
||||
'background-image': `url(${$img('/static/img/bag_qrfh.png')})`
|
||||
}"></view>
|
||||
</view>
|
||||
|
||||
<!-- <view
|
||||
|
|
@ -488,32 +370,21 @@
|
|||
</view>
|
||||
</uni-popup>
|
||||
<!-- 详情弹窗 -->
|
||||
<uni-popup
|
||||
ref="yulanPop"
|
||||
type="center"
|
||||
mask-background-color="rgba(0,0,0,.95)"
|
||||
>
|
||||
<uni-popup ref="yulanPop" type="center" mask-background-color="rgba(0,0,0,.95)">
|
||||
<view>
|
||||
<view class="yulanStyle">
|
||||
<view style="font-size: 36rpx; flex: 1; text-align: left">
|
||||
{{ yulan_news.shang_title }}
|
||||
</view>
|
||||
<image
|
||||
:src="yulan_news.goodslist_imgurl"
|
||||
mode=""
|
||||
class="shang_img"
|
||||
></image>
|
||||
<image :src="yulan_news.goodslist_imgurl" mode="" class="shang_img"></image>
|
||||
<image class="img_bg" :src="z_imgPath + 'yulan_bg.png'"></image>
|
||||
</view>
|
||||
<view
|
||||
class="hang1"
|
||||
style="
|
||||
<view class="hang1" style="
|
||||
color: #fff;
|
||||
font-size: 28rpx;
|
||||
padding: 10rpx 0;
|
||||
text-align: center;
|
||||
"
|
||||
>
|
||||
">
|
||||
{{ yulan_news.goodslist_title }}
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -788,6 +659,12 @@ export default {
|
|||
if (that.fh_status) {
|
||||
return
|
||||
}
|
||||
uni.showToast({
|
||||
title: '发货未开放',
|
||||
icon: 'loading',
|
||||
duration: 1000
|
||||
})
|
||||
return;
|
||||
if (that.recovery_info && that.recovery_info.length > 0) {
|
||||
that.fh_status = true
|
||||
that.req({
|
||||
|
|
@ -1224,9 +1101,11 @@ export default {
|
|||
.kaType {
|
||||
display: flex;
|
||||
margin: 0 0 0 30rpx;
|
||||
> view {
|
||||
|
||||
>view {
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
.sty {
|
||||
background-color: #ebfffa;
|
||||
color: #333;
|
||||
|
|
@ -1234,6 +1113,7 @@ export default {
|
|||
padding: 15rpx 20rpx;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
|
||||
.selSty {
|
||||
background-color: #1ac762;
|
||||
color: #333;
|
||||
|
|
@ -1241,29 +1121,34 @@ export default {
|
|||
border-radius: 10rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.caStyle {
|
||||
width: 690rpx;
|
||||
height: 880rpx;
|
||||
margin: 0 30rpx 20rpx;
|
||||
padding-top: 10rpx;
|
||||
box-sizing: border-box;
|
||||
> image {
|
||||
|
||||
>image {
|
||||
width: 670rpx;
|
||||
height: 740rpx;
|
||||
display: block;
|
||||
margin: 0rpx auto;
|
||||
}
|
||||
|
||||
.caTitle {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin: 20rpx 20rpx 0;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
text {
|
||||
color: #feff00;
|
||||
}
|
||||
}
|
||||
.yulanStyle > .shang_img {
|
||||
|
||||
.yulanStyle>.shang_img {
|
||||
width: 563rpx;
|
||||
height: 754rpx;
|
||||
position: absolute;
|
||||
|
|
@ -1272,7 +1157,8 @@ export default {
|
|||
right: 0;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.yulanStyle > .img_bg {
|
||||
|
||||
.yulanStyle>.img_bg {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
|
|
@ -1280,7 +1166,8 @@ export default {
|
|||
top: 0;
|
||||
z-index: 999;
|
||||
}
|
||||
.yulanStyle > view:nth-of-type(1) {
|
||||
|
||||
.yulanStyle>view:nth-of-type(1) {
|
||||
position: absolute;
|
||||
top: 54rpx;
|
||||
left: 45rpx;
|
||||
|
|
@ -1357,16 +1244,16 @@ textarea {
|
|||
color: #999999;
|
||||
}
|
||||
|
||||
.kuaidi > view:nth-of-type(2) {
|
||||
.kuaidi>view:nth-of-type(2) {
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
.kuaidi > view:nth-of-type(1) {
|
||||
.kuaidi>view:nth-of-type(1) {
|
||||
border-bottom: 1rpx solid #666666;
|
||||
padding: 20rpx 0;
|
||||
}
|
||||
|
||||
.kuaidi > view {
|
||||
.kuaidi>view {
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
|
||||
|
|
@ -1380,7 +1267,7 @@ textarea {
|
|||
color: #ffffff;
|
||||
}
|
||||
|
||||
.order_title > image {
|
||||
.order_title>image {
|
||||
width: 162rpx;
|
||||
height: 47rpx;
|
||||
position: absolute;
|
||||
|
|
@ -1468,7 +1355,7 @@ textarea {
|
|||
color: #ffffff;
|
||||
}
|
||||
|
||||
.shop_item_img > view:nth-of-type(1) {
|
||||
.shop_item_img>view:nth-of-type(1) {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
|
|
@ -1496,7 +1383,7 @@ textarea {
|
|||
}
|
||||
}
|
||||
|
||||
.shop_item_img > image {
|
||||
.shop_item_img>image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 8rpx;
|
||||
|
|
@ -1536,7 +1423,7 @@ textarea {
|
|||
padding-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.xuyuan_head > view:nth-of-type(2) {
|
||||
.xuyuan_head>view:nth-of-type(2) {
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
|
|
@ -1616,12 +1503,12 @@ textarea {
|
|||
align-items: center;
|
||||
}
|
||||
|
||||
.footer > image {
|
||||
.footer>image {
|
||||
width: 212rpx;
|
||||
height: 70rpx;
|
||||
}
|
||||
|
||||
.footer > image:nth-of-type(3) {
|
||||
.footer>image:nth-of-type(3) {
|
||||
/* width: 212rpx;
|
||||
height: 106rpx;
|
||||
position: absolute;
|
||||
|
|
@ -1635,7 +1522,8 @@ textarea {
|
|||
.jiesuo {
|
||||
margin: auto;
|
||||
}
|
||||
.footer > view {
|
||||
|
||||
.footer>view {
|
||||
width: 206rpx;
|
||||
height: 84rpx;
|
||||
display: flex;
|
||||
|
|
@ -1647,6 +1535,7 @@ textarea {
|
|||
color: #ffffff;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.footer {
|
||||
width: 690rpx;
|
||||
display: flex;
|
||||
|
|
@ -1686,7 +1575,7 @@ button {
|
|||
z-index: 21;
|
||||
}
|
||||
|
||||
.shop_head > text {
|
||||
.shop_head>text {
|
||||
background: #ff7514;
|
||||
border-radius: 10rpx;
|
||||
padding: 2rpx 20rpx;
|
||||
|
|
@ -1709,7 +1598,7 @@ button {
|
|||
/* border: 1rpx solid red; */
|
||||
}
|
||||
|
||||
.shop_title > image {
|
||||
.shop_title>image {
|
||||
width: 140rpx;
|
||||
height: 140rpx;
|
||||
margin-right: 20rpx;
|
||||
|
|
@ -1822,7 +1711,7 @@ button {
|
|||
height: 26rpx;
|
||||
}
|
||||
|
||||
.goods_title > view {
|
||||
.goods_title>view {
|
||||
/* background: #ff7514; */
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
|
|
@ -1851,12 +1740,12 @@ button {
|
|||
padding-right: 10rpx;
|
||||
}
|
||||
|
||||
.title_ipt > image {
|
||||
.title_ipt>image {
|
||||
width: 33rpx;
|
||||
height: 33rpx;
|
||||
}
|
||||
|
||||
.title_ipt > input {
|
||||
.title_ipt>input {
|
||||
width: 570rpx;
|
||||
height: 60rpx;
|
||||
box-sizing: border-box;
|
||||
|
|
@ -1881,10 +1770,12 @@ button {
|
|||
color: #ffffff;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
.qiehuan_box > image {
|
||||
|
||||
.qiehuan_box>image {
|
||||
width: 170rpx;
|
||||
height: 59rpx;
|
||||
}
|
||||
|
||||
.activeImg {
|
||||
position: absolute;
|
||||
width: 30rpx !important;
|
||||
|
|
@ -1894,6 +1785,7 @@ button {
|
|||
right: 0;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.qiehuan {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
|
|
@ -1902,11 +1794,13 @@ button {
|
|||
font-weight: bold;
|
||||
font-family: YouSheBiaoTiHei;
|
||||
}
|
||||
|
||||
.qiehuan image {
|
||||
width: 90rpx;
|
||||
height: 47rpx;
|
||||
}
|
||||
.qiehuan > view {
|
||||
|
||||
.qiehuan>view {
|
||||
// flex: 1;
|
||||
// text-align: center;
|
||||
margin-right: 20rpx;
|
||||
|
|
@ -1943,13 +1837,13 @@ button {
|
|||
color: #bec0d3;
|
||||
}
|
||||
|
||||
.header_title > view:nth-of-type(2) {
|
||||
.header_title>view:nth-of-type(2) {
|
||||
width: 520rpx;
|
||||
text-align: center;
|
||||
/* margin: auto; */
|
||||
}
|
||||
|
||||
.header_title > view:nth-of-type(1) {
|
||||
.header_title>view:nth-of-type(1) {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
|
@ -1978,8 +1872,7 @@ button {
|
|||
width: 100%;
|
||||
}
|
||||
|
||||
.head_top {
|
||||
}
|
||||
.head_top {}
|
||||
|
||||
.head {
|
||||
width: 750rpx;
|
||||
|
|
|
|||
|
|
@ -677,6 +677,7 @@ export default {
|
|||
})
|
||||
return
|
||||
}
|
||||
|
||||
let data = this.handelList.map(item => {
|
||||
return {
|
||||
prize_code: item.prize_code,
|
||||
|
|
@ -912,6 +913,14 @@ export default {
|
|||
},
|
||||
|
||||
open(e) {
|
||||
if (e == "sendPop") {
|
||||
uni.showToast({
|
||||
title: '发货未开放',
|
||||
icon: 'none',
|
||||
duration: 1000
|
||||
})
|
||||
return;
|
||||
}
|
||||
this.handelList = []
|
||||
const choose = this.getChooseGoods()
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
2751
pages/user/index.vue
2751
pages/user/index.vue
File diff suppressed because it is too large
Load Diff
|
|
@ -85,18 +85,17 @@
|
|||
<rule-pop ref="rulePop"></rule-pop>
|
||||
<uni-popup ref="posterPopup" type="center">
|
||||
<view style="width:650rpx;height:950rpx;">
|
||||
<image :src="getHaiBao()" style="width: 100%;"></image>
|
||||
<image :src="logo_image" style="width: 100%;"></image>
|
||||
</view>
|
||||
<view style="text-align: center; margin-top: 20rpx;">
|
||||
<image style="width: 48px;height: 48px;" @click="saveImageToPhotosAlbum()" :src="getXiaZai()"></image>
|
||||
<image show-menu-by-longpress style="width: 48px;height: 48px;" @click="saveImageToPhotosAlbum()" :src="getXiaZai()"></image>
|
||||
</view>
|
||||
</uni-popup>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import UQRCode from 'uqrcodejs'; // npm install uqrcodejs
|
||||
|
||||
|
||||
export default {
|
||||
data() {
|
||||
var isH5 = false;
|
||||
|
|
@ -118,6 +117,7 @@
|
|||
onShareAppMessage() {
|
||||
let that = this
|
||||
return {
|
||||
// imageUrl: this.getHaiBao(),
|
||||
title: "友达赏,正版潮玩手办一番赏",
|
||||
path: '/pages/shouye/index?pid=' + uni.getStorageSync('userinfo').ID
|
||||
}
|
||||
|
|
@ -127,7 +127,7 @@
|
|||
},
|
||||
methods: {
|
||||
saveImageToPhotosAlbum() {
|
||||
const imageUrl = this.getHaiBao(); // 替换为你的网络图片地址
|
||||
const imageUrl = this.logo_image; // 替换为你的网络图片地址
|
||||
// 下载图片到本地
|
||||
wx.downloadFile({
|
||||
url: imageUrl,
|
||||
|
|
@ -202,7 +202,7 @@
|
|||
success(res) {
|
||||
that.total = res.data.count
|
||||
that.commission = res.data.money
|
||||
// that.logo_image = res.data.share_image
|
||||
that.logo_image = res.data.share_image
|
||||
that.mescroll.endByPage(res.data.data.length, res.data.last_page)
|
||||
if (pageNo == 1) {
|
||||
that.listdata = res.data.data
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user