feat: 图片上传

This commit is contained in:
2025-08-19 00:11:16 +08:00
parent 5398b4234d
commit 2e76fec9d6
4 changed files with 120 additions and 76 deletions
+36 -28
View File
@@ -8,13 +8,13 @@
<view class="choiceness_product"> <view class="choiceness_product">
<view v-for="item in productList" :key="item.id" class="choiceness_product_item" @click="jumpInfo(item)"> <view v-for="item in productList" :key="item.id" class="choiceness_product_item" @click="jumpInfo(item)">
<up-image :src="item.url" width="100%" height="140" bgColor="#f1f6ff00"></up-image> <up-image :src="item.url" width="100%" height="140" bgColor="#f1f6ff00"></up-image>
<view class="product_item_name">{{item.title}}</view> <view class="product_item_name">{{ item.title }}</view>
<view class="product_item_price"> <view class="product_item_price">
<view class="price_"> <view class="price_">
<text>¥</text> <text>¥</text>
<text style="color:36rpx;">{{item.adPrice}}</text> <text style="color:36rpx;">{{ item.price }}</text>
</view> </view>
<view class="price_sell">已售{{item.sales}}件</view> <view class="price_sell">已售{{ item.sales }}件</view>
</view> </view>
</view> </view>
</view> </view>
@@ -22,13 +22,13 @@
</template> </template>
<script> <script>
import { searchList } from '@/api/product.js'; import { searchList } from '@/api/product.js';
export default { export default {
name:"choiceness", name: "choiceness",
data() { data() {
return { return {
productList:[] productList: []
}; };
}, },
mounted() { mounted() {
@@ -36,43 +36,47 @@
}, },
methods: { methods: {
// //
jumpInfo(item){ jumpInfo(item) {
uni.navigateTo({ uni.navigateTo({
url: '/pages/other_package/productInfo/productInfo?id='+item.id, url: '/pages/other_package/productInfo/productInfo?id=' + item.id,
}) })
}, },
async getSearchList(){ async getSearchList() {
const params={ const params = {
isRecomm:true, isRecomm: true,
page:1, page: 1,
pageSize:66, pageSize: 66,
} }
const resp = await searchList(params); const resp = await searchList(params);
if(resp && resp.bizcode === 100){ if (resp && resp.bizcode === 100) {
this.productList = resp.data this.productList = resp.data
} }
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.choiceness_warp{ .choiceness_warp {
margin-top: 50rpx; margin-top: 50rpx;
} }
.choiceness_title{
.choiceness_title {
display: flex; display: flex;
justify-content: center; justify-content: center;
.choiceness_title_msg{
.choiceness_title_msg {
margin: 0 18rpx; margin: 0 18rpx;
} }
} }
.choiceness_product{
.choiceness_product {
margin-top: 40rpx; margin-top: 40rpx;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: space-between; justify-content: space-between;
.choiceness_product_item{
.choiceness_product_item {
background: #FFFFFF; background: #FFFFFF;
box-shadow: 0rpx 0rpx 10rpx 0rpx #EEEEEE; box-shadow: 0rpx 0rpx 10rpx 0rpx #EEEEEE;
border-radius: 24rpx; border-radius: 24rpx;
@@ -80,27 +84,31 @@
margin-bottom: 20rpx; margin-bottom: 20rpx;
padding: 20rpx; padding: 20rpx;
} }
.product_item_name{
.product_item_name {
font-weight: bold; font-weight: bold;
font-size: 26rpx; font-size: 26rpx;
color: #333333; color: #333333;
margin-top: 20rpx; margin-top: 20rpx;
} }
.product_item_price{
.product_item_price {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
margin-top: 10rpx; margin-top: 10rpx;
.price_{
.price_ {
font-weight: bold; font-weight: bold;
font-size: 26rpx; font-size: 26rpx;
color: $app-bt-bj; color: $app-bt-bj;
} }
.price_sell{
.price_sell {
font-weight: 400; font-weight: 400;
font-size: 18rpx; font-size: 18rpx;
color: #999999; color: #999999;
} }
} }
} }
</style> </style>
@@ -2,7 +2,9 @@
<view class="product_info_warp"> <view class="product_info_warp">
<!-- 头部产品描述图 --> <!-- 头部产品描述图 -->
<view class="product_info_header_warp"> <view class="product_info_header_warp">
<up-swiper :list="swiperList" height="280" @change="e => currentNum = e.current"> <up-swiper :list="swiperList" class="product_info_header_swiper" @click="onSwiper"
@change="e => currentNum = e.current">
<template #indicator> <template #indicator>
<view class="indicator-num"> <view class="indicator-num">
<text class="indicator-num__text">{{ currentNum + 1 }}/{{ swiperList.length }}</text> <text class="indicator-num__text">{{ currentNum + 1 }}/{{ swiperList.length }}</text>
@@ -112,7 +114,8 @@
</view> </view>
<view class="product_but_right"> <view class="product_but_right">
<view v-if="!ji" class="but_comm join_warp" @click="checkSpecification(true, 'addCart')">加入购物车</view> <view v-if="!ji" class="but_comm join_warp" @click="checkSpecification(true, 'addCart')">加入购物车</view>
<view class="but_comm buy_warp" :class="{ 'border-16': ji }" @click="checkSpecification(true, 'buy')">立即购买</view> <view class="but_comm buy_warp" :class="{ 'border-16': ji }" @click="checkSpecification(true, 'buy')">立即购买
</view>
</view> </view>
</view> </view>
<!-- 选择规格的弹框 --> <!-- 选择规格的弹框 -->
@@ -289,6 +292,13 @@ export default {
}, },
methods: { methods: {
getValue, getValue,
onSwiper(index) {
uni.previewImage({
current: index,
loop: true,
urls: this.swiperList
});
},
copyMobile(mobile) { copyMobile(mobile) {
copyData(mobile); copyData(mobile);
this.serviceShow = false; this.serviceShow = false;
@@ -553,6 +563,25 @@ export default {
.product_info_header_warp { .product_info_header_warp {
position: relative; position: relative;
.product_info_header_swiper {
height: 562.5rpx !important;
::v-deep(.u-swiper__wrapper) {
height: 562.5rpx !important;
.u-swiper__wrapper {
height: 562.5rpx !important;
.u-swiper__wrapper__item__wrapper__image {
height: 562.5rpx !important;
}
}
}
}
.img_comm { .img_comm {
position: absolute; position: absolute;
top: 140rpx; top: 140rpx;
+11 -6
View File
@@ -42,14 +42,19 @@
</view> </view>
</view> </view>
<view class="box-panel mt-32 mb-32"> <view class="box-panel mt-32 mb-32">
<text class="text-zu text-32">加速说明</text> <text class="text-zu text-32" style="font-weight: bold;">加速说明</text>
<text class="text-zu1 text-28 mt-24">获取方式: </text> <text class="text-zu1 text-28 mt-24">获取方式: </text>
<text class="text-zu1 text-28">(1)通过购买报单区和好物区商品的直推和间推奖励获得</text> <text class="text-zu1 text-28">加速包仅能通过【九宫格抽奖】获得</text>
<text class="text-zu1 text-28">(2)转盘抽奖获得</text> <!-- <text class="text-zu1 text-28">(2)转盘抽奖获得</text> -->
<text class="text-zu1 text-28 mt-24">逻辑说明: </text> <text class="text-zu1 text-28 mt-24" style="font-weight: bold; margin-bottom: 10px;">逻辑说明: </text>
<text class="text-zu1 text-28">(1)通过内购购买商品获得的是抽奖次数,并不能直接用于抽奖,能够抽奖的次数需要每天进行释放,或者直推间推下线的奖励获得可抽奖的次数</text> <text class="text-zu1 text-28">(1)加速包是 TBC 股权快速释放的专属途径。</text>
<text class="text-zu1 text-28">(2)当可抽奖次数大于抽奖次数时,可抽奖次数将会被冻结24个小时,内购商品解冻,否则冻结的抽奖次数会消失。最终解释权归商城所有!!!</text> <text class="text-zu1 text-28">(2)使用加速包释放的 TBC 股权可进行交割和出售。</text>
<text class="text-zu1 text-28">(2) 持有 TBC 股权,可享受商城每日分红,分红收益将直接发放至您的现金余额</text>
<text class="text-zu1 text-28 mt-24 " style="font-weight: bold; margin-bottom: 10px;">特别声明: </text>
<text class="text-zu1 text-28">本活动最终解释权归信任桥所有。</text>
</view> </view>
<!-- (2)转盘抽奖获得 --> <!-- (2)转盘抽奖获得 -->
</view> </view>
+3 -1
View File
@@ -2,7 +2,9 @@
// export const BASE_URL="https://frontend.jdns360.com/api"; // 正式环境 // export const BASE_URL="https://frontend.jdns360.com/api"; // 正式环境
// export const BASE_URL="http://cl55un59859.vicp.fun:24346"; // 测试环境 // export const BASE_URL="http://cl55un59859.vicp.fun:24346"; // 测试环境
export const BASE_URL = "https://api.tbmall.xin"; export const BASE_URL = "https://api.tbmall.xin"; //生产
// export const BASE_URL ='http://www.hm.a-d.work/api' //测试
export const PRIVACY_EN = "https://www.finecc.net/?Privacy-Agreement/";//隐私协议地址(英文版) export const PRIVACY_EN = "https://www.finecc.net/?Privacy-Agreement/";//隐私协议地址(英文版)