|
|
@ -2,7 +2,18 @@ |
|
|
|
<view class="container"> |
|
|
|
<!-- 顶部banner --> |
|
|
|
<view class="banner"> |
|
|
|
<image src="https://oss.budingxiaoshuo.com/upload/回收banner_1748252408016.png" mode=""></image> |
|
|
|
<swiper |
|
|
|
:indicator-dots="false" |
|
|
|
:autoplay="true" |
|
|
|
:interval="3000" |
|
|
|
:duration="500" |
|
|
|
circular |
|
|
|
style="width: 100%; height: 400rpx;" |
|
|
|
> |
|
|
|
<swiper-item v-for="(item, index) in bannerList" :key="item.id || index"> |
|
|
|
<image :src="item.image" mode="aspectFill" style="width: 100%; height: 100%;" /> |
|
|
|
</swiper-item> |
|
|
|
</swiper> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 商品列表 --> |
|
|
@ -11,21 +22,21 @@ |
|
|
|
<scroll-view class="category-nav" scroll-y> |
|
|
|
<view |
|
|
|
v-for="(category, index) in categories" |
|
|
|
:key="index" |
|
|
|
:key="category.id || index" |
|
|
|
class="category-item" |
|
|
|
:class="{ active: currentCategory === index }" |
|
|
|
@tap="switchCategory(index)" |
|
|
|
> |
|
|
|
<view class="category-dot" v-if="getCategoryItemCount(index) > 0"></view> |
|
|
|
{{ category.name }} |
|
|
|
{{ category.title }} |
|
|
|
</view> |
|
|
|
</scroll-view> |
|
|
|
|
|
|
|
<!-- 右侧商品列表 --> |
|
|
|
<scroll-view class="goods-content" scroll-y> |
|
|
|
<scroll-view class="goods-content" scroll-y @scrolltolower="loadMoreGoods" style="height: 70vh"> |
|
|
|
<view class="goods-section"> |
|
|
|
<view class="goods-item" v-for="(item, index) in recycleList" :key="index"> |
|
|
|
<image v-if="item.icon" :src="item.icon" class="goods-item-img" mode="aspectFit" /> |
|
|
|
<image v-if="item.image" :src="item.image" class="goods-item-img" mode="aspectFit" /> |
|
|
|
<view class="goods-info-wrap"> |
|
|
|
<view class="goods-header"> |
|
|
|
<text class="goods-name">{{item.name}}</text> |
|
|
@ -49,7 +60,7 @@ |
|
|
|
<button class="btn-plus" @tap="updateQuantity(index, 1)">+</button> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
<view class="brand-check" v-if="item.showBrandCheck" @tap="checkBrand(index)"> |
|
|
|
<view class="brand-check" v-if="item.shopCion" @tap="showBrandPopup = true"> |
|
|
|
<text>查看品牌</text> |
|
|
|
<uni-icons type="right" size="14" color="#ff7a0e"></uni-icons> |
|
|
|
</view> |
|
|
@ -69,6 +80,8 @@ |
|
|
|
</view> |
|
|
|
<button class="other-unrecycle-btn" disabled>+</button> |
|
|
|
</view> |
|
|
|
<view v-if="loadingMore" class="loading-more">加载中...</view> |
|
|
|
<view v-else-if="finished" class="loading-more">没有更多了</view> |
|
|
|
</scroll-view> |
|
|
|
</view> |
|
|
|
|
|
|
@ -107,7 +120,7 @@ |
|
|
|
</view> |
|
|
|
<scroll-view class="panel-list popup-panel-list" scroll-y> |
|
|
|
<view v-for="(item, idx) in selectedProducts" :key="idx" class="panel-item"> |
|
|
|
<image v-if="item.icon" :src="item.icon" class="panel-item-img" mode="aspectFit" /> |
|
|
|
<image v-if="item.image" :src="item.image" class="panel-item-img" mode="aspectFit" /> |
|
|
|
<view class="panel-item-info"> |
|
|
|
<text class="panel-item-name">{{item.name}}</text> |
|
|
|
<text class="panel-item-desc">{{item.desc}}</text> |
|
|
@ -183,7 +196,7 @@ |
|
|
|
<scroll-view class="brand-popup-list" scroll-y :scroll-into-view="scrollToView"> |
|
|
|
<view v-for="letter in brandIndexList" :key="letter" :id="'brand-letter-' + letter"> |
|
|
|
<view class="brand-letter">{{letter}}</view> |
|
|
|
<view v-for="brand in filteredBrandList.filter(b => b.letter === letter)" :key="brand.name" class="brand-item"> |
|
|
|
<view v-for="brand in filteredBrandList.filter(b => b.letter === letter)" :key="brand.name" class="brand-item" @tap="openBrandConfirm(brand)"> |
|
|
|
<image :src="brand.logo" class="brand-logo" mode="aspectFit" /> |
|
|
|
<text class="brand-name">{{brand.name}}</text> |
|
|
|
</view> |
|
|
@ -200,14 +213,12 @@ |
|
|
|
<view class="rule-popup"> |
|
|
|
<view class="rule-popup-title">回收规则</view> |
|
|
|
<scroll-view class="rule-popup-content" scroll-y> |
|
|
|
<view class="rule-popup-desc">请完整查看以下平台回收标准,不符合回收标准的物品将无法获得现金结算</view> |
|
|
|
<view class="rule-popup-warning">以下品相问题不可回收</view> |
|
|
|
<image :src="ruleImgUrl" class="rule-popup-img" /> |
|
|
|
<rich-text :nodes="ruleHtml" /> |
|
|
|
</scroll-view> |
|
|
|
<button class="rule-popup-btn" @tap="closeRulePopup">我知道了</button> |
|
|
|
<view class="rule-popup-close" @tap="closeRulePopup"> |
|
|
|
<!-- <view class="rule-popup-close" @tap="closeRulePopup"> |
|
|
|
<uni-icons type="close" size="36" color="#fff" /> |
|
|
|
</view> |
|
|
|
</view> --> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
@ -227,6 +238,22 @@ |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 品牌确认弹窗 --> |
|
|
|
<view v-if="showBrandConfirm" class="brand-confirm-mask" @tap.self="closeBrandConfirm"> |
|
|
|
<view class="brand-confirm-popup"> |
|
|
|
<view class="brand-confirm-title">品牌确认提示</view> |
|
|
|
<view class="brand-confirm-logo-wrap"> |
|
|
|
<image :src="brandConfirmInfo.logo" class="brand-confirm-logo" mode="aspectFit" /> |
|
|
|
</view> |
|
|
|
<view class="brand-confirm-name">{{ brandConfirmInfo.name }}</view> |
|
|
|
<view class="brand-confirm-desc">请确认所选品牌是否与实物品牌信息一致,否则将无法进行回收。</view> |
|
|
|
<view class="brand-confirm-btn-row"> |
|
|
|
<button class="brand-confirm-btn retry" @tap="closeBrandConfirm">重新选择</button> |
|
|
|
<button class="brand-confirm-btn confirm" @tap="confirmBrand">确认一致</button> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</template> |
|
|
|
|
|
|
@ -238,21 +265,11 @@ export default { |
|
|
|
return { |
|
|
|
value:1, |
|
|
|
ishow:true, |
|
|
|
// 静态数据 |
|
|
|
staticCategories: [ |
|
|
|
{ id: 0, name: '羽绒服' }, |
|
|
|
{ id: 1, name: '鞋子' }, |
|
|
|
{ id: 2, name: '包包' }, |
|
|
|
{ id: 3, name: '床被' }, |
|
|
|
{ id: 4, name: '品牌服饰' }, |
|
|
|
{ id: 5, name: 'T恤衬衫' } |
|
|
|
], |
|
|
|
staticAllProducts: { |
|
|
|
// ...原有静态商品数据(复制原allProducts内容) |
|
|
|
}, |
|
|
|
// 动态数据 |
|
|
|
categories: [], |
|
|
|
allProducts: {}, |
|
|
|
allProducts: {}, // { [categoryId]: [商品数组] } |
|
|
|
allProductsPage: {}, // { [categoryId]: 当前已加载页码 } |
|
|
|
allProductsTotal: {}, // { [categoryId]: 总数 } |
|
|
|
pageSize: 10, |
|
|
|
currentCategory: 0, |
|
|
|
tabbarHeight: 0, |
|
|
|
showDetailPanel: false, |
|
|
@ -260,6 +277,11 @@ export default { |
|
|
|
showRulePopup: false, |
|
|
|
ruleImgUrl: '/static/回收/回收规则.png', |
|
|
|
showPickupConfirm: false, |
|
|
|
showBrandConfirm: false, |
|
|
|
brandConfirmInfo: { |
|
|
|
logo: '', |
|
|
|
name: '' |
|
|
|
}, |
|
|
|
brandList: [ |
|
|
|
{ logo: '/static/brand/alexander.png', name: 'Alexander McQueen/亚历山大麦昆', letter: 'A' }, |
|
|
|
{ logo: '/static/brand/alexander.png', name: 'Alexander McQueen/亚历山大麦昆', letter: 'A' }, |
|
|
@ -269,12 +291,17 @@ export default { |
|
|
|
currentLetter: 'A', |
|
|
|
scrollToView: '', |
|
|
|
brandSearch: '', |
|
|
|
ruleHtml: '', // 回收规则富文本内容 |
|
|
|
loadingMore: false, |
|
|
|
finished: false, |
|
|
|
pendingBrandIndex: null, // 记录待加一的品牌商品index |
|
|
|
} |
|
|
|
}, |
|
|
|
computed: { |
|
|
|
// 当前分类的商品列表 |
|
|
|
recycleList() { |
|
|
|
return this.allProducts[this.currentCategory] || [] |
|
|
|
const currentCategoryId = this.categories[this.currentCategory]?.id |
|
|
|
return this.allProducts[currentCategoryId] || [] |
|
|
|
}, |
|
|
|
// 计算总数量 |
|
|
|
totalCount() { |
|
|
@ -298,10 +325,9 @@ export default { |
|
|
|
} |
|
|
|
} |
|
|
|
const total = Number(this.totalPrice) |
|
|
|
return { |
|
|
|
min: (total - 2.2).toFixed(1), |
|
|
|
max: (total + 2.2).toFixed(1) |
|
|
|
} |
|
|
|
const min = Math.max(0, (total - 2.2)).toFixed(1) |
|
|
|
const max = (total + 2.2).toFixed(1) |
|
|
|
return { min, max } |
|
|
|
}, |
|
|
|
selectedProducts() { |
|
|
|
// 返回所有已选商品 |
|
|
@ -311,6 +337,13 @@ export default { |
|
|
|
if (!this.brandSearch) return this.brandList |
|
|
|
const keyword = this.brandSearch.trim().toLowerCase() |
|
|
|
return this.brandList.filter(b => b.name.toLowerCase().includes(keyword)) |
|
|
|
}, |
|
|
|
bannerList() { |
|
|
|
return getApp().globalData.bannerList || [] |
|
|
|
}, |
|
|
|
categories() { |
|
|
|
const list = getApp().globalData.pricePreviewList || [] |
|
|
|
return list.filter(item => item.pid === '0').sort((a, b) => a.sort - b.sort) |
|
|
|
} |
|
|
|
}, |
|
|
|
methods: { |
|
|
@ -327,67 +360,65 @@ export default { |
|
|
|
}); |
|
|
|
} |
|
|
|
}, |
|
|
|
fetchClassGoodsList() { |
|
|
|
this.$api('getClassGoodsList', {}, res => { |
|
|
|
if (res.code === 200 && Array.isArray(res.result) && res.result.length > 0) { |
|
|
|
this.categories = res.result.map(item => ({ |
|
|
|
id: item.categoryId, |
|
|
|
name: item.categoryName |
|
|
|
})) |
|
|
|
this.allProducts = {} |
|
|
|
res.result.forEach(item => { |
|
|
|
this.allProducts[item.categoryId] = (item.goodsList || []).map(good => ({ |
|
|
|
...good, |
|
|
|
quantity: 0 // 初始化数量 |
|
|
|
})) |
|
|
|
}) |
|
|
|
this.currentCategory = this.categories.length > 0 ? this.categories[0].id : 0 |
|
|
|
fetchGoodsList(categoryId, page = 1, callback) { |
|
|
|
this.$api('getClassGoodsList', { |
|
|
|
classId: categoryId, |
|
|
|
pageNo: page, |
|
|
|
pageSize: this.pageSize |
|
|
|
}, res => { |
|
|
|
if (res.code === 200 && res.result && Array.isArray(res.result.records)) { |
|
|
|
const oldList = this.allProducts[categoryId] || [] |
|
|
|
const newList = page === 1 ? res.result.records : oldList.concat(res.result.records) |
|
|
|
this.$set(this.allProducts, categoryId, newList) |
|
|
|
this.$set(this.allProductsPage, categoryId, page) |
|
|
|
this.$set(this.allProductsTotal, categoryId, res.result.total) |
|
|
|
} |
|
|
|
// 否则继续用静态数据 |
|
|
|
if (callback) callback() |
|
|
|
}) |
|
|
|
}, |
|
|
|
// 获取分类商品总数 |
|
|
|
getCategoryItemCount(categoryId) { |
|
|
|
getCategoryItemCount(index) { |
|
|
|
const categoryId = this.categories[index]?.id |
|
|
|
const categoryItems = this.allProducts[categoryId] || [] |
|
|
|
return categoryItems.reduce((sum, item) => sum + (item.quantity || 0), 0) |
|
|
|
}, |
|
|
|
// 切换分类 |
|
|
|
switchCategory(categoryId) { |
|
|
|
this.currentCategory = categoryId |
|
|
|
// 先清空当前商品列表 |
|
|
|
this.$set(this.allProducts, categoryId, []) |
|
|
|
// 拉取品牌商品接口 |
|
|
|
this.$api('getGoodsBrandList', { iconId: categoryId }, res => { |
|
|
|
if ( |
|
|
|
res.code === 200 && |
|
|
|
res.result && |
|
|
|
Array.isArray(res.result.records) && |
|
|
|
res.result.records.length > 0 |
|
|
|
) { |
|
|
|
// 接口有数据 |
|
|
|
this.$set(this.allProducts, categoryId, res.result.records.map(item => ({ |
|
|
|
...item, |
|
|
|
quantity: 0 |
|
|
|
}))) |
|
|
|
} else { |
|
|
|
// 接口无数据,兜底用静态 |
|
|
|
if (this.staticAllProducts[categoryId]) { |
|
|
|
this.$set(this.allProducts, categoryId, JSON.parse(JSON.stringify(this.staticAllProducts[categoryId]))) |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
switchCategory(index) { |
|
|
|
this.currentCategory = index |
|
|
|
this.loadingMore = false |
|
|
|
this.finished = false |
|
|
|
const categoryId = this.categories[index]?.id |
|
|
|
console.log(categoryId,'switchCategory') |
|
|
|
if (!this.allProducts[categoryId]) { |
|
|
|
this.fetchGoodsList(categoryId, 1) |
|
|
|
} |
|
|
|
}, |
|
|
|
// 更新商品数量 |
|
|
|
updateQuantity(index, delta) { |
|
|
|
const item = this.allProducts[this.currentCategory][index] |
|
|
|
const newQuantity = (item.quantity || 0) + delta |
|
|
|
if (newQuantity >= 0) { |
|
|
|
this.$set(item, 'quantity', newQuantity) |
|
|
|
const categoryId = this.categories[this.currentCategory]?.id |
|
|
|
const item = this.allProducts[categoryId]?.[index] |
|
|
|
if (!item) return |
|
|
|
// 品牌商品且数量为0且加一时弹出品牌索引弹窗 |
|
|
|
if (item.shopCion && (item.quantity || 0) === 0 && delta > 0) { |
|
|
|
this.pendingBrandIndex = index |
|
|
|
this.showBrandPopup = true // 打开品牌索引弹窗 |
|
|
|
return |
|
|
|
} |
|
|
|
let newQuantity = (item.quantity || 0) + delta |
|
|
|
if (newQuantity < 0) newQuantity = 0 |
|
|
|
this.$set(item, 'quantity', newQuantity) |
|
|
|
}, |
|
|
|
// 显示回收规则 |
|
|
|
showRules(item) { |
|
|
|
this.showRulePopup = true |
|
|
|
// 获取回收规则富文本 |
|
|
|
this.$api('getGoodsRecycleRule', { goodsId: item.id }, res => { |
|
|
|
if (res.code === 200 && res.result) { |
|
|
|
this.ruleHtml = res.result |
|
|
|
} else { |
|
|
|
this.ruleHtml = '<p>暂无回收规则</p>' |
|
|
|
} |
|
|
|
this.showRulePopup = true |
|
|
|
}) |
|
|
|
}, |
|
|
|
showMore() { |
|
|
|
uni.showToast({ |
|
|
@ -426,7 +457,7 @@ export default { |
|
|
|
// 获取所有选中的衣物 |
|
|
|
const selectedItems = this.recycleList.filter(item => item.quantity > 0).map(item => ({ |
|
|
|
name: item.name, |
|
|
|
icon: item.icon, |
|
|
|
icon: item.image, |
|
|
|
quantity: item.quantity, |
|
|
|
unitPrice: item.price, |
|
|
|
desc: '允许脏破烂,160码以上' |
|
|
@ -494,13 +525,60 @@ export default { |
|
|
|
closeRulePopup() { |
|
|
|
this.showRulePopup = false |
|
|
|
}, |
|
|
|
loadMoreGoods() { |
|
|
|
const categoryId = this.categories[this.currentCategory]?.id |
|
|
|
const page = (this.allProductsPage[categoryId] || 1) + 1 |
|
|
|
const total = this.allProductsTotal[categoryId] || 0 |
|
|
|
const loaded = (this.allProducts[categoryId] || []).length |
|
|
|
|
|
|
|
if (this.loadingMore || this.finished) return |
|
|
|
|
|
|
|
if (loaded < total) { |
|
|
|
this.loadingMore = true |
|
|
|
this.fetchGoodsList(categoryId, page, () => { |
|
|
|
this.loadingMore = false |
|
|
|
// 判断是否加载完 |
|
|
|
const newLoaded = (this.allProducts[categoryId] || []).length |
|
|
|
this.finished = newLoaded >= (this.allProductsTotal[categoryId] || 0) |
|
|
|
}) |
|
|
|
} else { |
|
|
|
this.finished = true |
|
|
|
} |
|
|
|
}, |
|
|
|
openBrandConfirm(brand) { |
|
|
|
this.brandConfirmInfo = { |
|
|
|
logo: brand.logo, |
|
|
|
name: brand.name |
|
|
|
} |
|
|
|
this.showBrandConfirm = true |
|
|
|
}, |
|
|
|
closeBrandConfirm() { |
|
|
|
this.showBrandConfirm = false |
|
|
|
}, |
|
|
|
confirmBrand() { |
|
|
|
this.showBrandConfirm = false |
|
|
|
this.showBrandPopup = false |
|
|
|
// 确认后将待加一的商品数量+1 |
|
|
|
if (this.pendingBrandIndex !== null) { |
|
|
|
const categoryId = this.categories[this.currentCategory]?.id |
|
|
|
const item = this.allProducts[categoryId]?.[this.pendingBrandIndex] |
|
|
|
if (item) { |
|
|
|
this.$set(item, 'quantity', 1) |
|
|
|
} |
|
|
|
this.pendingBrandIndex = null |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
created() { |
|
|
|
// 初始化用静态数据 |
|
|
|
this.categories = this.staticCategories |
|
|
|
this.allProducts = JSON.parse(JSON.stringify(this.staticAllProducts)) |
|
|
|
this.currentCategory = this.categories[0].id |
|
|
|
this.fetchClassGoodsList() |
|
|
|
this.currentCategory = 0 |
|
|
|
this.$nextTick(() => { |
|
|
|
if (this.categories.length > 0) { |
|
|
|
const firstCategoryId = this.categories[0]?.id |
|
|
|
if (firstCategoryId) { |
|
|
|
this.fetchGoodsList(firstCategoryId, 1) |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
}, |
|
|
|
mounted() { |
|
|
|
this.$nextTick(() => { |
|
|
@ -515,12 +593,64 @@ export default { |
|
|
|
}).exec() |
|
|
|
}) |
|
|
|
}, |
|
|
|
// 添加下拉刷新生命周期 |
|
|
|
onPullDownRefresh() { |
|
|
|
this.refreshData() |
|
|
|
onLoad(options) { |
|
|
|
if (options && options.categoryId) { |
|
|
|
const idx = this.categories.findIndex(c => c.id == options.categoryId) |
|
|
|
if (idx !== -1) this.currentCategory = idx |
|
|
|
} |
|
|
|
this.fetchGoodsList(this.categories[this.currentCategory].id, 1) |
|
|
|
uni.$on('bannerListUpdated', () => { |
|
|
|
this.$forceUpdate && this.$forceUpdate() |
|
|
|
}) |
|
|
|
if (getApp().globalData.bannerList && getApp().globalData.bannerList.length > 0) { |
|
|
|
this.$forceUpdate && this.$forceUpdate() |
|
|
|
} |
|
|
|
}, |
|
|
|
onUnload() { |
|
|
|
uni.$off('bannerListUpdated') |
|
|
|
}, |
|
|
|
onShow() { |
|
|
|
const id = getApp().globalData.targetRecycleCategoryId |
|
|
|
if (id) { |
|
|
|
const trySwitch = () => { |
|
|
|
if (this.categories.length > 0) { |
|
|
|
const idx = this.categories.findIndex(c => String(c.id) === String(id)) |
|
|
|
if (idx !== -1) { |
|
|
|
this.currentCategory = idx |
|
|
|
const categoryId = this.categories[idx]?.id |
|
|
|
if (categoryId && !this.allProducts[categoryId]) { |
|
|
|
this.loadingMore = false |
|
|
|
this.finished = false |
|
|
|
this.fetchGoodsList(categoryId, 1) |
|
|
|
} |
|
|
|
} |
|
|
|
getApp().globalData.targetRecycleCategoryId = null |
|
|
|
} else { |
|
|
|
setTimeout(trySwitch, 100) |
|
|
|
} |
|
|
|
} |
|
|
|
trySwitch() |
|
|
|
} |
|
|
|
}, |
|
|
|
onLoad() { |
|
|
|
this.fetchClassGoodsList() |
|
|
|
watch: { |
|
|
|
categories(newVal) { |
|
|
|
const id = getApp().globalData.targetRecycleCategoryId |
|
|
|
console.log('targetRecycleCategoryId', id) |
|
|
|
console.log('categories:', newVal.map(c => c.id)) |
|
|
|
const idx = newVal.findIndex(c => String(c.id) === String(id)) |
|
|
|
console.log('findIndex result:', idx) |
|
|
|
if (id && newVal.length > 0 && idx !== -1) { |
|
|
|
this.currentCategory = idx |
|
|
|
getApp().globalData.targetRecycleCategoryId = null |
|
|
|
// 自动加载右侧商品 |
|
|
|
const categoryId = newVal[idx]?.id |
|
|
|
if (categoryId && !this.allProducts[categoryId]) { |
|
|
|
this.loadingMore = false |
|
|
|
this.finished = false |
|
|
|
this.fetchGoodsList(categoryId, 1) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
} |
|
|
|
</script> |
|
|
@ -1451,4 +1581,99 @@ export default { |
|
|
|
.uv-tabbar { |
|
|
|
z-index: 1000; |
|
|
|
} |
|
|
|
.loading-more { |
|
|
|
text-align: center; |
|
|
|
color: #999; |
|
|
|
padding: 20rpx 0; |
|
|
|
font-size: 26rpx; |
|
|
|
} |
|
|
|
|
|
|
|
.brand-confirm-mask { |
|
|
|
position: fixed; |
|
|
|
left: 0; |
|
|
|
right: 0; |
|
|
|
top: 0; |
|
|
|
bottom: 0; |
|
|
|
background: rgba(0,0,0,0.25); |
|
|
|
z-index: 5001; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
justify-content: center; |
|
|
|
} |
|
|
|
.brand-confirm-popup { |
|
|
|
width: 70vw; |
|
|
|
max-width: 270px; |
|
|
|
background: #fff; |
|
|
|
border-radius: 32rpx; |
|
|
|
box-shadow: 0 8rpx 32rpx rgba(0,0,0,0.12); |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
align-items: center; |
|
|
|
padding: 48rpx 20rpx 36rpx 20rpx; |
|
|
|
position: relative; |
|
|
|
} |
|
|
|
.brand-confirm-title { |
|
|
|
font-size: 36rpx; |
|
|
|
color: #222; |
|
|
|
font-weight: bold; |
|
|
|
text-align: center; |
|
|
|
margin-bottom: 24rpx; |
|
|
|
} |
|
|
|
.brand-confirm-logo-wrap { |
|
|
|
width: 120rpx; |
|
|
|
height: 120rpx; |
|
|
|
background: #f8f8f8; |
|
|
|
border-radius: 50%; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
justify-content: center; |
|
|
|
margin-bottom: 18rpx; |
|
|
|
} |
|
|
|
.brand-confirm-logo { |
|
|
|
width: 80rpx; |
|
|
|
height: 80rpx; |
|
|
|
border-radius: 50%; |
|
|
|
} |
|
|
|
.brand-confirm-name { |
|
|
|
font-size: 28rpx; |
|
|
|
color: #222; |
|
|
|
font-weight: bold; |
|
|
|
text-align: center; |
|
|
|
margin-bottom: 16rpx; |
|
|
|
} |
|
|
|
.brand-confirm-desc { |
|
|
|
font-size: 24rpx; |
|
|
|
color: #999; |
|
|
|
text-align: center; |
|
|
|
margin-bottom: 32rpx; |
|
|
|
line-height: 1.6; |
|
|
|
} |
|
|
|
.brand-confirm-btn-row { |
|
|
|
width: 100%; |
|
|
|
display: flex; |
|
|
|
justify-content: space-between; |
|
|
|
gap: 24rpx; |
|
|
|
} |
|
|
|
.brand-confirm-btn { |
|
|
|
flex: 1; |
|
|
|
height: 72rpx; |
|
|
|
border-radius: 36rpx; |
|
|
|
font-size: 28rpx; |
|
|
|
font-weight: bold; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
justify-content: center; |
|
|
|
border: none; |
|
|
|
margin: 0 0; |
|
|
|
} |
|
|
|
.brand-confirm-btn.retry { |
|
|
|
background: #fff; |
|
|
|
color: #ff9c00; |
|
|
|
border: 2rpx solid #ff9c00; |
|
|
|
} |
|
|
|
.brand-confirm-btn.confirm { |
|
|
|
background: linear-gradient(to right, #ffd01e, #ff8917); |
|
|
|
color: #fff; |
|
|
|
border: none; |
|
|
|
} |
|
|
|
</style> |