| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- import { resolveFileUrl } from '@/utils/image'
- import { formatPrice } from '@/utils/format'
- import { parseCartSpecText } from '@/utils/cartSpec'
- const GOODS_PLACEHOLDER = '/static/logo.png'
- const SHOP_PLACEHOLDER = '/static/logo.png'
- function formatAddress(addr) {
- if (!addr) return ''
- const region = (addr.regionName || '').replace(/\//g, '')
- return `${region}${addr.detailAddress || ''}`.trim()
- }
- export function mapGoodsItem(item) {
- if (!item) return null
- const specText = item.specText || '默认'
- return {
- cartItemId: item.cartItemId,
- goodsId: item.goodsId,
- goodsName: item.goodsName || '',
- mainPic: item.mainPic || '',
- displayPic: resolveFileUrl(item.mainPic) || GOODS_PLACEHOLDER,
- specText,
- specList: parseCartSpecText(specText),
- serviceDesc: item.serviceDesc || '',
- salePrice: item.salePrice,
- priceText: formatPrice(item.salePrice),
- quantity: Number(item.quantity) || 1,
- maxStock: Number(item.maxStock) || 1,
- subtotal: item.subtotal,
- subtotalText: formatPrice(item.subtotal),
- freightType: item.freightType,
- freightDesc: item.freightDesc || '',
- buyerRemark: item.buyerRemark || ''
- }
- }
- function mapShopAndAddress(data) {
- const shop = data.shop || {}
- const addr = data.address || null
- return {
- shop: {
- shopId: shop.shopId,
- shopName: shop.shopName || '',
- shopAvatar: shop.shopAvatar || '',
- shopStatus: shop.shopStatus
- },
- address: addr
- ? {
- addressId: addr.addressId,
- consigneeName: addr.consigneeName || '',
- mobile: addr.mobile || '',
- regionName: addr.regionName || '',
- detailAddress: addr.detailAddress || '',
- fullAddress: formatAddress(addr),
- isDefault: addr.isDefault === '1'
- }
- : null,
- goodsAmount: data.goodsAmount,
- freightAmount: data.freightAmount,
- freightDesc: data.freightDesc || '',
- payAmount: data.payAmount,
- goodsAmountText: formatPrice(data.goodsAmount),
- freightAmountText: formatPrice(data.freightAmount),
- payAmountText: formatPrice(data.payAmount),
- payType: data.payType || 'WECHAT'
- }
- }
- /** preview 接口 data → 单商品页面模型 */
- export function mapCheckoutPreview(data) {
- if (!data) return null
- const base = mapShopAndAddress(data)
- return {
- ...base,
- goods: mapGoodsItem((data.items || [])[0])
- }
- }
- /** preview 接口 data → 购物车多商品页面模型 */
- export function mapCheckoutPreviewCart(data, remarkMap = {}) {
- if (!data) return null
- const base = mapShopAndAddress(data)
- const goodsList = (data.items || [])
- .map((row) => {
- const item = mapGoodsItem(row)
- if (!item) return null
- if (item.cartItemId && remarkMap[item.cartItemId] != null) {
- item.buyerRemark = remarkMap[item.cartItemId]
- }
- return item
- })
- .filter(Boolean)
- return {
- ...base,
- goodsList
- }
- }
- /** 会员地址列表行 → 选择弹层 */
- export function mapAddressOption(row) {
- if (!row) return null
- const region = (row.regionName || '').replace(/\//g, '')
- const full = row.fullAddress || `${region}${row.detailAddress || ''}`
- return {
- addressId: row.addressId,
- consigneeName: row.consigneeName || '',
- mobile: row.mobile || '',
- fullAddress: full,
- isDefault: row.isDefault === '1'
- }
- }
|