针对个人主页与照片显示做了修改

This commit is contained in:
2026-07-27 21:47:14 +08:00
parent 4d086758e8
commit fa781cc6a6
60 changed files with 2770 additions and 683 deletions
+100 -50
View File
@@ -1,41 +1,61 @@
import Taro from '@tarojs/taro'
import type { DesignItem, OrderItem } from '../types'
import type { DesignItem, OrderItem, AddressItem } from '../types'
const DESIGN_KEY = 'smart_design_list'
const ORDER_KEY = 'smart_order_list'
const USER_KEY = 'smart_user_info'
const THEME_KEY = 'smart_theme'
const USER_KEY = 'smart_user_info'
const ACTIVE_USER_KEY = 'smart_active_openid'
/** 获取设计清单 */
export const getDesignList = (): DesignItem[] => {
try {
return Taro.getStorageSync(DESIGN_KEY) || []
} catch {
return []
// ---------- 当前用户 openid 管理 ----------
function getActiveOpenid(): string {
const user = getUserInfoRaw()
const openid = user?.openid || Taro.getStorageSync(ACTIVE_USER_KEY) || '_guest_'
Taro.setStorageSync(ACTIVE_USER_KEY, openid)
return openid
}
function key(scope: string): string {
const prefix = getActiveOpenid()
return `${scope}_${prefix}`
}
// ---------- 用户数据 ----------
export function getUserInfoRaw(): any {
try { return Taro.getStorageSync(USER_KEY) } catch { return null }
}
export function setUserInfoRaw(info: any) {
Taro.setStorageSync(USER_KEY, info)
if (info?.openid) {
Taro.setStorageSync(ACTIVE_USER_KEY, info.openid)
}
}
/** 保存设计清单 */
export const setDesignList = (list: DesignItem[]) => {
Taro.setStorageSync(DESIGN_KEY, list)
export function clearUserInfo() {
Taro.removeStorageSync(USER_KEY)
Taro.removeStorageSync(ACTIVE_USER_KEY)
}
/** 获取订单列表 */
export const getOrderList = (): OrderItem[] => {
try {
return Taro.getStorageSync(ORDER_KEY) || []
} catch {
return []
}
export function setUserInfo(info: any) {
setUserInfoRaw(info)
}
/** 保存订单列表 */
export const setOrderList = (list: OrderItem[]) => {
Taro.setStorageSync(ORDER_KEY, list)
export function getUserInfo() {
return getUserInfoRaw()
}
/** 添加设计清单条目 */
export const addDesign = (product: any, count: number): DesignItem => {
// ---------- 设计清单 ----------
export function getDesignList(): DesignItem[] {
try { return Taro.getStorageSync(key('design_list')) || [] } catch { return [] }
}
export function setDesignList(list: DesignItem[]) {
Taro.setStorageSync(key('design_list'), list)
}
export function addDesign(product: any, count: number): DesignItem {
const list = getDesignList()
const item: DesignItem = {
id: 'DSG' + Date.now(),
@@ -51,8 +71,7 @@ export const addDesign = (product: any, count: number): DesignItem => {
return item
}
/** 更新设计清单条目 */
export const updateDesign = (id: string, patch: Partial<DesignItem>) => {
export function updateDesign(id: string, patch: Partial<DesignItem>) {
const list = getDesignList()
const idx = list.findIndex(d => d.id === id)
if (idx === -1) return
@@ -60,8 +79,17 @@ export const updateDesign = (id: string, patch: Partial<DesignItem>) => {
setDesignList(list)
}
/** 设计转订单 */
export const designToOrder = (designId: string): OrderItem | null => {
// ---------- 订单 ----------
export function getOrderList(): OrderItem[] {
try { return Taro.getStorageSync(key('order_list')) || [] } catch { return [] }
}
export function setOrderList(list: OrderItem[]) {
Taro.setStorageSync(key('order_list'), list)
}
export function designToOrder(designId: string): OrderItem | null {
const dList = getDesignList()
const oList = getOrderList()
const design = dList.find(d => d.id === designId)
@@ -78,7 +106,6 @@ export const designToOrder = (designId: string): OrderItem | null => {
sku: `${design.productName} × ${design.count}`
}
// 更新 design 状态
const dIdx = dList.findIndex(d => d.id === designId)
if (dIdx !== -1) {
dList[dIdx].status = 'ordered'
@@ -90,30 +117,53 @@ export const designToOrder = (designId: string): OrderItem | null => {
return order
}
/** 用户数据 */
export const getUserInfo = () => {
try {
return Taro.getStorageSync(USER_KEY)
} catch {
return null
}
}
// ---------- 主题 ----------
export const setUserInfo = (info: any) => {
Taro.setStorageSync(USER_KEY, info)
}
/** 主题 */
export type ThemeMode = 'light' | 'dark'
export const getTheme = (): ThemeMode => {
try {
return Taro.getStorageSync(THEME_KEY) || 'light'
} catch {
return 'light'
}
export function getTheme(): ThemeMode {
try { return Taro.getStorageSync(THEME_KEY) || 'light' } catch { return 'light' }
}
export const setTheme = (theme: ThemeMode) => {
export function setTheme(theme: ThemeMode) {
Taro.setStorageSync(THEME_KEY, theme)
}
// ---------- 收货地址 ----------
export function getAddressList(): AddressItem[] {
try { return Taro.getStorageSync(key('address_list')) || [] } catch { return [] }
}
export function setAddressList(list: AddressItem[]) {
Taro.setStorageSync(key('address_list'), list)
}
export function addAddress(addr: Omit<AddressItem, 'id'>): AddressItem {
const list = getAddressList()
const item: AddressItem = { ...addr, id: 'ADR' + Date.now() }
// 若设为默认,取消其他默认
if (item.isDefault) {
list.forEach(a => { a.isDefault = false })
}
setAddressList([item, ...list])
return item
}
export function updateAddress(id: string, patch: Partial<AddressItem>) {
const list = getAddressList()
const idx = list.findIndex(a => a.id === id)
if (idx === -1) return
if (patch.isDefault) list.forEach(a => { a.isDefault = false })
list[idx] = { ...list[idx], ...patch }
setAddressList(list)
}
export function deleteAddress(id: string) {
const list = getAddressList().filter(a => a.id !== id)
setAddressList(list)
}
export function getDefaultAddress(): AddressItem | undefined {
return getAddressList().find(a => a.isDefault)
}