2.4 KiB
2.4 KiB
实现店铺选择功能
1. 需求分析
- 在 PurchaseModal 组件中添加店铺选择下拉列表
- 店铺数据通过
getShopList()方法获取 - 店铺选择是非必选的
- 如果选择了店铺,提交订单时需要添加
shop_id字段
2. 实现步骤
2.1 添加状态和方法
- 在
script setup中添加shopList状态存储店铺列表 - 添加
selectedShop状态存储选中的店铺 - 添加
loadingShops状态控制加载状态 - 导入
PurchaseModal类并创建实例 - 添加
getShopList方法获取店铺数据
2.2 修改模板
- 在配置区域添加店铺选择下拉列表
- 显示加载状态和空状态
- 使用 Element Plus 的
el-select组件实现下拉选择
2.3 修改提交逻辑
- 在
goShopify方法中,当selectedShop存在时,添加shop_id字段到 params
3. 代码实现
3.1 导入和状态定义
import { PurchaseModal as PurchaseModalClass } from './index.js'
const purchaseModal = new PurchaseModalClass()
const shopList = ref([])
const selectedShop = ref(null)
const loadingShops = ref(false)
3.2 获取店铺列表方法
const fetchShopList = async () => {
loadingShops.value = true
try {
const res = await purchaseModal.getShopList()
if (res.code === 0) {
shopList.value = res.data || []
}
} catch (error) {
console.error('获取店铺列表失败:', error)
shopList.value = []
} finally {
loadingShops.value = false
}
}
3.3 添加模板代码
<div class="config-item shop-select">
<div class="label">{{ $t('checkout.shop') }}</div>
<el-select
v-model="selectedShop"
:placeholder="$t('checkout.chooseShop')"
filterable
:loading="loadingShops"
class="shop-select-input"
>
<el-option
v-for="shop in shopList"
:key="shop.id"
:label="shop.shopName"
:value="shop"
/>
</el-select>
</div>
3.4 修改提交逻辑
let params = {
quantity: qty.value,
project_id: props.modelData.projectId,
project_details: project_details,
order_info: order_info,
}
if (selectedShop.value) {
params.shop_id = selectedShop.value.id
}
4. 国际化支持
- 需要在国际化文件中添加
checkout.shop和checkout.chooseShop键
5. 样式调整
- 为店铺选择添加适当的样式,确保在各种设备上显示正常