cmy 8 月之前
父節點
當前提交
f8c7f4c9e4

+ 1 - 1
manifest.json

@@ -1,6 +1,6 @@
 {
     "name" : "人人益生121",
-    "appid" : "__UNI__70BC0AE",
+    "appid" : "__UNI__3F43051",
     "description" : "人人益生121",
     "versionName" : "3.0.0",
     "versionCode" : 301,

+ 6 - 13
pages.json

@@ -412,23 +412,16 @@
 				    }
 				  }
 				},
+				{
+				  "path": "user_integral/greedTarget",
+				  "style": {
+				    "navigationBarTitleText": "绿积分转账"
+				  }
+				},
 				{
 				  "path": "user_integral/itemuser",
 				  "style": {
 				    "navigationBarTitleText": "购买绿积分"
-				      // #ifdef MP
-				      ,
-				    "navigationBarTextStyle": "black",
-				    "navigationBarBackgroundColor": "#FFFFFF"
-				      // #endif
-				      ,
-				    "app-plus": {
-				      // #ifdef APP-PLUS
-				      "titleNView": {
-				        "type": "default"
-				      }
-				      // #endif
-				    }
 				  }
 				},
 				{

+ 253 - 87
pages/index/index.vue

@@ -1,40 +1,36 @@
 <template>
 	<!-- 首页 -->
 	<view v-if="pageShow" class="page"
-		:class="bgTabVal==2?'fullsize noRepeat':bgTabVal==1?'repeat ysize':'noRepeat ysize'"
-		:style="[pageStyle]">
+		:class="bgTabVal==2?'fullsize noRepeat':bgTabVal==1?'repeat ysize':'noRepeat ysize'" :style="[pageStyle]">
 		<view v-if="!errorNetwork" :style="colorStyle">
 			<!-- 轮播搜索 -->
-			<homeComb v-if="showHomeComb" :dataConfig="homeCombData" @bindSortId="bindSortId":isScrolled="isScrolled"></homeComb>
+			<homeComb v-if="showHomeComb" :dataConfig="homeCombData" @bindSortId="bindSortId" :isScrolled="isScrolled">
+			</homeComb>
 			<!-- 顶部搜索框 -->
 			<headerSerch v-if="isHeaderSerch" :dataConfig="headerSerchCombData"></headerSerch>
-			<tabNav v-if="showCateNav" :dataConfig="cateNavData" @bindHeight="bindHeighta"
-				@bindSortId="bindSortId" :isFixed="isFixed && !cateNavData.stickyConfig.tabVal"></tabNav>
+			<tabNav v-if="showCateNav" :dataConfig="cateNavData" @bindHeight="bindHeighta" @bindSortId="bindSortId"
+				:isFixed="isFixed && !cateNavData.stickyConfig.tabVal"></tabNav>
 			<view class="index">
 				<!-- 自定义样式 -->
 				<block v-for="(item, index) in styleConfig" :key="index">
 					<shortVideo v-if="item.name == 'shortVideo'" :dataConfig="item">
 					</shortVideo>
-					<userInfor v-if="item.name == 'userInfor'" :dataConfig="item"
-						@changeLogin="changeLogin">
+					<userInfor v-if="item.name == 'userInfor'" :dataConfig="item" @changeLogin="changeLogin">
 					</userInfor>
 					<newVip v-if="item.name == 'newVip'" :dataConfig="item"></newVip>
 					<!-- 文章列表 -->
 					<articleList v-if="item.name == 'articleList'" :dataConfig="item">
 					</articleList>
-					<bargain v-if="item.name == 'bargain'" :dataConfig="item" @changeBarg="changeBarg"
-						></bargain>
+					<bargain v-if="item.name == 'bargain'" :dataConfig="item" @changeBarg="changeBarg"></bargain>
 					<blankPage v-if="item.name == 'blankPage'" :dataConfig="item"></blankPage>
 					<combination v-if="item.name == 'combination'" :dataConfig="item">
 					</combination>
 					<!-- 优惠券 -->
-					<coupon v-if="item.name == 'coupon'" :dataConfig="item"
-						@changeLogin="changeLogin"></coupon>
+					<coupon v-if="item.name == 'coupon'" :dataConfig="item" @changeLogin="changeLogin"></coupon>
 					<!-- 客户服务 -->
 					<customerService v-if="item.name == 'customerService'" :dataConfig="item">
 					</customerService>
 					<!-- 商品列表 -->
-					<goodList v-if="item.name == 'goodList'" :dataConfig="item"></goodList>
 					<guide v-if="item.name == 'guide'" :dataConfig="item"></guide>
 					<!-- 直播模块 -->
 					<!-- #ifdef  MP-WEIXIN -->
@@ -47,7 +43,7 @@
 					<pictureCube v-if="item.name == 'pictureCube'" :dataConfig="item"></pictureCube>
 					<!-- 促销列表 -->
 					<promotionList v-if="item.name == 'promotionList'" :dataConfig="item"
-					:productVideoStatus='product_video_status' :positionTop="positionTop">
+						:productVideoStatus='product_video_status' :positionTop="positionTop">
 					</promotionList>
 					<richText v-if="item.name == 'richText'" :dataConfig="item"></richText>
 					<seckill v-if="item.name == 'seckill'" :dataConfig="item"></seckill>
@@ -66,57 +62,123 @@
 					<hotspot v-if="item.name == 'hotspot'" :dataConfig="item"></hotspot>
 					<follow v-if="item.name == 'follow'" :dataConfig="item"></follow>
 				</block>
+				<view class="goodsTitle" v-if="joinList.length>0">
+					<text class='borderBottom'>
+						抢购商品
+					</text>
+				</view>
+				<view class="goodsItem" v-if="joinList.length>0">
+					<view class="itemList" @click="addCartChange(item)" v-for="(item,index) in joinList">
+						<view class="itemImage">
+							<image class="imageBanner" :src="item.image" mode="widthFix"></image>
+						</view>
+						<view class="itemContent">
+							<view class="itemTitle">
+								{{item.store_name}}
+							</view>
+							<view class="itemMoney">
+								<baseMoney :money="item.price" symbolSize="24" integerSize="40" decimalSize="24" weight
+								           ></baseMoney>
+							</view>
+							<view class="bottomCart">
+								<view class="flex-center cart-btn">
+									<text class="iconfont icon-ic_increase fs-26"></text>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+				<view class="goodsTitle" v-if="giveList.length>0">
+					<text class='borderBottom'>
+						爆单商品
+					</text>
+				</view>
+				<view class="goodsItem" v-if="giveList.length>0">
+					<view class="itemList" @click="addCartChange(item)" v-for="(item,index) in giveList">
+						<view class="itemImage">
+							<image class="imageBanner" :src="item.image" mode="widthFix"></image>
+						</view>
+						<view class="itemContent">
+							<view class="itemTitle">
+								{{item.store_name}}
+							</view>
+							<view class="itemMoney">
+								<baseMoney :money="item.price" symbolSize="24" integerSize="40" decimalSize="24" weight
+								           ></baseMoney>
+							</view>
+							<view class="greenIn" v-if="item.give_award_range">
+								<text class="greenText">
+								{{item.give_award_range}}
+								</text>
+								绿积分
+							</view>
+							<view class="bottomCart">
+								<view class="flex-center cart-btn">
+									<text class="iconfont icon-ic_increase fs-26"></text>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+				<block v-for="(item, index) in styleConfig" :key="index">
+					<!-- 商品列表 -->
+				</block>
 				<!-- 分类商品模块 -->
 				<!-- #ifndef  APP-PLUS -->
 				<view class="sort-product px-20" v-if="sortList.children && sortList.children.length">
 				<!-- #endif -->
-				<!-- #ifdef  APP-PLUS -->
-				<!-- 商品排序 -->
-				<view class="sort-product px-20" :style="{ marginTop: sortMpTop + 'px' }"
-					v-if="sortList.children && sortList.children.length">
-				<!-- #endif -->
-					<view class="rd-24rpx bg--w111-fff p-24 mb-24" v-if="sortList.children && sortList.children.length">
-						<scroll-view scroll-x="true" class="white-nowrap vertical-middle w-full" show-scrollbar="false">
-							<view class="inline-block mr-24" v-for="(item, index) in sortList.children" :key="index">
-								<view class="flex-col flex-center" @tap="changeSort(item, index)">
-									<view class="picture w-90 h-90 rd-50-p111-"
-										:class="{select: curSort == index}">
-										<image :src="item.pic" class="w-full h-full rd-50-p111-"></image>
+					<!-- #ifdef  APP-PLUS -->
+					<!-- 商品排序 -->
+					<view class="sort-product px-20" :style="{ marginTop: sortMpTop + 'px' }"
+						v-if="sortList.children && sortList.children.length">
+					<!-- #endif -->
+						<view class="rd-24rpx bg--w111-fff p-24 mb-24"
+							v-if="sortList.children && sortList.children.length">
+							<scroll-view scroll-x="true" class="white-nowrap vertical-middle w-full"
+								show-scrollbar="false">
+								<view class="inline-block mr-24" v-for="(item, index) in sortList.children"
+									:key="index">
+									<view class="flex-col flex-center" @tap="changeSort(item, index)">
+										<view class="picture w-90 h-90 rd-50-p111-" :class="{select: curSort == index}">
+											<image :src="item.pic" class="w-full h-full rd-50-p111-"></image>
+										</view>
+										<text class="fs-24 pt-14"
+											:class="{'font-num': curSort == index}">{{item.cate_name}}</text>
 									</view>
-									<text class="fs-24 pt-14" :class="{'font-num': curSort == index}">{{item.cate_name}}</text>
 								</view>
-							</view>
-						</scroll-view>
-					</view>
-					<waterfallsFlow ref="waterfallsFlow" :wfList="goodList" @itemTap="goDetail"></waterfallsFlow>
-					<Loading :loaded="loaded" :loading="loading"></Loading>
-					<view v-if="goodList.length == 0 && loaded">
-						<emptyPage title="暂无商品,去看点别的吧~" ></emptyPage>
+							</scroll-view>
+						</view>
+						<waterfallsFlow ref="waterfallsFlow" :wfList="goodList" @itemTap="goDetail"></waterfallsFlow>
+						<Loading :loaded="loaded" :loading="loading"></Loading>
+						<view v-if="goodList.length == 0 && loaded">
+							<emptyPage title="暂无商品,去看点别的吧~"></emptyPage>
+						</view>
 					</view>
-				</view>
-				<couponWindow :window="isCouponShow" @onColse="couponClose" :couponImage="couponObj.image"
-					:couponList="couponObj.list"></couponWindow>
+					<couponWindow :window="isCouponShow" @onColse="couponClose" :couponImage="couponObj.image"
+						:couponList="couponObj.list"></couponWindow>
+					
 					<!-- #ifdef H5 -->
-				<view v-if="site_config" class="site-config" @click="goICP">{{ site_config }}</view>
-				<!-- #endif -->
-				<view class="pb-safe" :style="[pdHeights]" v-if="isFooter"></view>
-				<pageFooter  @newDataStatus="newDataStatus"></pageFooter>
+					<view v-if="site_config" class="site-config" @click="goICP">{{ site_config }}</view>
+					<!-- #endif -->
+					<view class="pb-safe" :style="[pdHeights]" v-if="isFooter"></view>
+					<pageFooter @newDataStatus="newDataStatus"></pageFooter>
+				</view>
 			</view>
-		</view>
-		<view v-else>
-			<view class="error-network">
-				<image :src="imgHost + '/statics/images/error-network.gif'"></image>
-				<view class="title">网络连接断开</view>
-				<view class="con">
-					<view class="label">请检查情况:</view>
-					<view class="item">· 在设置中是否已开启网络权限</view>
-					<view class="item">· 当前是否处于弱网环境</view>
-					<view class="item">· 版本是否过低,升级试试吧</view>
+			<view v-else>
+				<view class="error-network">
+					<image :src="imgHost + '/statics/images/error-network.gif'"></image>
+					<view class="title">网络连接断开</view>
+					<view class="con">
+						<view class="label">请检查情况:</view>
+						<view class="item">· 在设置中是否已开启网络权限</view>
+						<view class="item">· 当前是否处于弱网环境</view>
+						<view class="item">· 版本是否过低,升级试试吧</view>
+					</view>
+					<view class="btn" @click="reconnect">重新连接</view>
 				</view>
-				<view class="btn" @click="reconnect">重新连接</view>
 			</view>
+
 		</view>
-	</view>
 </template>
 
 <script>
@@ -171,39 +233,53 @@
 	import waterfallsFlow from "@/components/WaterfallsFlow/WaterfallsFlow.vue";
 	import emptyPage from '@/components/emptyPage.vue';
 	// #ifdef MP
-	import {getTemlIds} from '@/api/api.js';
+	import {
+		getTemlIds
+	} from '@/api/api.js';
 	import {
 		SUBSCRIBE_MESSAGE,
 		TIPS_KEY
 	} from '@/config/cache';
 	// #endif
-	import {mapGetters,mapMutations} from 'vuex';
-	import {getDiy, getDiyVersion} from '@/api/api.js';
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex';
+	import {
+		getDiy,
+		getDiyVersion
+	} from '@/api/api.js';
 	import {
 		getCategoryList,
 		getProductslist,
 		getProductHot,
 		diyProductApi
 	} from '@/api/store.js';
-	import { goShopDetail } from '@/libs/order.js';
-	import { toLogin } from '@/libs/login.js';
-	import { HTTP_REQUEST_URL } from '@/config/app';
+	import {
+		goShopDetail
+	} from '@/libs/order.js';
+	import {
+		toLogin
+	} from '@/libs/login.js';
+	import {
+		HTTP_REQUEST_URL
+	} from '@/config/app';
 	import pageFooter from '@/components/pageFooter/index.vue';
 	import Loading from '@/components/Loading/index.vue';
 	import recommend from '@/components/recommend';
 	export default {
 		computed: {
-			pageStyle(){
+			pageStyle() {
 				return {
 					backgroundColor: this.bgColor,
 					backgroundImage: this.bgPic ? `url(${this.bgPic})` : '',
 					minHeight: this.windowHeight + 'px'
 				}
 			},
-			pdHeights(){
+			pdHeights() {
 				let H = `${this.pdHeight*2 + 100}rpx`
-				return{
-					height: this.isFooter?H:'100rpx'
+				return {
+					height: this.isFooter ? H : '100rpx'
 				}
 			},
 			...mapGetters(['isLogin', 'uid', 'cartNum']),
@@ -285,9 +361,9 @@
 				isHeaderSerch: false,
 				showHomeComb: false,
 				showCateNav: false,
-				homeCombData:{},
-				headerSerchCombData:{},
-				cateNavData:{},
+				homeCombData: {},
+				headerSerchCombData: {},
+				cateNavData: {},
 				bgColor: '',
 				bgPic: '',
 				bgTabVal: '',
@@ -300,7 +376,9 @@
 				confirm_video_status: false,
 				positionTop: 0,
 				isFooter: false,
-				pdHeight:0 //自定义底部导航上下边距和
+				pdHeight: 0, //自定义底部导航上下边距和
+				giveList: [], //爆单商品
+				joinList: [], //抢购商品
 			};
 		},
 		onLoad(options) {
@@ -314,7 +392,10 @@
 					}
 				});
 			})
-			const {state, scope} = options;
+			const {
+				state,
+				scope
+			} = options;
 			this.diyData();
 			// #ifdef H5
 			this.setOpenShare();
@@ -349,8 +430,9 @@
 					}
 				});
 			});
+			this.getInitGoods();
 		},
-		onUnload(){
+		onUnload() {
 			// 清除监听
 			uni.$off('activeFn');
 		},
@@ -393,6 +475,27 @@
 		onReady() {},
 		methods: {
 			...mapMutations(['SET_AUTOPLAY']),
+			addCartChange(item){
+				uni.navigateTo({
+				  url: `/pages/goods_details/index?id=${item.id}`
+				});
+			},
+			getInitGoods() {
+				getProductslist({
+					page: 1,
+					limit: 1000,
+					give_award_range: 1,
+				}).then(res => {
+					this.giveList = res.data
+				});
+				getProductslist({
+					page: 1,
+					limit: 1000,
+					join_games: 1,
+				}).then(res => {
+					this.joinList = res.data
+				});
+			},
 			getCopyRight() {
 				copyRight().then(res => {
 					let data = res.data;
@@ -482,7 +585,7 @@
 				this.styleConfig = [];
 				if (data.type == 1) {
 					this.getProductList(data.classPage);
-				}else{
+				} else {
 					this.sortList = [];
 					this.getMicroPage(data.microPage, true);
 				}
@@ -500,15 +603,15 @@
 				});
 				getDiy(id).then(res => {
 					uni.hideLoading();
-          let data = res.data;
-          let diyArr = that.objToArr(res.data.value);
-          diyArr = diyArr.filter(item => item.isHide !== '1');
-          diyArr.forEach((item,index) => {
-            if(['headerSerch','homeComb'].includes(item.name)){
-              diyArr.splice(index, 1);
-            }
-          });
-          this.styleConfig = diyArr;
+					let data = res.data;
+					let diyArr = that.objToArr(res.data.value);
+					diyArr = diyArr.filter(item => item.isHide !== '1');
+					diyArr.forEach((item, index) => {
+						if (['headerSerch', 'homeComb'].includes(item.name)) {
+							diyArr.splice(index, 1);
+						}
+					});
+					this.styleConfig = diyArr;
 				}).catch(err => {
 					return that.$util.Tips({
 						title: err
@@ -674,7 +777,7 @@
 						this.showHomeComb = true
 						this.homeCombData = item;
 						if (item.searchConfig.tabVal) {
-							this.positionTop = uni.getSystemInfoSync().statusBarHeight+43
+							this.positionTop = uni.getSystemInfoSync().statusBarHeight + 43
 						}
 					}
 					if (item.name == 'headerSerch') {
@@ -685,9 +788,9 @@
 						this.showCateNav = true;
 						this.cateNavData = item;
 					}
-          if (item.isHide !== '1') {
-            temp.push(item);
-          }
+					if (item.isHide !== '1') {
+						temp.push(item);
+					}
 				});
 
 				function sortNumber(a, b) {
@@ -754,7 +857,7 @@
 					});
 				});
 			},
-			newDataStatus(val,num) {
+			newDataStatus(val, num) {
 				this.isFooter = val ? true : false;
 				this.pdHeight = num;
 			},
@@ -810,14 +913,14 @@
 		//#ifdef MP
 		onShareAppMessage() {
 			let uid = this.uid ? this.uid : 0;
-			if(this.shareInfo.img){
+			if (this.shareInfo.img) {
 				return {
 					title: this.shareInfo.title,
 					path: '/pages/index/index?spid=' + uid,
 					imageUrl: this.shareInfo.img,
 					desc: this.shareInfo.synopsis
 				};
-			}else{
+			} else {
 				return {
 					title: this.shareInfo.title,
 					path: '/pages/index/index?spid=' + uid
@@ -936,7 +1039,70 @@
 			width: 100%;
 		}
 	}
-	.select{
+
+	.select {
 		border: 1px solid var(--view-theme);
 	}
-</style>
+
+	.goodsTitle {
+		font-size: 30rpx;
+		padding: 0rpx 30rpx;
+		line-height: 1;
+
+		.borderBottom {
+			border-bottom: 4px solid #e93323;
+		}
+	}
+
+	.goodsItem {
+		display: flex;
+		justify-content: space-between;
+		flex-wrap: wrap;
+		padding: 30rpx;
+
+		.itemList {
+			width: 48%;
+			border-radius: 20rpx;
+			overflow: hidden;
+			background-color: #FFF;
+		}
+		.itemContent{
+			padding:  20rpx;
+			line-height: 1;
+			position: relative;
+			.itemTitle{
+				font-size: 28rpx;
+			}
+			.itemMoney{
+				color: var(--view-theme);
+				font-weight: bold;
+				padding: 10rpx 0;
+			}
+			.greenIn{
+				font-size: 20rpx;
+				.greenText{
+					font-size: 32rpx;
+					color: $uni-color-success;
+				}
+			}
+			.bottomCart{
+				position: absolute;
+				right: 20rpx;
+				bottom: 20rpx;
+				background:linear-gradient(90deg, var(--view-theme) 0%, var(--view-gradient) 100%); ;
+				border-radius: 100%;
+				width: 44rpx;
+				height: 44rpx;
+				color:#FFF;
+				line-height: 44rpx;
+			}
+		}
+
+		.itemImage {
+			line-height: 0;
+			.imageBanner {
+				width: 100%;
+			}
+		}
+	}
+</style>

+ 39 - 4
pages/user/index.vue

@@ -13,13 +13,22 @@
 					<view class="txt">余额</view>
 				</view> -->
 				<view class="num-item" @click="goMenuPage('/pages/users/user_integral/greed')">
+					<view class="txt flex">
+						<image class="userIcon" src="../../static/images/user01.png" mode="scaleToFill"></image>
+						<text>绿积分</text>
+					</view>
 					<text class="num">{{userInfo.green_integral || 0}}</text>
-					<view class="txt">绿积分</view>
 				</view>
 				<!-- <view class="num-item" @click="goMenuPage('/pages/users/user_integral/integral')"> -->
 				<view class="num-item">
-					<text class="num">{{userInfo.award_range || 0}}</text>
-					<view class="txt">分红额度</view>
+					<view class="txt flex">
+						<image class="userIcon" src="../../static/images/user02.png" mode="scaleToFill"></image>
+						<text>分红额度</text>
+					</view>
+					<text class="num">{{userFhed}}%</text>
+				</view>
+				<view class="payGreenIn" @click="goMenuPage('/pages/users/user_integral/itemuser')">
+					购买绿积分
 				</view>
 				<!-- <view class="num-item" @click="goMenuPage('/pages/users/user_integral/integral')">
 					<text class="num">{{userInfo.static_integral || 0}}</text>
@@ -144,7 +153,15 @@
 			...mapGetters({
 				cartNum: 'cartNum',
 				isLogin: 'isLogin'
-			})
+			}),
+			userFhed() {
+				const userInfo = this.userInfo;
+				if (userInfo.award_range) {
+					return +(userInfo.award_range / (userInfo.award_range + userInfo.send_award_range) * 100).toFixed(2);
+				} else {
+					return 0
+				}
+			},
 		},
 		filters: {},
 		mixins: [colors],
@@ -762,6 +779,13 @@
 			color: #FFFFFF;
 
 		}
+		.payGreenIn{
+			color: #FFF;
+			background: linear-gradient(-30deg, #FF8F3B, #FF3106);
+			padding: 20rpx 30rpx;
+			margin-right: 30rpx;
+			border-radius: 20rpx;
+		}
 
 		.num-item {
 			width: 33.33%;
@@ -792,6 +816,17 @@
 				margin-top: 8rpx;
 				font-size: 26rpx;
 				color: #555;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				color:#666666;
+				line-height: 1;
+				padding-bottom: 20rpx;
+				.userIcon {
+					width: 28rpx;
+					height: 28rpx;
+					margin-right: 10rpx;
+				}
 			}
 		}
 	}

二進制
pages/users/static/logo2.png


文件差異過大導致無法顯示
+ 63 - 144
pages/users/user_integral/greed.vue


文件差異過大導致無法顯示
+ 244 - 0
pages/users/user_integral/greedTarget.vue


+ 58 - 6
pages/users/user_integral/itemuser.vue

@@ -1,10 +1,10 @@
 <template>
 	<view :style="colorStyle">
-		<view style="padding-top: 30rpx;">
+		<!-- <view style="padding-top: 30rpx;">
 			<view class="money">
 				建议售价:{{greeMoney}}
 			</view>
-		</view>
+		</view> -->
 		<view class="promoter-list">
 			<view class='list' v-if="recordList.length">
 				<block v-for="(item,index) in recordList" :key="index">
@@ -20,6 +20,10 @@
 						</view>
 						<view class="right">
 							<view><text class="num">{{item.green_integral|| 0}}</text></view>
+							<view @click="callPhone(item.phone)">
+								<image class="phoneOpen" src="../../../static/images/phone.png" mode="scaleToFill">
+								</image>
+							</view>
 						</view>
 					</view>
 				</block>
@@ -67,14 +71,14 @@
 				isShowAuth: false, //是否隐藏授权
 				count: 0,
 				status: false,
-				greeMoney: '',
+				// greeMoney: '',
 			};
 		},
 		computed: mapGetters(['isLogin']),
 		onLoad() {
-			getIndexData().then((res) => {
-				this.greeMoney = res.data.green_integral_price
-			});
+			// getIndexData().then((res) => {
+			// 	this.greeMoney = res.data.green_integral_price
+			// });
 			if (this.isLogin) {
 				this.userSpreadNewList();
 			} else {
@@ -93,6 +97,46 @@
 			this.is_show = true;
 		},
 		methods: {
+			callPhone(phone) {
+				// #ifndef APP
+				uni.makePhoneCall({
+					phoneNumber: `${phone}`,
+					fail(e) {
+						console.log(e)
+					}
+				})
+				// #endif
+				// #ifdef APP
+				if (uni.getSystemInfoSync().platform == 'android') {
+					uni.showModal({
+						title: '申请拨打电话权限',
+						content: '是否允许App拨打电话?',
+						cancelText: '拒绝',
+						confirmText: '允许',
+						success: res => {
+							if (res.confirm) {
+								uni.makePhoneCall({
+									phoneNumber: `${phone}`,
+									fail(e) {
+										console.log(e)
+									}
+								})
+							}
+						},
+						fail: () => {},
+						complete: () => {}
+					});
+				} else {
+					uni.makePhoneCall({
+						phoneNumber: `${phone}`,
+						fail(e) {
+							console.log(e)
+						}
+					})
+				}
+				// #endif
+
+			},
 			onLoadFun(e) {
 				this.userSpreadNewList();
 				this.isShowAuth = false;
@@ -285,4 +329,12 @@
 	.radius15 {
 		border-radius: 14rpx 14rpx 0 0;
 	}
+
+	.phoneOpen {
+		width: 50rpx;
+		height: 50rpx;
+		background-color: skyblue;
+		border-radius: 100%;
+		margin-top: 10rpx;
+	}
 </style>

二進制
static/images/greedIcon.png


二進制
static/images/greedTar.png


二進制
static/images/phone.png


二進制
static/images/support.png


二進制
static/images/user01.png


二進制
static/images/user02.png


部分文件因文件數量過多而無法顯示