diff --git a/check_tags.py b/check_tags.py
new file mode 100644
index 00000000..cc70e230
--- /dev/null
+++ b/check_tags.py
@@ -0,0 +1,25 @@
+import os
+
+def check_tags(file_path):
+ print(f"Checking {file_path}")
+ try:
+ content = open(file_path, 'r', encoding='utf-8').read()
+ tags = ['template', 'script', 'style', 'view', 'text', 'image', 'scroll-view']
+ for tag in tags:
+ o = content.count(f'<{tag}')
+ c = content.count(f'{tag}>')
+ if o != c:
+ print(f" [ERROR] {tag}: open={o}, close={c}")
+ else:
+ print(f" [OK] {tag}: {o}")
+ except Exception as e:
+ print(f" [ERROR] Failed to read: {e}")
+
+files = [
+ r'd:\骅锋\mall\pages\mall\admin\order\order-statistics\index.uvue',
+ r'd:\骅锋\mall\pages\mall\admin\order\list.uvue',
+ r'd:\骅锋\mall\pages\mall\admin\order\order-configuration\index.uvue'
+]
+
+for f in files:
+ check_tags(f)
diff --git a/find_tags.py b/find_tags.py
new file mode 100644
index 00000000..6d81937f
--- /dev/null
+++ b/find_tags.py
@@ -0,0 +1,27 @@
+import re
+
+def find_mismatched_text_tags(file_path):
+ with open(file_path, 'r', encoding='utf-8') as f:
+ lines = f.readlines()
+
+ stack = []
+ print(f"Scanning {file_path}...")
+ for i, line in enumerate(lines):
+ # Use a better regex to find opening and closing tags separately
+ open_tags = re.findall(r'', line)
+
+ for _ in open_tags:
+ stack.append(i + 1)
+ for _ in close_tags:
+ if stack:
+ stack.pop()
+ else:
+ print(f" Extra closing tag at line {i+1}")
+
+ for line_num in stack:
+ print(f" Unclosed tag at line {line_num}")
+
+find_mismatched_text_tags(r'd:\骅锋\mall\pages\mall\admin\order\order-configuration\index.uvue')
+find_mismatched_text_tags(r'd:\骅锋\mall\pages\mall\admin\order\order-statistics\index.uvue')
+find_mismatched_text_tags(r'd:\骅锋\mall\pages\mall\admin\order\list.uvue')
diff --git a/layouts/admin/AdminLayout.uvue b/layouts/admin/AdminLayout.uvue
index 8cd9562a..0f8ecc18 100644
--- a/layouts/admin/AdminLayout.uvue
+++ b/layouts/admin/AdminLayout.uvue
@@ -57,12 +57,14 @@
@tab-close="onTabClose"
@close-other="onCloseOther"
@close-all="onCloseAll"
+ @refresh="onRefresh"
/>
-
+
+
@@ -77,6 +79,7 @@ import AdminSubSider from '@/layouts/admin/components/AdminSubSider.uvue'
import AdminHeader from '@/layouts/admin/components/AdminHeader.uvue'
import AdminTagsView from '@/layouts/admin/components/AdminTagsView.uvue'
import AdminFooter from '@/layouts/admin/components/AdminFooter.uvue'
+import AdminPageLoading from '@/layouts/admin/components/AdminPageLoading.uvue'
import {
getTopMenus,
@@ -117,6 +120,9 @@ import { getComponent } from '@/layouts/admin/router/adminComponentMap.uts'
const ASIDE_W = 70
const SUB_W = 200
+// 页面加载状态
+const isPageLoading = ref(false)
+
const hasNotification = ref(false)
/**
@@ -251,6 +257,12 @@ const currentComponent = computed(() => {
// 监听路由变化,同步状态 (处理从 Tabs 或外部跳转的情况)
watch(() => activeRouteId.value, (newId) => {
+ // 触发页面加载动画
+ isPageLoading.value = true
+ setTimeout(() => {
+ isPageLoading.value = false
+ }, 400) // 给予足够的时间让异步组件加载
+
const route = findRouteById(newId)
if (route && route.parentId) {
// 同步一级菜单
@@ -399,7 +411,7 @@ onMounted(() => {
flex-direction: row;
width: 100%;
min-height: 100vh;
- background: #f5f7f9;
+ background: #f0f2f5;
position: relative;
}
@@ -443,7 +455,7 @@ onMounted(() => {
flex-direction: column;
min-height: 100vh;
transition: margin-left 300ms ease;
- background: #f5f7f9;
+ background: #f0f2f5;
width: 100%;
}
@@ -473,13 +485,15 @@ onMounted(() => {
flex: 1;
overflow-y: scroll;
overflow-x: auto; /* 允许横向滚动,兼容极端窄屏 */
- background: #f5f7f9;
+ background: #f0f2f5;
+ padding: 0;
}
.content-inner {
min-height: calc(100vh - 120px);
- padding: 12px 14px;
+ padding: 12px;
}
+
.content-inner.is-mobile {
padding: 8px;
}
diff --git a/layouts/admin/components/AdminAside.uvue b/layouts/admin/components/AdminAside.uvue
index 9a2db126..b2870425 100644
--- a/layouts/admin/components/AdminAside.uvue
+++ b/layouts/admin/components/AdminAside.uvue
@@ -52,7 +52,8 @@ function getIconText(icon: string): string {
'user': '👥',
'product': '📦',
'order': '📜',
- 'marketing': '📉', 'share': '📢', 'content': '📝',
+ 'marketing': '📉',
+ 'content': '📝',
'finance': '💰',
'statistic': '📊',
'setting': '⚙️',
diff --git a/layouts/admin/components/AdminPageLoading.uvue b/layouts/admin/components/AdminPageLoading.uvue
new file mode 100644
index 00000000..40f74422
--- /dev/null
+++ b/layouts/admin/components/AdminPageLoading.uvue
@@ -0,0 +1,53 @@
+
+
+
+
+ 加载中...
+
+
+
+
+
+
+
diff --git a/layouts/admin/pages/HomeIndex.uvue b/layouts/admin/pages/HomeIndex.uvue
index 8d06963c..0b16eabe 100644
--- a/layouts/admin/pages/HomeIndex.uvue
+++ b/layouts/admin/pages/HomeIndex.uvue
@@ -225,8 +225,9 @@ const statsData = ref({
-
diff --git a/pages/mall/admin/cms/category/list.uvue b/pages/mall/admin/cms/category/list.uvue
index 00ebd37c..86e75809 100644
--- a/pages/mall/admin/cms/category/list.uvue
+++ b/pages/mall/admin/cms/category/list.uvue
@@ -1,39 +1,39 @@
-
+
-
+
- 鏄惁鏄剧ず:
+ 是否显示:
- 璇烽€夋嫨
- 鈻?/text>
+ 请选择
+ ▼
- 鍒嗙被鍚嶇О:
-
+ 分类名称:
+
- 鏌ヨ
+ 查询
-
+
-
+
@@ -50,11 +50,11 @@
- 缂栬緫
+ 编辑
- 鍒犻櫎
+ 删除
- 鏌ョ湅鏂囩珷
+ 查看文章
@@ -62,73 +62,73 @@
-
+
- 涓婄骇鍒嗙被:
+ 上级分类:
- 椤剁骇鍒嗙被
- 鈻?/text>
+ 顶级分类
+ ▼
- *鍒嗙被鍚嶇О:
+ *分类名称:
-
- *鍒嗙被绠€浠?
+ *分类简介:
-
- 鍒嗙被鍥剧墖:
+ 分类图片:
- 馃柤锔?/view>
+ 🖼️
- 鎺掑簭:
+ 排序:
- 鐘舵€?
+ 状态:
- 鏄剧ず
+ 显示
- 闅愯棌
+ 隐藏
@@ -140,9 +140,9 @@ import { ref } from 'vue'
const filterKeyword = ref('')
const categoryList = ref([
- { id: '181', name: '璐墿蹇冨緱', status: true },
- { id: '180', name: '娑堣垂鏂囧寲', status: true },
- { id: '179', name: '鍝佺墝璧勮', status: true }
+ { id: '181', name: '购物心得', status: true },
+ { id: '180', name: '消费文化', status: true },
+ { id: '179', name: '品牌资讯', status: true }
])
const showDrawer = ref(false)
@@ -163,7 +163,7 @@ const handleAdd = () => {
const handleEdit = (item: any) => {
formName.value = item.name
- // 妯℃嫙濉厖鍏朵粬瀛楁
+ // 模拟填充其他字段
formDesc.value = ''
formSort.value = 0
formStatus.value = item.status
@@ -224,7 +224,7 @@ const handleQuery = () => { console.log('Querying...') }
.divider { width: 1px; height: 12px; background-color: #e8eaec; margin: 0 10px; }
.drawer-mask { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.4); z-index: 2000; transition: opacity 0.3s; }
.mask-fade-out { opacity: 0; }
-.drawer-content { position: absolute; top: 0; right: 0; width: 50%; height: 100%; display: flex; flex-direction: column; box-shadow: -2px 0 12px rgba(0, 0, 0, 0.2); animation: slideIn 0.3s ease; }
+.drawer-content { position: absolute; top: 0; right: 0; width: 50%; height: 100%; background-color: #fff; display: flex; flex-direction: column; box-shadow: -2px 0 12px rgba(0, 0, 0, 0.2); animation: slideIn 0.3s ease; }
.slide-out { animation: slideOut 0.3s ease forwards; }
@keyframes slideIn { from { transform: translateX(100%); } to { transform: translateX(0); } }
@keyframes slideOut { from { transform: translateX(0); } to { transform: translateX(100%); } }
@@ -264,4 +264,3 @@ const handleQuery = () => { console.log('Querying...') }
.cancel-txt { font-size: 14px; color: #606266; }
.confirm-txt { font-size: 14px; color: #fff; }
-
diff --git a/pages/mall/admin/decoration/category.uvue b/pages/mall/admin/decoration/category.uvue
index bed9345b..89d7a058 100644
--- a/pages/mall/admin/decoration/category.uvue
+++ b/pages/mall/admin/decoration/category.uvue
@@ -1,58 +1,58 @@
-
+
-
+
-
+
-
+
- 馃攳
- 鐐瑰嚮鎼滅储鍟嗗搧淇℃伅
+ 🔍
+ 点击搜索商品信息
- 绮鹃€夋按鏋?/text>
+ 精选水果
- 馃崘
- {{ ['绮惧搧棣欒晧','鍧氭灉浼橀€?,'鐚曠尨妗?,'澶ц倝鍧?,'浜旇姳鑲?,'楦¤吙'][i-1] }}
+ 🍐
+ {{ ['精品香蕉','坚果优选','猕猴桃','大肉块','五花肉','鸡腿'][i-1] }}
- 鑲夊埗鍝?/text>
+ 肉制品
- 馃ォ
- {{ ['澶ц倝鍧?,'浜旇姳鑲?,'楦¤吙'][i-1] }}
+ 🥩
+ {{ ['大肉块','五花肉','鸡腿'][i-1] }}
@@ -60,124 +60,124 @@
- 馃彔
- 馃搨
- 馃洅
- 馃懁
+ 🏠
+ 📂
+ 🛒
+ 👤
- 鏍峰紡1
+ 样式1
-
+
- 馃攳
- 鐐瑰嚮鎼滅储鍟嗗搧淇℃伅
+ 🔍
+ 点击搜索商品信息
- 姘存灉
- 鍏ㄩ儴
- 鐑甫姘存灉
- 瑗跨摐钁¤悇
- 鈻?/text>
+ 水果
+ 全部
+ 热带水果
+ 西瓜葡萄
+ ▼
- 娣卞眰 V8 楂樻竻鐩村睆\n鍙岄暅澶?VR绉戞妧浣撻獙
+ 深层 V8 高清直屏\n双镜头/VR科技体验
- Haier/娴峰皵 BCD-216STPT 鏃跺皻闈欓煶鍐扮 涓夐棬鍑洪棬绉熷鐢ㄥ皬鍨嬬數鍐扮
+ Haier/海尔 BCD-216STPT 时尚静音冰箱 三门出门租家用小型电冰箱
- 楼999.00
- 宸插敭 92
- 绔嬪嵆璐拱
+ ¥999.00
+ 已售 92
+ 立即购买
- 馃洅7
+ 🛒7
- 鏍峰紡2
+ 样式2
-
+
- 馃彔
+ 🏠
- 馃攳
- 鎼滅储鍟嗗搧
+ 🔍
+ 搜索商品
- 姘存灉
- 鏃舵椂鐢熼矞
- 浼戦棽闆堕
- 鍧氭灉铚滈ク
- 鈭?/text>
+ 水果
+ 时时生鲜
+ 休闲零食
+ 坚果蜜饯
+ ∨
- 銆愭涓埍椹粫銆戞灉闄呮柊楠戝+鏅氬鐢滄10涓崟瑁?/text>
- 楼25.99
+ 【橙中爱马仕】果际新骑士晚季甜橙10个单装
+ ¥25.99
- 馃洅
+ 🛒
- 馃洅7
- 楼999.00
- 鍘荤粨绠?/text>
+ 🛒7
+ ¥999.00
+ 去结算
- 鏍峰紡3
+ 样式3
@@ -192,7 +192,7 @@ const selectedStyle = ref(1)
const handleSave = () => {
console.log('Saving classification style:', selectedStyle.value)
- uni.showToast({ title: '淇濆瓨鎴愬姛', icon: 'success' })
+ uni.showToast({ title: '保存成功', icon: 'success' })
}
const handleReset = () => {
@@ -362,7 +362,7 @@ const handleReset = () => {
.t3-item.specialty { background-color: #f2270c; color: #fff; padding: 2px 8px; border-radius: 10px; }
.t3-arrow { font-size: 12px; color: #ccc; flex: 1; text-align: right; }
-.style3-content { flex: 1; display: flex; flex-direction: row; }
+.style3-content { flex: 1; display: flex; flex-direction: row; background-color: #fff; }
.sidebar-v3 { width: 75px; background-color: #f7f7f7; }
.s3-item { height: 50px; display: flex; align-items: center; justify-content: center; font-size: 12px; color: #666; }
.s3-item.active { background-color: #fff; color: #333; font-weight: bold; position: relative; }
@@ -383,4 +383,3 @@ const handleReset = () => {
.c3-price { font-size: 14px; color: #f2270c; font-weight: bold; flex: 1; }
.btn-settle-v3 { background-color: #f2270c; padding: 6px 20px; border-radius: 20px; }
-
diff --git a/pages/mall/admin/decoration/data-config.uvue b/pages/mall/admin/decoration/data-config.uvue
index d711d1ed..5252236e 100644
--- a/pages/mall/admin/decoration/data-config.uvue
+++ b/pages/mall/admin/decoration/data-config.uvue
@@ -1,35 +1,35 @@
-
+
-
+
-
+
-
+
activeKey = k"
/>
-
+
-
+
-
+
- 寮€鍚箍鍛?/text>
+ 开启广告
- 骞垮憡鏃堕棿
+ 广告时间
- 鍗曚綅(绉?
+ 单位(秒)
-
+
- 寮€灞忓箍鍛婂凡鍏抽棴锛屽紑鍚悗鍙厤缃浘鐗?/text>
+ 开屏广告已关闭,开启后可配置图片
@@ -82,48 +82,48 @@ import MenuSide from '@/pages/mall/admin/decoration/components/MenuSide.uvue'
import PhonePreview from '@/pages/mall/admin/decoration/components/PhonePreview.uvue'
import CarouselEditor from '@/pages/mall/admin/decoration/components/CarouselEditor.uvue'
-// 鐘舵€佸畾涔?
+// 状态定义
const activeKey = ref('jingpin')
const categories = reactive([
- { key: 'jingpin', label: '棣栭〉绮惧搧鎺ㄨ崘鍥剧墖', type: 'carousel', recommendSizeText: '寤鸿灏哄锛?90 * 240px锛屾嫋鎷藉浘鐗囧彲璋冩暣鍥剧墖椤哄簭鍝︼紝鏈€澶氭坊鍔犱簲寮? },
- { key: 'hot', label: '鐑棬姒滃崟鎺ㄨ崘鍥剧墖', type: 'carousel', recommendSizeText: '寤鸿灏哄锛?90 * 240px锛屾嫋鎷藉浘鐗囧彲璋冩暣鍥剧墖椤哄簭鍝︼紝鏈€澶氭坊鍔犱簲寮? },
- { key: 'new', label: '棣栧彂鏂板搧鎺ㄨ崘鍥剧墖', type: 'carousel', recommendSizeText: '寤鸿灏哄锛?90 * 240px锛屾嫋鎷藉浘鐗囧彲璋冩暣鍥剧墖椤哄簭鍝︼紝鏈€澶氭坊鍔犱簲寮? },
- { key: 'promo', label: '淇冮攢鍗曞搧鎺ㄨ崘鍥剧墖', type: 'carousel', recommendSizeText: '寤鸿灏哄锛?90 * 240px锛屾嫋鎷藉浘鐗囧彲璋冩暣鍥剧墖椤哄簭鍝︼紝鏈€澶氭坊鍔犱簲寮? },
- { key: 'login', label: '鍚庡彴鐧诲綍椤甸潰骞荤伅鐗?, type: 'carousel', recommendSizeText: '寤鸿灏哄锛?90 * 240px锛屾嫋鎷藉浘鐗囧彲璋冩暣鍥剧墖椤哄簭鍝︼紝鏈€澶氭坊鍔犱簲寮? },
- { key: 'group', label: '鎷煎洟鍒楄〃杞挱鍥?, type: 'carousel', recommendSizeText: '寤鸿灏哄锛?10 * 300px锛屾嫋鎷藉浘鐗囧彲璋冩暣鍥剧墖椤哄簭鍝︼紝鏈€澶氭坊鍔犱簲寮? },
- { key: 'points', label: '绉垎鍟嗗煄杞挱鍥?, type: 'carousel', recommendSizeText: '寤鸿灏哄锛?10 * 300px锛屾嫋鎷藉浘鐗囧彲璋冩暣鍥剧墖椤哄簭鍝︼紝鏈€澶氭坊鍔犱簲寮? },
- { key: 'ad', label: '寮€灞忓箍鍛?, type: 'ad', recommendSizeText: '寤鸿灏哄锛?50 * 1334px锛屾嫋鎷藉浘鐗囧彲璋冩暣鍥剧墖椤哄簭鍝︼紝鏈€澶氭坊鍔犱簲寮? }
+ { key: 'jingpin', label: '首页精品推荐图片', type: 'carousel', recommendSizeText: '建议尺寸:690 * 240px,拖拽图片可调整图片顺序哦,最多添加五张' },
+ { key: 'hot', label: '热门榜单推荐图片', type: 'carousel', recommendSizeText: '建议尺寸:690 * 240px,拖拽图片可调整图片顺序哦,最多添加五张' },
+ { key: 'new', label: '首发新品推荐图片', type: 'carousel', recommendSizeText: '建议尺寸:690 * 240px,拖拽图片可调整图片顺序哦,最多添加五张' },
+ { key: 'promo', label: '促销单品推荐图片', type: 'carousel', recommendSizeText: '建议尺寸:690 * 240px,拖拽图片可调整图片顺序哦,最多添加五张' },
+ { key: 'login', label: '后台登录页面幻灯片', type: 'carousel', recommendSizeText: '建议尺寸:690 * 240px,拖拽图片可调整图片顺序哦,最多添加五张' },
+ { key: 'group', label: '拼团列表轮播图', type: 'carousel', recommendSizeText: '建议尺寸:710 * 300px,拖拽图片可调整图片顺序哦,最多添加五张' },
+ { key: 'points', label: '积分商城轮播图', type: 'carousel', recommendSizeText: '建议尺寸:710 * 300px,拖拽图片可调整图片顺序哦,最多添加五张' },
+ { key: 'ad', label: '开屏广告', type: 'ad', recommendSizeText: '建议尺寸:750 * 1334px,拖拽图片可调整图片顺序哦,最多添加五张' }
])
-// 鍒濆鍖栨暟鎹?
+// 初始化数据
const configMap = reactive>({
'jingpin': { max: 5, items: [{ id: 1, name: '1', imageUrl: '', link: { type: 'internal', value: '/pages/points_mall/integral_index' }, sort: 0 }] },
'hot': { max: 5, items: [{ id: 1, name: '1', imageUrl: '', link: { type: 'internal', value: '/pages/index/index' }, sort: 0 }] },
'new': { max: 5, items: [{ id: 1, name: '1', imageUrl: '', link: { type: 'internal', value: '/pages/index/index' }, sort: 0 }] },
'promo': { max: 5, items: [{ id: 1, name: '1', imageUrl: '', link: { type: 'internal', value: '/pages/points_mall/integral_index' }, sort: 0 }] },
'login': { max: 5, items: [{ id: 1, name: '1', imageUrl: '', link: { type: 'internal', value: '' }, sort: 0 }] },
- 'group': { max: 5, items: [{ id: 1, name: '鎷煎洟', imageUrl: '', link: { type: 'internal', value: '/pages/activity/goods_combination/index' }, sort: 0 }] },
+ 'group': { max: 5, items: [{ id: 1, name: '拼团', imageUrl: '', link: { type: 'internal', value: '/pages/activity/goods_combination/index' }, sort: 0 }] },
'points': { max: 5, items: [{ id: 1, name: '1', imageUrl: '', link: { type: 'internal', value: '/pages/points_mall/integral_index' }, sort: 0 }] },
'ad': { enabled: false, durationSeconds: 3, max: 5, items: [] }
})
-// 璁$畻灞炴€?
+// 计算属性
const activeCategory = computed(() => categories.find(c => c.key === activeKey.value))
const activeLabel = computed(() => activeCategory.value?.label ?? '')
const activeConfig = computed(() => configMap[activeKey.value])
const activeTitle = computed(() => {
- if (activeKey.value === 'ad') return '寮曞椤佃缃?
- if (activeKey.value === 'login') return '骞荤伅鐗囪缃?
- return '杞挱鍥捐缃?
+ if (activeKey.value === 'ad') return '引导页设置'
+ if (activeKey.value === 'login') return '幻灯片设置'
+ return '轮播图设置'
})
-// 鏂规硶
+// 方法
const handleSave = () => {
- uni.showLoading({ title: '淇濆瓨涓?..' })
+ uni.showLoading({ title: '保存中...' })
setTimeout(() => {
uni.hideLoading()
- uni.showToast({ title: '淇濆瓨鎴愬姛', icon: 'success' })
+ uni.showToast({ title: '保存成功', icon: 'success' })
}, 800)
}
@@ -134,7 +134,7 @@ const handleSwitchAd = (e: any) => {
const handleAddItem = () => {
const config = activeConfig.value
if (config.items.length >= config.max) {
- uni.showToast({ title: `鏈€澶氭坊鍔?${config.max} 鏉, icon: 'none' })
+ uni.showToast({ title: `最多添加 ${config.max} 条`, icon: 'none' })
return
}
config.items.push({
@@ -167,11 +167,11 @@ const handleUpdateItem = (payload: any) => {
const handleSelectLink = (index: number) => {
uni.showActionSheet({
- itemList: ['鍐呴儴椤甸潰', '澶栭儴閾炬帴', '鍏朵粬灏忕▼搴?],
+ itemList: ['内部页面', '外部链接', '其他小程序'],
success: (res) => {
const types: LinkType[] = ['internal', 'external', 'miniProgram']
activeConfig.value.items[index].link.type = types[res.tapIndex]
- uni.showToast({ title: '鍔熻兘寤鸿涓?, icon: 'none' })
+ uni.showToast({ title: '功能建设中', icon: 'none' })
}
})
}
@@ -219,12 +219,12 @@ const handleSelectLink = (index: number) => {
display: flex;
flex-direction: row;
min-height: 800px;
-
+ background-color: #fff;
border-radius: 8px;
overflow: hidden;
}
-/* 鍙充晶璁剧疆 */
+/* 右侧设置 */
.settings-column {
flex: 1;
padding: 30px;
@@ -243,7 +243,7 @@ const handleSelectLink = (index: number) => {
.settings-desc-box { margin-bottom: 24px; padding-left: 13px; }
.settings-desc { font-size: 13px; color: #999; }
-/* 寮€灞忓箍鍛婄壒鏈夋牱寮?*/
+/* 开屏广告特有样式 */
.ad-special-fields { padding: 20px; background-color: #f6f8fb; border-radius: 8px; margin-bottom: 20px; }
.form-row { display: flex; flex-direction: row; align-items: center; margin-bottom: 15px; }
.field-label { width: 80px; font-size: 14px; color: #333; }
@@ -257,4 +257,3 @@ const handleSelectLink = (index: number) => {
.anim-fade-in { animation: fadeIn 0.4s ease-out; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
-
diff --git a/pages/mall/admin/decoration/home.uvue b/pages/mall/admin/decoration/home.uvue
index a75df58d..cb666372 100644
--- a/pages/mall/admin/decoration/home.uvue
+++ b/pages/mall/admin/decoration/home.uvue
@@ -1,23 +1,23 @@
-
+
-
+
@@ -43,8 +43,8 @@
- 馃摙
- CRMEB 骞翠腑618娲诲姩寮€鍚繘琛屼腑锛?/text>
+ 📢
+ CRMEB 年中618活动开启进行中!
>
@@ -52,11 +52,11 @@
- 猸?/view>
- 鍛▄{ weekDays[i-1] }}
+ ⭐
+ 周{{ weekDays[i-1] }}
- 绛惧埌
+ 签到
@@ -66,54 +66,54 @@
- 馃彔
- 棣栭〉
+ 🏠
+ 首页
- 馃搨
- 鍒嗙被
+ 📂
+ 分类
- 馃洅
- 璐墿杞?/text>
+ 🛒
+ 购物车
- 馃懁
- 鎴戠殑
+ 👤
+ 我的
-
+
- 娣诲姞椤甸潰
+ 添加页面
- 瀵煎叆妯℃澘
+ 导入模板
-
+
{{ item.id }}
{{ item.name }}
-
+
{{ item.type }}
@@ -121,27 +121,27 @@
{{ item.updateTime }}
- 缂栬緫
+ 编辑
|
- 鍒犻櫎
+ 删除
|
- 棰勮
+ 预览
|
- 璁句负棣栭〉
- |
- 瀵煎嚭妯℃澘
+ 设为首页
+ |
+ 导出模板
-
+
-
+
- 椤甸潰鍚嶇О
- 页面名称
+
- 椤甸潰绫诲瀷
+ 页面类型
-
-
- 棣栭〉
+
+
+ 首页
-
-
- 涓撻椤?/text>
+
+
+ 专题页
- 閫夋嫨妯℃澘
- 璇烽€夋嫨瑕佸紩鐢ㄧ殑妯℃澘
+ 选择模板
+ 请选择要引用的模板
- 馃搫
+ 📄
- 閫氱敤妯℃澘 {{ i }}
+ 通用模板 {{ i }}
@@ -217,28 +217,28 @@
-
-
-
+
\ No newline at end of file
diff --git a/pages/mall/admin/distribution/division/apply.uvue b/pages/mall/admin/distribution/division/apply.uvue
index ce1cec4d..e5a50e0b 100644
--- a/pages/mall/admin/distribution/division/apply.uvue
+++ b/pages/mall/admin/distribution/division/apply.uvue
@@ -1,43 +1,34 @@
-
+
- 鎼滅储锛?/text>
-
+ 搜索:
+
-
+
-
-
+
{{ tab }}
-
-
{{ item.uid }}
@@ -53,11 +44,11 @@
{{ item.code }}
- 鍚屾剰
+ 同意
|
- 鎷掔粷
+ 拒绝
|
- 鍒犻櫎
+ 删除
@@ -65,26 +56,17 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/pages/mall/admin/distribution/division/list.uvue b/pages/mall/admin/distribution/division/list.uvue
index f52c973d..de109dc5 100644
--- a/pages/mall/admin/distribution/division/list.uvue
+++ b/pages/mall/admin/distribution/division/list.uvue
@@ -1,35 +1,32 @@
-
+
- 鎼滅储锛?/text>
-
+ 搜索:
+
-
+
-
-
-
-
{{ item.uid }}
@@ -45,11 +42,11 @@
- 鏌ョ湅浠g悊鍟?/text>
+ 查看代理商
|
- 缂栬緫
+ 编辑
|
- 鍒犻櫎
+ 删除
@@ -57,54 +54,30 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/pages/mall/admin/distribution/level/index.uvue b/pages/mall/admin/distribution/level/index.uvue
index bfa00804..3f1bf95a 100644
--- a/pages/mall/admin/distribution/level/index.uvue
+++ b/pages/mall/admin/distribution/level/index.uvue
@@ -1,43 +1,37 @@
-
+
- 鏄惁鏄剧ず锛?/text>
-
- 鍏ㄩ儴
- 鈻?/text>
-
+ 是否显示:
+ 全部▼
- 绛夌骇鍚嶇О锛?/text>
- 等级名称:
+
- 鏌ヨ
+ 查询
-
- 娣诲姞绛夌骇
+ 添加等级
-
-
{{ item.id }}
@@ -54,205 +48,48 @@
- 绛夌骇浠诲姟
+ 等级任务
|
- 缂栬緫
+ 编辑
|
- 鍒犻櫎
+ 删除
-
-
-
-
-
+.admin-page { padding: 0; }
+.filter-card { background: #fff; padding: 24px; margin-bottom: 16px; border-radius: 4px; }
+.filter-row { display: flex; flex-direction: row; align-items: center; gap: 24px; }
+.label { font-size: 14px; color: #333; }
+.select-mock { display: flex; flex-direction: row; align-items: center; justify-content: space-between; border: 1px solid #d9d9d9; border-radius: 2px; height: 32px; width: 160px; padding: 0 12px; background: #fff; text { font-size: 14px; color: #666; } .arrow { font-size: 10px; color: #bfbfbf; } }
+.filter-input { border: 1px solid #d9d9d9; height: 32px; width: 220px; padding: 0 12px; font-size: 14px; }
+.btn { height: 32px; padding: 0 16px; font-size: 14px; border-radius: 2px; border: 1px solid #d9d9d9; background: #fff; display: flex; align-items: center; justify-content: center; cursor: pointer; }
+.btn.primary { background: #1890ff; border-color: #1890ff; color: #fff; }
+.content-card { background: #fff; border-radius: 4px; }
+.action-bar { padding: 16px 24px; }
+.table-container { padding: 0 24px 24px; }
+.table-header { display: flex; flex-direction: row; background: #f8faff; border-bottom: 1px solid #f0f0f0; padding: 12px 0; }
+.table-row { display: flex; flex-direction: row; border-bottom: 1px solid #f0f0f0; padding: 12px 0; align-items: center; &:hover { background: #fafafa; } }
+.col { padding: 0 8px; display: flex; align-items: center; font-size: 14px; color: #333; }
+.col-id { width: 50px; } .col-img { width: 80px; justify-content: center; } .col-name { width: 120px; } .col-level { width: 80px; justify-content: center; } .col-percent { width: 120px; justify-content: center; } .col-stat { width: 100px; justify-content: center; } .col-status { width: 100px; justify-content: center; } .col-ops { flex: 1; justify-content: flex-end; padding-right: 16px; }
+.table-img { width: 32px; height: 32px; border-radius: 2px; }
+.op-link { color: #1890ff; cursor: pointer; }
+.op-divider { color: #e8e8e8; margin: 0 8px; }
+.pagination { padding: 16px 24px; border-top: 1px solid #f0f0f0; }
+.page-info { font-size: 14px; color: #999; }
+
\ No newline at end of file
diff --git a/pages/mall/admin/distribution/promoter/index.uvue b/pages/mall/admin/distribution/promoter/index.uvue
index 71669fd1..60364207 100644
--- a/pages/mall/admin/distribution/promoter/index.uvue
+++ b/pages/mall/admin/distribution/promoter/index.uvue
@@ -1,51 +1,42 @@
-
+
-
- 鏃堕棿閫夋嫨锛?/text>
+ 时间选择:
- 寮€濮嬫棩鏈?- 缁撴潫鏃ユ湡
- 馃搮
+ 开始日期 - 结束日期
+ 📅
-
- 鎼滅储锛?/text>
-
+ 搜索:
+
-
- 鏌ヨ
+ 查询
-
-
- 瀵煎嚭
+ 导出
-
-
-
-
{{ item.id }}
@@ -54,9 +45,9 @@
- 鏄电О:{{ item.nickname }}
- 濮撳悕:{{ item.name }}
- 鐢佃瘽:{{ item.phone }}
+ 昵称:{{ item.nickname }}
+ 姓名:{{ item.name }}
+ 电话:{{ item.phone }}
{{ item.level }}
@@ -68,18 +59,16 @@
{{ item.withdrawCount }}
{{ item.unwithdrawnAmount }}
- 鎺ㄥ箍浜?/text>
+ 推广人
|
- 鏇村
- 鈻?/text>
+ 更多
+ ▼
-
-
@@ -87,219 +76,39 @@
-
-
+.admin-page { padding: 0; }
+.filter-card { background: #fff; padding: 24px; margin-bottom: 16px; border-radius: 4px; }
+.filter-row { display: flex; flex-direction: row; align-items: center; gap: 24px; }
+.label { font-size: 14px; color: #333; }
+.date-picker-mock { display: flex; flex-direction: row; align-items: center; justify-content: space-between; border: 1px solid #d9d9d9; border-radius: 2px; height: 32px; width: 260px; padding: 0 12px; background: #fff; .placeholder { font-size: 14px; color: #bfbfbf; } .icon-calendar { font-size: 14px; color: #bfbfbf; } }
+.filter-input { border: 1px solid #d9d9d9; height: 32px; width: 220px; padding: 0 12px; font-size: 14px; }
+.btn { height: 32px; padding: 0 16px; font-size: 14px; border-radius: 2px; border: 1px solid #d9d9d9; background: #fff; display: flex; align-items: center; justify-content: center; cursor: pointer; }
+.btn.primary { background: #1890ff; border-color: #1890ff; color: #fff; }
+.btn.ghost { color: #666; background: #fff; }
+.btn.small { height: 28px; padding: 0 12px; font-size: 13px; }
+.content-card { background: #fff; border-radius: 4px; }
+.action-bar { padding: 16px 24px; }
+.table-container { padding: 0 24px 24px; }
+.table-header { display: flex; flex-direction: row; background: #f8faff; border-bottom: 1px solid #f0f0f0; padding: 12px 0; }
+.table-row { display: flex; flex-direction: row; border-bottom: 1px solid #f0f0f0; padding: 12px 0; align-items: center; &:hover { background: #fafafa; } }
+.col { padding: 0 8px; display: flex; align-items: center; font-size: 14px; color: #333; }
+.col-id { width: 60px; } .col-img { width: 80px; justify-content: center; } .col-info { width: 180px; } .col-level { width: 100px; justify-content: center; } .col-stat { width: 110px; justify-content: center; } .col-ops { flex: 1; justify-content: flex-end; padding-right: 16px; }
+.table-img { width: 40px; height: 40px; border-radius: 4px; }
+.user-info-box { display: flex; flex-direction: column; }
+.info-text { font-size: 12px; color: #666; margin-bottom: 2px; }
+.op-link { color: #1890ff; cursor: pointer; }
+.op-divider { color: #e8e8e8; margin: 0 8px; }
+.arrow-down { font-size: 10px; color: #1890ff; margin-left: 4px; }
+.pagination { padding: 16px 24px; border-top: 1px solid #f0f0f0; }
+.page-info { font-size: 14px; color: #999; }
+
\ No newline at end of file
diff --git a/pages/mall/admin/finance/balance_stats.uvue b/pages/mall/admin/finance/balance_stats.uvue
index df1b9746..487852ff 100644
--- a/pages/mall/admin/finance/balance_stats.uvue
+++ b/pages/mall/admin/finance/balance_stats.uvue
@@ -1,63 +1,63 @@
-
+
-
+
- 馃挵
+ 💰
1447117274.55
- 褰撳墠浣欓
+ 当前余额
- 馃彟
+ 🏦
1602611838.49
- 绱浣欓
+ 累计余额
- 馃挸
+ 💳
155494563.94
- 绱娑堣€椾綑棰?/text>
+ 累计消耗余额
-
+
- 鏃堕棿閫夋嫨:
+ 时间选择:
- 馃搮
+ 📅
2026/01/05 - 2026/02/03
-
+
@@ -65,26 +65,26 @@
-
+
-
+
-
+
@@ -104,22 +104,22 @@
-
+
-
+
@@ -149,28 +149,28 @@ const trendOption = ref(null)
const sourceOption = ref(null)
const consumptionOption = ref(null)
-// 鏍峰紡鍒囨崲鐘舵€? 0=鍥捐〃, 1=鍒楄〃
+// 样式切换状态: 0=图表, 1=列表
const sourceStyleMode = ref(0)
const consumptionStyleMode = ref(0)
-// 缁熻鏁版嵁 (浣跨敤 ref 淇濊瘉鍝嶅簲寮?
+// 统计数据 (使用 ref 保证响应式)
const sourceData = ref([
- { value: 125000.00, name: '绯荤粺澧炲姞', percent: 40.00 },
- { value: 93750.00, name: '鐢ㄦ埛鍏呭€?, percent: 30.00 },
- { value: 78125.00, name: '浣i噾鎻愮幇', percent: 25.00 },
- { value: 62500.00, name: '鎶藉璧犻€?, percent: 20.00 },
- { value: 46875.00, name: '鍟嗗搧閫€娆?, percent: 15.00 }
+ { value: 125000.00, name: '系统增加', percent: 40.00 },
+ { value: 93750.00, name: '用户充值', percent: 30.00 },
+ { value: 78125.00, name: '佣金提现', percent: 25.00 },
+ { value: 62500.00, name: '抽奖赠送', percent: 20.00 },
+ { value: 46875.00, name: '商品退款', percent: 15.00 }
])
const consumptionDataList = ref([
- { value: 435692.51, name: '璐拱鍟嗗搧', percent: 50.00 },
- { value: 8060.18, name: '璐拱浼氬憳', percent: 20.00 },
- { value: 0.00, name: '鍏呭€奸€€娆?, percent: 15.00 },
- { value: 0.00, name: '绯荤粺鍑忓皯', percent: 15.00 }
+ { value: 435692.51, name: '购买商品', percent: 50.00 },
+ { value: 8060.18, name: '购买会员', percent: 20.00 },
+ { value: 0.00, name: '充值退款', percent: 15.00 },
+ { value: 0.00, name: '系统减少', percent: 15.00 }
])
/**
- * 杞崲 Plain Object 宸ュ叿
+ * 转换 Plain Object 工具
*/
function toPlainObject(obj : any) : any {
if (obj == null) return null
@@ -225,14 +225,14 @@ function initTrendChart() {
},
series: [
{
- name: '浣欓绉疮',
+ name: '余额积累',
type: 'line',
smooth: true,
data: accumulationData,
itemStyle: { color: '#1890ff' }
},
{
- name: '浣欓娑堣€?,
+ name: '余额消耗',
type: 'line',
smooth: true,
data: consumptionData,
@@ -250,12 +250,12 @@ function initSourceChart() {
color: ['#5b8ff9', '#5ad8a6', '#5d7092', '#f6bd16', '#e8684a'],
series: [
{
- name: '浣欓鏉ユ簮',
+ name: '余额来源',
type: 'pie',
radius: '70%',
center: ['40%', '50%'],
label: { show: true, fontSize: 11, formatter: '{b}\n{c}%' },
- // 鍏抽敭鐐癸細灏嗗浘琛ㄦ暟鎹槧灏勫埌 percent 瀛楁
+ // 关键点:将图表数据映射到 percent 字段
data: sourceData.value.map(item => ({ value: item.percent, name: item.name }))
}
]
@@ -270,12 +270,12 @@ function initConsumptionChart() {
color: ['#5b8ff9', '#5ad8a6', '#5d7092', '#f6bd16'],
series: [
{
- name: '浣欓娑堣€?,
+ name: '余额消耗',
type: 'pie',
radius: '70%',
center: ['40%', '50%'],
label: { show: true, fontSize: 11, formatter: '{b}\n{c}%' },
- // 鍏抽敭鐐癸細灏嗗浘琛ㄦ暟鎹槧灏勫埌 percent 瀛楁
+ // 关键点:将图表数据映射到 percent 字段
data: consumptionDataList.value.map(item => ({ value: item.percent, name: item.name }))
}
]
@@ -311,7 +311,7 @@ function toggleConsumptionStyle() {
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.05);
}
-/* 椤堕儴鍗$墖 */
+/* 顶部卡片 */
.stats-grid {
display: flex;
flex-direction: row;
@@ -365,7 +365,7 @@ function toggleConsumptionStyle() {
margin-top: 4px;
}
-/* 鏃堕棿绛涢€夊尯 */
+/* 时间筛选区 */
.filter-bar {
padding: 16px 24px;
margin-bottom: 20px;
@@ -397,7 +397,7 @@ function toggleConsumptionStyle() {
.calendar-icon { font-size: 14px; color: #c0c4cc; margin-right: 10px; }
.date-range { font-size: 14px; color: #606266; }
-/* 瓒嬪娍鍥捐〃鍖?*/
+/* 趋势图表区 */
.chart-box {
padding: 24px;
margin-bottom: 20px;
@@ -436,7 +436,7 @@ function toggleConsumptionStyle() {
height: 100%;
}
-/* 搴曢儴鍒嗘瀽 */
+/* 底部分析 */
.bottom-analysis {
display: flex;
flex-direction: row;
@@ -478,7 +478,7 @@ function toggleConsumptionStyle() {
height: 100%;
}
-/* 鍒楄〃鏍峰紡 */
+/* 列表样式 */
.stats-table {
display: flex;
flex-direction: column;
@@ -521,7 +521,7 @@ function toggleConsumptionStyle() {
.progress-container {
flex: 1;
height: 8px;
-
+ background-color: #f5f5f5;
border-radius: 4px;
margin-right: 10px;
overflow: hidden;
@@ -539,4 +539,3 @@ function toggleConsumptionStyle() {
color: #666;
}
-
diff --git a/pages/mall/admin/finance/record.uvue b/pages/mall/admin/finance/record.uvue
index aac9c9af..0e7a66be 100644
--- a/pages/mall/admin/finance/record.uvue
+++ b/pages/mall/admin/finance/record.uvue
@@ -1,15 +1,15 @@
-
+
- 椤甸潰鍗犱綅
- 璇ュ姛鑳芥ā鍧楁鍦ㄥ紑鍙戜腑
- 褰撳墠閲囩敤 CRMEB 璺敱浣撶郴 1:1 鏄犲皠
+ 页面占位
+ 该功能模块正在开发中
+ 当前采用 CRMEB 路由体系 1:1 映射
@@ -18,14 +18,14 @@
-
-
diff --git a/pages/mall/admin/finance/withdrawal.uvue b/pages/mall/admin/finance/withdrawal.uvue
index d610fdf9..61e9980d 100644
--- a/pages/mall/admin/finance/withdrawal.uvue
+++ b/pages/mall/admin/finance/withdrawal.uvue
@@ -1,14 +1,14 @@
-
+
-
+
- 鏃堕棿閫夋嫨:
-
+ 时间选择:
+
- 鎻愮幇鐘舵€?
+ 提现状态:
{{ statusLabel }}
@@ -17,7 +17,7 @@
- 鎻愮幇鏂瑰紡:
+ 提现方式:
{{ methodLabel }}
@@ -26,14 +26,14 @@
- 鎼滅储:
-
+ 搜索:
+
- 鏌ヨ
+ 查询
-
+
@@ -46,27 +46,27 @@
-
+
- 浣i噾璁板綍
+ 佣金记录
-
+
@@ -79,7 +79,7 @@
{{ item.nickname }}
- 鐢ㄦ埛id:{{ item.userId }}
+ 用户id:{{ item.userId }}
@@ -88,26 +88,26 @@
{{ item.netAmount }}
- 濮撳悕:{{ item.name }}
+ 姓名:{{ item.name }}
{{ item.type }}:{{ item.account }}
- 閾惰寮€鎴峰湴鍧€:{{ item.bank }}
+ 银行开户地址:{{ item.bank }}
- 鈻?/text>
+ ■
{{ item.time }}
- 鐢宠涓?/text>
+ 申请中
- 缂栬緫
+ 编辑
|
- 閫氳繃
+ 通过
|
- 椹冲洖
+ 驳回
@@ -126,61 +126,61 @@ const methodValue = ref('all')
const searchKeyword = ref('')
const statusOptions = ref([
- { value: 'all', text: '鍏ㄩ儴' },
- { value: '0', text: '寰呭鏍? },
- { value: '1', text: '宸查€氳繃' },
- { value: '-1', text: '宸查┏鍥? }
+ { value: 'all', text: '全部' },
+ { value: '0', text: '待审核' },
+ { value: '1', text: '已通过' },
+ { value: '-1', text: '已驳回' }
])
const methodOptions = ref([
- { value: 'all', text: '鍏ㄩ儴' },
- { value: 'alipay', text: '鏀粯瀹? },
- { value: 'bank', text: '閾惰鍗? },
- { value: 'weixin', text: '寰俊' }
+ { value: 'all', text: '全部' },
+ { value: 'alipay', text: '支付宝' },
+ { value: 'bank', text: '银行卡' },
+ { value: 'weixin', text: '微信' }
])
const statusLabel = computed(() => {
const item = statusOptions.value.find((opt: any) => opt.value === statusValue.value)
- return item ? item.text : '鍏ㄩ儴'
+ return item ? item.text : '全部'
})
const methodLabel = computed(() => {
const item = methodOptions.value.find((opt: any) => opt.value === methodValue.value)
- return item ? item.text : '鍏ㄩ儴'
+ return item ? item.text : '全部'
})
const stats = ref([
- { label: '浣i噾鎬婚噾棰?, value: '676809.25', icon: '$', colorClass: 'blue' },
- { label: '寰呮彁鐜伴噾棰?, value: '71', icon: '楼', colorClass: 'orange' },
- { label: '宸叉彁鐜伴噾棰?, value: '68879.25', icon: '$', colorClass: 'green' },
- { label: '鏈彁鐜伴噾棰?, value: '607930.00', icon: '楼', colorClass: 'pink' }
+ { label: '佣金总金额', value: '676809.25', icon: '$', colorClass: 'blue' },
+ { label: '待提现金额', value: '71', icon: '¥', colorClass: 'orange' },
+ { label: '已提现金额', value: '68879.25', icon: '$', colorClass: 'green' },
+ { label: '未提现金额', value: '607930.00', icon: '¥', colorClass: 'pink' }
])
const tableData = ref([
{
id: 57,
- nickname: '鐢ㄦ埛鏄电О: 177****766',
+ nickname: '用户昵称: 177****766',
userId: '58837',
amount: '20.00',
fee: '0.00',
netAmount: '20.00',
- name: '鎺ュ彛',
- type: '鏀粯瀹?,
+ name: '接口',
+ type: '支付宝',
account: '1195953899',
time: '2025-10-24 16:04',
remark: ''
},
{
id: 56,
- nickname: '鐢ㄦ埛鏄电О: 娴嬭瘯鍛樼殑',
+ nickname: '用户昵称: 测试员的',
userId: '20695',
amount: '1.00',
fee: '0.00',
netAmount: '1.00',
name: '123',
- type: '閾惰鍗?,
+ type: '银行卡',
account: '4001231221',
- bank: '涓浗閾惰',
+ bank: '中国银行',
time: '2025-07-04 15:11',
remark: ''
}
@@ -206,7 +206,7 @@ const handleQuery = () => {
min-height: 100vh;
}
-/* 绛涢€夋牱寮忔洿鏂?*/
+/* 筛选样式更新 */
.filter-card {
background-color: #fff;
padding: 24px;
@@ -284,7 +284,7 @@ const handleQuery = () => {
margin-bottom: 16px;
}
-/* 缁熻鍗$墖鏍峰紡 */
+/* 统计卡片样式 */
.stats-grid {
display: flex;
flex-direction: row;
@@ -338,7 +338,7 @@ const handleQuery = () => {
margin-top: 6px;
}
-/* 鎿嶄綔鍖哄煙 */
+/* 操作区域 */
.action-section {
margin-bottom: 12px;
display: flex;
@@ -359,9 +359,9 @@ const handleQuery = () => {
font-size: 13px;
}
-/* 琛ㄦ牸瀹瑰櫒鏍峰紡 (Flex 妯℃嫙) */
+/* 表格容器样式 (Flex 模拟) */
.table-container {
-
+ background-color: #fff;
border-radius: 4px;
overflow: hidden;
display: flex;
@@ -411,7 +411,7 @@ const handleQuery = () => {
color: #606266;
}
-/* 鍒楀瀹氫箟 (涓庢埅鍥惧尮閰? */
+/* 列宽定义 (与截图匹配) */
.col-id { width: 60px; }
.col-user { width: 180px; justify-content: flex-start; }
.col-amount { width: 100px; }
@@ -424,7 +424,7 @@ const handleQuery = () => {
.col-status { width: 100px; }
.col-ops { width: 160px; }
-/* 鐢ㄦ埛淇℃伅鍗曞厓鏍?*/
+/* 用户信息单元格 */
.user-info-box {
display: flex;
flex-direction: row;
@@ -463,7 +463,7 @@ const handleQuery = () => {
color: #909399;
}
-/* 鎻愮幇鏂瑰紡鍗曞厓鏍?*/
+/* 提现方式单元格 */
.method-box {
display: flex;
flex-direction: column;
@@ -480,7 +480,7 @@ const handleQuery = () => {
font-weight: 600;
}
-/* 鏀舵鐮?*/
+/* 收款码 */
.qr-box {
width: 40px;
height: 40px;
@@ -496,7 +496,7 @@ const handleQuery = () => {
font-size: 16px;
}
-/* 鎿嶄綔椤?*/
+/* 操作项 */
.ops-box {
display: flex;
flex-direction: row;
@@ -515,4 +515,3 @@ const handleQuery = () => {
font-size: 12px;
}
-
diff --git a/pages/mall/admin/kefu/words.uvue b/pages/mall/admin/kefu/words.uvue
index b3ab01cc..1b97edc8 100644
--- a/pages/mall/admin/kefu/words.uvue
+++ b/pages/mall/admin/kefu/words.uvue
@@ -1,11 +1,11 @@
-
+
-
+
- 馃搨
+ 📂
{{ cat.name }}
-
+
- 娣诲姞璇濇湳
+ 添加话术
@@ -50,19 +50,19 @@
{{ item.sort }}
{{ item.time }}
- 缂栬緫
+ 编辑
- 鍒犻櫎
+ 删除
-
+
-
+
- 璇濇湳鍒嗙被:
+ 话术分类:
- {{ formData.category || '璇烽€夋嫨鍒嗙被' }}
- 鈻?/text>
+ {{ formData.category || '请选择分类' }}
+ ▼
@@ -103,26 +103,26 @@
*
- 璇濇湳鏍囬:
+ 话术标题:
-
*
- 璇濇湳鍐呭:
+ 话术内容:
-
- 鎺掑簭:
+ 排序:
@@ -132,10 +132,10 @@
@@ -161,8 +161,8 @@ interface Category {
}
const categories = ref([
- { id: 1, name: '鍏ㄩ儴' },
- { id: 2, name: '绯荤粺璇濇湳' }
+ { id: 1, name: '全部' },
+ { id: 2, name: '系统话术' }
])
const activeCategoryId = ref(1)
@@ -170,20 +170,20 @@ const activeCategoryId = ref(1)
const wordList = ref([
{
id: '67',
- category: '绯荤粺榛樿',
- title: '鏃楄埌鐗堜粙缁?,
- content: '銆愭棗鑸扮増銆戝彲浠ユ巿鏉冪粰鍏徃鎴栬€呬釜浜猴紝浼佷笟鑷敤鎼缓锛屼笉闄愬埗鎺堟潈鍩熷悕锛屾彁渚涗笓灞炴妧鏈€荤洃銆佷骇鍝佹€荤洃绛夈€?,
+ category: '系统默认',
+ title: '旗舰版介绍',
+ content: '【旗舰版】可以授权给公司或者个人,企业自用搭建,不限制授权域名,提供专属技术总监、产品总监等。',
sort: 0,
time: '2024-09-27 10:15:07'
}
])
-// 琛ㄥ崟閫昏緫
+// 表单逻辑
const showDrawer = ref(false)
const isEdit = ref(false)
const formData = reactive({
id: '',
- category: '绯荤粺璇濇湳',
+ category: '系统话术',
title: '',
content: '',
sort: 0
@@ -194,7 +194,7 @@ const selectCategory = (id: number) => {
}
const handleAddCategory = () => {
- console.log('娣诲姞鍒嗙被')
+ console.log('添加分类')
}
const handleAddWord = () => {
@@ -221,7 +221,7 @@ const closeDrawer = () => {
}
const submitForm = () => {
- console.log('鎻愪氦琛ㄥ崟', formData)
+ console.log('提交表单', formData)
showDrawer.value = false
}
@@ -246,7 +246,7 @@ const submitForm = () => {
gap: 20px;
}
-/* 宸︿晶鍒嗙被 */
+/* 左侧分类 */
.category-sidebar {
width: 280px;
display: flex;
@@ -307,7 +307,7 @@ const submitForm = () => {
color: #333;
}
-/* 鍙充晶鍐呭 */
+/* 右侧内容 */
.content-main {
flex: 1;
display: flex;
@@ -395,7 +395,7 @@ const submitForm = () => {
text-align: left;
}
-/* 鍒楀鍒嗛厤 */
+/* 列宽分配 */
.col-id { width: 60px; }
.col-cat { width: 100px; }
.col-title { width: 150px; }
@@ -421,7 +421,7 @@ const submitForm = () => {
margin: 0 10px;
}
-/* 鍒嗛〉 */
+/* 分页 */
.pagination-bar {
padding: 15px 20px;
display: flex;
@@ -478,7 +478,7 @@ const submitForm = () => {
font-size: 13px;
}
-/* 鎶藉眽 Drawer 1:1 澶嶅埢 - 淇浣嶇疆鍒板彸渚?*/
+/* 抽屉 Drawer 1:1 复刻 - 修正位置到右侧 */
.drawer-mask {
position: fixed;
top: 0;
@@ -492,10 +492,10 @@ const submitForm = () => {
.drawer-content {
position: absolute;
top: 0;
- right: 0; /* 寮哄埗闈犲彸鍗犳嵁鍙宠竟灞忓箷 */
- width: 50%; /* 鍗犲睆骞曚竴鍗婂搴?*/
+ right: 0; /* 强制靠右占据右边屏幕 */
+ width: 50%; /* 占屏幕一半宽度 */
height: 100%;
-
+ background-color: #fff;
display: flex;
flex-direction: column;
box-shadow: -2px 0 8px rgba(0, 0, 0, 0.15);
@@ -624,4 +624,3 @@ const submitForm = () => {
.cancel-txt { font-size: 14px; color: #606266; }
.confirm-txt { font-size: 14px; color: #fff; }
-
diff --git a/pages/mall/admin/marketing/bargain/list.uvue b/pages/mall/admin/marketing/bargain/list.uvue
index 38f80c17..53077201 100644
--- a/pages/mall/admin/marketing/bargain/list.uvue
+++ b/pages/mall/admin/marketing/bargain/list.uvue
@@ -1,15 +1,15 @@
-
+
- 椤甸潰鍗犱綅
- 璇ュ姛鑳芥ā鍧楁鍦ㄥ紑鍙戜腑
- 褰撳墠閲囩敤 CRMEB 璺敱浣撶郴 1:1 鏄犲皠
+ 页面占位
+ 该功能模块正在开发中
+ 当前采用 CRMEB 路由体系 1:1 映射
@@ -18,14 +18,14 @@
-
-
diff --git a/pages/mall/admin/marketing/combination/create.uvue b/pages/mall/admin/marketing/combination/create.uvue
index 6a1decf7..9e9f35b3 100644
--- a/pages/mall/admin/marketing/combination/create.uvue
+++ b/pages/mall/admin/marketing/combination/create.uvue
@@ -1,11 +1,11 @@
-
+
@@ -13,7 +13,7 @@
{{ index + 1 }}
- 鉁?/text>
+ ✓
{{ step }}
@@ -21,82 +21,82 @@
-
+
- 閫夋嫨鍟嗗搧锛?/text>
+ 选择商品:
{{ selectedGood.title }}
- 馃泹锔?/text>
- 閫夋嫨鍟嗗搧
+ 🛍️
+ 选择商品
-
+
- 鍩虹閰嶇疆
+ 基础配置
- 鎷煎洟鍚嶇О锛?/text>
- 拼团名称:
+
- 鎷煎洟绠€浠嬶細
-
- 鎷煎洟鏃堕棿锛?/text>
+ 拼团时间:
-
-
-
+
- 鎷煎洟瑙勫垯
+ 拼团规则
- 鎷煎洟鏃舵晥锛?/text>
+ 拼团时效:
- 灏忔椂
+ 小时
- 鎷煎洟浜烘暟锛?/text>
+ 拼团人数:
- 浜?/text>
+ 人
- 铏氭嫙鎴愬洟锛?/text>
+ 虚拟成团:
- 浜?/text>
+ 人
-
+
- 瑙勬牸
- 鎷煎洟浠?/view>
- 鎴愭湰浠?/view>
- 闄愰噺
- 搴撳瓨
+ 规格
+ 拼团价
+ 成本价
+ 限量
+ 库存
{{ spec.name }}
@@ -108,25 +108,25 @@
- 鍟嗗搧璇︽儏锛?/text>
+ 商品详情:
- 杩欓噷鏄紪杈戝櫒鍖哄煙 (WangEditor 鏄犲皠)
+ 这里是编辑器区域 (WangEditor 映射)