添加tabbar及分类

This commit is contained in:
2026-03-23 12:00:28 +08:00
parent b9a48478b9
commit 9efd2bc3a3
332 changed files with 1438 additions and 467 deletions

View File

@@ -0,0 +1,173 @@
<!--
商家端自定义 TabBar 组件
- 仅在 merchant Tab 页中使用
- 支持微信小程序 custom tabBar 模式
- 底部安全区自动适配
-->
<template>
<view class="merchant-tabbar" :style="{ paddingBottom: safeBottom }">
<view
v-for="(item, index) in tabs"
:key="index"
class="tab-item"
:class="{ active: currentIndex === index }"
@click="switchTab(index)"
>
<view class="tab-icon-wrap">
<text class="tab-icon">{{ item.icon }}</text>
<view v-if="item.badge > 0" class="tab-badge">
<text class="badge-text">{{ item.badge > 99 ? '99+' : item.badge }}</text>
</view>
</view>
<text class="tab-text">{{ item.text }}</text>
</view>
</view>
</template>
<script lang="uts">
export default {
props: {
current: {
type: Number,
default: 0
},
badges: {
type: Object,
default: () => ({})
}
},
data() {
return {
currentIndex: this.current as number,
safeBottom: '0px',
tabs: [
{ text: '首页', icon: '🏠', path: '/pages/mall/merchant/index', badge: 0 },
{ text: '消息', icon: '💬', path: '/pages/mall/merchant/messages', badge: 0 },
{ text: '订单', icon: '📋', path: '/pages/mall/merchant/orders', badge: 0 },
{ text: '成长', icon: '🚀', path: '/pages/mall/merchant/growth', badge: 0 },
{ text: '我的', icon: '👤', path: '/pages/mall/merchant/profile', badge: 0 }
]
}
},
watch: {
current(val: number) {
this.currentIndex = val
},
badges(val: Record<string, number>) {
this.updateBadges(val)
}
},
mounted() {
this.initSafeArea()
this.currentIndex = this.current
},
methods: {
initSafeArea() {
// #ifdef MP-WEIXIN
try {
const info = wx.getWindowInfo()
const safeAreaBottom = info.screenHeight - info.safeArea.bottom
if (safeAreaBottom > 0) {
this.safeBottom = safeAreaBottom + 'px'
}
} catch (e) {}
// #endif
},
updateBadges(badgeMap: Record<string, number>) {
const keys = ['index', 'messages', 'orders', 'growth', 'profile']
for (let i = 0; i < keys.length; i++) {
if (badgeMap[keys[i]] != null) {
this.tabs[i].badge = badgeMap[keys[i]]
}
}
},
switchTab(index: number) {
if (this.currentIndex === index) return
this.currentIndex = index
uni.reLaunch({
url: this.tabs[index].path
})
}
}
}
</script>
<style>
.merchant-tabbar {
position: fixed;
bottom: 0;
left: 0;
right: 0;
display: flex;
flex-direction: row;
align-items: flex-start;
background-color: #ffffff;
border-top-width: 1rpx;
border-top-style: solid;
border-top-color: #eeeeee;
z-index: 999;
padding-top: 16rpx;
}
.tab-item {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding-bottom: 12rpx;
position: relative;
}
.tab-icon-wrap {
position: relative;
margin-bottom: 8rpx;
}
.tab-icon {
font-size: 48rpx;
line-height: 1;
filter: grayscale(100%) opacity(0.45);
}
.tab-item.active .tab-icon {
filter: none;
}
.tab-text {
font-size: 22rpx;
color: #999999;
}
.tab-item.active .tab-text {
color: #ff5000;
font-weight: bold;
}
.tab-badge {
position: absolute;
top: -10rpx;
right: -20rpx;
min-width: 32rpx;
height: 32rpx;
background-color: #ff3b30;
border-radius: 16rpx;
display: flex;
align-items: center;
justify-content: center;
padding-left: 8rpx;
padding-right: 8rpx;
}
.badge-text {
font-size: 20rpx;
color: #ffffff;
font-weight: bold;
}
</style>

View File

@@ -109,6 +109,132 @@
"style": {
"navigationBarTitleText": "我的"
}
},
{
"path": "pages/mall/merchant/index",
"style": {
"navigationBarTitleText": "首页",
"navigationStyle": "custom"
}
},
{
"path": "pages/mall/merchant/messages",
"style": {
"navigationBarTitleText": "消息",
"navigationStyle": "custom"
}
},
{
"path": "pages/mall/merchant/orders",
"style": {
"navigationBarTitleText": "订单",
"navigationStyle": "custom"
}
},
{
"path": "pages/mall/merchant/growth",
"style": {
"navigationBarTitleText": "成长",
"navigationStyle": "custom"
}
},
{
"path": "pages/mall/merchant/profile",
"style": {
"navigationBarTitleText": "我的",
"navigationStyle": "custom"
}
},
{
"path": "pages/mall/merchant/order-detail",
"style": {
"navigationBarTitleText": "订单详情",
"navigationStyle": "custom"
}
},
{
"path": "pages/mall/merchant/products",
"style": {
"navigationBarTitleText": "商品管理",
"navigationStyle": "custom"
}
},
{
"path": "pages/mall/merchant/product-detail",
"style": {
"navigationBarTitleText": "商品详情",
"enablePullDownRefresh": false
}
},
{
"path": "pages/mall/merchant/product-edit",
"style": {
"navigationBarTitleText": "编辑商品",
"navigationStyle": "custom"
}
},
{
"path": "pages/mall/merchant/reviews",
"style": {
"navigationBarTitleText": "评价管理",
"navigationStyle": "custom"
}
},
{
"path": "pages/mall/merchant/inventory",
"style": {
"navigationBarTitleText": "库存管理",
"navigationStyle": "custom"
}
},
{
"path": "pages/mall/merchant/shop-edit",
"style": {
"navigationBarTitleText": "店铺设置",
"navigationStyle": "custom"
}
},
{
"path": "pages/mall/merchant/promotions",
"style": {
"navigationBarTitleText": "营销活动",
"navigationStyle": "custom"
}
},
{
"path": "pages/mall/merchant/statistics",
"style": {
"navigationBarTitleText": "数据统计",
"navigationStyle": "custom"
}
},
{
"path": "pages/mall/merchant/finance",
"style": {
"navigationBarTitleText": "财务结算",
"navigationStyle": "custom"
}
},
{
"path": "pages/mall/merchant/members",
"style": {
"navigationBarTitleText": "会员管理",
"navigationStyle": "custom"
}
},
{
"path": "pages/mall/merchant/chat",
"style": {
"navigationBarTitleText": "客服聊天",
"navigationStyle": "custom"
}
},
{
"path": "pages/mall/merchant/exclusive-discounts",
"style": {
"navigationBarTitleText": "专属折扣",
"navigationStyle": "custom"
}
}
],
"subPackages": [
@@ -1623,129 +1749,6 @@
}
]
},
{
"root": "pages/mall/merchant",
"pages": [
{
"path": "index",
"style": {
"navigationBarTitleText": "商家中心",
"navigationStyle": "custom"
}
},
{
"path": "orders",
"style": {
"navigationBarTitleText": "订单管理",
"navigationStyle": "custom"
}
},
{
"path": "order-detail",
"style": {
"navigationBarTitleText": "订单详情",
"navigationStyle": "custom"
}
},
{
"path": "products",
"style": {
"navigationBarTitleText": "商品管理",
"navigationStyle": "custom"
}
},
{
"path": "product-detail",
"style": {
"navigationBarTitleText": "商品详情",
"enablePullDownRefresh": false
}
},
{
"path": "product-edit",
"style": {
"navigationBarTitleText": "编辑商品",
"navigationStyle": "custom"
}
},
{
"path": "reviews",
"style": {
"navigationBarTitleText": "评价管理",
"navigationStyle": "custom"
}
},
{
"path": "inventory",
"style": {
"navigationBarTitleText": "库存管理",
"navigationStyle": "custom"
}
},
{
"path": "messages",
"style": {
"navigationBarTitleText": "消息中心",
"navigationStyle": "custom"
}
},
{
"path": "shop-edit",
"style": {
"navigationBarTitleText": "店铺设置",
"navigationStyle": "custom"
}
},
{
"path": "promotions",
"style": {
"navigationBarTitleText": "营销活动",
"navigationStyle": "custom"
}
},
{
"path": "statistics",
"style": {
"navigationBarTitleText": "数据统计",
"navigationStyle": "custom"
}
},
{
"path": "finance",
"style": {
"navigationBarTitleText": "财务结算",
"navigationStyle": "custom"
}
},
{
"path": "members",
"style": {
"navigationBarTitleText": "会员管理",
"navigationStyle": "custom"
}
},
{
"path": "chat",
"style": {
"navigationBarTitleText": "客服聊天",
"navigationStyle": "custom"
}
},
{
"path": "exclusive-discounts",
"style": {
"navigationBarTitleText": "专属折扣",
"navigationStyle": "custom"
}
},
{
"path": "profile",
"style": {
"navigationBarTitleText": "个人资料"
}
}
]
},
{
"root": "pages/mall/service",
"pages": [
@@ -1782,7 +1785,7 @@
"pagePath": "pages/main/index",
"text": "首页",
"iconPath": "static/tabbar/home.png",
"selectedIconPath": "static/tabbar/home.png"
"selectedIconPath": "static/tabbar/home-active.png"
},
{
"pagePath": "pages/main/category",

View File

@@ -1,31 +1,300 @@
mp.esm.js:485 获取订单失败: UniError: request:fail url not in domain list
at new UniError2 (weapp:///http://127.0.0.1:54647/appservice/common/vendor.js?t=wechat&s=1774227639281&v=b23e154…:8560:5)
at fail (weapp:///http://127.0.0.1:54647/appservice/uni_modules/ak-req/ak-req.js?t=wechat&s=1774227639281&v=e613582…:296:114)
at weapp:///http://127.0.0.1:54647/appservice/common/vendor.js?t=wechat&s=1774227639281&v=b23e154…:6764:14
at Object.<anonymous> (http://127.0.0.1:54647/appservice/__dev__/WASubContext.js?t=wechat&v=3.14.2:1:142860)
at Object.<anonymous> (http://127.0.0.1:54647/appservice/__dev__/WASubContext.js?t=wechat&v=3.14.2:1:143133)
at http://127.0.0.1:54647/appservice/__dev__/WAServiceMainContext.js?t=wechat&v=3.14.2:1:2636686
at Module.jn (http://127.0.0.1:54647/appservice/__dev__/WASubContext.js?t=wechat&v=3.14.2:1:354029)
at Kke (http://127.0.0.1:54647/appservice/__dev__/WAServiceMainContext.js?t=wechat&v=3.14.2:1:2636666)
at Object.fail (http://127.0.0.1:54647/appservice/__dev__/WAServiceMainContext.js?t=wechat&v=3.14.2:1:2636727)
at Object.forEach.h.<computed> [as fail] (http://127.0.0.1:54647/appservice/__dev__/WAServiceMainContext.js?t=wechat&v=3.14.2:1:1541122)
(env: Windows,mp,1.06.2504030; lib: 3.14.2)
(anonymous) @ mp.esm.js:485
__f__ @ uni.api.esm.js:591
_callee2$ @ orders.uvue:338
s @ regeneratorRuntime.js?forceSync=true:1
(anonymous) @ regeneratorRuntime.js?forceSync=true:1
(anonymous) @ regeneratorRuntime.js?forceSync=true:1
fulfilled @ tslib.es6.js:73
Promise.then (async)
step @ tslib.es6.js:75
(anonymous) @ tslib.es6.js:76
__awaiter @ tslib.es6.js:72
loadOrders @ orders.uvue:295
switchTab @ orders.uvue:465
(anonymous) @ orders.uvue:622
callWithErrorHandling @ vue.runtime.esm.js:1356
callWithAsyncErrorHandling @ vue.runtime.esm.js:1363
invoke @ vue.runtime.esm.js:6108
setTimeout (async)
invoker
编译 pages/mall/merchant/exclusive-discounts.wxss
编译 pages/mall/merchant/exclusive-discounts.wxss
编译 pages/mall/merchant/profile.wxss
编译 pages/mall/merchant/profile.wxss
getDevCodeByFileList-miniProgram
编译 pages/mall/merchant/index.js
编译 pages/mall/merchant/index.js
getDevCodeByFileList-miniProgram
编译 pages/mall/merchant/orders.js
编译 pages/mall/merchant/orders.js
编译 app.json
编译 ext.json
编译 246 个页面json文件
getDevCodeByFileList-miniProgram
getDevCodeByFileList-miniProgram
getDevCodeByFileList-miniProgram
getDevCodeByFileList-miniProgram
getDevCodeByFileList-miniProgram
getDevCodeByFileList-miniProgram
getDevCodeByFileList-miniProgram
getDevCodeByFileList-miniProgram
getDevCodeByFileList-miniProgram
getDevCodeByFileList-miniProgram
getDevCodeByFileList-miniProgram
getDevCodeByFileList-miniProgram
getDevCodeByFileList-miniProgram
getDevCodeByFileList-miniProgram
getDevCodeByFileList-miniProgram
Cannot read properties of undefined (reading 'functionalPages')
Compile app.json
Cannot read properties of undefined (reading 'functionalPages')
Cannot read properties of undefined (reading 'functionalPages')
Cannot read properties of undefined (reading 'functionalPages')
Cannot read properties of undefined (reading 'functionalPages')
Cannot read properties of undefined (reading 'functionalPages')
Cannot read properties of undefined (reading 'functionalPages')
Cannot read properties of undefined (reading 'functionalPages')
Cannot read properties of undefined (reading 'functionalPages')
Cannot read properties of undefined (reading 'functionalPages')
Cannot read properties of undefined (reading 'functionalPages')
Cannot read properties of undefined (reading 'functionalPages')
Cannot read properties of undefined (reading 'functionalPages')
Cannot read properties of undefined (reading 'functionalPages')
Cannot read properties of undefined (reading 'functionalPages')
Compile ext.json
Compile json files of 246 pages
analyzing codes...
ignoring files: project.private.config.json,uni_modules/charts/EChartsView2.js,layouts/admin/components/PlaceholderPage.wxml,layouts/admin/pages/HomeIndex.wxml,components/analytics/AnalyticsAreaChart.js,pages/mall/admin/homePage/components/KpiMiniCard.js,pages/mall/admin/decoration/components/types.js,uni_modules/ak-req/index.js,pages/mall/admin/homePage/components/KpiMiniCard.wxss,components/analytics/AnalyticsAreaChart.wxss,components/analytics/AnalyticsAreaChart.json,pages/mall/admin/homePage/components/KpiMiniCard.json,pages/mall/admin/product/product-management/components/edit.wxml,pages/mall/admin/product/product-management/components/member-price.wxml,pages/mall/admin/homePage/components/KpiMiniCard.wxml,components/analytics/AnalyticsAreaChart.wxml
analyzing codes success
Ignored by code analyzer: project.private.config.json,uni_modules/charts/EChartsView2.js,layouts/admin/components/PlaceholderPage.wxml,layouts/admin/pages/HomeIndex.wxml,components/analytics/AnalyticsAreaChart.js,pages/mall/admin/homePage/components/KpiMiniCard.js,pages/mall/admin/decoration/components/types.js,uni_modules/ak-req/index.js,pages/mall/admin/homePage/components/KpiMiniCard.wxss,components/analytics/AnalyticsAreaChart.wxss,components/analytics/AnalyticsAreaChart.json,pages/mall/admin/homePage/components/KpiMiniCard.json,pages/mall/admin/product/product-management/components/edit.wxml,pages/mall/admin/product/product-management/components/member-price.wxml,pages/mall/admin/homePage/components/KpiMiniCard.wxml,components/analytics/AnalyticsAreaChart.wxml
analyzing codes...
ignoring files: project.private.config.json,uni_modules/charts/EChartsView2.js,layouts/admin/components/PlaceholderPage.wxml,layouts/admin/pages/HomeIndex.wxml,components/analytics/AnalyticsAreaChart.js,pages/mall/admin/homePage/components/KpiMiniCard.js,pages/mall/admin/decoration/components/types.js,uni_modules/ak-req/index.js,pages/mall/admin/homePage/components/KpiMiniCard.wxss,components/analytics/AnalyticsAreaChart.wxss,components/analytics/AnalyticsAreaChart.json,pages/mall/admin/homePage/components/KpiMiniCard.json,pages/mall/admin/product/product-management/components/edit.wxml,pages/mall/admin/product/product-management/components/member-price.wxml,pages/mall/admin/homePage/components/KpiMiniCard.wxml,components/analytics/AnalyticsAreaChart.wxml
analyzing codes success
analyzing codes...
ignoring files: project.private.config.json,uni_modules/charts/EChartsView2.js,layouts/admin/components/PlaceholderPage.wxml,layouts/admin/pages/HomeIndex.wxml,components/analytics/AnalyticsAreaChart.js,pages/mall/admin/homePage/components/KpiMiniCard.js,pages/mall/admin/decoration/components/types.js,uni_modules/ak-req/index.js,pages/mall/admin/homePage/components/KpiMiniCard.wxss,components/analytics/AnalyticsAreaChart.wxss,components/analytics/AnalyticsAreaChart.json,pages/mall/admin/homePage/components/KpiMiniCard.json,pages/mall/admin/product/product-management/components/edit.wxml,pages/mall/admin/product/product-management/components/member-price.wxml,pages/mall/admin/homePage/components/KpiMiniCard.wxml,components/analytics/AnalyticsAreaChart.wxml
analyzing codes success
Ignored by code analyzer: project.private.config.json,uni_modules/charts/EChartsView2.js,layouts/admin/components/PlaceholderPage.wxml,layouts/admin/pages/HomeIndex.wxml,components/analytics/AnalyticsAreaChart.js,pages/mall/admin/homePage/components/KpiMiniCard.js,uni_modules/ak-req/index.js,pages/mall/admin/homePage/components/KpiMiniCard.wxss,components/analytics/AnalyticsAreaChart.wxss,components/analytics/AnalyticsAreaChart.json,pages/mall/admin/homePage/components/KpiMiniCard.json,pages/mall/admin/homePage/components/KpiMiniCard.wxml,components/analytics/AnalyticsAreaChart.wxml
getDevCodeByFileList-miniProgram
Compiling layouts/admin/AdminLayout.wxml
Compiling layouts/admin/AdminLayout.wxml
Compiling layouts/admin/components/AdminAside.wxml
Compiling layouts/admin/components/AdminAside.wxml
Compiling layouts/admin/components/AdminFooter.wxml
Compiling layouts/admin/components/AdminFooter.wxml
Compiling layouts/admin/components/AdminHeader.wxml
Compiling layouts/admin/components/AdminHeader.wxml
Compiling layouts/admin/components/AdminPageLoading.wxml
Compiling layouts/admin/components/AdminPageLoading.wxml
Compiling layouts/admin/components/AdminSubSider.wxml
Compiling layouts/admin/components/AdminSubSider.wxml
Compiling layouts/admin/components/AdminTagsView.wxml
Compiling layouts/admin/components/AdminTagsView.wxml
Compiling common/uniView.wxs
Compiling common/uniView.wxs
Compiling pages/user/boot.wxml
Compiling pages/user/boot.wxml
Compiling pages/user/login.wxml
Compiling pages/user/login.wxml
Compiling pages/mall/admin/homePage/index.wxml
Compiling pages/mall/admin/homePage/index.wxml
Compiling pages/user/terms.wxml
Compiling pages/user/terms.wxml
Compiling pages/user/register.wxml
Compiling pages/user/register.wxml
Compiling pages/user/forgot-password.wxml
Compiling pages/user/forgot-password.wxml
Compiling pages/mall/admin/userCenter/index.wxml
Compiling pages/mall/admin/userCenter/index.wxml
Compiling pages/user/center.wxml
Compiling pages/user/center.wxml
Compiling pages/user/profile.wxml
Compiling pages/user/profile.wxml
Compiling pages/user/change-password.wxml
Compiling pages/user/change-password.wxml
Compiling pages/user/bind-phone.wxml
Compiling pages/user/bind-phone.wxml
Compiling pages/main/index.wxml
Compiling pages/main/index.wxml
Compiling pages/user/bind-email.wxml
Compiling pages/user/bind-email.wxml
Compiling pages/main/messages.wxml
Compiling pages/main/messages.wxml
Compiling pages/main/category.wxml
Compiling pages/main/category.wxml
Compiling pages/main/cart.wxml
Compiling pages/main/cart.wxml
Compiling pages/main/profile.wxml
Compiling pages/main/profile.wxml
Compiling pages/mall/merchant/index.wxml
Compiling pages/mall/merchant/index.wxml
Compiling pages/mall/merchant/orders.wxml
Compiling pages/mall/merchant/orders.wxml
Compiling pages/mall/merchant/order-detail.wxml
Compiling pages/mall/merchant/order-detail.wxml
Compiling pages/mall/merchant/products.wxml
Compiling pages/mall/merchant/products.wxml
Compiling pages/mall/merchant/product-edit.wxml
Compiling pages/mall/merchant/product-edit.wxml
Compiling pages/mall/merchant/product-detail.wxml
Compiling pages/mall/merchant/product-detail.wxml
Compiling pages/mall/merchant/inventory.wxml
Compiling pages/mall/merchant/inventory.wxml
Compiling pages/mall/merchant/reviews.wxml
Compiling pages/mall/merchant/reviews.wxml
Compiling pages/mall/merchant/messages.wxml
Compiling pages/mall/merchant/messages.wxml
Compiling pages/mall/merchant/shop-edit.wxml
Compiling pages/mall/merchant/shop-edit.wxml
Compiling pages/mall/merchant/promotions.wxml
Compiling pages/mall/merchant/promotions.wxml
Compiling pages/mall/merchant/statistics.wxml
Compiling pages/mall/merchant/statistics.wxml
Compiling pages/mall/merchant/finance.wxml
Compiling pages/mall/merchant/finance.wxml
Compiling pages/mall/merchant/members.wxml
Compiling pages/mall/merchant/members.wxml
Compiling pages/mall/merchant/chat.wxml
Compiling pages/mall/merchant/chat.wxml
Compiling pages/mall/merchant/exclusive-discounts.wxml
Compiling pages/mall/merchant/exclusive-discounts.wxml
Compiling pages/mall/merchant/profile.wxml
Compiling pages/mall/merchant/profile.wxml
Compiling components/CommonPagination/CommonPagination.wxml
Compiling components/CommonPagination/CommonPagination.wxml
Compiling components/StatusSwitch.wxml
Compiling components/StatusSwitch.wxml
Compiling uni_modules/charts/EChartsView.wxml
Compiling uni_modules/charts/EChartsView.wxml
Compiling components/analytics/AnalyticsSidebarMenu.wxml
Compiling components/analytics/AnalyticsSidebarMenu.wxml
Compiling components/analytics/AnalyticsTopBar.wxml
Compiling components/analytics/AnalyticsTopBar.wxml
Compiling components/analytics/AnalyticsDateRangePicker.wxml
Compiling components/analytics/AnalyticsDateRangePicker.wxml
Compiling components/analytics/AnalyticsMultiLineChart.wxml
Compiling components/analytics/AnalyticsMultiLineChart.wxml
Compiling components/analytics/AnalyticsUserGenderSection.wxml
Compiling components/analytics/AnalyticsUserGenderSection.wxml
Compiling components/analytics/AnalyticsUserMapTable.wxml
Compiling components/analytics/AnalyticsUserMapTable.wxml
Compiling components/analytics/AnalyticsPieChart.wxml
Compiling components/analytics/AnalyticsPieChart.wxml
Compiling components/analytics/AnalyticsComboChart.wxml
Compiling components/analytics/AnalyticsComboChart.wxml
Compiling components/analytics/AnalyticsRegionMap.wxml
Compiling components/analytics/AnalyticsRegionMap.wxml
getDevCodeByFileList-miniProgram
Compiling layouts/admin/AdminLayout.wxss
Compiling layouts/admin/AdminLayout.wxss
Compiling layouts/admin/components/AdminAside.wxss
Compiling layouts/admin/components/AdminAside.wxss
Compiling layouts/admin/components/AdminFooter.wxss
Compiling layouts/admin/components/AdminFooter.wxss
Compiling layouts/admin/components/AdminHeader.wxss
Compiling layouts/admin/components/AdminHeader.wxss
Compiling layouts/admin/components/AdminPageLoading.wxss
Compiling layouts/admin/components/AdminPageLoading.wxss
Compiling layouts/admin/components/AdminSubSider.wxss
Compiling layouts/admin/components/AdminSubSider.wxss
Compiling layouts/admin/components/AdminTagsView.wxss
Compiling layouts/admin/components/AdminTagsView.wxss
Compiling pages/mall/merchant/index.wxss
Compiling pages/mall/merchant/index.wxss
Compiling pages/mall/merchant/orders.wxss
Compiling pages/mall/merchant/orders.wxss
Compiling pages/mall/merchant/order-detail.wxss
Compiling pages/mall/merchant/order-detail.wxss
Compiling pages/mall/merchant/products.wxss
Compiling pages/mall/merchant/products.wxss
Compiling pages/mall/merchant/product-detail.wxss
Compiling pages/mall/merchant/product-detail.wxss
Compiling pages/mall/merchant/product-edit.wxss
Compiling pages/mall/merchant/product-edit.wxss
Compiling pages/mall/merchant/messages.wxss
Compiling pages/mall/merchant/messages.wxss
Compiling pages/mall/merchant/reviews.wxss
Compiling pages/mall/merchant/reviews.wxss
Compiling pages/mall/merchant/inventory.wxss
Compiling pages/mall/merchant/inventory.wxss
Compiling pages/mall/merchant/shop-edit.wxss
Compiling pages/mall/merchant/shop-edit.wxss
Compiling pages/mall/merchant/promotions.wxss
Compiling pages/mall/merchant/promotions.wxss
Compiling pages/mall/merchant/finance.wxss
Compiling pages/mall/merchant/finance.wxss
Compiling pages/mall/merchant/statistics.wxss
Compiling pages/mall/merchant/statistics.wxss
Compiling pages/mall/merchant/members.wxss
Compiling pages/mall/merchant/members.wxss
Compiling pages/mall/merchant/chat.wxss
Compiling pages/mall/merchant/chat.wxss
Compiling pages/mall/merchant/exclusive-discounts.wxss
Compiling pages/mall/merchant/exclusive-discounts.wxss
Compiling pages/mall/merchant/profile.wxss
Compiling pages/mall/merchant/profile.wxss
Compiling components/analytics/AnalyticsComboChart.wxss
Compiling components/analytics/AnalyticsComboChart.wxss
Compiling components/analytics/AnalyticsSidebarMenu.wxss
Compiling components/analytics/AnalyticsSidebarMenu.wxss
Compiling components/analytics/AnalyticsDateRangePicker.wxss
Compiling components/analytics/AnalyticsDateRangePicker.wxss
Compiling components/analytics/AnalyticsTopBar.wxss
Compiling components/analytics/AnalyticsTopBar.wxss
Compiling uni_modules/charts/EChartsView.wxss
Compiling uni_modules/charts/EChartsView.wxss
Compiling components/analytics/AnalyticsRegionMap.wxss
Compiling components/analytics/AnalyticsRegionMap.wxss
Compiling components/CommonPagination/CommonPagination.wxss
Compiling components/CommonPagination/CommonPagination.wxss
Compiling components/StatusSwitch.wxss
Compiling components/StatusSwitch.wxss
Compiling components/analytics/AnalyticsMultiLineChart.wxss
Compiling components/analytics/AnalyticsMultiLineChart.wxss
Compiling components/analytics/AnalyticsUserMapTable.wxss
Compiling components/analytics/AnalyticsUserMapTable.wxss
Compiling components/analytics/AnalyticsUserGenderSection.wxss
Compiling components/analytics/AnalyticsUserGenderSection.wxss
Compiling components/analytics/AnalyticsPieChart.wxss
Compiling components/analytics/AnalyticsPieChart.wxss
Compiling uvue.wxss
Compiling uvue.wxss
Compiling app.wxss
Compiling app.wxss
Compiling pages/user/boot.wxss
Compiling pages/user/boot.wxss
Compiling pages/user/login.wxss
Compiling pages/user/login.wxss
Compiling pages/mall/admin/homePage/index.wxss
Compiling pages/mall/admin/homePage/index.wxss
Compiling pages/user/register.wxss
Compiling pages/user/register.wxss
Compiling pages/mall/admin/userCenter/index.wxss
Compiling pages/mall/admin/userCenter/index.wxss
Compiling pages/user/forgot-password.wxss
Compiling pages/user/forgot-password.wxss
Compiling pages/user/terms.wxss
Compiling pages/user/terms.wxss
Compiling pages/user/center.wxss
Compiling pages/user/center.wxss
Compiling pages/user/profile.wxss
Compiling pages/user/profile.wxss
Compiling pages/user/change-password.wxss
Compiling pages/user/change-password.wxss
Compiling pages/user/bind-phone.wxss
Compiling pages/user/bind-phone.wxss
Compiling pages/main/index.wxss
Compiling pages/main/index.wxss
Compiling pages/user/bind-email.wxss
Compiling pages/user/bind-email.wxss
Compiling pages/main/category.wxss
Compiling pages/main/category.wxss
Compiling pages/main/messages.wxss
Compiling pages/main/messages.wxss
Compiling pages/main/cart.wxss
Compiling pages/main/cart.wxss
Compiling pages/main/profile.wxss
Compiling pages/main/profile.wxss
getDevCodeByFileList-miniProgram
Compiling app.js
Compiling app.js
getDevCodeByFileList-miniProgram
Compiling pages/mall/merchant/orders.js
Compiling pages/mall/merchant/orders.js
getDevCodeByFileList-miniProgram
Compiling pages/mall/merchant/inventory.js
Compiling pages/mall/merchant/inventory.js
getDevCodeByFileList-miniProgram
Compiling pages/mall/merchant/promotions.js
Compiling pages/mall/merchant/promotions.js
getDevCodeByFileList-miniProgram
Compiling pages/mall/merchant/products.js
Compiling pages/mall/merchant/products.js
getDevCodeByFileList-miniProgram
Compile app.json
app.json: app.json is not found in the project root directory
app.json: app.json is not found in the project root directory
Compile app.json
app.json: ["pages"][17]: "pages/mall/merchant/index" Should not exist in ["subPackages"][17] ["pages"][18]: "pages/mall/merchant/messages" Should not exist in ["subPackages"][17] ["pages"][19]: "pages/mall/merchant/orders" Should not exist in ["subPackages"][17] ["pages"][20]: "pages/mall/merchant/growth" Should not exist in ["subPackages"][17] ["pages"][21]: "pages/mall/merchant/profile" Should not exist in ["subPackages"][17]
Compile app.json
app.json: ["pages"][17]: "pages/mall/merchant/index" Should not exist in ["subPackages"][17] ["pages"][18]: "pages/mall/merchant/messages" Should not exist in ["subPackages"][17] ["pages"][19]: "pages/mall/merchant/orders" Should not exist in ["subPackages"][17] ["pages"][20]: "pages/mall/merchant/growth" Should not exist in ["subPackages"][17] ["pages"][21]: "pages/mall/merchant/profile" Should not exist in ["subPackages"][17]

View File

@@ -0,0 +1,709 @@
<!-- 商家端 - 成长页Tab4经营指南、流量获取方法、店铺经营建议、学习入口 -->
<template>
<view class="growth-page">
<!-- #ifdef MP-WEIXIN -->
<!-- Tab 页无返回按钮,显示顶部安全区 + 页面标题 -->
<view class="mp-tab-navbar">
<text class="mp-tab-title">成长</text>
</view>
<!-- #endif -->
<scroll-view direction="vertical" class="growth-scroll" :refresher-enabled="true" :refresher-triggered="refreshing" @refresherrefresh="onRefresh">
<!-- 成长等级卡片 -->
<view class="level-card">
<view class="level-header">
<view class="level-info">
<text class="level-label">商家成长等级</text>
<view class="level-badge">
<text class="level-text">{{ currentLevel.name }}</text>
</view>
</view>
<text class="level-icon">{{ currentLevel.icon }}</text>
</view>
<view class="level-progress-wrap">
<view class="level-progress-bar">
<view class="level-progress-fill" :style="{ width: currentLevel.progress + '%' }"></view>
</view>
<text class="level-progress-text">{{ currentLevel.progress }}% · 距下一级还需 {{ currentLevel.nextTarget }}</text>
</view>
<view class="level-tips">
<text class="level-tips-text">完善店铺信息、上传商品、获得订单可提升等级</text>
</view>
</view>
<!-- 流量获取方法 -->
<view class="section-card">
<view class="section-header">
<text class="section-title">📈 流量获取方法</text>
</view>
<view class="tips-list">
<view
v-for="(tip, index) in trafficTips"
:key="index"
class="tip-item"
@click="viewDetail(tip)"
>
<view class="tip-icon-wrap" :style="{ backgroundColor: tip.color + '22' }">
<text class="tip-icon">{{ tip.icon }}</text>
</view>
<view class="tip-content">
<text class="tip-title">{{ tip.title }}</text>
<text class="tip-desc">{{ tip.desc }}</text>
</view>
<text class="tip-arrow"></text>
</view>
</view>
</view>
<!-- 经营指南 -->
<view class="section-card">
<view class="section-header">
<text class="section-title">📋 经营指南</text>
</view>
<view class="guide-grid">
<view
v-for="(guide, index) in operationGuides"
:key="index"
class="guide-item"
@click="viewDetail(guide)"
>
<text class="guide-icon">{{ guide.icon }}</text>
<text class="guide-title">{{ guide.title }}</text>
</view>
</view>
</view>
<!-- 店铺经营建议 -->
<view class="section-card">
<view class="section-header">
<text class="section-title">💡 今日经营建议</text>
</view>
<view class="suggestion-list">
<view
v-for="(suggestion, index) in suggestions"
:key="index"
class="suggestion-item"
:class="{ done: suggestion.done }"
@click="toggleSuggestion(index)"
>
<view class="suggestion-check">
<text class="check-icon">{{ suggestion.done ? '✅' : '⬜' }}</text>
</view>
<view class="suggestion-content">
<text class="suggestion-title">{{ suggestion.title }}</text>
<text class="suggestion-desc">{{ suggestion.desc }}</text>
</view>
<view class="suggestion-tag" :style="{ backgroundColor: suggestion.tagColor + '22', color: suggestion.tagColor }">
<text class="tag-text">{{ suggestion.tag }}</text>
</view>
</view>
</view>
</view>
<!-- 学习中心入口 -->
<view class="section-card">
<view class="section-header">
<text class="section-title">🎓 学习中心</text>
</view>
<view class="learn-list">
<view
v-for="(course, index) in learnCourses"
:key="index"
class="learn-item"
@click="viewDetail(course)"
>
<view class="learn-cover">
<text class="learn-cover-icon">{{ course.icon }}</text>
</view>
<view class="learn-info">
<text class="learn-title">{{ course.title }}</text>
<text class="learn-subtitle">{{ course.subtitle }}</text>
<view class="learn-meta">
<text class="learn-tag">{{ course.tag }}</text>
<text class="learn-duration">{{ course.duration }}</text>
</view>
</view>
</view>
</view>
</view>
<!-- 底部安全区(覆盖 tabbar -->
<view class="safe-bottom"></view>
</scroll-view>
<!-- 商家端自定义 TabBar -->
<merchant-tab-bar :current="3"></merchant-tab-bar>
</view>
</template>
<script lang="uts">
import MerchantTabBar from '@/components/merchant-tabbar/MerchantTabBar.uvue'
type TipType = {
icon: string
title: string
desc: string
color: string
link: string
}
type GuideType = {
icon: string
title: string
link: string
}
type SuggestionType = {
title: string
desc: string
tag: string
tagColor: string
done: boolean
}
type CourseType = {
icon: string
title: string
subtitle: string
tag: string
duration: string
link: string
}
type LevelType = {
name: string
icon: string
progress: number
nextTarget: string
}
export default {
components: {
MerchantTabBar
},
data() {
return {
refreshing: false,
currentLevel: {
name: '新手商家',
icon: '🌱',
progress: 30,
nextTarget: '上传满5件商品'
} as LevelType,
trafficTips: [
{
icon: '🏷️',
title: '优化商品标题关键词',
desc: '精准标题可提升搜索曝光量 3-5 倍',
color: '#ff5000',
link: ''
},
{
icon: '📷',
title: '提升主图吸引力',
desc: '高质量主图点击率提升 40% 以上',
color: '#007AFF',
link: ''
},
{
icon: '💰',
title: '设置限时优惠活动',
desc: '促销期间订单量平均提升 60%',
color: '#34C759',
link: ''
},
{
icon: '⭐',
title: '维护好评率',
desc: '好评率 >95% 可获得平台推荐流量',
color: '#FF9500',
link: ''
},
{
icon: '📢',
title: '参与平台活动',
desc: '报名活动可获得额外曝光位置',
color: '#AF52DE',
link: ''
}
] as TipType[],
operationGuides: [
{ icon: '🛒', title: '商品管理', link: '/pages/mall/merchant/products' },
{ icon: '📦', title: '库存优化', link: '/pages/mall/merchant/inventory' },
{ icon: '🎯', title: '营销策略', link: '/pages/mall/merchant/promotions' },
{ icon: '💬', title: '客服技巧', link: '/pages/mall/merchant/chat' },
{ icon: '📊', title: '数据解读', link: '/pages/mall/merchant/statistics' },
{ icon: '💳', title: '财务管理', link: '/pages/mall/merchant/finance' }
] as GuideType[],
suggestions: [
{
title: '完善店铺基础信息',
desc: '补充店铺 Logo、简介、联系方式',
tag: '紧急',
tagColor: '#ff3b30',
done: false
},
{
title: '上传至少3件在售商品',
desc: '充足商品是获得流量的基础',
tag: '重要',
tagColor: '#ff9500',
done: false
},
{
title: '回复所有待回评价',
desc: '及时回复可提升用户信任度',
tag: '今日',
tagColor: '#007aff',
done: false
},
{
title: '检查低库存商品',
desc: '库存不足会导致订单自动取消',
tag: '常规',
tagColor: '#34c759',
done: false
}
] as SuggestionType[],
learnCourses: [
{
icon: '🚀',
title: '新手商家开店必读',
subtitle: '5分钟掌握开店核心流程',
tag: '入门',
duration: '5 分钟',
link: ''
},
{
icon: '📸',
title: '商品主图拍摄技巧',
subtitle: '用手机也能拍出专业大片',
tag: '进阶',
duration: '8 分钟',
link: ''
},
{
icon: '📣',
title: '营销活动策划方法',
subtitle: '节假日爆单秘诀全攻略',
tag: '进阶',
duration: '12 分钟',
link: ''
},
{
icon: '💬',
title: '提升客服转化率',
subtitle: '用话术留住每一位询问客户',
tag: '实战',
duration: '10 分钟',
link: ''
}
] as CourseType[]
}
},
onShow() {
// 预留:后续可对接成长等级接口
},
methods: {
onRefresh() {
this.refreshing = true
// 预留:刷新成长数据
setTimeout(() => {
this.refreshing = false
}, 1000)
},
toggleSuggestion(index: number) {
this.suggestions[index].done = !this.suggestions[index].done
},
viewDetail(item: TipType | GuideType | CourseType) {
if (item.link && item.link.length > 0) {
uni.navigateTo({ url: item.link })
} else {
uni.showToast({ title: '内容即将上线,敬请期待', icon: 'none' })
}
}
}
}
</script>
<style>
.growth-page {
background-color: #f5f7fa;
min-height: 100vh;
}
/* 微信小程序 Tab 页顶部导航 */
.mp-tab-navbar {
height: calc(88rpx + var(--status-bar-height));
padding-top: var(--status-bar-height);
background-color: #ffffff;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
border-bottom-width: 1rpx;
border-bottom-style: solid;
border-bottom-color: #f0f0f0;
}
.mp-tab-title {
font-size: 34rpx;
font-weight: bold;
color: #333333;
}
.growth-scroll {
flex: 1;
padding: 24rpx;
}
/* 成长等级卡片 */
.level-card {
background: linear-gradient(135deg, #ff6b35 0%, #ff8c5a 100%);
border-radius: 24rpx;
padding: 36rpx 32rpx;
margin-bottom: 24rpx;
box-shadow: 0 8rpx 24rpx rgba(255, 107, 53, 0.3);
}
.level-header {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
margin-bottom: 28rpx;
}
.level-info {
display: flex;
flex-direction: column;
}
.level-label {
font-size: 26rpx;
color: rgba(255, 255, 255, 0.8);
margin-bottom: 10rpx;
}
.level-badge {
background-color: rgba(255, 255, 255, 0.25);
border-radius: 20rpx;
padding-top: 8rpx;
padding-bottom: 8rpx;
padding-left: 24rpx;
padding-right: 24rpx;
align-self: flex-start;
}
.level-text {
font-size: 32rpx;
font-weight: bold;
color: #ffffff;
}
.level-icon {
font-size: 80rpx;
}
.level-progress-wrap {
margin-bottom: 16rpx;
}
.level-progress-bar {
height: 12rpx;
background-color: rgba(255, 255, 255, 0.3);
border-radius: 6rpx;
overflow: hidden;
margin-bottom: 12rpx;
}
.level-progress-fill {
height: 100%;
background-color: #ffffff;
border-radius: 6rpx;
}
.level-progress-text {
font-size: 24rpx;
color: rgba(255, 255, 255, 0.85);
}
.level-tips {
background-color: rgba(255, 255, 255, 0.15);
border-radius: 12rpx;
padding: 16rpx 20rpx;
}
.level-tips-text {
font-size: 24rpx;
color: rgba(255, 255, 255, 0.9);
}
/* 通用 section 卡片 */
.section-card {
background-color: #ffffff;
border-radius: 24rpx;
padding: 28rpx;
margin-bottom: 24rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.05);
}
.section-header {
margin-bottom: 24rpx;
}
.section-title {
font-size: 32rpx;
font-weight: bold;
color: #333333;
}
/* 流量获取方法 */
.tips-list {
display: flex;
flex-direction: column;
}
.tip-item {
display: flex;
flex-direction: row;
align-items: center;
padding-top: 20rpx;
padding-bottom: 20rpx;
border-bottom-width: 1rpx;
border-bottom-style: solid;
border-bottom-color: #f5f5f5;
}
.tip-item:last-child {
border-bottom: none;
padding-bottom: 0;
}
.tip-icon-wrap {
width: 72rpx;
height: 72rpx;
border-radius: 18rpx;
display: flex;
align-items: center;
justify-content: center;
margin-right: 24rpx;
flex-shrink: 0;
}
.tip-icon {
font-size: 36rpx;
}
.tip-content {
flex: 1;
}
.tip-title {
font-size: 28rpx;
font-weight: 600;
color: #333333;
margin-bottom: 6rpx;
display: block;
}
.tip-desc {
font-size: 24rpx;
color: #999999;
}
.tip-arrow {
font-size: 40rpx;
color: #cccccc;
margin-left: 16rpx;
}
/* 经营指南宫格 */
.guide-grid {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
.guide-item {
width: 33.33%;
display: flex;
flex-direction: column;
align-items: center;
padding-top: 24rpx;
padding-bottom: 24rpx;
}
.guide-icon {
font-size: 56rpx;
margin-bottom: 12rpx;
}
.guide-title {
font-size: 24rpx;
color: #555555;
}
/* 今日经营建议 */
.suggestion-list {
display: flex;
flex-direction: column;
}
.suggestion-item {
display: flex;
flex-direction: row;
align-items: center;
padding-top: 20rpx;
padding-bottom: 20rpx;
border-bottom-width: 1rpx;
border-bottom-style: solid;
border-bottom-color: #f5f5f5;
}
.suggestion-item:last-child {
border-bottom: none;
padding-bottom: 0;
}
.suggestion-item.done .suggestion-title {
color: #cccccc;
text-decoration: line-through;
}
.suggestion-check {
margin-right: 16rpx;
flex-shrink: 0;
}
.check-icon {
font-size: 36rpx;
}
.suggestion-content {
flex: 1;
}
.suggestion-title {
font-size: 28rpx;
font-weight: 500;
color: #333333;
margin-bottom: 6rpx;
display: block;
}
.suggestion-desc {
font-size: 24rpx;
color: #999999;
}
.suggestion-tag {
margin-left: 16rpx;
padding-top: 6rpx;
padding-bottom: 6rpx;
padding-left: 16rpx;
padding-right: 16rpx;
border-radius: 8rpx;
flex-shrink: 0;
}
.tag-text {
font-size: 22rpx;
font-weight: 500;
}
/* 学习中心列表 */
.learn-list {
display: flex;
flex-direction: column;
}
.learn-item {
display: flex;
flex-direction: row;
align-items: center;
padding-top: 20rpx;
padding-bottom: 20rpx;
border-bottom-width: 1rpx;
border-bottom-style: solid;
border-bottom-color: #f5f5f5;
}
.learn-item:last-child {
border-bottom: none;
padding-bottom: 0;
}
.learn-cover {
width: 100rpx;
height: 80rpx;
border-radius: 12rpx;
background-color: #f5f7ff;
display: flex;
align-items: center;
justify-content: center;
margin-right: 20rpx;
flex-shrink: 0;
}
.learn-cover-icon {
font-size: 44rpx;
}
.learn-info {
flex: 1;
}
.learn-title {
font-size: 28rpx;
font-weight: 600;
color: #333333;
margin-bottom: 8rpx;
display: block;
}
.learn-subtitle {
font-size: 24rpx;
color: #999999;
margin-bottom: 12rpx;
display: block;
}
.learn-meta {
display: flex;
flex-direction: row;
align-items: center;
}
.learn-tag {
font-size: 22rpx;
color: #ff5000;
background-color: #fff3ef;
padding-top: 4rpx;
padding-bottom: 4rpx;
padding-left: 12rpx;
padding-right: 12rpx;
border-radius: 6rpx;
margin-right: 16rpx;
}
.learn-duration {
font-size: 22rpx;
color: #999999;
}
/* 底部安全区 */
.safe-bottom {
height: 160rpx;
}
</style>

View File

@@ -1,7 +1,13 @@
<!-- 商家端首页 -->
<template>
<view class="merchant-container">
<scroll-view scroll-y class="main-scroll" :refresher-enabled="true" :refresher-triggered="refreshing" @refresherrefresh="onRefresh">
<!-- #ifdef MP-WEIXIN -->
<!-- Tab 页无返回按鈕,展示顶部安全区 + 页面标题 -->
<view class="mp-tab-navbar">
<text class="mp-tab-title">商家工作台</text>
</view>
<!-- #endif -->
<scroll-view direction="vertical" class="main-scroll" :refresher-enabled="true" :refresher-triggered="refreshing" @refresherrefresh="onRefresh">
<!-- 头部区域 -->
<view class="header">
<view class="header-bg"></view>
@@ -231,15 +237,18 @@
</view>
</view>
<!-- 底部安全区域 -->
<!-- 底部安全区域(需要覆盖自定义 tabbar 高度) -->
<view class="safe-bottom"></view>
</view>
</scroll-view>
<!-- 商家端自定义 TabBar -->
<merchant-tab-bar :current="0"></merchant-tab-bar>
</view>
</template>
<script lang="uts">
import supa from '@/components/supadb/aksupainstance.uts'
import MerchantTabBar from '@/components/merchant-tabbar/MerchantTabBar.uvue'
type ShopInfoType = {
id: string | null
@@ -292,6 +301,7 @@
}
export default {
components: { MerchantTabBar },
data() {
return {
merchantId: '',
@@ -887,7 +897,9 @@
.amount-label { font-size: 24rpx; color: #999; margin-right: 8rpx; }
.amount-value { font-size: 32rpx; font-weight: bold; color: #FF6B35; }
.safe-bottom { height: 30rpx; }
.mp-tab-navbar { height: calc(88rpx + var(--status-bar-height)); padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: center; justify-content: center; border-bottom-width: 1rpx; border-bottom-style: solid; border-bottom-color: #f0f0f0; }
.mp-tab-title { font-size: 34rpx; font-weight: bold; color: #333333; }
.safe-bottom { height: 160rpx; }
</style>

View File

@@ -2,11 +2,9 @@
<template>
<view class="messages-page">
<!-- #ifdef MP-WEIXIN -->
<view style="padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: flex-end; border-bottom: 1rpx solid #eeeeee; box-sizing: border-box; height: calc(88rpx + var(--status-bar-height));">
<view style="display: flex; flex-direction: row; align-items: center; padding: 0 30rpx; height: 88rpx;" @click="uni.navigateBack()">
<text style="font-size: 44rpx; color: #333333; line-height: 1; margin-right: 6rpx;"></text>
<text style="font-size: 28rpx; color: #333333;">返回</text>
</view>
<!-- Tab 页无返回按鈕,展示顶部安全区 + 页面标题 -->
<view class="mp-tab-navbar">
<text class="mp-tab-title">消息</text>
</view>
<!-- #endif -->
<view class="header">
@@ -14,7 +12,7 @@
<text class="header-subtitle">与客户的聊天记录</text>
</view>
<scroll-view class="messages-list" scroll-y :refresher-enabled="true" :refresher-triggered="refreshing" @refresherrefresh="onRefresh">
<scroll-view class="messages-list" direction="vertical" :refresher-enabled="true" :refresher-triggered="refreshing" @refresherrefresh="onRefresh">
<view v-if="loading && conversations.length === 0" class="loading-container">
<text class="loading-icon">⏳</text>
<text class="loading-text">加载中...</text>
@@ -50,11 +48,14 @@
<view class="safe-bottom"></view>
</scroll-view>
<!-- 商家端自定义 TabBar -->
<merchant-tab-bar :current="1"></merchant-tab-bar>
</view>
</template>
<script lang="uts">
import supa from '@/components/supadb/aksupainstance.uts'
import MerchantTabBar from '@/components/merchant-tabbar/MerchantTabBar.uvue'
type MessageType = {
id: string
@@ -80,6 +81,7 @@
}
export default {
components: { MerchantTabBar },
data() {
return {
conversations: [] as ConversationType[],
@@ -212,6 +214,9 @@
<style>
.messages-page { background-color: #f5f7fa; min-height: 100vh; display: flex; flex-direction: column; }
.mp-tab-navbar { height: calc(88rpx + var(--status-bar-height)); padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: center; justify-content: center; border-bottom-width: 1rpx; border-bottom-style: solid; border-bottom-color: #f0f0f0; }
.mp-tab-title { font-size: 34rpx; font-weight: bold; color: #333333; }
.header { background-color: #fff; padding-top: 60rpx; padding-bottom: 24rpx; padding-left: 30rpx; padding-right: 30rpx; border-bottom-width: 1rpx; border-bottom-style: solid; border-bottom-color: #eee; }
.header-title { font-size: 44rpx; font-weight: bold; color: #333; display: block; margin-bottom: 8rpx; }
.header-subtitle { font-size: 26rpx; color: #999; }
@@ -242,5 +247,5 @@
.unread-num { font-size: 22rpx; color: #fff; font-weight: bold; }
.conv-arrow { font-size: 40rpx; color: #ccc; margin-left: 10rpx; }
.safe-bottom { height: 30rpx; }
.safe-bottom { height: 160rpx; }
</style>

View File

@@ -2,11 +2,9 @@
<template>
<view class="orders-page">
<!-- #ifdef MP-WEIXIN -->
<view style="padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: flex-end; border-bottom: 1rpx solid #eeeeee; box-sizing: border-box; height: calc(88rpx + var(--status-bar-height));">
<view style="display: flex; flex-direction: row; align-items: center; padding: 0 30rpx; height: 88rpx;" @click="uni.navigateBack()">
<text style="font-size: 44rpx; color: #333333; line-height: 1; margin-right: 6rpx;"></text>
<text style="font-size: 28rpx; color: #333333;">返回</text>
</view>
<!-- Tab 页无返回按鈕,展示顶部安全区 + 页面标题 -->
<view class="mp-tab-navbar">
<text class="mp-tab-title">订单管理</text>
</view>
<!-- #endif -->
<!-- 标签页切换 -->
@@ -174,11 +172,14 @@
</view>
</view>
</view>
<!-- 商家端自定义 TabBar -->
<merchant-tab-bar :current="2"></merchant-tab-bar>
</view>
</template>
<script lang="uts">
import supa from '@/components/supadb/aksupainstance.uts'
import MerchantTabBar from '@/components/merchant-tabbar/MerchantTabBar.uvue'
type OrderItemType = {
id: string
@@ -222,6 +223,7 @@
}
export default {
components: { MerchantTabBar },
data() {
return {
tabs: [
@@ -637,6 +639,9 @@
min-height: 100vh;
}
.mp-tab-navbar { height: calc(88rpx + var(--status-bar-height)); padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: center; justify-content: center; border-bottom-width: 1rpx; border-bottom-style: solid; border-bottom-color: #f0f0f0; }
.mp-tab-title { font-size: 34rpx; font-weight: bold; color: #333333; }
.tabs-container {
background-color: #fff;
position: sticky;
@@ -723,7 +728,7 @@
.orders-list {
padding: 0 20rpx;
height: calc(100vh - 300rpx);
height: calc(100vh - 460rpx);
}
.loading-container, .empty-container {

View File

@@ -2,13 +2,12 @@
<template>
<view class="merchant-profile">
<!-- #ifdef MP-WEIXIN -->
<view style="padding-top: var(--status-bar-height); background-color: #ffffff; display: flex; flex-direction: row; align-items: flex-end; border-bottom: 1rpx solid #eeeeee; box-sizing: border-box; height: calc(88rpx + var(--status-bar-height));">
<view style="display: flex; flex-direction: row; align-items: center; padding: 0 30rpx; height: 88rpx;" @click="uni.navigateBack()">
<text style="font-size: 44rpx; color: #333333; line-height: 1; margin-right: 6rpx;"></text>
<text style="font-size: 28rpx; color: #333333;">返回</text>
</view>
<!-- Tab 页无返回按鈕,展示顶部安全区 + 页面标题 -->
<view class="mp-tab-navbar">
<text class="mp-tab-title">我的</text>
</view>
<!-- #endif -->
<scroll-view direction="vertical" class="profile-scroll">
<!-- 店铺信息头部 -->
<view class="profile-header">
<image :src="shopInfo.shop_logo || '/static/default-shop.png'" class="shop-logo" @click="editShop" />
@@ -23,6 +22,13 @@
<view class="settings-icon" @click="goToSettings">⚙️</view>
</view>
<!-- 前往店铺主页 -->
<view class="shop-home-entry" @click="goToShopHome">
<text class="shop-home-icon">🏪</text>
<text class="shop-home-text">前往店铺主页</text>
<text class="shop-home-arrow"></text>
</view>
<!-- 订单管理快捷入口 -->
<view class="order-shortcuts">
<view class="section-title">订单管理</view>
@@ -175,11 +181,17 @@
</view>
</view>
</view>
<!-- 底部安全区(覆盖 tabbar -->
<view class="safe-bottom"></view>
</scroll-view>
<!-- 商家端自定义 TabBar -->
<merchant-tab-bar :current="4"></merchant-tab-bar>
</view>
</template>
<script setup lang="uts">
import { ref, onMounted, computed } from 'vue'
import MerchantTabBar from '@/components/merchant-tabbar/MerchantTabBar.uvue'
import type { MerchantType, OrderType, ApiResponseType } from '@/types/mall-types'
// 响应式数据
@@ -346,6 +358,12 @@ function formatTime(dateStr: string): string {
}
// 导航方法
function goToShopHome() {
uni.navigateTo({
url: '/pages/mall/merchant/shop-edit'
})
}
function editShop() {
uni.navigateTo({
url: '/pages/mall/merchant/shop-edit'
@@ -433,11 +451,64 @@ function goToFeedback() {
<style scoped>
.merchant-profile {
padding: 0 0 120rpx 0;
background-color: #f5f5f5;
min-height: 100vh;
}
.mp-tab-navbar {
height: calc(88rpx + var(--status-bar-height));
padding-top: var(--status-bar-height);
background-color: #ffffff;
display: flex;
align-items: center;
justify-content: center;
border-bottom-width: 1rpx;
border-bottom-style: solid;
border-bottom-color: #f0f0f0;
}
.mp-tab-title {
font-size: 34rpx;
font-weight: bold;
color: #333333;
}
.profile-scroll {
flex: 1;
}
.shop-home-entry {
margin: 20rpx 30rpx;
background: white;
border-radius: 20rpx;
padding: 28rpx 30rpx;
display: flex;
flex-direction: row;
align-items: center;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.04);
}
.shop-home-icon {
font-size: 40rpx;
margin-right: 20rpx;
}
.shop-home-text {
flex: 1;
font-size: 30rpx;
font-weight: 600;
color: #333;
}
.shop-home-arrow {
font-size: 40rpx;
color: #ccc;
}
.safe-bottom {
height: 160rpx;
}
.profile-header {
display: flex;
align-items: center;

View File

@@ -0,0 +1 @@
{"code":"import { defineComponent } from \"vue\";\nexport default defineComponent({\n props: {\n current: {\n type: Number,\n default: 0\n },\n badges: {\n type: Object,\n default: () => { return (new UTSJSONObject({})); }\n }\n },\n data() {\n return {\n currentIndex: this.current,\n safeBottom: '0px',\n tabs: [\n new UTSJSONObject({ text: '首页', icon: '🏠', path: '/pages/mall/merchant/index', badge: 0 }),\n new UTSJSONObject({ text: '消息', icon: '💬', path: '/pages/mall/merchant/messages', badge: 0 }),\n new UTSJSONObject({ text: '订单', icon: '📋', path: '/pages/mall/merchant/orders', badge: 0 }),\n new UTSJSONObject({ text: '成长', icon: '🚀', path: '/pages/mall/merchant/growth', badge: 0 }),\n new UTSJSONObject({ text: '我的', icon: '👤', path: '/pages/mall/merchant/profile', badge: 0 })\n ]\n };\n },\n watch: {\n current(val) {\n this.currentIndex = val;\n },\n badges(val) {\n this.updateBadges(val);\n }\n },\n mounted() {\n this.initSafeArea();\n this.currentIndex = this.current;\n },\n methods: {\n initSafeArea() {\n try {\n const info = wx.getWindowInfo();\n const safeAreaBottom = info.screenHeight - info.safeArea.bottom;\n if (safeAreaBottom > 0) {\n this.safeBottom = safeAreaBottom + 'px';\n }\n }\n catch (e) { }\n },\n updateBadges(badgeMap) {\n const keys = ['index', 'messages', 'orders', 'growth', 'profile'];\n for (let i = 0; i < keys.length; i++) {\n if (badgeMap[keys[i]] != null) {\n this.tabs[i].badge = badgeMap[keys[i]];\n }\n }\n },\n switchTab(index) {\n if (this.currentIndex === index)\n return null;\n this.currentIndex = index;\n uni.reLaunch({\n url: this.tabs[index].path\n });\n }\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/components/merchant-tabbar/MerchantTabBar.uvue?vue&type=script&lang.uts.js.map","references":[],"uniExtApis":["uni.reLaunch"],"map":"{\"version\":3,\"file\":\"MerchantTabBar.uvue?vue&type=script&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"MerchantTabBar.uvue?vue&type=script&lang.uts\"],\"names\":[],\"mappings\":\";AACE,+BAAe;IACb,KAAK,EAAE;QACL,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC;SACX;QACD,MAAM,EAAE;YACN,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,QAAM,OAAA,mBAAC,EAAE,EAAC,EAAJ,CAAI;SACpB;KACF;IAED,IAAI;QACF,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,OAAiB;YACpC,UAAU,EAAE,KAAK;YACjB,IAAI,EAAE;kCACJ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAC,EAAE;kCACxE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,CAAC,EAAE;kCAC3E,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,CAAC,EAAE;kCACzE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,CAAC,EAAE;kCACzE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,CAAC,EAAE;aAC3E;SACF,CAAA;IACH,CAAC;IAED,KAAK,EAAE;QACL,OAAO,CAAC,GAAW;YACjB,IAAI,CAAC,YAAY,GAAG,GAAG,CAAA;QACzB,CAAC;QACD,MAAM,CAAC,GAA2B;YAChC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;QACxB,CAAC;KACF;IAED,OAAO;QACL,IAAI,CAAC,YAAY,EAAE,CAAA;QACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAA;IAClC,CAAC;IAED,OAAO,EAAE;QACP,YAAY;YAEV,IAAI;gBACF,MAAM,IAAI,GAAG,EAAE,CAAC,aAAa,EAAE,CAAA;gBAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;gBAC/D,IAAI,cAAc,GAAG,CAAC,EAAE;oBACtB,IAAI,CAAC,UAAU,GAAG,cAAc,GAAG,IAAI,CAAA;iBACxC;aACF;YAAC,OAAO,CAAC,EAAE,GAAE;QAEhB,CAAC;QAED,YAAY,CAAC,QAAgC;YAC3C,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;YACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;oBAC7B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;iBACvC;aACF;QACH,CAAC;QAED,SAAS,CAAC,KAAa;YACrB,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK;gBAAE,YAAM;YACvC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;YACzB,GAAG,CAAC,QAAQ,CAAC;gBACX,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI;aAC3B,CAAC,CAAA;QACJ,CAAC;KACF;CACF,EAAA\"}"}

View File

@@ -0,0 +1 @@
{"code":"import { defineComponent } from \"vue\";\nexport default defineComponent({\n props: {\n current: {\n type: Number,\n default: 0\n },\n badges: {\n type: Object,\n default: () => { return (new UTSJSONObject({})); }\n }\n },\n data() {\n return {\n currentIndex: this.current,\n safeBottom: '0px',\n tabs: [\n new UTSJSONObject({ text: '首页', icon: '🏠', path: '/pages/mall/merchant/index', badge: 0 }),\n new UTSJSONObject({ text: '消息', icon: '💬', path: '/pages/mall/merchant/messages', badge: 0 }),\n new UTSJSONObject({ text: '订单', icon: '📋', path: '/pages/mall/merchant/orders', badge: 0 }),\n new UTSJSONObject({ text: '成长', icon: '🚀', path: '/pages/mall/merchant/growth', badge: 0 }),\n new UTSJSONObject({ text: '我的', icon: '👤', path: '/pages/mall/merchant/profile', badge: 0 })\n ]\n };\n },\n watch: {\n current(val) {\n this.currentIndex = val;\n },\n badges(val) {\n this.updateBadges(val);\n }\n },\n mounted() {\n this.initSafeArea();\n this.currentIndex = this.current;\n },\n methods: {\n initSafeArea() {\n try {\n const info = wx.getWindowInfo();\n const safeAreaBottom = info.screenHeight - info.safeArea.bottom;\n if (safeAreaBottom > 0) {\n this.safeBottom = safeAreaBottom + 'px';\n }\n }\n catch (e) { }\n },\n updateBadges(badgeMap) {\n const keys = ['index', 'messages', 'orders', 'growth', 'profile'];\n for (let i = 0; i < keys.length; i++) {\n if (badgeMap[keys[i]] != null) {\n this.tabs[i].badge = badgeMap[keys[i]];\n }\n }\n },\n switchTab(index) {\n if (this.currentIndex === index)\n return null;\n this.currentIndex = index;\n uni.reLaunch({\n url: this.tabs[index].path\n });\n }\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/components/merchant-tabbar/MerchantTabBar.uvue?vue&type=script&lang.uts.js.map","references":[],"uniExtApis":["uni.reLaunch"],"map":"{\"version\":3,\"file\":\"MerchantTabBar.uvue?vue&type=script&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"MerchantTabBar.uvue?vue&type=script&lang.uts\"],\"names\":[],\"mappings\":\";AACE,+BAAe;IACb,KAAK,EAAE;QACL,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC;SACX;QACD,MAAM,EAAE;YACN,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,QAAM,OAAA,mBAAC,EAAE,EAAC,EAAJ,CAAI;SACpB;KACF;IAED,IAAI;QACF,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,OAAiB;YACpC,UAAU,EAAE,KAAK;YACjB,IAAI,EAAE;kCACJ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAC,EAAE;kCACxE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,CAAC,EAAE;kCAC3E,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,CAAC,EAAE;kCACzE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,CAAC,EAAE;kCACzE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,CAAC,EAAE;aAC3E;SACF,CAAA;IACH,CAAC;IAED,KAAK,EAAE;QACL,OAAO,CAAC,GAAW;YACjB,IAAI,CAAC,YAAY,GAAG,GAAG,CAAA;QACzB,CAAC;QACD,MAAM,CAAC,GAA2B;YAChC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;QACxB,CAAC;KACF;IAED,OAAO;QACL,IAAI,CAAC,YAAY,EAAE,CAAA;QACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAA;IAClC,CAAC;IAED,OAAO,EAAE;QACP,YAAY;YAEV,IAAI;gBACF,MAAM,IAAI,GAAG,EAAE,CAAC,aAAa,EAAE,CAAA;gBAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;gBAC/D,IAAI,cAAc,GAAG,CAAC,EAAE;oBACtB,IAAI,CAAC,UAAU,GAAG,cAAc,GAAG,IAAI,CAAA;iBACxC;aACF;YAAC,OAAO,CAAC,EAAE,GAAE;QAEhB,CAAC;QAED,YAAY,CAAC,QAAgC;YAC3C,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;YACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;oBAC7B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;iBACvC;aACF;QACH,CAAC;QAED,SAAS,CAAC,KAAa;YACrB,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK;gBAAE,YAAM;YACvC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;YACzB,GAAG,CAAC,QAAQ,CAAC;gBACX,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI;aAC3B,CAAC,CAAA;QACJ,CAAC;KACF;CACF,EAAA\"}"}

View File

@@ -1 +0,0 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { gei as _gei, sei as _sei } from \"vue\";\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'index',\n setup(__props) {\n // 无效关键词回复逻辑\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = {\n a: _sei(_gei(_ctx, ''), 'view')\n };\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/pages/mall/admin/app/wechat/reply/invalid/index.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts"],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"index.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"index.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,KAAK,CAAA;AAG9C,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,OAAO;IACf,KAAK,CAAC,OAAO;QAEf,YAAY;QAEZ,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG;gBACrB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAA;YACC,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

View File

@@ -1 +0,0 @@
{"code":"import { defineComponent } from \"vue\";\nexport default defineComponent({\n name: \"EChartsView\",\n props: {\n option: { type: Object, default: () => { return (new UTSJSONObject({})); } },\n theme: { type: String, default: \"light\" },\n },\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/uni_modules/charts/EChartsView.vue?vue&type=script&lang.uts.js.map","references":[],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"EChartsView.vue?vue&type=script&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"EChartsView.vue?vue&type=script&lang.uts\"],\"names\":[],\"mappings\":\";AACA,+BAAe;IACb,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE;QACL,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAM,OAAA,mBAAC,EAAE,EAAC,EAAJ,CAAI,EAAE;QAC7C,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;KAC1C;CACF,EAAC\"}"}

View File

@@ -1 +0,0 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { toDisplayString as _toDisplayString, t as _t, o as _o, f as _f, gei as _gei, sei as _sei } from \"vue\";\nimport { ref } from 'vue';\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'index',\n setup(__props) {\n const categoryList = ref([\n new UTSJSONObject({ id: 9, name: '分销配置', field: 'fenxiao', status: true }),\n new UTSJSONObject({ id: 65, name: '接口设置', field: 'system_serve', status: true }),\n new UTSJSONObject({ id: 69, name: '客服配置', field: 'kefu_config', status: true }),\n new UTSJSONObject({ id: 78, name: '应用配置', field: 'sys_app', status: true }),\n new UTSJSONObject({ id: 100, name: '用户配置', field: 'system_user_config', status: true }),\n new UTSJSONObject({ id: 113, name: '订单配置', field: 'order_config', status: true }),\n new UTSJSONObject({ id: 129, name: '系统配置', field: 'system_config', status: true }),\n new UTSJSONObject({ id: 136, name: '商品配置', field: 'product_config', status: true })\n ]);\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = {\n a: _f(categoryList.value, (item, k0, i0) => {\n return {\n a: _t(item.id),\n b: _t(item.name),\n c: _t(item.field),\n d: item.status ? 1 : '',\n e: _o($event => { return item.status = !item.status; }, item.id),\n f: item.id\n };\n }),\n b: _sei(_gei(_ctx, ''), 'view')\n };\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/pages/mall/admin/maintain/dev-config/category/index.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts"],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"index.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"index.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,KAAK,CAAA;AAE9G,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAGzB,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,OAAO;IACf,KAAK,CAAC,OAAO;QAEf,MAAM,YAAY,GAAG,GAAG,CAAC;8BACvB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;8BACvD,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE;8BAC7D,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE;8BAC5D,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;8BACxD,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,EAAE;8BACpE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE;8BAC9D,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE;8BAC/D,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE;SACjE,CAAC,CAAA;QAEF,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG;gBACrB,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;oBACrC,OAAO;wBACL,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;wBACd,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;wBAChB,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;wBACjB,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;wBACvB,CAAC,EAAE,EAAE,CAAC,MAAM,MAAI,OAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAA1B,CAA0B,EAAE,IAAI,CAAC,EAAE,CAAC;wBACpD,CAAC,EAAE,IAAI,CAAC,EAAE;qBACX,CAAC;gBACJ,CAAC,CAAC;gBACF,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAA;YACC,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

View File

@@ -1 +0,0 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { unref as _unref, p as _p, gei as _gei, sei as _sei } from \"vue\";\nconst __BINDING_COMPONENTS__ = '{\"EChartsView\":{\"name\":\"_unref(EChartsView)\",\"type\":\"setup\"}}';\nif (!Math) {\n (_unref(EChartsView))();\n}\nimport { ref } from 'vue';\nimport EChartsView from '@/uni_modules/charts/EChartsView.uvue';\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'index',\n setup(__props) {\n const chartOption = ref(new UTSJSONObject({\n title: new UTSJSONObject({ text: 'Marketing Statistics Demo' }),\n tooltip: new UTSJSONObject({}),\n xAxis: new UTSJSONObject({ data: ['A', 'B', 'C', 'D'] }),\n yAxis: new UTSJSONObject({}),\n series: [new UTSJSONObject({ type: 'bar', data: [5, 20, 36, 10] })]\n }));\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = {\n a: _p({\n option: chartOption.value\n }),\n b: _sei(_gei(_ctx, ''), 'view')\n };\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/pages/mall/admin/marketing/marketing-statistics/index.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/骅锋/mall/uni_modules/charts/EChartsView.uvue.ts"],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"index.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"index.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,KAAK,CAAA;AACxE,MAAM,sBAAsB,GAAG,+DAA+D,CAAA;AAC9F,IAAI,CAAC,IAAI,EAAE;IAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAA;CAAE;AAEtC,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AACzB,OAAO,WAAW,MAAM,uCAAuC,CAAA;AAG/D,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,OAAO;IACf,KAAK,CAAC,OAAO;QAEf,MAAM,WAAW,GAAG,GAAG,mBAAC;YACtB,KAAK,oBAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAA;YAC5C,OAAO,oBAAE,EAAE,CAAA;YACX,KAAK,oBAAE,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAA;YACrC,KAAK,oBAAE,EAAE,CAAA;YACT,MAAM,EAAE,mBAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAC;SACjD,EAAC,CAAA;QAEF,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG;gBACrB,CAAC,EAAE,EAAE,CAAC;oBACJ,MAAM,EAAE,WAAW,CAAC,KAAK;iBAC1B,CAAC;gBACF,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAA;YACC,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

View File

@@ -1 +0,0 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { toDisplayString as _toDisplayString, t as _t, o as _o, f as _f, gei as _gei, sei as _sei, e as _e } from \"vue\";\nimport { ref } from 'vue';\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'index',\n setup(__props) {\n const currentTab = ref('basic');\n const tabs = [\n new UTSJSONObject({ key: 'basic', label: '公众号配置' }),\n new UTSJSONObject({ key: 'server', label: '服务器域名配置' })\n ];\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = _e({\n a: _f(tabs, (tab, k0, i0) => {\n return {\n a: _t(tab.label),\n b: tab.key,\n c: currentTab.value === tab.key ? 1 : '',\n d: _o($event => { return currentTab.value = tab.key; }, tab.key)\n };\n }),\n b: currentTab.value === 'basic'\n }, currentTab.value === 'basic' ? {} : {}, {\n c: _sei(_gei(_ctx, ''), 'view')\n });\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/pages/mall/admin/app/wechat/config/index.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts"],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"index.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"index.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,MAAM,KAAK,CAAA;AAEvH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAGzB,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,OAAO;IACf,KAAK,CAAC,OAAO;QAEf,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,CAAA;QAC/B,MAAM,IAAI,GAAG;8BACX,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;8BAChC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;SACpC,CAAA;QAED,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG,EAAE,CAAC;gBACxB,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;oBACtB,OAAO;wBACL,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;wBAChB,CAAC,EAAE,GAAG,CAAC,GAAG;wBACV,CAAC,EAAE,UAAU,CAAC,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;wBACxC,CAAC,EAAE,EAAE,CAAC,MAAM,MAAI,OAAA,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,EAA1B,CAA0B,EAAE,GAAG,CAAC,GAAG,CAAC;qBACrD,CAAC;gBACJ,CAAC,CAAC;gBACF,CAAC,EAAE,UAAU,CAAC,KAAK,KAAK,OAAO;aAChC,EAAE,UAAU,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAC,CAAA;YACA,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

View File

@@ -1 +0,0 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { gei as _gei, sei as _sei } from \"vue\";\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'index',\n setup(__props) {\n // 微信菜单页面逻辑\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = {\n a: _sei(_gei(_ctx, ''), 'view')\n };\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/pages/mall/admin/app/wechat/menu/index.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts"],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"index.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"index.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,KAAK,CAAA;AAG9C,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,OAAO;IACf,KAAK,CAAC,OAAO;QAEf,WAAW;QAEX,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG;gBACrB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAA;YACC,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

View File

@@ -1 +0,0 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { gei as _gei, sei as _sei } from \"vue\";\nimport _imports_0 from '/static/placeholder.png';\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'index',\n setup(__props) {\n // 图文管理逻辑\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = {\n a: _imports_0,\n b: _sei(_gei(_ctx, ''), 'view')\n };\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/pages/mall/admin/app/wechat/management/index.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts"],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"index.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"index.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,KAAK,CAAA;AAC9C,OAAO,UAAU,MAAM,yBAAyB,CAAA;AAGhD,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,OAAO;IACf,KAAK,CAAC,OAAO;QAEf,SAAS;QAET,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG;gBACrB,CAAC,EAAE,UAAU;gBACb,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAA;YACC,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

View File

@@ -1 +0,0 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { o as _o, gei as _gei, sei as _sei } from \"vue\";\nimport { ref } from 'vue';\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'index',\n setup(__props) {\n const password = ref('');\n const handleLogin = () => {\n if (!password.value) {\n uni.showToast({ title: '请输入密码', icon: 'none' });\n return null;\n }\n uni.showLoading({ title: '正在登录...' });\n setTimeout(() => {\n uni.hideLoading();\n uni.showToast({ title: '登录成功(演示)' });\n }, 1000);\n };\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = {\n a: password.value,\n b: _o($event => { return password.value = $event.detail.value; }),\n c: _o(handleLogin),\n d: _sei(_gei(_ctx, ''), 'view')\n };\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/pages/mall/admin/maintain/dev-tools/file/index.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts"],"uniExtApis":["uni.showToast","uni.showLoading","uni.hideLoading"],"map":"{\"version\":3,\"file\":\"index.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"index.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,KAAK,CAAA;AAEvD,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAGzB,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,OAAO;IACf,KAAK,CAAC,OAAO;QAEf,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC,CAAA;QAExB,MAAM,WAAW,GAAG;YAClB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;gBACnB,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;gBAC/C,YAAM;aACP;YACD,GAAG,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;YACrC,UAAU,CAAC;gBACT,GAAG,CAAC,WAAW,EAAE,CAAA;gBACjB,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;YACtC,CAAC,EAAE,IAAI,CAAC,CAAA;QACV,CAAC,CAAA;QAED,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG;gBACrB,CAAC,EAAE,QAAQ,CAAC,KAAK;gBACjB,CAAC,EAAE,EAAE,CAAC,MAAM,MAAI,OAAA,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAApC,CAAoC,CAAC;gBACrD,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC;gBAClB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAA;YACC,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

View File

@@ -1 +0,0 @@
{"code":"import { defineComponent } from \"vue\";\nexport default defineComponent({\n props: {\n title: {\n type: String,\n default: '数据分析中心'\n },\n lastUpdateTime: {\n type: String,\n default: ''\n },\n // 由页面传入:当前侧边栏是否处于“打开/显示”状态(窄屏下用于隐藏菜单按钮)\n sidebarVisible: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n showMoreMenu: false,\n isWideScreen: false\n };\n },\n computed: {\n showMenuIcon() {\n // 宽屏不显示;窄屏仅在侧边栏未打开时显示\n return !this.isWideScreen && !this.sidebarVisible;\n }\n },\n onLoad() {\n this.checkScreenSize();\n },\n onShow() {\n this.checkScreenSize();\n },\n methods: {\n checkScreenSize() {\n const systemInfo = uni.getSystemInfoSync();\n const w = systemInfo.windowWidth || systemInfo.screenWidth;\n // 与侧边栏一致960px 以上视为宽屏\n this.isWideScreen = w >= 960;\n },\n handleMenu() {\n this.$emit('menu-click');\n },\n handleRefresh() {\n this.$emit('refresh');\n },\n handleSearch() {\n this.$emit('search');\n },\n handleNotification() {\n this.showMoreMenu = false;\n this.$emit('notification');\n },\n handleFullscreen() {\n this.showMoreMenu = false;\n this.$emit('fullscreen');\n },\n handleMobile() {\n this.showMoreMenu = false;\n this.$emit('mobile');\n },\n handleDropdown() {\n this.$emit('dropdown');\n },\n handleSettings() {\n this.showMoreMenu = false;\n this.$emit('settings');\n },\n toggleMoreMenu() {\n this.showMoreMenu = !this.showMoreMenu;\n }\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/components/analytics/AnalyticsTopBar.uvue?vue&type=script&lang.uts.js.map","references":[],"uniExtApis":["uni.getSystemInfoSync"],"map":"{\"version\":3,\"file\":\"AnalyticsTopBar.uvue?vue&type=script&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"AnalyticsTopBar.uvue?vue&type=script&lang.uts\"],\"names\":[],\"mappings\":\";AACA,+BAAe;IACb,KAAK,EAAE;QACL,KAAK,EAAE;YACL,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,QAAQ;SAClB;QACD,cAAc,EAAE;YACd,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;SACZ;QACD,wCAAwC;QACxC,cAAc,EAAE;YACd,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,KAAK;SACf;KACF;IACD,IAAI;QACF,OAAO;YACL,YAAY,EAAE,KAAK;YACnB,YAAY,EAAE,KAAK;SACpB,CAAA;IACH,CAAC;IACD,QAAQ,EAAE;QACR,YAAY;YACV,sBAAsB;YACtB,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,cAAc,CAAA;QACnD,CAAC;KACF;IACD,MAAM;QACJ,IAAI,CAAC,eAAe,EAAE,CAAA;IACxB,CAAC;IACD,MAAM;QACJ,IAAI,CAAC,eAAe,EAAE,CAAA;IACxB,CAAC;IACD,OAAO,EAAE;QACP,eAAe;YACb,MAAM,UAAU,GAAG,GAAG,CAAC,iBAAiB,EAAE,CAAA;YAC1C,MAAM,CAAC,GAAG,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,WAAW,CAAA;YAC1D,sBAAsB;YACtB,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,GAAG,CAAA;QAC9B,CAAC;QACD,UAAU;YACR,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAC1B,CAAC;QACD,aAAa;YACX,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACvB,CAAC;QACD,YAAY;YACV,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACtB,CAAC;QACD,kBAAkB;YAChB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;YACzB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;QAC5B,CAAC;QACD,gBAAgB;YACd,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;YACzB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAC1B,CAAC;QACD,YAAY;YACV,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;YACzB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACtB,CAAC;QACD,cAAc;YACZ,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QACxB,CAAC;QACD,cAAc;YACZ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;YACzB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QACxB,CAAC;QACD,cAAc;YACZ,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAA;QACxC,CAAC;KACF;CACF,EAAA\"}"}

Some files were not shown because too many files have changed in this diff Show More