ry_app/pages/index.vue

1294 lines
26 KiB
Vue
Raw Normal View History

2026-01-19 16:52:24 +08:00
<template>
<view class="container">
<view class="one">
2026-02-04 14:57:28 +08:00
<view class="barsOne" @click="showDrawer('showLeft')" ><uni-icons type="bars" size="30" class="barsIcons"></uni-icons></view>
2026-03-27 00:18:36 +08:00
<view class="scanOne" @click="codeData"><uni-icons type="scan" size="30" class="scanIcons"></uni-icons></view>
2026-02-04 14:57:28 +08:00
<view class="gearOne" @click="goSetting"><uni-icons type="gear" size="30" class="gearIcons"></uni-icons></view>
2026-01-19 16:52:24 +08:00
</view>
2026-02-04 14:57:28 +08:00
<!-- 左侧抽屉 -->
<uni-drawer ref="showLeft" mode="left" :width="320" @change="change($event,'showLeft')">
<!-- 替换后的抽屉内容 -->
<!-- 顶部个人信息区 -->
<view class="drawer-header">
<image class="avatar" src="/static/avatar.png" mode="widthFix"></image>
<view class="name-wrap" @click="goToUser">
<text class="user-name">名称</text>
<text class="arrow">></text>
</view>
</view>
<!-- 个人店模块 -->
<view class="section">
<text class="section-title">个人店</text>
<!-- 绑定点击事件和动态active类 -->
<view class="shop-item" :class="{active: selectedShop === 'personal'}" @click="selectShop('personal')">
<image class="shop-icon" src="/static/shop.png" mode="widthFix"></image>
<view class="shop-info">
<text class="shop-name">微店智能店</text>
<text class="shop-id">ID:1234567890 | 管理员</text>
</view>
<uni-icons type="checkbox-filled" size="18" color="#FF9900" v-if="selectedShop === 'personal'"></uni-icons>
</view>
</view>
<!-- 企业管理模块 -->
<view class="section">
<text class="section-title">企业管理</text>
<!-- 绑定点击事件和动态active类 -->
<view class="shop-item" :class="{active: selectedShop === 'enterprise'}" @click="selectShop('enterprise')">
<image class="shop-icon" src="/static/shop.png" mode="widthFix"></image>
<view class="shop-info">
<text class="shop-name">企业名称</text>
<text class="shop-id">总部/管理员</text>
</view>
<uni-icons type="checkbox-filled" size="18" color="#FF9900" v-if="selectedShop === 'enterprise'"></uni-icons>
</view>
2026-02-04 20:59:33 +08:00
<view class="create-btn" @click="createQi">
<uni-icons type="plusempty" size="16" ></uni-icons>
2026-02-04 14:57:28 +08:00
<text class="create-text">创建企业组织</text>
</view>
</view>
<!-- 底部创建店铺按钮 -->
2026-02-04 20:59:33 +08:00
<view class="bottom-create-btn" @click="createDian">
2026-02-04 14:57:28 +08:00
<uni-icons type="plusempty" size="16"></uni-icons>
<text class="create-text">创建店铺</text>
</view>
</uni-drawer>
2026-01-19 16:52:24 +08:00
<!-- 顶部状态栏 -->
<view class="page-wrapper">
<view class="function-gridss">
<view class="two">
<view class="shop-icons">
<image
2026-01-26 18:58:10 +08:00
src="http://193.112.94.36:8099/static/images/Frame 8.png"
2026-01-19 16:52:24 +08:00
class="shop-icon"
mode="aspectFit"
/>
</view>
<!-- 中间店铺信息和状态 -->
<view class="status-center">
2026-02-04 14:57:28 +08:00
<view class="store-name" >{{ storeName }}</view>
2026-01-19 16:52:24 +08:00
<view class="status-info">
<text class="status-text">值守中</text>
<view class="status-dot"></view>
</view>
</view>
<view class="xianjin">
<image
2026-01-26 18:58:10 +08:00
src="http://193.112.94.36:8099/static/images/Frame 75.png"
2026-01-19 16:52:24 +08:00
mode="aspectFit"
class="close-icon"
2026-02-04 20:59:33 +08:00
2026-01-19 16:52:24 +08:00
/>
</view>
<view class="closeView">
<!-- 右侧关闭按钮图片 -->
<image
2026-01-26 18:58:10 +08:00
src="http://193.112.94.36:8099/static/images/Frame 7.png"
2026-01-19 16:52:24 +08:00
class="close-icons"
mode="aspectFit"
@click="closeDuty"
/>
</view>
</view>
<!-- 关键分割线状态栏下方 -->
<view class="main-divider"></view>
<!-- 页面内容第二张图片的布局 -->
<view class="stats">
<view class="stat-item">
2026-02-04 14:57:28 +08:00
<text class="stat-value">0</text>
2026-01-19 16:52:24 +08:00
<text class="stat-label">今日进店</text>
</view>
<view class="stat-item">
2026-02-04 14:57:28 +08:00
<text class="stat-value">0</text>
2026-01-19 16:52:24 +08:00
<text class="stat-label">支付订单</text>
</view>
<view class="stat-item">
2026-02-04 14:57:28 +08:00
<text class="stat-value">0</text>
2026-01-19 16:52:24 +08:00
<text class="stat-label">支付金额</text>
</view>
<view class="stat-item">
2026-02-04 14:57:28 +08:00
<text class="stat-value"><uni-icons type="redo-filled" size="30"></uni-icons></text>
2026-01-19 16:52:24 +08:00
<text class="stat-label">分享</text>
</view>
</view>
</view>
</view>
<view class="page-wrapper">
<!-- 顶部状态栏 - 图片版本 -->
<view class="function-grids">
<view >
<text class="daiBan">待办</text>
<text class="daiBan1">店铺暂未投保</text>
<text class="daiBan2">去认证 ></text>
</view>
</view>
</view>
<!-- 主要功能区域 -->
<view class="main-content">
<!-- 功能网格1 -->
<view class="function-grid">
<view class="grid-item" @click="navigateTo('商品管理')">
<view class="item-icon" @click="goToProduct">
</view>
<text class="item-text">商品管理</text>
</view>
<view class="grid-item" @click="navigateTo('订单')">
2026-02-02 16:04:16 +08:00
<view class="item-iconb" @click="goToBack">
2026-01-19 16:52:24 +08:00
</view>
<text class="item-text">订单</text>
</view>
<view class="grid-item" @click="navigateTo('收入资产')">
<view class="item-iconc" @click="goToAsset">
</view>
<text class="item-text">收入资产</text>
</view>
<view class="grid-item" @click="navigateTo('数据分析')">
<view class="item-icond">
</view>
<text class="item-text">数据分析</text>
</view>
<view class="grid-item" @click="navigateTo('实时监控')">
<view class="item-icone">
</view>
<text class="item-text">实时监控</text>
</view>
<view class="grid-item" @click="navigateTo('查看回放')">
<view class="item-iconf">
</view>
<text class="item-text">查看回放</text>
</view>
<view class="grid-item" @click="navigateTo('值班报告')">
<view class="item-icong">
</view>
<text class="item-text">值班报告</text>
</view>
<view class="grid-item" @click="navigateTo('服务费')">
<view class="item-iconh">
</view>
<text class="item-text">服务费</text>
</view>
2026-02-04 20:59:33 +08:00
<view class="grid-item" @click="navigateTo('门店信息')">
2026-01-19 16:52:24 +08:00
<view class="item-icon">
</view>
2026-02-04 20:59:33 +08:00
<text class="item-text">门店信息</text>
2026-01-19 16:52:24 +08:00
</view>
2026-02-04 20:59:33 +08:00
<view class="grid-item" @click="navigateTo('24商城')">
2026-01-19 16:52:24 +08:00
<view class="item-iconb">
</view>
2026-02-04 20:59:33 +08:00
<text class="item-text">24商城</text>
2026-01-19 16:52:24 +08:00
</view>
2026-02-04 20:59:33 +08:00
<view class="grid-item" @click="navigateTo('店铺保障')">
2026-01-19 16:52:24 +08:00
<view class="item-iconc">
</view>
2026-02-04 20:59:33 +08:00
<text class="item-text">店铺保障</text>
2026-01-19 16:52:24 +08:00
</view>
2026-02-04 20:59:33 +08:00
<view class="grid-item" @click="navigateTo('店铺设备')">
2026-01-19 16:52:24 +08:00
<view class="item-icond">
</view>
2026-02-04 20:59:33 +08:00
<text class="item-text">店铺设备</text>
2026-01-19 16:52:24 +08:00
</view>
2026-02-04 20:59:33 +08:00
<view class="grid-item" @click="navigateTo('值班留言')">
2026-01-19 16:52:24 +08:00
<view class="item-icon">
</view>
2026-02-04 20:59:33 +08:00
<text class="item-text">值班留言</text>
2026-01-19 16:52:24 +08:00
</view>
2026-02-04 20:59:33 +08:00
<view class="grid-item" @click="navigateTo('活动报名')">
2026-01-19 16:52:24 +08:00
<view class="item-iconb">
</view>
2026-02-04 20:59:33 +08:00
<text class="item-text">活动报名</text>
2026-01-19 16:52:24 +08:00
</view>
2026-02-04 20:59:33 +08:00
<view class="grid-item" @click="navigateTo('营销推广')">
2026-01-19 16:52:24 +08:00
<view class="item-iconc">
</view>
2026-02-04 20:59:33 +08:00
<text class="item-text">营销推广</text>
2026-01-19 16:52:24 +08:00
</view>
2026-02-04 20:59:33 +08:00
<view class="grid-item" @click="navigateTo('全部客户')">
2026-01-19 16:52:24 +08:00
<view class="item-icond">
</view>
2026-02-04 20:59:33 +08:00
<text class="item-text">全部客户</text>
2026-01-19 16:52:24 +08:00
</view>
2026-02-04 20:59:33 +08:00
<view class="grid-item" @click="navigateTo('安全卫士')">
2026-01-19 16:52:24 +08:00
<view class="item-icon">
</view>
2026-02-04 20:59:33 +08:00
<text class="item-text">安全卫士</text>
2026-01-19 16:52:24 +08:00
</view>
</view>
<!-- 收入预估卡片 -->
<view class="income-card" @click="gotoEstimate">
<view class="card-header">
<text class="card-title">预估店铺改造后收入</text>
<view class="card-badge">
<text class="badge-text">立即去预估</text>
<text class="arrow"></text>
</view>
</view>
<view class="card-content">
<!-- 这里可以放置图表或收入预估数据 -->
<view class="placeholder-chart">
<text class="chart-icon">📈</text>
<text class="chart-text">收入增长趋势分析</text>
</view>
</view>
</view>
<!-- 推广标语 -->
<view class="promotion-banner">
<text class="promotion-text">把心意,做到生意里</text>
</view>
</view>
</view>
</template>
<script>
import { getStoreInfo } from '@/utils/auth'
export default {
data() {
return {
// 可以在这里添加数据
showLeft: false,
2026-02-04 14:57:28 +08:00
storeName: '我的便利店', // 门店名称
selectedShop: 'personal' // 新增:默认选中个人店
2026-01-19 16:52:24 +08:00
}
},
onShow() {
// 获取门店信息
const storeInfo = getStoreInfo();
if (storeInfo && storeInfo.storeName) {
this.storeName = storeInfo.storeName;
}
},
methods: {
2026-03-27 00:18:36 +08:00
//扫码
codeData(){
uni.showToast({
title: `扫码`,
icon: 'none'
})
},
2026-02-04 14:57:28 +08:00
// 新增:切换选中店铺的方法
selectShop(type) {
this.selectedShop = type;
},
2026-01-19 16:52:24 +08:00
navigateTo(page) {
uni.showToast({
title: `跳转到${page}`,
icon: 'none'
})
// 实际开发中可以跳转到对应页面
// uni.navigateTo({
// url: `/pages/${page}/index`
// })
},
2026-02-04 20:59:33 +08:00
createQi(){
uni.showToast({
title: `模块建设中~`,
icon: 'none'
})
},
createDian(){
uni.showToast({
title: `模块建设中~`,
icon: 'none'
})
},
2026-01-19 16:52:24 +08:00
goToUser() {
uni.navigateTo({
2026-03-28 21:37:27 +08:00
url: '/package_a/user/user'
2026-01-19 16:52:24 +08:00
})
},
2026-02-04 14:57:28 +08:00
goSetting(){
uni.navigateTo({
2026-03-28 21:37:27 +08:00
url: '/package_a/settings/settings'
2026-02-04 14:57:28 +08:00
})
},
2026-01-19 16:52:24 +08:00
goToProduct() {
uni.navigateTo({
2026-03-28 21:37:27 +08:00
url: '/package_a/product/product'
2026-01-19 16:52:24 +08:00
})
},
goToAsset() {
uni.navigateTo({
2026-03-28 21:37:27 +08:00
url: '/package_a/asset/asset'
2026-01-19 16:52:24 +08:00
})
2026-02-02 16:04:16 +08:00
},
goToBack(){
uni.navigateTo({
2026-03-28 21:37:27 +08:00
url:'/package_a/back/back'
2026-02-02 16:04:16 +08:00
})
2026-01-19 16:52:24 +08:00
},
// reLaunchToA() {
// uni.reLaunch({
// url: '/pages/a/a' // 关闭所有页面,打开新页面
// });
// },
confirm() {},
// 打开窗口
showDrawer(e) {
this.$refs[e].open()
},
// 关闭窗口
closeDrawer(e) {
this.$refs[e].close()
},
// 抽屉状态发生变化触发
change(e, type) {
console.log((type === 'showLeft' ? '左窗口' : '右窗口') + (e ? '打开' : '关闭'));
this[type] = e
},
gotoEstimate() {
uni.showToast({
title: '跳转到收入预估页面',
icon: 'none'
})
},
openMenu() {
this.$refs.drawer.open()
},
closeMenu() {
this.$refs.drawer.close()
}
},
onNavigationBarButtonTap(e) {
if (this.showLeft) {
this.$refs.showLeft.close()
} else {
this.$refs.showLeft.open()
}
},
// app端拦截返回事件 仅app端生效
onBackPress() {
if (this.showRight || this.showLeft) {
this.$refs.showLeft.close()
this.$refs.showRight.close()
return true
}
}
}
</script>
<style lang="scss" scoped>
@import "@/static/scss/theme-variables.scss";
2026-02-04 14:57:28 +08:00
// 新增抽屉样式
.drawer-header {
display: flex;
align-items: center;
padding: 20px;
border-bottom: 1px solid #eee;
}
.avatar {
width: 48px;
height: 48px;
border-radius: 50%;
margin-right: 12px;
}
.name-wrap {
display: flex;
align-items: center;
}
.user-name {
font-size: 16px;
font-weight: 500;
}
.arrow {
font-size: 14px;
color: #999;
margin-left: 4px;
}
.section {
padding: 12px 0;
border-bottom: 1px solid #eee;
}
.section-title {
font-size: 12px;
color: #999;
padding: 0 20px 8px;
}
.shop-item {
display: flex;
align-items: center;
padding: 12px 20px;
background: #f8f8f8;
cursor: pointer; // 新增:鼠标指针样式
transition: all 0.2s; // 新增:过渡动画
}
.shop-item.active {
background: #fff8e8;
border-right: 4px solid #ff9900;
}
// 新增未选中项hover效果
.shop-item:not(.active):hover {
background: #f0f0f0;
}
.shop-icon {
width: 32px;
height: 32px;
margin-right: 12px;
}
.shop-info {
flex: 1;
}
.shop-name {
display: block;
font-size: 15px;
font-weight: 500;
margin-bottom: 2px;
}
.shop-id {
font-size: 12px;
color: #999;
}
.create-btn {
display: flex;
align-items: center;
padding: 12px 20px;
color: #666;
font-size: 14px;
}
.create-text {
margin-left: 6px;
}
.bottom-create-btn {
position: absolute;
bottom: 0;
left: 0;
right: 0;
display: flex;
align-items: center;
justify-content: center;
padding: 16px 0;
border-top: 1px solid #eee;
color: #666;
font-size: 14px;
background: #fff;
}
2026-01-19 16:52:24 +08:00
.one{
width: 100%;
2026-01-21 15:09:06 +08:00
height: 200rpx;
2026-01-19 16:52:24 +08:00
/* background-image: url("/static/images/banner/banner01.jpg"); */
background-color: firebrick;
2026-01-21 15:09:06 +08:00
box-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.02);
2026-01-19 16:52:24 +08:00
margin-bottom: 4rpx;
2026-01-21 15:09:06 +08:00
z-index: -1; /* 最底层 */
2026-01-19 16:52:24 +08:00
}
.barsOne{
position: absolute;
left: 38rpx;
top: 140rpx;
}
.scanOne{
position: absolute;
right: 100rpx;
top: 140rpx;
}
.gearOne{
position: absolute;
right: 38rpx;
top: 140rpx;
}
.barsIcons{
color: #ffffff !important;
}
.scanIcons{
color: #ffffff !important;
}
.gearIcons{
color: #ffffff !important;
}
/* H5平台自适应 */
/* #ifdef H5 */
@media (min-width: 751px) {
.barsOne{
position: absolute;
left: 38px;
top: 100px;
}
.scanOne{
position: absolute;
right: 100px;
top: 100px;
}
.gearOne{
position: absolute;
right: 38px;
top: 100px;
}
.barsIcons,
.scanIcons,
.gearIcons{
font-size: 30px;
}
}
@media (max-width: 750px) and (min-width: 601px) {
.barsOne{
position: absolute;
left: 30px;
top: 100px;
}
.scanOne{
position: absolute;
right: 80px;
top: 100px;
}
.gearOne{
position: absolute;
right: 30px;
top: 100px;
}
.barsIcons,
.scanIcons,
.gearIcons{
font-size: 26px;
}
}
@media (max-width: 600px) and (min-width: 401px) {
.barsOne{
position: absolute;
left: 25px;
top: 100px;
}
.scanOne{
position: absolute;
right: 65px;
top: 100px;
}
.gearOne{
position: absolute;
right: 25px;
top: 100px;
}
.barsIcons,
.scanIcons,
.gearIcons{
font-size: 24px;
}
}
@media (max-width: 400px) {
.barsOne{
position: absolute;
left: 20px;
top: 80px;
}
.scanOne{
position: absolute;
right: 50px;
top: 80px;
}
.gearOne{
position: absolute;
right: 20px;
top: 80px;
}
.barsIcons,
.scanIcons,
.gearIcons{
font-size: 22px;
}
}
/* #endif */
/* App平台自适应 */
/* #ifdef APP-PLUS */
@media (min-width: 751rpx) {
.barsOne{
position: absolute;
left: 38rpx;
top: 140rpx;
}
.scanOne{
position: absolute;
right: 100rpx;
top: 140rpx;
}
.gearOne{
position: absolute;
right: 38rpx;
top: 140rpx;
}
.barsIcons,
.scanIcons,
.gearIcons{
font-size: 30rpx;
}
}
@media (max-width: 750rpx) and (min-width: 601rpx) {
.barsOne{
position: absolute;
left: 32rpx;
top: 120rpx;
}
.scanOne{
position: absolute;
right: 80rpx;
top: 120rpx;
}
.gearOne{
position: absolute;
right: 32rpx;
top: 120rpx;
}
.barsIcons,
.scanIcons,
.gearIcons{
font-size: 26rpx;
}
}
@media (max-width: 600rpx) and (min-width: 401rpx) {
.barsOne{
position: absolute;
left: 26rpx;
top: 100rpx;
}
.scanOne{
position: absolute;
right: 65rpx;
top: 100rpx;
}
.gearOne{
position: absolute;
right: 26rpx;
top: 100rpx;
}
.barsIcons,
.scanIcons,
.gearIcons{
font-size: 24rpx;
}
}
@media (max-width: 400rpx) {
.barsOne{
position: absolute;
left: 20rpx;
top: 80rpx;
}
.scanOne{
position: absolute;
right: 50rpx;
top: 80rpx;
}
.gearOne{
position: absolute;
right: 20rpx;
top: 80rpx;
}
.barsIcons,
.scanIcons,
.gearIcons{
font-size: 22rpx;
}
}
/* #endif */
.container {
background: var(--bg-primary);
padding: var(--spacing-md);
border-radius: var(--radius-md);
}
.section {
margin-bottom: 40rpx;
}
/* 顶部状态栏样式 */
.status-bar {
background: white;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 30rpx;
display: flex;
/* justify-content: space-between; */
align-items: center;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);
}
.imageClsoe{
height: 124rpx;
width:226rpx;
}
.page {
height: 100vh;
background: #f5f5f5;
}
.daiBan{
border: 2rpx solid red;
border-radius: 21%;
padding: 0rpx 10rpx;
color: red;
font-weight: bold;
}
.daiBan1{
padding: 0rpx 10rpx;
/* font-weight: bold; */
}
.daiBan2{
/* padding: 0rpx 270rpx; */
padding-left: 278rpx;
color: red;
/* font-weight: bold; */
}
.header {
display: flex;
align-items: center;
padding: 20rpx 30rpx;
background: #fff;
}
.back-btn {
font-size: 40rpx;
margin-right: 20rpx;
cursor: pointer;
}
.stats {
display: flex;
justify-content: space-around;
padding: 30rpx;
/* background: #fff; */
margin: -20rpx;
border-radius: 10rpx;
}
.stat-item {
display: flex;
flex-direction: column;
align-items: center;
}
.stat-value {
font-size: 48rpx;
font-weight: bold;
}
.stat-label {
font-size: 24rpx;
color: #888;
}
.imageDian{
height: 106rpx;
width: 106rpx;
}
.status-left {
display: flex;
flex-direction: column;
}
.main-divider {
height: 1rpx;
background-color: darkgray;
margin: 16rpx 20rpx;
box-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.02);
}
.brand {
font-size: 32rpx;
font-weight: bold;
color: #333;
}
.store-name {
font-size: 28rpx;
margin-top: 2rpx;
}
.status-right {
display: flex;
/* flex-direction: column; */
/* align-items: flex-end; */
}
.status-tag {
background: #e8f5e9;
padding: 8rpx 20rpx;
border-radius: 20rpx;
display: flex;
align-items: center;
margin-bottom: 15rpx;
}
.status-dot {
width: 12rpx;
height: 12rpx;
background: #4caf50;
border-radius: 50%;
margin-right: 10rpx;
}
.page-wrapper {
width: 100%;
/* min-height: 100vh; */
padding: 20rpx;
/* background-color: #f8f9fa; */
2026-01-21 15:09:06 +08:00
box-sizing: border-box;
2026-01-19 16:52:24 +08:00
}
/* 顶部状态栏 - 图片版本 */
.status-bar {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
border-radius: 0 0 20rpx 20rpx;
padding: 30rpx 30rpx 20rpx;
display: flex;
align-items: center;
justify-content: space-between;
box-shadow: 0 4rpx 20rpx rgba(102, 126, 234, 0.3);
position: relative;
z-index: 10;
}
/* 左侧:店铺图标 */
.shop-icon {
width: 84rpx;
height: 94rpx;
flex-shrink: 0;
}
.shop-icons{
padding-left: 18rpx;
}
/* 中间:店铺信息和状态 */
.status-center {
2026-01-21 15:09:06 +08:00
padding-left: 14rpx;
2026-01-19 16:52:24 +08:00
}
.store-name {
font-size: 30rpx;
font-weight: 600;
color: black;
margin-bottom: 14rpx;
text-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.2);
}
.status-info {
display: flex;
align-items: center;
gap: 10rpx;
}
.status-text {
font-size: 24rpx;
color: #333;
opacity: 0.9;
}
.status-dot {
width: 12rpx;
height: 12rpx;
background: #4caf50;
border-radius: 50%;
box-shadow: 0 0 8rpx rgba(76, 175, 80, 0.8);
animation: pulse 2s infinite;
}
@keyframes pulse {
0% { opacity: 1; }
50% { opacity: 0.5; }
100% { opacity: 1; }
}
/* 右侧:关闭图标 */
.close-icon {
width: 70rpx;
height: 52rpx;
}
.close-icons {
width: 172rpx;
height: 98rpx;
padding: 2rpx;
}
.status-text {
font-size: 20rpx;
/* color: #4caf50; */
font-weight: 500;
}
.close-btn {
font-size: 24rpx;
color: #ff6b6b;
background: #ffeaea;
padding: 8rpx 20rpx;
border-radius: 20rpx;
}
/* 主要内容区域 */
.main-content {
flex: 1;
padding: 20rpx;
2026-01-21 15:09:06 +08:00
height: auto; /* 修复高度固定导致的滚动问题 */
box-sizing: border-box;
2026-01-19 16:52:24 +08:00
}
2026-01-21 15:09:06 +08:00
/* 功能网格样式 - 最终修复版 */
2026-01-19 16:52:24 +08:00
.function-grid {
2026-01-21 15:09:06 +08:00
text-align: center;
2026-01-19 16:52:24 +08:00
display: flex;
flex-wrap: wrap;
2026-01-21 15:09:06 +08:00
justify-content: space-between; /* 关键:自动分配间距 */
align-items: flex-start;
margin: 0 auto 20rpx;
2026-01-19 16:52:24 +08:00
background: white;
border-radius: 16rpx;
2026-01-21 15:09:06 +08:00
padding: 30rpx 20rpx;
2026-01-19 16:52:24 +08:00
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);
2026-01-21 15:09:06 +08:00
width: calc(100% - 40rpx);
box-sizing: border-box;
2026-01-19 16:52:24 +08:00
}
2026-01-21 15:09:06 +08:00
/* 网格项 - 核心修复 */
2026-01-19 16:52:24 +08:00
.grid-item {
display: flex;
flex-direction: column;
align-items: center;
2026-01-21 15:09:06 +08:00
justify-content: center;
width: 23%; /* 容错宽度,避免换行 */
margin-bottom: 30rpx;
box-sizing: border-box;
padding: 10rpx 0;
2026-01-19 16:52:24 +08:00
}
2026-01-21 15:09:06 +08:00
/* 图标容器 - 统一rpx单位修复显示问题 */
2026-01-19 16:52:24 +08:00
.item-icon {
2026-01-21 15:09:06 +08:00
width: 80rpx;
height: 80rpx;
2026-01-26 18:58:10 +08:00
background-image: url('http://193.112.94.36:8099/static/images/Frame 61.png');
2026-01-21 15:09:06 +08:00
background-size: 100% 100%; /* 完全填充容器 */
background-repeat: no-repeat;
background-position: center;
2026-01-19 16:52:24 +08:00
border-radius: 20rpx;
display: flex;
align-items: center;
justify-content: center;
2026-01-21 15:09:06 +08:00
margin-bottom: 10rpx;
2026-01-19 16:52:24 +08:00
}
.item-iconb {
2026-01-21 15:09:06 +08:00
width: 80rpx;
height: 80rpx;
2026-01-26 18:58:10 +08:00
background-image: url('http://193.112.94.36:8099/static/images/Frame 67.png');
2026-01-21 15:09:06 +08:00
background-size: 100% 100%;
background-repeat: no-repeat;
background-position: center;
2026-01-19 16:52:24 +08:00
border-radius: 20rpx;
display: flex;
align-items: center;
justify-content: center;
2026-01-21 15:09:06 +08:00
margin-bottom: 10rpx;
2026-01-19 16:52:24 +08:00
}
.item-iconc {
2026-01-21 15:09:06 +08:00
width: 80rpx;
height: 80rpx;
2026-01-26 18:58:10 +08:00
background-image: url('http://193.112.94.36:8099/static/images/Frame 71.png');
2026-01-21 15:09:06 +08:00
background-size: 100% 100%;
background-repeat: no-repeat;
background-position: center;
2026-01-19 16:52:24 +08:00
border-radius: 20rpx;
display: flex;
align-items: center;
justify-content: center;
2026-01-21 15:09:06 +08:00
margin-bottom: 10rpx;
2026-01-19 16:52:24 +08:00
}
.item-icond {
2026-01-21 15:09:06 +08:00
width: 80rpx;
height: 80rpx;
2026-01-26 18:58:10 +08:00
background-image: url('http://193.112.94.36:8099/static/images/Frame 68.png');
2026-01-21 15:09:06 +08:00
background-size: 100% 100%;
background-repeat: no-repeat;
background-position: center;
2026-01-19 16:52:24 +08:00
border-radius: 20rpx;
display: flex;
align-items: center;
justify-content: center;
2026-01-21 15:09:06 +08:00
margin-bottom: 10rpx;
2026-01-19 16:52:24 +08:00
}
.item-icone {
2026-01-21 15:09:06 +08:00
width: 80rpx;
height: 80rpx;
2026-01-26 18:58:10 +08:00
background-image: url('http://193.112.94.36:8099/static/images/Frame 66.png');
2026-01-21 15:09:06 +08:00
background-size: 100% 100%;
background-repeat: no-repeat;
background-position: center;
2026-01-19 16:52:24 +08:00
display: flex;
align-items: center;
justify-content: center;
2026-01-21 15:09:06 +08:00
margin-bottom: 10rpx;
2026-01-19 16:52:24 +08:00
}
.item-iconf {
2026-01-21 15:09:06 +08:00
width: 80rpx;
height: 80rpx;
2026-01-26 18:58:10 +08:00
background-image: url('http://193.112.94.36:8099/static/images/Frame 76.png');
2026-01-21 15:09:06 +08:00
background-size: 100% 100%;
background-repeat: no-repeat;
background-position: center;
2026-01-19 16:52:24 +08:00
display: flex;
align-items: center;
justify-content: center;
2026-01-21 15:09:06 +08:00
margin-bottom: 10rpx;
2026-01-19 16:52:24 +08:00
}
.item-icong {
2026-01-21 15:09:06 +08:00
width: 80rpx;
height: 80rpx;
2026-01-26 18:58:10 +08:00
background-image: url('http://193.112.94.36:8099/static/images/Frame 64.png');
2026-01-21 15:09:06 +08:00
background-size: 100% 100%;
background-repeat: no-repeat;
background-position: center;
2026-01-19 16:52:24 +08:00
border-radius: 20rpx;
display: flex;
align-items: center;
justify-content: center;
2026-01-21 15:09:06 +08:00
margin-bottom: 10rpx;
}
.item-iconh {
width: 80rpx;
height: 80rpx;
2026-02-04 20:59:33 +08:00
background-image: url('http://193.112.94.36:8099/static/images/Frame 63 (1).png');
2026-01-21 15:09:06 +08:00
background-size: 100% 100%;
background-repeat: no-repeat;
background-position: center;
2026-01-19 16:52:24 +08:00
border-radius: 20rpx;
display: flex;
align-items: center;
justify-content: center;
2026-01-21 15:09:06 +08:00
margin-bottom: 10rpx;
2026-01-19 16:52:24 +08:00
}
2026-01-21 15:09:06 +08:00
/* 文字样式 - 确保不换行 */
2026-01-19 16:52:24 +08:00
.item-text {
font-size: 24rpx;
color: #333;
text-align: center;
2026-01-21 15:09:06 +08:00
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 100%;
line-height: 1.2;
}
.function-grids {
display: inline-flex;
width: 100%;
justify-content: space-between;
margin-bottom: -16rpx;
background: white;
border-radius: 16rpx;
padding: 30rpx;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);
box-sizing: border-box;
}
.function-gridss {
width: 100%;
justify-content: space-between;
margin-bottom: -16rpx;
background: white;
border-radius: 16rpx;
padding: 20rpx;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);
box-sizing: border-box;
}
.two{
display: inline-flex;
margin-bottom: -8rpx;
width: 100%;
box-sizing: border-box;
2026-01-19 16:52:24 +08:00
}
/* 收入预估卡片 */
.income-card {
background: white;
border-radius: 16rpx;
padding: 30rpx;
margin-bottom: 30rpx;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);
2026-01-21 15:09:06 +08:00
box-sizing: border-box;
2026-01-19 16:52:24 +08:00
}
.card-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 30rpx;
}
.card-title {
font-size: 28rpx;
font-weight: bold;
color: #333;
}
.card-badge {
background: linear-gradient(135deg, #ff9a9e 0%, #fad0c4 100%);
padding: 12rpx 24rpx;
border-radius: 25rpx;
display: flex;
align-items: center;
}
.badge-text {
font-size: 24rpx;
color: white;
font-weight: 500;
}
.arrow {
font-size: 24rpx;
color: white;
margin-left: 10rpx;
}
.card-content {
background: #f8f9fa;
border-radius: 12rpx;
padding: 40rpx;
display: flex;
justify-content: center;
align-items: center;
2026-01-21 15:09:06 +08:00
box-sizing: border-box;
2026-01-19 16:52:24 +08:00
}
.placeholder-chart {
display: flex;
flex-direction: column;
align-items: center;
}
.chart-icon {
font-size: 60rpx;
margin-bottom: 20rpx;
}
.chart-text {
font-size: 24rpx;
color: #666;
}
/* 推广标语 */
.promotion-banner {
background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%);
border-radius: 16rpx;
padding: 40rpx;
margin-bottom: 30rpx;
text-align: center;
2026-01-21 15:09:06 +08:00
box-sizing: border-box;
2026-01-19 16:52:24 +08:00
}
.promotion-text {
font-size: 32rpx;
color: white;
font-weight: bold;
letter-spacing: 2rpx;
}
/* 底部升级提示 */
.upgrade-footer {
background: white;
border-radius: 16rpx;
padding: 30rpx;
display: flex;
justify-content: space-between;
align-items: center;
box-shadow: 0 -4rpx 12rpx rgba(0, 0, 0, 0.05);
position: sticky;
bottom: 20rpx;
2026-01-21 15:09:06 +08:00
box-sizing: border-box;
2026-01-19 16:52:24 +08:00
}
.upgrade-text {
font-size: 28rpx;
color: #333;
font-weight: 500;
}
.upgrade-arrow {
font-size: 28rpx;
color: #667eea;
}
.closeView{
2026-01-21 15:09:06 +08:00
padding-left: 158rpx;
box-sizing: border-box;
2026-01-19 16:52:24 +08:00
}
.xianjin{
2026-01-21 15:09:06 +08:00
padding-left: 12rpx;
box-sizing: border-box;
2026-01-19 16:52:24 +08:00
}
2026-01-21 15:09:06 +08:00
/* 响应式适配 - 仅用rpx和百分比 */
@media (max-width: 600rpx) {
.grid-item {
width: 22%; /* 小屏进一步缩小宽度,避免溢出 */
2026-01-19 16:52:24 +08:00
}
2026-01-21 15:09:06 +08:00
.item-icon, .item-iconb, .item-iconc, .item-icond,
.item-icone, .item-iconf, .item-icong, .item-iconh {
2026-01-19 16:52:24 +08:00
width: 70rpx;
height: 70rpx;
}
.item-text {
font-size: 20rpx;
}
}
2026-01-21 15:09:06 +08:00
/* 横屏适配 */
@media (orientation: landscape) {
.one {
height: 150rpx;
2026-01-19 16:52:24 +08:00
}
2026-01-21 15:09:06 +08:00
.function-grid {
padding: 20rpx 10rpx;
2026-01-19 16:52:24 +08:00
}
2026-01-21 15:09:06 +08:00
.grid-item {
width: 15%; /* 横屏时自动调整为6列 */
2026-01-19 16:52:24 +08:00
}
.item-text {
font-size: 18rpx;
}
}
</style>