1 line
31 KiB
Plaintext
1 line
31 KiB
Plaintext
{"version":3,"sources":["pages/mall/consumer/footprint.uvue","uni_modules/ak-req/ak-req.uts","pages/user/change-password.uvue","pages/user/login.uvue","pages/user/center.uvue","pages/main/index.uvue"],"sourcesContent":["<!-- 足迹页面 -->\r\n<template>\r\n\t<view class=\"footprint-page\">\r\n\t\t<view class=\"footprint-header\">\r\n\t\t\t<view v-if=\"footprints.length > 0\" class=\"header-actions\">\r\n\t\t\t\t<text class=\"action-btn\" @click=\"toggleEditMode\">{{ isEditMode ? '完成' : '编辑' }}</text>\r\n\t\t\t\t<text class=\"action-btn\" @click=\"clearAll\">清空</text>\r\n\t\t\t</view>\r\n\t\t</view>\r\n\r\n\t\t<scroll-view class=\"footprint-content\" :scroll-y=\"true\" @scrolltolower=\"loadMore\">\r\n\t\t\t<view v-if=\"footprints.length === 0 && !isLoading\" class=\"empty-footprints\">\r\n\t\t\t\t<text class=\"empty-icon\">👣</text>\r\n\t\t\t\t<text class=\"empty-text\">暂无浏览记录</text>\r\n\t\t\t\t<text class=\"empty-subtext\">快去浏览喜欢的商品吧</text>\r\n\t\t\t\t<button class=\"go-shopping-btn\" @click=\"goShopping\">去逛逛</button>\r\n\t\t\t</view>\r\n\r\n\t\t\t<view v-for=\"(group, index) in groupedFootprints\" :key=\"index\" class=\"date-group\">\r\n\t\t\t\t<view class=\"group-header\">\r\n\t\t\t\t\t<text class=\"group-date\">{{ group.dateLabel }}</text>\r\n\t\t\t\t\t<text v-if=\"isEditMode\" class=\"group-select\" @click=\"toggleGroupSelect(index)\">\r\n\t\t\t\t\t\t{{ isGroupSelected(index) ? '取消全选' : '全选' }}\r\n\t\t\t\t\t</text>\r\n\t\t\t\t</view>\r\n\t\t\t\t\r\n\t\t\t\t<view class=\"group-items\">\r\n\t\t\t\t\t<view v-for=\"item in group.items\" :key=\"item.id\" class=\"footprint-item\">\r\n\t\t\t\t\t\t<view v-if=\"isEditMode\" class=\"item-selector\" @click=\"toggleSelect(item)\">\r\n\t\t\t\t\t\t\t<view :class=\"['select-icon', { selected: item.selected === true }]\">\r\n\t\t\t\t\t\t\t\t<text v-if=\"item.selected === true\" class=\"icon-text\">✓</text>\r\n\t\t\t\t\t\t\t</view>\r\n\t\t\t\t\t\t</view>\r\n\t\t\t\t\t\t<view class=\"item-content\" @click=\"viewProduct(item)\">\r\n\t\t\t\t\t\t\t<image class=\"product-image\" :src=\"item.image\" mode=\"aspectFill\" />\r\n\t\t\t\t\t\t\t<text class=\"product-name\" :lines=\"2\">{{ item.name }}</text>\r\n\t\t\t\t\t\t\t<view class=\"product-bottom\">\r\n\t\t\t\t\t\t\t\t<text class=\"product-price\">¥{{ item.price }}</text>\r\n\t\t\t\t\t\t\t\t<view class=\"product-add-btn\" @click.stop=\"addToCart(item)\">\r\n\t\t\t\t\t\t\t\t\t<text class=\"add-icon\">+</text>\r\n\t\t\t\t\t\t\t\t</view>\r\n\t\t\t\t\t\t\t</view>\r\n\t\t\t\t\t\t</view>\r\n\t\t\t\t\t</view>\r\n\t\t\t\t</view>\r\n\t\t\t</view>\r\n\r\n\t\t\t<view v-if=\"isLoading\" class=\"loading-more\">\r\n\t\t\t\t<text class=\"loading-text\">加载中...</text>\r\n\t\t\t</view>\r\n\t\t\t<view v-if=\"!hasMore && footprints.length > 0\" class=\"no-more\">\r\n\t\t\t\t<text class=\"no-more-text\">没有更多了</text>\r\n\t\t\t</view>\r\n\t\t</scroll-view>\r\n\r\n\t\t<view v-if=\"isEditMode && footprints.length > 0\" class=\"edit-bar\">\r\n\t\t\t<view class=\"select-all\" @click=\"toggleSelectAll\">\r\n\t\t\t\t<view :class=\"['all-select-icon', { selected: isAllSelected }]\">\r\n\t\t\t\t\t<text v-if=\"isAllSelected\" class=\"icon-text\">✓</text>\r\n\t\t\t\t</view>\r\n\t\t\t\t<text class=\"select-all-text\">全选</text>\r\n\t\t\t</view>\r\n\t\t\t<view class=\"delete-btn\" @click=\"deleteSelected\">\r\n\t\t\t\t<text class=\"delete-text\">删除({{ selectedCount }})</text>\r\n\t\t\t</view>\r\n\t\t</view>\r\n\t</view>\r\n</template>\r\n\r\n<script setup lang=\"uts\">\r\nimport { ref, onMounted, computed } from 'vue'\r\nimport { supabaseService } from '@/utils/supabaseService.uts'\r\n\r\ntype FootprintType = {\r\n\tid: string\r\n\tname: string\r\n\tprice: number\r\n\toriginal_price: number\r\n\timage: string\r\n\tsales: number\r\n\tshopId: string\r\n\tshopName: string\r\n\tviewTime: number\r\n\tselected: boolean\r\n\tmerchant_id: string\r\n}\r\n\r\ntype FootprintGroup = {\r\n\tdateLabel: string\r\n\tdateKey: string\r\n\titems: FootprintType[]\r\n}\r\n\r\ntype FootprintSaveType = {\r\n\tid: string\r\n\tname: string\r\n\tprice: number\r\n\toriginal_price: number\r\n\timage: string\r\n\tsales: number\r\n\tshopId: string\r\n\tshopName: string\r\n\tviewTime: number\r\n}\r\n\r\nconst footprints = ref<FootprintType[]>([])\r\nconst isEditMode = ref<boolean>(false)\r\nconst isLoading = ref<boolean>(false)\r\nconst hasMore = ref<boolean>(false)\r\n\r\nconst selectedCount = computed((): number => {\r\n\treturn footprints.value.filter((item): Boolean => item.selected === true).length\r\n})\r\n\r\nconst isAllSelected = computed((): boolean => {\r\n\treturn footprints.value.length > 0 && footprints.value.every((item): Boolean => item.selected === true)\r\n})\r\n\r\nconst formatGroupDate = (dateStr: string): string => {\r\n\tconst date = new Date(dateStr)\r\n\tconst today = new Date()\r\n\tconst yesterday = new Date(today)\r\n\tyesterday.setDate(yesterday.getDate() - 1)\r\n\t\r\n\tif (date.toDateString() === today.toDateString()) {\r\n\t\treturn '今天'\r\n\t} else if (date.toDateString() === yesterday.toDateString()) {\r\n\t\treturn '昨天'\r\n\t} else {\r\n\t\tconst month = date.getMonth() + 1\r\n\t\tconst day = date.getDate()\r\n\t\treturn `${month}月${day}日`\r\n\t}\r\n}\r\n\r\nconst groupedFootprints = computed((): FootprintGroup[] => {\r\n\tconst result: FootprintGroup[] = []\r\n\t\r\n\tfor (let i = 0; i < footprints.value.length; i++) {\r\n\t\tconst item = footprints.value[i]\r\n\t\tconst dateKey = new Date(item.viewTime).toDateString()\r\n\t\t\r\n\t\tlet foundGroup: FootprintGroup | null = null\r\n\t\tfor (let j = 0; j < result.length; j++) {\r\n\t\t\tif (result[j].dateKey === dateKey) {\r\n\t\t\t\tfoundGroup = result[j]\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif (foundGroup != null) {\r\n\t\t\tfoundGroup.items.push(item)\r\n\t\t} else {\r\n\t\t\tconst newGroup: FootprintGroup = {\r\n\t\t\t\tdateLabel: formatGroupDate(dateKey),\r\n\t\t\t\tdateKey: dateKey,\r\n\t\t\t\titems: [item]\r\n\t\t\t} as FootprintGroup\r\n\t\t\tresult.push(newGroup)\r\n\t\t}\r\n\t}\r\n\t\r\n\treturn result\r\n})\r\n\r\nconst toggleEditMode = () => {\r\n\tisEditMode.value = !isEditMode.value\r\n\tfor (let i = 0; i < footprints.value.length; i++) {\r\n\t\tfootprints.value[i].selected = false\r\n\t}\r\n}\r\n\r\nconst clearAll = () => {\r\n\tif (footprints.value.length === 0) return\r\n\r\n\tuni.showModal({\r\n\t\ttitle: '清空足迹',\r\n\t\tcontent: '确定要清空所有浏览记录吗?',\r\n\t\tsuccess: (res) => {\r\n\t\t\tif (res.confirm) {\r\n\t\t\t\tuni.showLoading({ title: '清空中...' })\r\n\t\t\t\t\r\n\t\t\t\tsupabaseService.clearFootprints().then((success) => {\r\n\t\t\t\t\tuni.hideLoading()\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (success) {\r\n\t\t\t\t\t\tfootprints.value = []\r\n\t\t\t\t\t\tuni.removeStorageSync('footprints')\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tuni.showToast({\r\n\t\t\t\t\t\t\ttitle: '已清空',\r\n\t\t\t\t\t\t\ticon: 'success'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tuni.showToast({\r\n\t\t\t\t\t\t\ttitle: '清空失败',\r\n\t\t\t\t\t\t\ticon: 'none'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t}\r\n\t})\r\n}\r\n\r\nconst toggleSelect = (item: FootprintType) => {\r\n\titem.selected = !(item.selected === true)\r\n\tfootprints.value = [...footprints.value]\r\n}\r\n\r\nconst toggleGroupSelect = (groupIndex: number) => {\r\n\tconst group = groupedFootprints.value[groupIndex]\r\n\tif (group == null) return\r\n\t\r\n\tconst allSelected = group.items.every((item): Boolean => item.selected === true)\r\n\tconst newSelectedState = !allSelected\r\n\t\r\n\tfor (let i = 0; i < group.items.length; i++) {\r\n\t\tgroup.items[i].selected = newSelectedState\r\n\t}\r\n\t\r\n\tfootprints.value = [...footprints.value]\r\n}\r\n\r\nconst isGroupSelected = (groupIndex: number): boolean => {\r\n\tconst group = groupedFootprints.value[groupIndex]\r\n\tif (group == null || group.items.length === 0) return false\r\n\treturn group.items.every((item): Boolean => item.selected === true)\r\n}\r\n\r\nconst toggleSelectAll = () => {\r\n\tconst newSelectedState = !isAllSelected.value\r\n\tfor (let i = 0; i < footprints.value.length; i++) {\r\n\t\tfootprints.value[i].selected = newSelectedState\r\n\t}\r\n\tfootprints.value = [...footprints.value]\r\n}\r\n\r\nconst deleteSelected = () => {\r\n\tconst selectedItems = footprints.value.filter((item): Boolean => item.selected === true)\r\n\tif (selectedItems.length === 0) {\r\n\t\tuni.showToast({\r\n\t\t\ttitle: '请选择要删除的记录',\r\n\t\t\ticon: 'none'\r\n\t\t})\r\n\t\treturn\r\n\t}\r\n\r\n\tuni.showModal({\r\n\t\ttitle: '确认删除',\r\n\t\tcontent: `确定要删除选中的${selectedItems.length}条记录吗?`,\r\n\t\tsuccess: (res) => {\r\n\t\t\tif (res.confirm) {\r\n\t\t\t\tuni.showLoading({ title: '删除中...' })\r\n\t\t\t\t\r\n\t\t\t\t// 收集要删除的商品ID\r\n\t\t\t\tconst productIds: string[] = []\r\n\t\t\t\tfor (let i = 0; i < selectedItems.length; i++) {\r\n\t\t\t\t\tproductIds.push(selectedItems[i].id)\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// 调用服务层批量删除\r\n\t\t\t\tsupabaseService.deleteFootprints(productIds).then((success) => {\r\n\t\t\t\t\tuni.hideLoading()\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (success) {\r\n\t\t\t\t\t\t// 从本地列表中移除\r\n\t\t\t\t\t\tfootprints.value = footprints.value.filter((item): Boolean => item.selected !== true)\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// 更新本地缓存\r\n\t\t\t\t\t\tconst dataToSave: FootprintSaveType[] = []\r\n\t\t\t\t\t\tfor (let i = 0; i < footprints.value.length; i++) {\r\n\t\t\t\t\t\t\tconst item = footprints.value[i]\r\n\t\t\t\t\t\t\tdataToSave.push({\r\n\t\t\t\t\t\t\t\tid: item.id,\r\n\t\t\t\t\t\t\t\tname: item.name,\r\n\t\t\t\t\t\t\t\tprice: item.price,\r\n\t\t\t\t\t\t\t\toriginal_price: item.original_price,\r\n\t\t\t\t\t\t\t\timage: item.image,\r\n\t\t\t\t\t\t\t\tsales: item.sales,\r\n\t\t\t\t\t\t\t\tshopId: item.shopId,\r\n\t\t\t\t\t\t\t\tshopName: item.shopName,\r\n\t\t\t\t\t\t\t\tviewTime: item.viewTime\r\n\t\t\t\t\t\t\t} as FootprintSaveType)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tuni.setStorageSync('footprints', JSON.stringify(dataToSave))\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tuni.showToast({\r\n\t\t\t\t\t\t\ttitle: '删除成功',\r\n\t\t\t\t\t\t\ticon: 'success'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif (footprints.value.length === 0) {\r\n\t\t\t\t\t\t\tisEditMode.value = false\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tuni.showToast({\r\n\t\t\t\t\t\t\ttitle: '删除失败',\r\n\t\t\t\t\t\t\ticon: 'none'\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t}\r\n\t})\r\n}\r\n\r\nconst addToCart = async (item: FootprintType) => {\r\n\tuni.showLoading({ title: '检查商品...' })\r\n\ttry {\r\n\t\tconst productId = item.id\r\n\t\tconst merchantId = item.merchant_id ?? item.shopId ?? ''\r\n\t\t\r\n\t\t// 检查商品是否有SKU\r\n\t\tconst skus = await supabaseService.getProductSkus(productId)\r\n\t\tuni.hideLoading()\r\n\t\t\r\n\t\tif (skus.length > 0) {\r\n\t\t\t// 有规格,提示并跳转到商品详情页选择规格\r\n\t\t\tuni.showToast({\r\n\t\t\t\ttitle: '请选择规格',\r\n\t\t\t\ticon: 'none'\r\n\t\t\t})\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tuni.navigateTo({\r\n\t\t\t\t\turl: '/pages/mall/consumer/product-detail?id=' + productId\r\n\t\t\t\t})\r\n\t\t\t}, 500)\r\n\t\t} else {\r\n\t\t\t// 无规格,直接加入购物车\r\n\t\t\tuni.showLoading({ title: '添加中...' })\r\n\t\t\tconst success = await supabaseService.addToCart(productId, 1, '', merchantId)\r\n\t\t\tuni.hideLoading()\r\n\t\t\tif (success) {\r\n\t\t\t\tuni.showToast({\r\n\t\t\t\t\ttitle: '已添加到购物车',\r\n\t\t\t\t\ticon: 'success'\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\tuni.showToast({\r\n\t\t\t\t\ttitle: '添加失败',\r\n\t\t\t\t\ticon: 'none'\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t}\r\n\t} catch (e) {\r\n\t\tconsole.error('添加到购物车异常', e)\r\n\t\tuni.hideLoading()\r\n\t\tuni.showToast({\r\n\t\t\ttitle: '操作失败',\r\n\t\t\ticon: 'none'\r\n\t\t})\r\n\t}\r\n}\r\n\r\nconst viewProduct = (item: FootprintType) => {\r\n\tif (isEditMode.value) return\r\n\t\r\n\tuni.navigateTo({\r\n\t\turl: `/pages/mall/consumer/product-detail?productId=${item.id}&price=${item.price}&originalPrice=${item.original_price}`\r\n\t})\r\n}\r\n\r\nconst loadMore = () => {\r\n}\r\n\r\nconst goShopping = () => {\r\n\tuni.switchTab({\r\n\t\turl: '/pages/main/index'\r\n\t})\r\n}\r\n\r\nconst parseFootprintItem = (item: any): FootprintType => {\r\n\tlet itemObj: UTSJSONObject\r\n\tif (item instanceof UTSJSONObject) {\r\n\t\titemObj = item as UTSJSONObject\r\n\t} else {\r\n\t\titemObj = JSON.parse(JSON.stringify(item)) as UTSJSONObject\r\n\t}\r\n\t\r\n\treturn {\r\n\t\tid: itemObj.getString('id') ?? '',\r\n\t\tname: itemObj.getString('name') ?? '',\r\n\t\tprice: itemObj.getNumber('price') ?? 0,\r\n\t\toriginal_price: itemObj.getNumber('original_price') ?? 0,\r\n\t\timage: itemObj.getString('image') ?? '',\r\n\t\tsales: itemObj.getNumber('sales') ?? 0,\r\n\t\tshopId: itemObj.getString('shopId') ?? '',\r\n\t\tshopName: itemObj.getString('shopName') ?? '',\r\n\t\tviewTime: itemObj.getNumber('viewTime') ?? 0,\r\n\t\tselected: false,\r\n\t\tmerchant_id: itemObj.getString('merchant_id') ?? ''\r\n\t} as FootprintType\r\n}\r\n\r\nconst loadFootprints = async () => {\r\n\tisLoading.value = true\r\n\t\r\n\ttry {\r\n\t\tconst remoteData = await supabaseService.getFootprints()\r\n\t\t\r\n\t\tif (remoteData.length > 0) {\r\n\t\t\tconsole.log('获取到远程足迹数据:', remoteData.length)\r\n\t\t\tconst newFootprints: FootprintType[] = []\r\n\t\t\tfor (let i = 0; i < remoteData.length; i++) {\r\n\t\t\t\tnewFootprints.push(parseFootprintItem(remoteData[i]))\r\n\t\t\t}\r\n\t\t\tfootprints.value = newFootprints\r\n\t\t\t\r\n\t\t\tconst dataToSave: FootprintSaveType[] = []\r\n\t\t\tfor (let i = 0; i < footprints.value.length; i++) {\r\n\t\t\t\tconst item = footprints.value[i]\r\n\t\t\t\tdataToSave.push({\r\n\t\t\t\t\tid: item.id,\r\n\t\t\t\t\tname: item.name,\r\n\t\t\t\t\tprice: item.price,\r\n\t\t\t\t\toriginal_price: item.original_price,\r\n\t\t\t\t\timage: item.image,\r\n\t\t\t\t\tsales: item.sales,\r\n\t\t\t\t\tshopId: item.shopId,\r\n\t\t\t\t\tshopName: item.shopName,\r\n\t\t\t\t\tviewTime: item.viewTime\r\n\t\t\t\t} as FootprintSaveType)\r\n\t\t\t}\r\n\t\t\tuni.setStorageSync('footprints', JSON.stringify(dataToSave))\r\n\t\t} else {\r\n\t\t\tconst storedFootprints = uni.getStorageSync('footprints')\r\n\t\t\tif (storedFootprints != null) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst data = JSON.parse(storedFootprints as string) as any[]\r\n\t\t\t\t\tconst newFootprints: FootprintType[] = []\r\n\t\t\t\t\tfor (let i = 0; i < data.length; i++) {\r\n\t\t\t\t\t\tnewFootprints.push(parseFootprintItem(data[i]))\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfootprints.value = newFootprints\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tconsole.error('Failed to parse footprints', e)\r\n\t\t\t\t\tfootprints.value = []\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfootprints.value = []\r\n\t\t\t}\r\n\t\t}\r\n\t} catch (e) {\r\n\t\tconsole.error('加载足迹失败', e)\r\n\t\tconst storedFootprints = uni.getStorageSync('footprints')\r\n\t\tif (storedFootprints != null) {\r\n\t\t\ttry {\r\n\t\t\t\tconst data = JSON.parse(storedFootprints as string) as any[]\r\n\t\t\t\tconst newFootprints: FootprintType[] = []\r\n\t\t\t\tfor (let i = 0; i < data.length; i++) {\r\n\t\t\t\t\tnewFootprints.push(parseFootprintItem(data[i]))\r\n\t\t\t\t}\r\n\t\t\t\tfootprints.value = newFootprints\r\n\t\t\t} catch (err) {\r\n\t\t\t\tfootprints.value = []\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tisLoading.value = false\r\n\thasMore.value = false\r\n}\r\n\r\nonMounted(() => {\r\n\tloadFootprints()\r\n})\r\n</script>\r\n\r\n<style scoped>\r\n.footprint-page {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tflex: 1;\r\n}\r\n\r\n.footprint-header {\r\n\tbackground-color: #ffffff;\r\n\tpadding: 15px;\r\n\tborder-bottom: 1px solid #e5e5e5;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: space-between;\r\n}\r\n\r\n.header-actions {\r\n\tdisplay: flex;\r\n\tflex-direction: row;\r\n\tflex: 1;\r\n\tjustify-content: flex-end;\r\n\talign-items: center;\r\n\tpadding-right: 0;\r\n}\r\n\r\n.action-btn {\r\n\tcolor: #007aff;\r\n\tfont-size: 14px;\r\n\tpadding: 5px;\r\n\tmargin-left: 20px;\r\n}\r\n\r\n.footprint-content {\r\n\tflex: 1;\r\n\theight: 0px;\r\n}\r\n\r\n.empty-footprints {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\tpadding: 80px 20px;\r\n\tbackground-color: #ffffff;\r\n}\r\n\r\n.empty-icon {\r\n\tfont-size: 80px;\r\n\tmargin-bottom: 20px;\r\n}\r\n\r\n.empty-text {\r\n\tfont-size: 16px;\r\n\tcolor: #666666;\r\n\tmargin-bottom: 10px;\r\n}\r\n\r\n.empty-subtext {\r\n\tfont-size: 14px;\r\n\tcolor: #999999;\r\n\tmargin-bottom: 30px;\r\n}\r\n\r\n.go-shopping-btn {\r\n\tbackground-color: #007aff;\r\n\tcolor: #ffffff;\r\n\tpadding: 10px 40px;\r\n\tborder-radius: 25px;\r\n\tfont-size: 14px;\r\n\tborder: none;\r\n}\r\n\r\n.date-group {\r\n\tbackground-color: #ffffff;\r\n\tmargin-bottom: 10px;\r\n\tpadding: 0 10px;\r\n}\r\n\r\n.group-header {\r\n\tpadding: 15px 5px;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: space-between;\r\n}\r\n\r\n.group-date {\r\n\tfont-size: 16px;\r\n\tfont-weight: bold;\r\n\tcolor: #333333;\r\n}\r\n\r\n.group-select {\r\n\tcolor: #007aff;\r\n\tfont-size: 14px;\r\n}\r\n\r\n.group-items {\r\n\tpadding: 0;\r\n\tdisplay: flex;\r\n\tflex-direction: row;\r\n\tflex-wrap: wrap;\r\n\tjustify-content: space-between;\r\n}\r\n\r\n.footprint-item {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tbackground: #fff;\r\n\tborder-radius: 8px;\r\n\toverflow: hidden;\r\n\twidth: 48%;\r\n\tmargin-bottom: 12px;\r\n\tposition: relative;\r\n}\r\n\r\n.item-selector {\r\n\tposition: absolute;\r\n\ttop: 5px;\r\n\tright: 5px;\r\n\tz-index: 10;\r\n\twidth: 30px;\r\n\theight: 30px;\r\n\tborder-radius: 15px;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n}\r\n\r\n.select-icon {\r\n\twidth: 20px;\r\n\theight: 20px;\r\n\tborder: 1px solid #cccccc;\r\n\tborder-radius: 10px;\r\n\tbackground-color: rgba(255,255,255,0.5);\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n}\r\n\r\n.select-icon.selected {\r\n\tbackground-color: #007aff;\r\n\tborder-color: #007aff;\r\n}\r\n\r\n.icon-text {\r\n\tcolor: #ffffff;\r\n\tfont-size: 12px;\r\n}\r\n\r\n.item-content {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n}\r\n\r\n.product-image {\r\n\twidth: 100%;\r\n\theight: 170px;\r\n\tborder-radius: 8px;\r\n\tmargin-bottom: 8px;\r\n\tbackground: #f5f5f5;\r\n}\r\n\r\n.product-name {\r\n\tfont-size: 13px;\r\n\tcolor: #333;\r\n\tmargin-bottom: 5px;\r\n\tline-height: 1.4;\r\n\theight: 36px;\r\n\toverflow: hidden;\r\n\ttext-overflow: ellipsis;\r\n\tpadding: 0 8px;\r\n}\r\n\r\n.product-bottom {\r\n\tdisplay: flex;\r\n\tflex-direction: row;\r\n\tjustify-content: space-between;\r\n\talign-items: center;\r\n\tpadding: 0 8px 8px;\r\n}\r\n\r\n.product-price {\r\n\tfont-size: 15px;\r\n\tcolor: #ff5000;\r\n\tfont-weight: bold;\r\n}\r\n\r\n.product-add-btn {\r\n\twidth: 24px;\r\n\theight: 24px;\r\n\tbackground-color: #ff5000;\r\n\tborder-radius: 12px;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n}\r\n\r\n.add-icon {\r\n\tcolor: #fff;\r\n\tfont-size: 16px;\r\n\tfont-weight: bold;\r\n}\r\n\r\n@media (min-width: 768px) {\r\n\t.footprint-item {\r\n\t\twidth: 32% !important;\r\n\t}\r\n}\r\n\r\n@media (min-width: 1024px) {\r\n\t.footprint-item {\r\n\t\twidth: 16% !important;\r\n\t}\r\n\t\r\n\t.footprint-content, .footprint-header {\r\n\t\tmax-width: 1200px;\r\n\t\tmargin: 0 auto;\r\n\t}\r\n}\r\n\r\n.loading-more,\r\n.no-more {\r\n\tpadding: 20px;\r\n\ttext-align: center;\r\n\tbackground-color: #ffffff;\r\n}\r\n\r\n.loading-text,\r\n.no-more-text {\r\n\tcolor: #999999;\r\n\tfont-size: 14px;\r\n}\r\n\r\n.edit-bar {\r\n\tbackground-color: #ffffff;\r\n\tborder-top: 1px solid #e5e5e5;\r\n\tpadding: 15px;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: space-between;\r\n}\r\n\r\n.select-all {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n}\r\n\r\n.all-select-icon {\r\n\twidth: 20px;\r\n\theight: 20px;\r\n\tborder: 1px solid #cccccc;\r\n\tborder-radius: 10px;\r\n\tmargin-right: 10px;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n}\r\n\r\n.all-select-icon.selected {\r\n\tbackground-color: #007aff;\r\n\tborder-color: #007aff;\r\n}\r\n\r\n.select-all-text {\r\n\tfont-size: 14px;\r\n\tcolor: #333333;\r\n}\r\n\r\n.delete-btn {\r\n\tbackground-color: #ff4757;\r\n\tpadding: 10px 20px;\r\n\tborder-radius: 15px;\r\n}\r\n\r\n.delete-text {\r\n\tcolor: #ffffff;\r\n\tfont-size: 14px;\r\n\tfont-weight: bold;\r\n}\r\n</style>\r\n\r\n",null,null,null,null,null],"names":[],"mappings":"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"} |