Преглед изворни кода

Merge remote-tracking branch 'gogs/hcy' into 小程序

Zhangbw пре 2 месеци
родитељ
комит
60fae2ca6c

Разлика између датотеке није приказан због своје велике величине
+ 132 - 34
package-lock.json


+ 26 - 1
src/App.vue

@@ -3,7 +3,8 @@ import { isLoggedIn, startStatusCheck, stopStatusCheck } from './utils/auth.js'
 
 export default {
   globalData: {
-    userInfo: null
+    userInfo: null,
+	envVersion:''
   },
   onLaunch: function() {
     console.log('App Launch')
@@ -14,6 +15,8 @@ export default {
     }
   },
   onShow: function() {
+	  const accountInfo = wx.getAccountInfoSync();
+	  // this.globalData.envVersion = accountInfo.miniProgram.envVersion
     console.log('App Show')
     // 确保导航栏标题正确显示
     uni.setNavigationBarTitle({
@@ -47,5 +50,27 @@ page {
   padding: 200rpx 0;
   box-sizing: border-box;
 }
+
+.ph-bos{
+	width: 750rpx;
+	height: 100vh;
+	position: relative;
+}
+
+.ph-bos .ph-image{
+	width: 750rpx;
+	height: 100vh;
+}
+
+.ph-bos .ph-next{
+	width: 140rpx;
+	position: absolute;
+	top: 92%;
+	left: 305rpx;
+	text-align: center;
+	padding: 4rpx 0rpx;
+	background-color: #ffffff;
+	border-radius: 20rpx;
+}
 </style>
 

+ 172 - 0
src/components/ComTabBar.vue

@@ -0,0 +1,172 @@
+<template>
+	<view>
+		<view class="tab-bar">
+			<view class="inner">
+				<view v-for="(item,index) in list" :key="index" class="tab-bar-item" @click="switchTab(item)">
+					<image :src="url == item.pagePath ? item.selectedIconPath : item.iconPath" class="tab-cover-img">
+					</image>
+					<view
+						:style="{'color':url == item.pagePath ?dataInfo.textSelectedColor:dataInfo.textUnselectedColor}"
+						:class="url == item.pagePath ?'tab-cover-view1':'tab-cover-view2' " class="tab-cover-view">
+						{{item.text}}
+					</view>
+					<view class="tab-bar-badge" v-if="item.badge && item.badge>0">{{item.badge>99?"···":item.badge}}
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="tab-bars"></view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			url: {
+				type: String,
+				default: ''
+			},
+		},
+		data() {
+			return {
+				list: [],
+				dataInfo: {
+					textSelectedColor: '#5d55e8',
+					textUnselectedColor: '#999999'
+				},
+				envVersion: '',
+			};
+		},
+		mounted() {
+			const app = getApp();
+			if (app.globalData.envVersion == 'develop') {
+				this.list = [{
+						"pagePath": "/pages/index/index",
+						"text": "首页",
+						"iconPath": "/static/images/tab_search.png",
+						"selectedIconPath": "/static/images/tab_search_active.png"
+					},
+					{
+						"pagePath": "/pages/mine/mine",
+						"text": "个人中心",
+						"iconPath": "/static/images/tab_mine.png",
+						"selectedIconPath": "/static/images/tab_mine_active.png"
+					}
+				]
+			} else {
+				this.list = [{
+						"pagePath": "/pages/index/index",
+						"text": "打分查询",
+						"iconPath": "/static/images/tab_search.png",
+						"selectedIconPath": "/static/images/tab_search_active.png"
+					},
+					{
+						"pagePath": "/pages/pool/pool",
+						"text": "超短池",
+						"iconPath": "/static/images/tab_short.png",
+						"selectedIconPath": "/static/images/tab_short_active.png"
+					},
+					{
+						"pagePath": "/pages/strong/strong",
+						"text": "强势池",
+						"iconPath": "/static/images/tab_strong.png",
+						"selectedIconPath": "/static/images/tab_strong_active.png"
+					},
+					{
+						"pagePath": "/pages/rank/rank",
+						"text": "我的自选",
+						"iconPath": "/static/images/tab_rank.png",
+						"selectedIconPath": "/static/images/tab_rank_active.png"
+					},
+					{
+						"pagePath": "/pages/mine/mine",
+						"text": "个人中心",
+						"iconPath": "/static/images/tab_mine.png",
+						"selectedIconPath": "/static/images/tab_mine_active.png"
+					}
+				]
+			}
+		},
+		beforeCreate() {},
+		beforeMount() {},
+		methods: {
+			//跳转
+			switchTab(e) {
+				uni.switchTab({
+					url: e.pagePath
+				})
+			}
+		}
+	}
+</script>
+
+<style scoped>
+	.tab-bar {
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		background: #fff;
+		box-shadow: 0 0 10rpx #ddd;
+		z-index: 10;
+		/* padding-bottom: 10px; */
+		padding:  0 10px 15px 10px;
+	}
+
+	.inner {
+		display: flex;
+		height: 100rpx;
+	}
+
+	.tab-bar-item {
+		position: relative;
+		flex: 1;
+		display: flex;
+		text-align: center;
+		justify-content: space-around;
+		align-items: center;
+		flex-direction: column;
+		height: 100rpx;
+		padding-top: 8rpx;
+	}
+
+	.tab-cover-img {
+		display: block;
+		width: 48rpx;
+		height: 48rpx;
+	}
+
+	.tab-cover-view {
+		font-size: 20rpx;
+	}
+
+	.tab-cover-view1 {
+		font-weight: 800;
+	}
+
+	.tab-cover-view2 {
+		font-weight: 500;
+	}
+
+	.tab-bar-badge {
+		position: absolute;
+		top: 6rpx;
+		left: 50%;
+		margin-left: 6rpx;
+		background: red;
+		border-radius: 50%;
+		width: 28rpx;
+		height: 28rpx;
+		line-height: 28rpx;
+		text-align: center;
+		font-size: 22rpx;
+		color: #fff;
+	}
+
+	.tab-bars {
+		box-sizing: content-box;
+		height: 100rpx;
+		width: 750rpx;
+		padding-bottom: 15px;
+	}
+</style>

+ 127 - 0
src/components/poolDev.vue

@@ -0,0 +1,127 @@
+<template>
+	<view class="home">
+		<swiper class="swiper" circular :indicator-dots="indicatorDots" :autoplay="autoplay">
+			<swiper-item v-for="(item,index) in banner" :key="index">
+				<image class="swiper-item" :src="item" mode=""></image>
+			</swiper-item>
+		</swiper>
+		<view class="home-goods">
+			<view v-for="(item,index) in dataList" :key="index" class="data-list" @click="goDoods(item)">
+				<image class="thumb" :src="item.thumb" mode=""></image>
+				<view class="name">{{item.name}}</view>
+				<view class="money">¥{{item.money}}</view>
+			</view>
+		</view>
+		<view class="no_data" v-if="dataList.length<=0 && !nodata">暂无数据~</view>
+		<view class="no_data" v-if="nodata">暂无更多~</view>
+	</view>
+</template>
+
+<script setup>
+	import {
+		ref,
+		reactive,
+		onMounted,
+		unref,
+		computed,
+		watch
+	} from 'vue';
+	import {
+		onLoad,
+		onReady,
+		onShow,
+		onReachBottom
+	} from '@dcloudio/uni-app';
+	import home1 from '/static/images/home/home1.png';
+	const banner = ref([
+		'https://img13.360buyimg.com/pcpubliccms/jfs/t1/311461/32/1002/135580/68257980F8aaf636f/ae851f75de6f780b.jpg.avif',
+		'https://img10.360buyimg.com/pcpubliccms/s1440x1440_jfs/t1/101458/36/44450/126805/64effce2Fddbe98e2/8156dc6f322774fe.jpg.avif'
+	])
+	const indicatorDots = ref(true)
+	const autoplay = ref(true)
+
+	const dataList = ref([{
+			thumb: 'https://img13.360buyimg.com/pcpubliccms/jfs/t1/311461/32/1002/135580/68257980F8aaf636f/ae851f75de6f780b.jpg.avif',
+			name: '英雄(HERO)【新年礼物】钢笔 382商务办公学生日常书写铱金签字墨水礼盒装 黑色明尖',
+			money: '59.00',
+			id: 0
+		},
+		{
+			thumb: 'https://img10.360buyimg.com/pcpubliccms/s1440x1440_jfs/t1/235865/8/9679/129991/658bb2a5F0800a0c3/b844166dee370361.jpg.avif',
+			name: '法拉蒙笔记本本子A5加厚记事本商务羊巴皮面复古笔记本文具工作日记本会议记录本办公文具可',
+			money: '8.50',
+			id: 1
+		},
+		{
+			thumb: 'https://img10.360buyimg.com/pcpubliccms/s1440x1440_jfs/t1/101458/36/44450/126805/64effce2Fddbe98e2/8156dc6f322774fe.jpg.avif',
+			name: 'ujia 国潮笔记本子礼盒套装故宫国风文创记事本伴手礼教师节礼物送老师企业可定制 两件套礼盒',
+			money: '80.00',
+			id: 2
+		},
+		{
+			thumb: 'https://img10.360buyimg.com/pcpubliccms/s1440x1440_jfs/t1/253778/26/26667/91830/67c12cffFba1bcd79/2d2111f16c6d867c.jpg.avif',
+			name: '晨光(M&G)文具 故宫金榜题名学生文具礼盒套装15件套 中性笔钢笔涂卡铅笔考试送礼HAGP1694马年礼礼盒',
+			money: '99.00',
+			id: 3
+		}
+	])
+	const nodata = ref(false)
+	const httpobj = ref({
+		page: 1,
+		limit: 10
+	})
+	onLoad((res) => {});
+
+	const goDoods = (row) => {
+		uni.navigateTo({
+			url: '/pages/goodsInfo/goodsInfo?id=' + row.id,
+		});
+	}
+</script>
+
+<style scoped>
+	.home .swiper {
+		width: 750rpx;
+		height: 400rpx;
+	}
+
+	.home .swiper-item {
+		width: 750rpx;
+		height: 400rpx;
+	}
+
+	.home .home-goods {
+		width: 750rpx;
+		margin-top: 25rpx;
+		padding: 0 30rpx;
+		display: flex;
+		flex-wrap: wrap;
+		gap: 30rpx 20rpx;
+	}
+
+	.home .data-list {
+		width: 335rpx;
+		background-color: #ffffff;
+		border-radius: 20rpx;
+		overflow: hidden;
+		padding-bottom: 20rpx;
+	}
+
+	.home .thumb {
+		width: 335rpx;
+		height: 336rpx;
+	}
+
+	.home .name {
+		font-size: 28rpx;
+		color: #1D2129;
+		padding: 10rpx 15rpx;
+	}
+
+	.home .money {
+		font-weight: bold;
+		font-size: 30rpx;
+		color: #B38E58;
+		padding: 0rpx 15rpx;
+	}
+</style>

+ 36 - 28
src/manifest.json

@@ -1,24 +1,24 @@
 {
-    "name": "miniprogram-1",
-    "appid": "",
-    "description": "",
-    "versionName": "1.0.0",
-    "versionCode": "100",
-    "transformPx": false,
-    "app-plus": {
-        "usingComponents": true,
-        "nvueStyleCompiler": "uni-app",
-        "compilerVersion": 3,
-        "splashscreen": {
-            "alwaysShowBeforeRender": true,
-            "waiting": true,
-            "autoclose": true,
-            "delay": 0
+    "name" : "miniprogram-1",
+    "appid" : "__UNI__1F6FE23",
+    "description" : "",
+    "versionName" : "1.0.0",
+    "versionCode" : "100",
+    "transformPx" : false,
+    "app-plus" : {
+        "usingComponents" : true,
+        "nvueStyleCompiler" : "uni-app",
+        "compilerVersion" : 3,
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
         },
-        "modules": {},
-        "distribute": {
-            "android": {
-                "permissions": [
+        "modules" : {},
+        "distribute" : {
+            "android" : {
+                "permissions" : [
                     "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
                     "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
                     "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
@@ -36,17 +36,25 @@
                     "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
                 ]
             },
-            "ios": {},
-            "sdkConfigs": {}
+            "ios" : {},
+            "sdkConfigs" : {}
         }
     },
-    "quickapp": {},
-    "mp-weixin": {
-        "appid": "",
-        "setting": {
-            "urlCheck": false
+    "quickapp" : {},
+    "mp-weixin" : {
+        "appid" : "wx9d7e6e3592830447",
+        "setting" : {
+            "urlCheck" : false,
+            "es6" : true,
+            "postcss" : true,
+            "minified" : true
         },
-        "usingComponents": true
+        "usingComponents" : true,
+        "permission" : {
+            "scope.userLocation" : {
+                "desc" : "提供更好的门店体验"
+            }
+        }
     },
-    "vueVersion": "3"
+    "vueVersion" : "3"
 }

+ 8 - 1
src/pages.json

@@ -71,7 +71,13 @@
       "style": {
         "navigationBarTitleText": "联系我们"
       }
-    }
+	},
+	{
+		"path": "pages/goodsInfo/goodsInfo",
+		"style": {
+			"navigationBarTitleText": "商品详情"
+		}
+	}
   ],
   "globalStyle": {
     "navigationBarBackgroundColor": "#ffffff",
@@ -85,6 +91,7 @@
     }
   },
   "tabBar": {
+	"custom": true, // 👈 关键:启用自定义 tabBar
     "color": "#999999",
     "selectedColor": "#5d55e8",
     "backgroundColor": "#ffffff",

+ 225 - 0
src/pages/goodsInfo/goodsInfo.vue

@@ -0,0 +1,225 @@
+<template>
+	<view class="goods">
+		<swiper class="swiper" circular :indicator-dots="indicatorDots" :autoplay="autoplay">
+			<swiper-item v-for="(item,index) in dataInfo.pics" :key="index">
+				<image class="swiper-image" :src="item" mode=""></image>
+			</swiper-item>
+		</swiper>
+		<view class="goods-bos">
+			<view class="name">{{dataInfo.name || ''}}</view>
+			<view class="money">
+				<text style="font-size: 20rpx;margin-right: 10rpx;">¥</text>
+				<text v-if="dataInfo.money">{{dataInfo.money}}</text>
+			</view>
+		</view>
+		<view class="goods-info">
+			<view class="title-bos">
+				<view class="border"></view>
+				<view style="margin: 0 30rpx;">图文介绍</view>
+				<view class="border"></view>
+			</view>
+			<view>
+				<rich-text :nodes="dataInfo.body"></rich-text>
+			</view>
+		</view>
+		<view style="height: 120rpx;"></view>
+		<view class="goods-bnt">
+			<view class="bnt" @click="submit">联系我们</view>
+		</view>
+	</view>
+</template>
+
+<script setup>
+	import {
+		ref,
+		reactive,
+		onMounted,
+		unref,
+		computed,
+		watch
+	} from 'vue';
+	import {
+		onLoad,
+		onReady
+	} from '@dcloudio/uni-app';
+
+	const listgoods = ref(
+		[{
+				pics: [
+					'https://img13.360buyimg.com/pcpubliccms/jfs/t1/311461/32/1002/135580/68257980F8aaf636f/ae851f75de6f780b.jpg.avif'
+				],
+				name: '英雄(HERO)【新年礼物】钢笔 382商务办公学生日常书写铱金签字墨水礼盒装 黑色明尖',
+				money: '59.00',
+				body: "<img style='width: 80%;' src='https://img30.360buyimg.com/sku/jfs/t1/291314/20/2530/84305/6819c4c1Ff559fff8/9bad62486e9ab7f1.jpg.avif' alt='' />"
+			},
+			{
+				pics: [
+					'https://img10.360buyimg.com/pcpubliccms/s1440x1440_jfs/t1/235865/8/9679/129991/658bb2a5F0800a0c3/b844166dee370361.jpg.avif'
+				],
+				name: '法拉蒙笔记本本子A5加厚记事本商务羊巴皮面复古笔记本文具工作日记本会议记录本办公文具可',
+				money: '8.50',
+				body: "<img style='width: 80%;' src='https://img10.360buyimg.com/pcpubliccms/s1440x1440_jfs/t1/382485/10/4148/60242/6948dbc1F414e596d/57bd86d962d81a4c.jpg.avif' alt='' />"
+			},
+			{
+				pics: [
+					'https://img10.360buyimg.com/pcpubliccms/s1440x1440_jfs/t1/101458/36/44450/126805/64effce2Fddbe98e2/8156dc6f322774fe.jpg.avif'
+				],
+				name: 'ujia 国潮笔记本子礼盒套装故宫国风文创记事本伴手礼教师节礼物送老师企业可定制 两件套礼盒',
+				money: '80.00',
+				body: "<img style='width: 80%;' src='https://img10.360buyimg.com/pcpubliccms/s1440x1440_jfs/t1/86893/20/41375/99189/64cb22daF615c285a/a8e94fc19663f41f.jpg.avif' alt='' />"
+			},
+			{
+				pics: [
+					'https://img10.360buyimg.com/pcpubliccms/s1440x1440_jfs/t1/253778/26/26667/91830/67c12cffFba1bcd79/2d2111f16c6d867c.jpg.avif'
+				],
+				name: '晨光(M&G)文具 故宫金榜题名学生文具礼盒套装15件套 中性笔钢笔涂卡铅笔考试送礼HAGP1694马年礼礼盒',
+				money: '99.00',
+				body: "<img style='width: 80%;' src='https://img10.360buyimg.com/pcpubliccms/s1440x1440_jfs/t1/100556/14/30048/134138/6296fc94E6127f554/924cbf870371929c.jpg.avif' alt='' />"
+			}
+		])
+
+	const id = ref(null)
+	const dataInfo = ref({
+		pics: [],
+		money: ''
+	})
+	const indicatorDots = ref(true)
+	const autoplay = ref(true)
+	const number = ref(1)
+	onLoad((res) => {
+		dataInfo.value = listgoods.value[res.id]
+		console.log(dataInfo.value, '?????????')
+		id.value = res.id
+	});
+
+
+
+	const submit = () => {
+		uni.makePhoneCall({
+		  phoneNumber: '13429886783', // 必填,电话号码(字符串格式)
+		  success: function () {
+		    console.log('拨号成功');
+		  },
+		  fail: function (err) {
+		    console.error('拨号失败', err);
+		  }
+		});
+		// uni.showModal({
+		// 	title: '门店地址',
+		// 	confirmText: '知道了',
+		// 	confirmColor: '#B38E58',
+		// 	showCancel: false,
+		// 	content: '湖北省武汉市武昌市中南路521号',
+		// 	success: function(res) {
+		// 		if (res.confirm) {}
+		// 	}
+		// });
+	}
+
+	const goHome = () => {
+		uni.switchTab({
+			url: '/pages/index/index'
+		});
+	}
+</script>
+
+<style scoped>
+	.goods {
+		padding-bottom: constant(safe-area-inset-bottom);
+		padding-bottom: env(safe-area-inset-bottom);
+	}
+
+	.swiper {
+		width: 750rpx;
+		height: 600rpx;
+	}
+
+	.swiper-image {
+		width: 750rpx;
+		height: 600rpx;
+	}
+
+	.goods-bos {
+		background-color: #ffffff;
+		width: 750rpx;
+		padding-bottom: 20rpx;
+
+
+	}
+
+	.name {
+		font-weight: 800;
+		font-size: 32rpx;
+		color: #222A42;
+		margin-bottom: 10rpx;
+		padding: 20rpx 30rpx 10rpx 30rpx;
+	}
+
+	.money {
+		font-size: 40rpx;
+		color: #B38E58;
+		padding: 0 30rpx;
+	}
+
+	.goods-info {
+		background: #FFFFFF;
+		width: 750rpx;
+		margin-top: 20rpx;
+		padding: 20rpx;
+
+	}
+
+	.title-bos {
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		font-weight: 600;
+		font-size: 28rpx;
+		color: #333333;
+
+	}
+
+	.border {
+		width: 100rpx;
+		height: 1rpx;
+		background-color: #D6D6D6;
+	}
+
+	.goods-bnt {
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		height: 100rpx;
+		background-color: #FFFFFF;
+		width: 750rpx;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		padding-left: 50rpx;
+		padding-right: 50rpx;
+
+
+	}
+
+	.home {
+		font-size: 24rpx;
+		color: #969696;
+	}
+
+	image {
+		height: 48rpx;
+		width: 48rpx;
+	}
+
+	.bnt {
+		width: 354rpx;
+		height: 80rpx;
+		border-radius: 44rpx;
+		line-height: 80rpx;
+		text-align: center;
+		background: linear-gradient(90deg, #EBCA9D 0%, #CFAB7A 100%);
+		color: #ffffff;
+		font-size: 32rpx;
+
+	}
+</style>

+ 15 - 2
src/pages/index/index.vue

@@ -1,6 +1,7 @@
 <template>
   <view class="page-container">
-    <scroll-view class="scroll-view" scroll-y>
+	  <PoolDev v-if="app.globalData.envVersion == 'develop'"></PoolDev>
+    <scroll-view class="scroll-view" scroll-y v-else>
       <view class="content-wrapper">
 
         <!-- 顶部查询卡片 -->
@@ -242,6 +243,7 @@
         <view class="bottom-safe-area"></view>
       </view>
     </scroll-view>
+	<ComTabBar :url="'/pages/index/index'"></ComTabBar>
   </view>
 </template>
 
@@ -253,6 +255,8 @@ import DateSelector from '../../components/DateSelector.vue'
 
 // 引入 onShow 生命周期
 import { onShow } from '@dcloudio/uni-app'
+import PoolDev from '../../components/poolDev.vue'
+import ComTabBar from '../../components/ComTabBar.vue'
 
 const keyword = ref('')
 const loading = ref(false)
@@ -266,6 +270,7 @@ const isLoggedIn = ref(false)
 const selectedDate = ref('') // 选中的日期
 const currentStockCode = ref('') // 当前查询的股票代码
 let timer = null
+const app = getApp();
 
 /**
  * 页面加载时检查登录状态
@@ -279,9 +284,17 @@ onMounted(() => {
  * 页面显示时检查登录状态(从登录页返回时会触发)
  */
 onShow(() => {
+	
+	uni.hideTabBar({
+		success: () => {},
+		fail: () => {}
+	});
+	
   isLoggedIn.value = checkLoginStatus()
   // 设置导航栏标题
-  uni.setNavigationBarTitle({ title: '量化交易大师' })
+  uni.setNavigationBarTitle({
+  	title: app.globalData.envVersion == 'develop' ? '首页' : '量化交易大师'
+  })
 })
 
 /**

+ 2 - 2
src/pages/login/login.vue

@@ -27,7 +27,7 @@
         class="login-btn primary-btn"
         @click="handleWxLogin"
       >
-        <text class="btn-text">微信一键登录</text>
+        <text class="btn-text">一键登录</text>
       </button>
 
       <!-- 新用户第二步:授权手机号登录(已完成头像昵称授权后显示) -->
@@ -38,7 +38,7 @@
         @getphonenumber="handleGetPhoneNumber"
       >
         <text class="btn-icon">🔐</text>
-        <text class="btn-text">授权手机号完成注册</text>
+        <text class="btn-text">手机号快捷登录</text>
       </button>
 
       <!-- 新用户第一步:获取头像昵称 -->

+ 11 - 1
src/pages/mine/mine.vue

@@ -56,6 +56,7 @@
         <view class="bottom-safe-area"></view>
       </view>
     </scroll-view>
+		<ComTabBar :url="'/pages/mine/mine'"></ComTabBar>
   </view>
 </template>
 
@@ -64,6 +65,7 @@ import { ref } from 'vue'
 import { onShow } from '@dcloudio/uni-app'
 import { isLoggedIn as checkLogin, getUserInfo as getStoredUserInfo, refreshUserInfo, logout, checkLogin as requireLogin } from '@/utils/auth.js'
 import { getImageUrl } from '@/utils/api.js'
+import ComTabBar from '../../components/ComTabBar.vue'
 
 const isLoggedIn = ref(false)
 const isAdmin = ref(false)
@@ -72,13 +74,21 @@ const userInfo = ref({
   avatar: '',
   status: 0
 })
+const app = getApp();
 
 /**
  * 页面显示时刷新用户信息
  */
 onShow(() => {
+	uni.hideTabBar({
+		success: () => {},
+		fail: () => {}
+	});
+	
   loadUserInfo()
-  uni.setNavigationBarTitle({ title: '量化交易大师' })
+  uni.setNavigationBarTitle({
+  	title: app.globalData.envVersion == 'develop' ? '个人中心' : '量化交易大师'
+  })
 })
 
 /**

+ 15 - 3
src/pages/pool/pool.vue

@@ -1,6 +1,7 @@
 <template>
   <view class="page-container">
-    <scroll-view class="scroll-view" scroll-y>
+	  <PoolDev v-if="app.globalData.envVersion == 'develop'"></PoolDev>
+    <scroll-view class="scroll-view" scroll-y v-else>
       <view class="content-wrapper">
         <!-- 超短精选池标题 -->
         <view class="pool-header-section">
@@ -71,7 +72,7 @@
         <view class="bottom-safe-area"></view>
       </view>
     </scroll-view>
-
+	<ComTabBar :url="'/pages/pool/pool'"></ComTabBar>
     <!-- 购买弹窗 -->
     <PurchaseModal
       :visible="showModal"
@@ -94,6 +95,8 @@ import { getStockQuotes, addUserStock, getStockPoolList, createOrder, wxPay, che
 import PurchaseModal from '../../components/PurchaseModal.vue'
 import PerformanceCard from '../../components/PerformanceCard.vue'
 import HistorySearchCard from '../../components/HistorySearchCard.vue'
+import PoolDev from '../../components/poolDev.vue'
+import ComTabBar from '../../components/ComTabBar.vue'
 
 const isPurchased = ref(false)
 const showModal = ref(false)
@@ -105,6 +108,7 @@ const isPaying = ref(false) // 是否正在支付中(防止重复点击)
 const stockList = ref([])
 let refreshTimer = null
 let subscriptionTimer = null
+const app = getApp();
 
 // 性能统计数据
 const performanceStats = reactive({
@@ -403,11 +407,19 @@ onLoad(() => {
 })
 
 onShow(() => {
+	
+	uni.hideTabBar({
+		success: () => {},
+		fail: () => {}
+	});
+	
   console.log('[超短池] onShow')
   isPageVisible.value = true
   checkPurchaseStatus()
   startSubscriptionRefresh()
-  uni.setNavigationBarTitle({ title: '量化交易大师' })
+  uni.setNavigationBarTitle({
+  	title: app.globalData.envVersion == 'develop' ? '商品' : '量化交易大师'
+  })
 })
 
 onHide(() => {

+ 23 - 5
src/pages/rank/rank.vue

@@ -1,6 +1,9 @@
 <template>
   <view class="page-rank">
-    <scroll-view class="scroll-view" scroll-y>
+	  <view class="develop" v-if="app.globalData.envVersion == 'develop'">
+	  		  暂无选择商品
+	  </view>
+    <scroll-view class="scroll-view" scroll-y v-else>
       <view class="content-wrapper">
         <!-- 上证指数卡片 -->
         <view class="index-card">
@@ -145,7 +148,7 @@
         <view class="bottom-safe-area"></view>
       </view>
     </scroll-view>
-
+	<ComTabBar :url="'/pages/rank/rank'"></ComTabBar>
   </view>
 </template>
 
@@ -154,7 +157,7 @@ import { ref, nextTick, reactive } from 'vue'
 import { onLoad, onShow, onHide, onUnload } from '@dcloudio/uni-app'
 import { isLoggedIn as checkLoginStatus } from '../../utils/auth.js'
 import { getStockQuotes, getIndexQuote, getUserStocks, deleteUserStock } from '../../utils/api.js'
-
+import ComTabBar from '../../components/ComTabBar.vue'
 // 保存组件实例(已移除,不再需要)
 
 const isLoggedIn = ref(false)
@@ -164,6 +167,7 @@ const isLoading = ref(false) // 加载状态
 const lastLoadTime = ref(0) // 上次加载时间
 const CACHE_DURATION = 5000 // 缓存有效期5秒
 const isPageVisible = ref(false) // 页面是否可见
+const app = getApp();
 
 // 获取随机刷新间隔 (2000-3000ms)
 const getRandomInterval = () => 2000 + Math.random() * 1000
@@ -770,6 +774,12 @@ onLoad(() => {
 })
 
 onShow(() => {
+	
+	uni.hideTabBar({
+		success: () => {},
+		fail: () => {}
+	});
+	
   console.log('[我的股票] onShow 触发')
   isPageVisible.value = true
 
@@ -806,8 +816,9 @@ onShow(() => {
     // 否则使用缓存策略
     loadMyStocks(false)
   }
-
-  uni.setNavigationBarTitle({ title: '量化交易大师' })
+  uni.setNavigationBarTitle({
+  	title: app.globalData.envVersion == 'develop' ? '我的自选' : '量化交易大师'
+  })
 })
 
 onHide(() => {
@@ -1373,4 +1384,11 @@ onUnload(() => {
 .login-button-native::after {
   border: none;
 }
+
+.develop{
+	padding: 30rpx;
+	font-size: 14px;
+	line-height: 20px;
+	color: #666666;
+}
 </style>

+ 35 - 2
src/pages/strong/strong.vue

@@ -1,6 +1,22 @@
 <template>
   <view class="page-container">
-    <scroll-view class="scroll-view" scroll-y>
+	  <view class="develop" v-if="app.globalData.envVersion == 'develop'">
+		  强势池 · 文具介绍
+		  ——以笔为刃,以纸为疆,书写你的强势人生
+		  在喧嚣世界中,总有人不甘平庸。
+		  强势池(StrongPool),诞生于对极致书写的执念,专为不甘示弱、敢于表达的你而造。
+		  我们相信,一支好笔,不只是工具,更是态度的延伸;一本好本,不只是记录,更是思想的战场。
+		  从高密度顺滑墨水到人体工学握感设计,从抗撕耐磨纸张到极简硬核美学——强势池将工业精度与青年精神熔铸一体,打造兼具性能与气场的文具装备。
+		  🔥 核心系列:
+		  「锋刃」速干中性笔:0.5mm精钢笔尖,3秒速干,字迹如刀刻,拒绝晕染。
+		  「铁幕」硬壳笔记本:120g加厚内页,防水封面,摔不烂、压不垮,灵感永不掉线。
+		  「暗涌」金属修正带:静音顺滑,一拉即净,错误?强势覆盖。
+		  「领地」桌面收纳系统:模块化设计,秩序即力量。
+		  强势池,不止文具,更是你的精神外装。
+		  无论考场、会议室,还是深夜书桌——
+		  写下的每一笔,都是宣言。
+	  </view>
+    <scroll-view class="scroll-view" scroll-y v-else>
       <view class="content-wrapper">
         <!-- 强势趋势池标题 -->
         <view class="pool-header-section">
@@ -51,6 +67,7 @@
         <view class="bottom-safe-area"></view>
       </view>
     </scroll-view>
+		<ComTabBar :url="'/pages/strong/strong'"></ComTabBar>
   </view>
 </template>
 
@@ -60,10 +77,12 @@ import { onLoad, onShow, onHide } from '@dcloudio/uni-app'
 import { isLoggedIn as checkLoginStatus } from '../../utils/auth.js'
 import { getStockQuotes, addUserStock, getStockPoolList } from '../../utils/api.js'
 import HistorySearchCard from '../../components/HistorySearchCard.vue'
+import ComTabBar from '../../components/ComTabBar.vue'
 
 const isPageVisible = ref(false) // 页面是否可见
 const stockList = ref([])
 let refreshTimer = null
+const app = getApp();
 
 // 获取涨跌样式
 const getChangeClass = (changePercent) => {
@@ -184,10 +203,17 @@ onLoad(() => {
 })
 
 onShow(() => {
+	uni.hideTabBar({
+		success: () => {},
+		fail: () => {}
+	});
+	
   console.log('[强势池] onShow')
   isPageVisible.value = true
   loadAndStartRefresh()
-  uni.setNavigationBarTitle({ title: '量化交易大师' })
+  uni.setNavigationBarTitle({
+  	title: app.globalData.envVersion == 'develop' ? '介绍' : '量化交易大师'
+  })
 })
 
 onHide(() => {
@@ -427,4 +453,11 @@ onUnmounted(() => {
 .bottom-safe-area {
   height: 80rpx;
 }
+
+.develop{
+	padding: 30rpx;
+	font-size: 14px;
+	line-height: 20px;
+	color: #666666;
+}
 </style>

+ 1 - 1
src/utils/api.js

@@ -7,7 +7,7 @@
 const ENV = 'prod' // 'dev' | 'prod'
 
 const CONFIG = {
-  dev: 'http://localhost:8081',      // 开发环境
+  dev: 'https://www.whzhangsheng.cn/applet-api',      // 开发环境
   local:'http://192.168.1.171:8081',
   prod: 'https://www.whzhangsheng.cn/applet-api'    // 生产环境
 }

Неке датотеке нису приказане због велике количине промена