228 lines
4.7 KiB
Vue
228 lines
4.7 KiB
Vue
<script setup>
|
|
// 店铺 客服 收藏 支付
|
|
import {
|
|
ref,
|
|
reactive,
|
|
getCurrentInstance
|
|
} from 'vue'
|
|
//
|
|
import util from '@/common/js/util.js'
|
|
|
|
import JyPopup from '@/components/public/jy-popup'
|
|
// 地址
|
|
import JyCommodityAddress from '@/components/public/jy-commodity-address'
|
|
import {
|
|
useStore
|
|
} from 'vuex'
|
|
const {
|
|
proxy
|
|
} = getCurrentInstance()
|
|
const {
|
|
userinfo
|
|
} = useStore().state
|
|
//
|
|
const props = defineProps({
|
|
// 商品信息
|
|
detail: {
|
|
type: Object,
|
|
default: () => ({})
|
|
},
|
|
})
|
|
// 地址
|
|
const address = reactive({})
|
|
|
|
// 规格
|
|
const spec = reactive([{
|
|
name: '款型',
|
|
option: [{
|
|
name: '普通款',
|
|
},
|
|
{
|
|
name: '升级款',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
name: '卡通形象',
|
|
option: [{
|
|
name: '熊',
|
|
},
|
|
{
|
|
name: '狗',
|
|
},
|
|
{
|
|
name: '猫',
|
|
},
|
|
{
|
|
name: '河豚',
|
|
},
|
|
],
|
|
}
|
|
])
|
|
// 已选择的规格下标
|
|
const spaceIndex = reactive([])
|
|
|
|
//
|
|
const menuFn = {
|
|
// 店铺
|
|
store() {
|
|
util.checkLink('pages/shop/store/index')
|
|
},
|
|
// 客服
|
|
customerService() {
|
|
util.checkLink('pages/news/question-answer/index')
|
|
},
|
|
// 收藏
|
|
heibianStar() {
|
|
//
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 跳转
|
|
* @param {Object} url 跳转路径
|
|
*/
|
|
function link(url) {
|
|
uni.navigateTo({
|
|
url,
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 选择规格
|
|
* @param {Object} index 选择规格下标
|
|
* @param {Object} secIndex
|
|
*/
|
|
function handleSpec(index, secIndex) {
|
|
spaceIndex.splice(index, 1, secIndex)
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<!-- 填充 -->
|
|
<view class="fill" style="height: 180rpx;"></view>
|
|
|
|
<!-- 底部 -->
|
|
<view class="footer footerMneu rows plr20 shadow bfff">
|
|
<view class="menu df fdr aic">
|
|
<view class="option ver mlr10">
|
|
<image class="wh30" src="/static/store.png" mode="widthFix" />
|
|
<view class="f24 c999 mt10">店铺</view>
|
|
</view>
|
|
<view class="option ver mlr10">
|
|
<view class="wh30 fmid">
|
|
<uni-icons type="star-filled" size="45rpx" color="#FF9B27" v-if="0" />
|
|
<uni-icons type="star" size="45rpx" color="#666" v-else />
|
|
</view>
|
|
<view class="f24 c999 mt10">收藏</view>
|
|
</view>
|
|
<view class="option ver mlr10">
|
|
<image class="wh30" src="/static/customer-service.png" mode="widthFix" />
|
|
<view class="f24 c999 mt10">客服</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 下单 -->
|
|
<view class="btn lg primary f1 ml30" @click="$refs.popup.open()">
|
|
<text>立即购买</text>
|
|
</view>
|
|
</view>
|
|
|
|
<uni-popup type="bottom" ref="popup">
|
|
<view class="buy popBot plr20 bfff">
|
|
<view class="address mtb40">
|
|
<JyCommodityAddress :address="address"></JyCommodityAddress>
|
|
</view>
|
|
|
|
<!-- 商品图 价格 明细 数量 -->
|
|
<view class="jy-card-commodity-content df mtb40">
|
|
<!-- 商品图 -->
|
|
<image class="wh200 br10"
|
|
src="https://img30.360buyimg.com/popWareDetail/jfs/t1/124291/22/31317/138753/6449f30dF90683c84/4fee5d1a337f7b90.jpg.avif"
|
|
mode="aspectFill" />
|
|
<!-- 价格 明细 数量 -->
|
|
<view class="info f1 df fdc jcsb ml30">
|
|
<!-- 价格 -->
|
|
<view class="content-info-price">
|
|
<text class="cFF9B27 f28">应付</text>
|
|
<text class="cFF9B27 f24">¥</text>
|
|
<text class="cFF9B27 f50">89</text>
|
|
</view>
|
|
<!-- 已选 -->
|
|
<view class="content-info-num">
|
|
<text class="f26 c333">已选 规格一 / 规格二</text>
|
|
</view>
|
|
<!-- 计数器 -->
|
|
<view class="w200">
|
|
<uni-number-box :value="1" :step="1" />
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 规格 -->
|
|
<view class="spec">
|
|
<view class="item mtb20" v-for="(item, index) in spec">
|
|
<!-- 标题 -->
|
|
<view class="title f32">{{item.name}}</view>
|
|
<!-- 选项 -->
|
|
<view class="selection df">
|
|
<!-- disabled 销量为零不能选 -->
|
|
<view class="option mtb20 mr20" :class="{'active': spaceIndex[index] === secIndex}"
|
|
v-for="(secItem,secIndex) in item.option" :key="secIndex"
|
|
@click="handleSpec(index,secIndex)">
|
|
<text class="txt">{{secItem.name}}</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="btn lg primary mtb30" @click="link('/pages/shop/continue-pay/index')">
|
|
<text class="cfff">立即下单 ¥89</text>
|
|
</view>
|
|
</view>
|
|
</uni-popup>
|
|
</template>
|
|
|
|
<style scoped lang="scss">
|
|
// 规格
|
|
.spec {
|
|
|
|
// 可选菜单
|
|
.selection {
|
|
|
|
// 选项
|
|
.option {
|
|
padding: 5rpx 15rpx;
|
|
background-color: #F7F7F7;
|
|
border-radius: 10rpx;
|
|
transition: .3s;
|
|
border: 2rpx solid #F7F7F7;
|
|
|
|
.txt {
|
|
color: #333;
|
|
font-size: 26rpx;
|
|
transition: .3s;
|
|
}
|
|
|
|
// 被选中
|
|
&.active {
|
|
background-color: #FFFBF8;
|
|
border-color: #FF9B27;
|
|
|
|
.txt {
|
|
color: #FF9B27;
|
|
}
|
|
}
|
|
|
|
// 不能选
|
|
&.disabled {
|
|
background-color: F7F7F7;
|
|
|
|
.txt {
|
|
color: #999;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</style> |