1
0

2 Commity 8f9be027e1 ... de36b6a8e0

Autor SHA1 Správa Dátum
  lihongxiao de36b6a8e0 app 8 mesiacov pred
  lihongxiao 13b4ab3ee9 更新 8 mesiacov pred
100 zmenil súbory, kde vykonal 5905 pridanie a 3802 odobranie
  1. 7 7
      config/baseUrl.js
  2. 4 0
      main.js
  3. 2 3
      manifest.json
  4. 63 10
      pages.json
  5. 9 9
      pages/components/card.vue
  6. 20 10
      pages/components/date-picker.vue
  7. 82 0
      pages/components/leverStaff.vue
  8. 23 55
      pages/components/seach.vue
  9. 351 0
      pages/index/applypartner.vue
  10. 430 0
      pages/index/applystudio.vue
  11. 363 0
      pages/index/applyteam.vue
  12. 0 819
      pages/index/index - 副本.vue
  13. 204 63
      pages/index/index.vue
  14. 118 0
      pages/index/result.vue
  15. 0 346
      pages/institutional/institutional - 副本.vue
  16. 2 2
      pages/institutional/institutional.vue
  17. 1 1
      pages/institutional/institutionalDetail.vue
  18. 546 231
      pages/institutional/institutionalTeam.vue
  19. 0 210
      pages/institutional/partner - 副本.vue
  20. 802 256
      pages/institutional/partner.vue
  21. 5 5
      pages/institutional/partnerDetail.vue
  22. 11 7
      pages/login/login.vue
  23. 1 1
      pages/my/commission.vue
  24. 1 1
      pages/my/commissionDetail.vue
  25. 0 808
      pages/my/my - 副本.vue
  26. 579 325
      pages/my/my.vue
  27. 1 1
      pages/my/withdrawalDetail.vue
  28. 672 0
      pages/statistics/statistics.vue
  29. 1 1
      pages/tools/team/team.vue
  30. 0 579
      pages/wallet/bankCard - 副本.vue
  31. 1 1
      pages/wallet/billInfo.vue
  32. 8 6
      pages/wallet/withdraw.vue
  33. 0 0
      static/beijing (2).png
  34. BIN
      static/code.png
  35. 0 0
      static/hehuor.png
  36. BIN
      static/icon/code.png
  37. BIN
      static/icon/code2.png
  38. 0 0
      static/icon/dianhua.png
  39. 0 0
      static/icon/jibie.png
  40. 0 0
      static/icon/jibie1.png
  41. 0 0
      static/icon/jibie3.png
  42. 0 0
      static/icon/jibie4.png
  43. 0 0
      static/icon/jibie5.png
  44. 0 0
      static/icon/jibie6.png
  45. 0 0
      static/icon/nan.png
  46. 0 0
      static/icon/nv.png
  47. BIN
      static/icon/paiming1.png
  48. BIN
      static/icon/paiming2.png
  49. BIN
      static/icon/paiming3.png
  50. 0 0
      static/icon/right.png
  51. 0 0
      static/icon/tab/home1.png
  52. 0 0
      static/icon/tab/home2.png
  53. 0 0
      static/icon/tab/my1.png
  54. 0 0
      static/icon/tab/my2.png
  55. BIN
      static/icon/tab/tongji1.png
  56. BIN
      static/icon/tab/tongji2.png
  57. 0 0
      static/icon/weixin.png
  58. BIN
      static/icon/搜索.png
  59. BIN
      static/image/login/2.png
  60. BIN
      static/image/login/biyan.png
  61. BIN
      static/image/login/mima.png
  62. BIN
      static/image/login/shoujihao.png
  63. BIN
      static/image/login/yanzhengma.png
  64. BIN
      static/image/login/zhanghao.png
  65. BIN
      static/image/login/zhengyan.png
  66. BIN
      static/image/my/baocun.png
  67. 0 0
      static/image/my/beijing.png
  68. BIN
      static/image/my/fenxiang.png
  69. BIN
      static/image/my/kefu.png
  70. 0 0
      static/image/my/nan.png
  71. 0 0
      static/image/my/nv.png
  72. BIN
      static/image/my/shenfenzz.png
  73. BIN
      static/image/my/shenqing.png
  74. BIN
      static/image/my/shenzf.png
  75. BIN
      static/image/my/tichu.png
  76. BIN
      static/image/my/weixin.png
  77. 0 0
      static/image/my/wuxingb.png
  78. BIN
      static/image/my/yinhangka.png
  79. BIN
      static/shenqing.png
  80. BIN
      static/work.png
  81. BIN
      static/zhaomum.png
  82. BIN
      static/工作室.png
  83. 0 37
      uni_modules/qiun-data-charts/changelog.md
  84. 16 6
      uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue
  85. 2 1
      uni_modules/qiun-data-charts/package.json
  86. 1 1
      uni_modules/qiun-data-charts/readme.md
  87. 92 0
      uni_modules/uni-popup/changelog.md
  88. 45 0
      uni_modules/uni-popup/components/uni-popup-dialog/keypress.js
  89. 316 0
      uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue
  90. 143 0
      uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue
  91. 187 0
      uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue
  92. 7 0
      uni_modules/uni-popup/components/uni-popup/i18n/en.json
  93. 8 0
      uni_modules/uni-popup/components/uni-popup/i18n/index.js
  94. 7 0
      uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json
  95. 7 0
      uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json
  96. 45 0
      uni_modules/uni-popup/components/uni-popup/keypress.js
  97. 26 0
      uni_modules/uni-popup/components/uni-popup/popup.js
  98. 90 0
      uni_modules/uni-popup/components/uni-popup/uni-popup.uvue
  99. 518 0
      uni_modules/uni-popup/components/uni-popup/uni-popup.vue
  100. 88 0
      uni_modules/uni-popup/package.json

+ 7 - 7
config/baseUrl.js

@@ -7,20 +7,20 @@ if (process.env.NODE_ENV === 'development') {
 	// baseUrl = "http://192.168.0.55:8080"; //蔡雅茹
 	baseUrl = "http://192.168.0.52:8080"; //贺礼霄
 	// baseUrl = "https://test.baoxianzhanggui.com/web-api"; //测试
-	// h5BaseUrl = "https://test.baoxianzhanggui.com/h5";
+	h5BaseUrl = "https://test.baoxianzhanggui.com/copartnerH5";
 	// baseUrl = "https://pre.baoxianzhanggui.com/web-api"; //预生产
 	// h5BaseUrl = "https://pre.baoxianzhanggui.com/h5";
 	// baseUrl = "https://sxzgkj.baoxianzhanggui.com/web-api"; //生产
-	h5BaseUrl = "https://sxzgkj.baoxianzhanggui.com/h5";
+	// h5BaseUrl = "http://192.168.0.52:8080/copartnerH5";
 	socketUrl = "";
 } else if (process.env.NODE_ENV === 'production') {
 	// 生产环境
-	// baseUrl = "https://test.baoxianzhanggui.com/web-api"; //测试
-	// h5BaseUrl = "https://test.baoxianzhanggui.com/h5";
+	baseUrl = "https://test.baoxianzhanggui.com/web-api"; //测试
+	h5BaseUrl = "https://test.baoxianzhanggui.com/copartnerH5";
 	// baseUrl = "https://pre.baoxianzhanggui.com/web-api"; //预生产
-	// h5BaseUrl = "https://pre.baoxianzhanggui.com/h5";
-	baseUrl = "https://sxzgkj.baoxianzhanggui.com/web-api"; //生产
-	h5BaseUrl = "https://sxzgkj.baoxianzhanggui.com/h5";
+	// h5BaseUrl = "https://pre.baoxian8zhanggui.com/copartnerH5";
+	// baseUrl = "https://sxzgkj.baoxianzhanggui.com/web-api"; //生产
+	// h5BaseUrl = "https://sxzgkj.baoxianzhanggui.com/copartnerH5";
 	socketUrl = "";
 }
 const courtConfig = {

+ 4 - 0
main.js

@@ -1,6 +1,10 @@
 import Vue from 'vue'
 import uView from "uview-ui";
 Vue.use(uView);
+import uiEcharts from '@/uni_modules/ui-echarts'
+Vue.use(uiEcharts)
+// import uPopup from '@/uni_modules/uni-popup'
+// Vue.use(uPopup)
 import App from './App'
 
 //数据管理中心

+ 2 - 3
manifest.json

@@ -9,8 +9,8 @@
             "src" : "图片路径"
         }
     ],
-    "versionName" : "1.0.0",
-    "versionCode" : 100,
+    "versionName" : "1.0.9",
+    "versionCode" : 109,
     "app-plus" : {
         "error" : {
             "url" : "hybrid/html/error.html"
@@ -29,7 +29,6 @@
         },
         "modules" : {
             "Messaging" : {},
-            "Camera" : {},
             "OAuth" : {},
             "Share" : {},
             "SQLite" : {}

+ 63 - 10
pages.json

@@ -183,6 +183,46 @@
 			// 	}
 			// }
 		},
+		{
+			"path": "pages/index/result", 
+			"style": {
+				"navigationBarTitleText": "申请结果",
+				"app-plus": {
+					"bounce": "none", //关闭反弹效果
+					"scrollIndicator": "none" //隐藏滚动条
+				}
+			}
+		},
+		{
+			"path": "pages/index/applypartner", 
+			"style": {
+				"navigationBarTitleText": "申请成为合伙人",
+				"app-plus": {
+					"bounce": "none", //关闭反弹效果
+					"scrollIndicator": "none" //隐藏滚动条
+				}
+			}
+		},
+		{
+			"path": "pages/index/applystudio", 
+			"style": {
+				"navigationBarTitleText": "申请工作室",
+				"app-plus": {
+					"bounce": "none", //关闭反弹效果
+					"scrollIndicator": "none" //隐藏滚动条
+				}
+			}
+		},
+		{
+			"path": "pages/index/applyteam", 
+			"style": {
+				"navigationBarTitleText": "申请团队",
+				"app-plus": {
+					"bounce": "none", //关闭反弹效果
+					"scrollIndicator": "none" //隐藏滚动条
+				}
+			}
+		},
 		{
 			"path": "pages/login/minis", //隐私协议
 			"style": {
@@ -274,6 +314,19 @@
 				}
 			}
 		},
+		{
+			"path": "pages/statistics/statistics",
+			"style": {
+				"navigationBarTextStyle": "white",
+				"enablePullDownRefresh": false, //开启下拉刷新
+				"navigationStyle": "custom",
+				"app-plus": {
+					"scrollIndicator": "none",
+					"bounce": "none",
+					"titleNView": false
+				}
+			}
+		},
 		{
 			"path": "pages/my/my",
 			"style": {
@@ -1008,20 +1061,20 @@
 		"backgroundColor": "#ffffff",
 		"list": [{
 				"pagePath": "pages/index/index",
-				"iconPath": "static/icon/tab/首页2.png",
-				"selectedIconPath": "static/icon/tab/首页1.png",
+				"iconPath": "static/icon/tab/home2.png",
+				"selectedIconPath": "static/icon/tab/home1.png",
 				"text": "首页"
 			},
-			// {
-			// 	"pagePath": "pages/orders/orders",
-			// 	"iconPath": "static/icon/tab/icon_xiaoxi.png",
-			// 	"selectedIconPath": "static/icon/tab/icon_xiaoxi_c.png",
-			// 	"text": "订单"
-			// },
+			{
+				"pagePath": "pages/statistics/statistics",
+				"iconPath": "static/icon/tab/tongji2.png",
+				"selectedIconPath": "static/icon/tab/tongji1.png",
+				"text": "统计"
+			},
 			{
 				"pagePath": "pages/my/my",
-				"iconPath": "static/icon/tab/我的2.png",
-				"selectedIconPath": "static/icon/tab/我的1.png",
+				"iconPath": "static/icon/tab/my2.png",
+				"selectedIconPath": "static/icon/tab/my1.png",
 				"text": "我的"
 			}
 		]

+ 9 - 9
pages/components/card.vue

@@ -6,24 +6,24 @@
 		<view class="dis j-s card-title">
 			<view>
 				<text style="font-size: 16px;">{{item.userName}}</text>
-				<image v-if="item.level==1 " style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/级别 (5).png" mode=""></image>
-				<image v-if="item.level==2 "  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/级别.png" mode=""></image>
-				<image v-if="item.level==3 "  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/级别 (1).png" mode=""></image>
-				<image v-if="item.level==4"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/级别 (2).png" mode=""></image>
-				<image v-if="item.level==5"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/级别 (3).png" mode=""></image>
-				<image v-if="item.level==6"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/级别 (4).png" mode=""></image>
+				<image v-if="item.level==1 " style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/jibie1.png" mode=""></image>
+				<image v-if="item.level==2 "  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/jibie.png" mode=""></image>
+				<image v-if="item.level==3 "  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/jibie3.png" mode=""></image>
+				<image v-if="item.level==4"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/jibie4.png" mode=""></image>
+				<image v-if="item.level==5"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/jibie5.png" mode=""></image>
+				<image v-if="item.level==6"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/jibie6.png" mode=""></image>
 			</view>
 			<text v-if="isStudio" @click="detail(item)">详情
-			<image style="display: inline-block; width: 9px;height:9px;vertical-align: -1px;" src="/static/icon/向右.png" mode=""></image></text>
+			<image style="display: inline-block; width: 9px;height:9px;vertical-align: -1px;" src="/static/icon/right.png" mode=""></image></text>
 		</view>
 		<view class="card-con dis j-c a-c">
-			<view >
+			<view v-if="!isStudio">
 				<text>{{item.suggestName || '无'}}</text>
 				<text>推荐人</text>
 			</view>
 			<view >
 				<text>{{item.teamManNum}}</text>
-				<text>总人数</text>
+				<text>会员总人数</text>
 			</view>
 			<view> 
 				<text>{{item.sumPremium}}</text>

+ 20 - 10
pages/components/date-picker.vue

@@ -8,8 +8,8 @@
    		</view>
    		<view style="padding: 15px">
    			<view class="popup-data dis j-s">
-   				<text :class="startShow? 'active' :''" @click="visible=true;startShow = true;endShow = false">{{ interviewStartTime||'开始时间' }}</text>至
-   				<text :class="endShow? 'active' :''" @click="visible=true;endShow = true;startShow = false">{{ interviewEndTime || '结束时间' }}</text>
+   				<text :class="startShow? 'active' :''" @click="startClick()">{{ interviewStartTime||'开始时间' }}</text>至
+   				<text :class="endShow? 'active' :''" @click="endClick()">{{ interviewEndTime || '结束时间' }}</text>
    			</view>
    			<picker-view v-show="visible" :indicator-style="indicatorStyle" :value="value" @change="bindChange"
    			  class="picker-view">
@@ -132,11 +132,9 @@
         let isDay = 30;
         if (month == 2) {
           if((year%4==0 && year%100!=0)||(year%400==0)){
-            console.log('闰年')
             isDay = 29;
           }else {
             isDay = 28;
-             console.log('平年')
           }
         } else if ([1,3,5,7,8,10,12].includes(month)) {
           isDay = 31;
@@ -144,7 +142,7 @@
           isDay = 30;
         }
       
-        for (let i = date.getFullYear(); i <= date.getFullYear()+12; i++) {
+        for (let i = date.getFullYear();  i >= 1900; i--) {
           years.push(i)
         }
         for (let i = 1; i <= 12; i++) {
@@ -174,8 +172,22 @@
       },
 	  reset(){
         this.$emit('update:visible', false);
-		this.interviewStartTime=''
-		this.interviewEndTime =''
+        this.interviewStartTime=''
+        this.interviewEndTime =''
+      },
+      startClick(){
+        // this.interviewStartTime=''
+        console.log(this.year ,this.month );
+        this.interviewStartTime = this.year+'-'+this.month+'-'+this.day
+        this.visible=true
+        this.startShow = true
+        this.endShow = false
+      },
+      endClick(){
+        this.interviewEndTime= this.year+'-'+this.month+'-'+this.day
+        this.visible=true
+        this.startShow = false
+        this.endShow = true
       },
       confirm() {
         // let monthStr = this.padZeroStr(this.month)
@@ -184,8 +196,7 @@
         // let minuteStr = this.padZeroStr(this.minute)
         // this.timeValue = `${this.year}/${monthStr}/${dayStr} ${hourStr}:${minuteStr}:00`;
         this.$emit('confirmPickDate', this.interviewStartTime,this.interviewEndTime);
-		this.$refs.popup.close()
-        // this.$emit('update:visible', false);
+		    this.$refs.popup.close()
       },
     },
   }
@@ -199,7 +210,6 @@
   	color: #333333;
   	padding:10px;
   	margin-bottom: 10px;
-  	border-bottom: 1px solid #EEEEEE;
   	position: relative;
   	text-align: center;
   	text:first-child {

+ 82 - 0
pages/components/leverStaff.vue

@@ -0,0 +1,82 @@
+<template>
+    <view>
+        <view class="partner-type dis">
+				<view style="width: 650px;overflow-x: auto;">
+					<text :class="typeStatistics == val.value ? 'selected' : ''" v-for="val in partnerTypeOption"
+						:key="val.value" @click="getPartnerType(val.value)">{{ val.lable }}</text>
+				</view>
+			</view> 
+    </view>
+</template>
+<script>
+import {
+	mapState,
+} from "vuex"
+export default {
+    data(){
+        return{
+			typeStatistics: 1,
+            partnerTypeOption: [
+				{
+					lable: '一级合伙人',
+					value: '1'
+				}, {
+					lable: '二级合伙人',
+					value: '2'
+				}, {
+					lable: '三级合伙人',
+					value: '3'
+				}, {
+					lable: '四级合伙人',
+					value: '4'
+				},
+			],
+        }
+    },
+    computed: {
+		...mapState(['userInfo']),
+	},
+    onLoad() {
+		this.level = this.userInfo.sysUser.level
+		if (this.level == 2) {
+			this.partnerTypeOption = this.partnerTypeOption.slice(0, -1);
+		}
+		if (this.level == 3) {
+			this.partnerTypeOption = this.partnerTypeOption.slice(0, -2);
+		}
+		if (this.level == 4) {
+			this.partnerTypeOption = this.partnerTypeOption.slice(0, 1);
+		}
+	},
+    methods:{
+        getPartnerType(type) {
+			this.typeStatistics = type
+            this.$emit('getPartnerType',type)
+		},
+    }
+}
+</script>
+<style lang="scss" scoped>
+
+.partner-type {
+	margin: 10px;
+	width: 97%;
+	overflow: hidden;
+	white-space: nowrap;
+
+	text {
+		display: inline-block;
+		border-radius: 14px 14px 14px 14px;
+		font-size: 14px;
+		color: #666666;
+		padding: 1px 10px;
+		background: #F4F4F4;
+		margin-right: 8px;
+	}
+
+	.selected {
+		color: #FFFFFF;
+		background: linear-gradient(132deg, #2DD9FF 0%, #2D6DFF 100%);
+	}
+}
+</style>

+ 23 - 55
pages/components/seach.vue

@@ -1,18 +1,18 @@
 <template>
 	<view class="partner-head">
-		<view class=" dis j-s" style="border: 1px solid #EEEEEE;padding: 10px;">
+		<view class=" dis j-s" style="border: 1px solid #EEEEEE;padding: 10px;color: #666666;">
 			<view class="dis ">
 			<text style="margin-right: 10px;" @click="industryShow = true">{{industryData}}<i></i></text>
 			<u-select mode="single-column" :list="industryoptions" v-model="industryShow"
 				label-name="lable" value-name="value"
 				@confirm="industryopConfirm($event)"></u-select>
-			<text v-if="partnerHierarchy" @click="cimodelclassShow = true">{{cimodelclassData}}<i></i></text>
+			<!-- <text v-if="partnerHierarchy" @click="cimodelclassShow = true">{{cimodelclassData}}<i></i></text>
 			<u-select mode="single-column" :list="vehicleTypeoptions" v-model="cimodelclassShow"
 				label-name="lable" value-name="value"
-				@confirm="dictionaryConfirm($event)"></u-select>
+				@confirm="dictionaryConfirm($event)"></u-select> -->
 				</view>
 			<view class="search-data" >
-				<text v-for="(val,index) in year" :key="index" :class="val.startShow? 'active' :''" @click="onSeachYear(index)">{{val.lable}}</text>
+				<text v-for="(val,index) in year" :key="index" :class="val.startShow? 'active' :''" @click="onSeachYear(val,index)">{{val.lable}}</text>
 			</view>
 		</view>
 		<view class="sum-insurance dis j-c a-c" v-if="!partnerHierarchy">
@@ -22,7 +22,7 @@
 			</view>
 			<view>
 				<text>{{directLsit.teamManNum}}</text>
-				<text>员总人数</text>
+				<text>员总人数</text>
 			</view>
 			<view style="border-right:none">
 				<text>{{directLsit.extractFee}}</text>
@@ -121,21 +121,20 @@ import myDatePicker from './date-picker.vue';
 				this.industryData=e[0].label
 				this.$emit('queryData',{industrySector:e[0].value==0?null:e[0].value})
 			},
-			onSeachYear(index){
-				this.year.map(i=>i.startShow=false)
-				this.year[index].startShow=true
+			onSeachYear(val,index){
+				this.year.map((value, i) => i === index ? value.startShow=!value.startShow : value.startShow=false);
 				let now = new Date();
 				let year = now.getFullYear();
 				let month = now.getMonth() + 1; // 月份是从0开始的,所以需要加1
 				let day = now.getDate();
-				if(index==0){
+				if(index==0 && val.startShow){
 					let theDay=`${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;
 					this.$emit('queryData',{beginTime:theDay+' 00:00:01' ,endTime:theDay+ ' 23:59:59'})
 				}
-				if(index==1){
+				else if(index==1 && val.startShow){
 					this.$emit('queryData',{beginTime:this.getCurrentMonthFirst()+' 00:00:01' ,endTime:this.getCurrentMonthLast()+ ' 23:59:59'})
 				}
-				if(index==2){
+				else if(index==2 && val.startShow){
 					let months = [];
 					// 获取当前季度的第一个月
 					let startMonth = month - (month % 3) + 1;
@@ -145,47 +144,16 @@ import myDatePicker from './date-picker.vue';
 					}
 					this.$emit('queryData',{beginTime: year +'-'+ months[0]+'-01 00:00:01' ,endTime: year+'-'+ months[2] + '-31 23:59:59'})
 				}
-				if(index==3){
+				else if(index==3 && val.startShow){
 					this.$emit('queryData',{beginTime:year+'-01-01 00:00:01' ,endTime:year+ '-12-31 23:59:59'})
 				}
-				if(index==4){
+				else if(index==4 && val.startShow){
 					this.$refs.datePicker.open()
 				}
-				// switch (index) {
-				// 	case 0:
-					
-				// 	console.log(month,111111111)
-				// 		let theDay=`${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;
-				// 		this.$emit('queryData',{beginTime:theDay+' 00:00:01' ,endTime:theDay+ ' 23:59:59'})
-				// 		break;
-				// 	case 1:
-				// 		this.$emit('queryData',this.getCurrentMonthFirst()+' 00:00:01' ,this.getCurrentMonthLast()+ ' 23:59:59')
-				// 		break;
-				// 	case 2:
-				// 		// let months = [];
-				// 		// // 获取当前季度的第一个月
-				// 		// let startMonth = month - (month % 3) + 1;
-				// 		// // 获取当前季度的下三个月
-				// 		// for (let i = 0; i < 3; i++) {
-				// 		//   months.push(startMonth + i);
-				// 		// }
-				// 		const month = now.getMonth();
-				// 		 const quarter = Math.floor(month / 3) + 1;
-				// 		  const firstMonthDay = new Date(year, quarter - 1 * 3, 1);
-				// 		  const lastMonthDay = new Date(year, quarter * 3, 0);
-					 
-				// 		//  const firstMonthFirstDay = firstMonthDay.toISOString().split('T')[0];
-				// 		//  const lastMonthLastDay = lastMonthDay.toISOString().split('T')[0];
-				// 		console.log(firstMonthDay,lastMonthDay,1111111)
-				// 		break;
-				// 	case 3:
-				// 		this.$emit('queryData',year+'-01-01 00:00:01' ,year+ '-12-31 23:59:59')
-				// 		break;
-				// 	case 4:
-				// 		this.$refs.datePicker.open()
-				// 		break;
-				// 	default:
-				// 	}
+				else{
+					this.$emit('queryData',{beginTime:'' ,endTime:''})
+				}
+				
 			},
 			 getCurrentMonthFirst() {
 				 // 获取当月第一天数据
@@ -213,8 +181,7 @@ import myDatePicker from './date-picker.vue';
 				if(dateStr1){
 					dateStr1+=' 23:59:59'
 				}
-				console.log(dateStr ,dateStr1,1111)
-				this.$emit('queryData', {dateStr ,dateStr1})
+				this.$emit('queryData', {beginTime:dateStr ,endTime:dateStr1})
 			},
 		}
 	}
@@ -238,16 +205,17 @@ import myDatePicker from './date-picker.vue';
 		}
 		.search-data{
 			color: #666666;
+			border: 1px solid #EEEEEE;
 			.active{
 				color: #FFFFFF;
 				background: linear-gradient( 132deg, #2DD9FF 0%, #2D6DFF 100%);
 			}
 			text{
-				// width: 25px;
-				// height: 25px;
-				// text-align: center;
-				padding: 5px 8px;
-				border: 1px solid #EEEEEE;
+				padding: 5px 6px;
+				border-left: 1px solid #EEEEEE;
+			}
+			text:first-child{
+				border-left: none
 			}
 		}
 	}

+ 351 - 0
pages/index/applypartner.vue

@@ -0,0 +1,351 @@
+<template>
+	<view>
+		<public-module></public-module>
+		
+		<view class="box"  :style="{background:`url(${indexBackgroundImage})`,backgroundSize: 'contain',backgroundRepeat: 'no-repeat'}">
+		<view class="box-con">
+			<uni-forms ref="personData"  :rules="rules" :value="personData"  label-width="100" validate-trigger="bind"
+					 err-show-type="toast">
+				<uni-forms-item label="姓名" required name="name">
+					<input class="uni-input-input textColor" placeholder="输入姓名" v-model="personData.name"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+				<uni-forms-item label="手机号" required   name="mobile">
+					<input class="uni-input-input textColor" maxlength="11"  placeholder="输入手机号" v-model="personData.mobile"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+				<uni-forms-item label="证件号" required  name="identity">
+					<input class="uni-input-input textColor" placeholder="输入证件号" v-model="personData.identity"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+				<uni-forms-item label="密码" required  name="password">
+					<input class="uni-input-input textColor" placeholder="输入密码" v-model="personData.password"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+				<uni-forms-item label="地址" required  name="address">
+					<input class="uni-input-input textColor" placeholder="输入地址" v-model="personData.address"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+			</uni-forms>
+		</view>
+		</view>
+		<!-- <view class="box-con" style="margin-top:10px">
+			<uni-forms :rules="carRules" :value="personData" ref="personData" validate-trigger="bind"
+				 err-show-type="toast" label-width="100">
+				<uni-forms-item label="开户行">
+					<input class="uni-input-input textColor" placeholder="输入开户行" v-model="personData.bankName"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+				<uni-forms-item label="开户账号">
+					<input class="uni-input-input textColor" placeholder="输入开户账号" v-model="personData.accountno"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+				<view >
+					<view>银行卡照片</view>
+					<view class="dis j-c" >
+						<image style="height: 95px;width: 150px;padding: 10px 0;" :src=" userfrontImg?userfrontImg:'/static/image/my/yinhangka.png'" mode=""
+							@click="userfrontChange"></image>
+					</view>
+				</view>
+			</uni-forms>
+		</view> -->
+		<view class="userBox" style="margin-top:10px">
+			<text>身份证件照</text>
+			<view class="dis j-s" style="margin: 10px 0;">
+				<view class="imgOcr-border">
+					<image :src=" userfrontImg?userfrontImg:'/static/image/my/shenfenzz.png'" mode=""
+						@click="userfrontChange"></image>
+					<view>人像面</view>
+				</view>
+				<view class="imgOcr-border">
+					<image :src="userbackImg?userbackImg:'/static/image/my/shenzf.png'" mode=""
+						@click="userbackChange"></image>
+						<view>国徽面</view>
+				</view>
+			</view>
+		</view>
+		<!-- <view class="userBox">
+			<u-checkbox v-model="checked"></u-checkbox>
+			<text>同时创建我的团队</text>
+		</view> -->
+		<view class="submit" @click="submit()">
+			提交
+		</view>
+	</view>
+</template>
+
+<script>
+	// import {
+	// 	mapState,
+	// 	mapMutations
+	// } from "vuex"
+	// import store from '@/store';
+	 import indexBackgroundImage from "@/static/shenqing.png"
+	export default {
+		// computed: {
+		// 	...mapState(['userInfo', "userCheckInfo", ]),
+		// },
+		data(){
+			return {
+				indexBackgroundImage:indexBackgroundImage,
+				checked:false,
+				userfrontImg: "",
+				userbackImg: "",
+				personData:{
+					name:'',
+					mobile:'',
+					identity:'',
+					password:'',
+					address:'',
+					esmUserImageVo:[]
+				},
+				rules:{
+					name:{
+						rules: [{
+							required: true,
+							errorMessage: '姓名不能为空'
+						}]
+					},
+					mobile:{
+						rules: [{
+							required: true,
+							errorMessage: '请输入手机号',
+						},
+						{
+							pattern: /^1[3-9]\d{9}$/,
+							errorMessage: '请输入正确的手机号',
+						}]
+					},
+					identity:{
+						rules: [{
+							required: true,
+							errorMessage: '请输入身份证号',
+						},
+						{
+							pattern: /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/,
+							errorMessage: '请输入正确的身份证号',
+						}]
+					},
+					password:{
+						rules: [{
+							required: true,
+							errorMessage: '请输入密码'
+						}]
+					},
+					address:{
+						rules: [{
+							required: true,
+							errorMessage: '请输入地址',
+						}]
+					},
+				},
+				level:'',
+				id:'',
+				userId:''
+			}
+	},
+	
+	async onLoad(e) {
+		this.level=e.level?e.level:''
+		this.userId=e.userId?e.userId:''
+		if(e.id){
+			this.id=e.id
+			this.$http.get('/user/' +e.id).then(res=>{
+				if(res.code==200){
+					this.personData={...res.data.sysUser,esmUserImageVo:[]}
+				}
+				else{
+					uni.showModal({
+						showCancel: false,
+						title: res.msg
+					})
+				}
+			})
+		}
+	},
+	methods:{
+		 submit(){
+			this.$refs.personData.submit().then(res => {
+				if(this.id){
+					this.$http.post('/user/updateUserInfo1/' +this.id, {
+						 esmUserImageVo: this.personData.esmUserImageVo,
+						 sysUser: this.personData,
+						 sysUserInfo:this.personData,
+					}).then(res=>{
+						if(res.code==200){
+							uni.redirectTo({
+								url: "/pages/index/result"
+							})
+						}
+						else{
+							uni.showModal({
+								showCancel: false,
+								title: res.msg
+							})
+						}
+					})
+				}else{
+					this.$http.post('/user/saveUserInfoByPartner', {
+						isPartner:"1",
+						sysUser:{...this.personData,roleId:"22",referrerId:this.userId,level:this.level,type:1},
+						esmUserImageVo:this.personData.esmUserImageVo
+					}).then(res=>{
+						if(res.code==200){
+							uni.redirectTo({
+								url: "/pages/index/result"
+							})
+						}
+						else{
+							uni.showModal({
+								showCancel: false,
+								title: res.msg
+							})
+						}
+					})
+				}
+			}).catch(err => {
+				console.log('err', err);
+			})
+		},
+		async userfrontChange() {
+			let [chooseImageErr, chooseImageRes] = await uni.chooseImage({
+				count: 1,
+				sizeType: ['compressed']
+			});
+		
+			let size = chooseImageRes.tempFiles[0].size / 1024 / 1024 < 5;
+			if (!size) {
+				this.$refs.uToast.show({
+					title: '上传图片大小不能超过 5MB!',
+					type: 'error',
+				})
+				return false
+			}
+			if (chooseImageRes) {
+				this.userfrontImg = chooseImageRes.tempFilePaths[0];
+				uni.uploadFile({
+					url: this.$base.baseUrl + '/ins/taskImage/uploadFileByPartner',
+					filePath: chooseImageRes.tempFilePaths[0],
+					name: "multipartFile",
+					formData: {
+						'type': 'image',
+					},
+					// header: {
+					// 	Authorization: store.state.token,
+					// },
+					success: (imgRes) => {
+						let data = JSON.parse(imgRes.data);
+						if (data.code == '200') {
+							// this.personData.esmUserImageVo[0]=data.data
+							this.personData.esmUserImageVo.push(
+								{
+								imageId: data.data.id,
+            					type: "SFZ_01",
+							}
+							)
+						}
+		
+					}
+				});
+			} 
+		},
+		async userbackChange() {
+			let [chooseImageErr, chooseImageRes] = await uni.chooseImage({
+				count: 1,
+				sizeType: ['compressed']
+			});
+			let size = chooseImageRes.tempFiles[0].size / 1024 / 1024 < 5;
+			if (!size) {
+				this.$refs.uToast.show({
+					title: '上传图片大小不能超过 5MB!',
+					type: 'error',
+				})
+				return false
+			}
+			if (chooseImageRes) {
+				this.userbackImg = chooseImageRes.tempFilePaths[0];
+				uni.uploadFile({
+					url: this.$base.baseUrl + '/ins/taskImage/uploadFileByPartner',
+					filePath: chooseImageRes.tempFilePaths[0],
+					name: "multipartFile",
+					formData: {
+						'type': 'image',
+					},
+					// header: {
+					// 	Authorization: store.state.token,
+					// },
+					success: (imgRes) => {
+						let data = JSON.parse(imgRes.data);
+						if (data.code == '200') {
+							this.personData.esmUserImageVo.push(
+								{
+								imageId: data.data.id,
+            					type: "SFZ_02",
+							}
+							)
+							// this.personData.esmUserImageVo[1]=data.data
+						}
+		
+					}
+				});
+			} 
+		},
+	},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.box {
+		height: 330px;
+		width: 100%;
+		background: #F9F9F9;
+		background: url(/static/image/my/shenqing.png) no-repeat;
+		background-size: contain;
+		padding: 130px 15px 0 15px;
+		// padding: 200px 16px 15px 16px;
+	}
+	.box-con{
+		background: #FFFFFF;
+		padding: 10px 15px;
+		border-radius: 5px 5px 5px 5px;
+	}
+	.userBox{
+		border-radius: 5px 5px 5px 5px;
+		margin:10px 15px;
+		padding: 10px 15px;
+		background: #fff;
+		font-size: 15px;
+		color: #666666;
+		.imgOcr-border {
+			// position: relative;
+			width: 48%;
+			text-align: center;
+			image {
+				display: inline-block;
+				height: 95px;
+				width: 100%;
+			}
+			
+			// .del_btn {
+			// 	position: absolute;
+			// 	cursor: pointer;
+			// 	position: absolute;
+			// 	top: 5rpx;
+			// 	right: 0;
+			// 	width: 50rpx;
+			// 	height: 50rpx;
+			// 	border-radius: 50%;
+			// 	z-index: 20;
+			// }
+		}
+	}
+	.submit{
+		margin: 15px;
+		text-align: center;
+		color: #fff;
+		height: 46px;
+		line-height: 46px;
+		background: linear-gradient( 133deg, #2DD9FF 0%, #2D6DFF 100%);
+		border-radius: 31px 31px 31px 31px;
+	}
+</style>

+ 430 - 0
pages/index/applystudio.vue

@@ -0,0 +1,430 @@
+<template>
+	<view>
+		<public-module></public-module>
+		
+		<view class="box"  :style="{background:`url(${indexBackgroundImage})`,backgroundSize: 'contain',backgroundRepeat: 'no-repeat'}">
+		<view class="box-con">
+			<uni-forms  :value="personData" ref="personData" validate-trigger="bind"
+				 err-show-type="toast" label-width="100" :rules="rules" >
+				<uni-forms-item label="姓名" name="name" required >
+					<input class="uni-input-input textColor" placeholder="输入姓名" v-model="personData.name"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+				<uni-forms-item label="手机号" required  name="mobile">
+					<input class="uni-input-input textColor"  maxlength="11"  placeholder="输入手机号" v-model="personData.mobile"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+				<uni-forms-item label="证件号" required  name="identity">
+					<input class="uni-input-input textColor" placeholder="输入证件号" v-model="personData.identity"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+				<uni-forms-item label="密码" required  name="password">
+					<input class="uni-input-input textColor" placeholder="输入密码" v-model="personData.password"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+				<uni-forms-item label="地址" required  name="address">
+					<input class="uni-input-input textColor" placeholder="输入地址" v-model="personData.address"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+			</uni-forms>
+		</view>
+		</view>
+		<!-- <view class="box-con" style="margin-top:10px">
+			<uni-forms :rules="carRules" :value="personData" ref="personData" validate-trigger="bind"
+				 err-show-type="toast" label-width="100">
+				<uni-forms-item label="开户行">
+					<input class="uni-input-input textColor" placeholder="输入开户行" v-model="personData.bankName"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+				<uni-forms-item label="开户账号">
+					<input class="uni-input-input textColor" placeholder="输入开户账号" v-model="personData.accountno"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+				<view >
+					<view>银行卡照片</view>
+					<view class="dis j-c" >
+						<image style="height: 95px;width: 150px;padding: 10px 0;" :src=" userfrontImg?userfrontImg:'/static/image/my/yinhangka.png'" mode=""
+							@click="userfrontChange"></image>
+					</view>
+				</view>
+			</uni-forms>
+		</view> -->
+		<view class="userBox" style="margin-top:10px">
+			<text>身份证件照</text>
+			<view class="dis j-s" style="margin: 10px 0;">
+				<view class="imgOcr-border">
+					<image :src=" userfrontImg?userfrontImg:'/static/image/my/shenfenzz.png'" mode=""
+						@click="userfrontChange"></image>
+					<view>人像面</view>
+				</view>
+				<view class="imgOcr-border">
+					<image :src="userbackImg?userbackImg:'/static/image/my/shenzf.png'" mode=""
+						@click="userbackChange"></image>
+						<view>国徽面</view>
+				</view>
+			</view>
+		</view>
+		<!-- <view class="userBox">
+			<uni-forms :rules="carRules" :value="personData" ref="personData" validate-trigger="bind"
+				 err-show-type="toast" label-width="100">
+				<uni-forms-item label="选择来源" required  name="deptSourceName">
+					<u-input v-model="personData.deptSourceName" type="select" :select-open="energyTypeShow"
+						@click="energyTypeShow = true" :custom-style="{textAlign:'right'}"
+						placeholder-style="color:#808080" placeholder="请选择来源" />
+					<u-select mode="single-column" :list="energyTypeoptions" v-model="energyTypeShow"
+						label-name="lable" value-name="value"
+						@confirm="dictionaryConfirm($event)"></u-select>
+				</uni-forms-item>
+				<uni-forms-item label="机构类型" required  name="deptName">
+					<u-input v-model="personData.deptName" type="select" :select-open="deptShow"
+						@click="deptShow = true" :custom-style="{textAlign:'right'}"
+						placeholder-style="color:#808080" placeholder="请选择机构类型" />
+					<u-select mode="single-column" :list="deptoptions" v-model="deptShow"
+						label-name="lable" value-name="value"
+						@confirm="deptConfirm($event)"></u-select>
+				</uni-forms-item>
+			</uni-forms>
+		</view> -->
+		<!-- <view class="userBox">
+			<u-checkbox v-model="checked"></u-checkbox>
+			<text>同时创建我的团队</text>
+		</view> -->
+		<view class="submit" @click="submit('personData')">
+			提交
+		</view>
+	</view>
+</template>
+
+<script>
+	// import {
+	// 	mapState,
+	// 	mapMutations
+	// } from "vuex"
+	// import store from '@/store';
+	import indexBackgroundImage from "@/static/shenqing.png"
+	export default {
+		// computed: {
+		// 	...mapState(['userInfo' ]),
+		// },
+		data(){
+			return {
+				indexBackgroundImage:indexBackgroundImage,
+				rules: {
+					name:{
+						rules: [{
+							required: true,
+							errorMessage: '姓名不能为空'
+						}]
+					},
+					mobile:{
+						rules: [{
+							required: true,
+							errorMessage: '请输入手机号',
+						},
+						{
+							pattern: /^1[3-9]\d{9}$/,
+							errorMessage: '请输入正确的手机号',
+						}]
+					},
+					identity:{
+						rules: [{
+							required: true,
+							errorMessage: '请输入身份证号',
+						},
+						{
+							pattern: /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/,
+							errorMessage: '请输入正确的身份证号',
+						}]
+					},
+					password:{
+						rules: [{
+							required: true,
+							errorMessage: '请输入密码'
+						}]
+					},
+					address:{
+						rules: [{
+							required: true,
+							errorMessage: '请输入地址',
+						}]
+					},
+				},
+				energyTypeShow:false,
+				deptShow:false,
+				deptoptions:[
+					{
+						lable:'股份',
+						value:'gufen'
+					},{
+						lable:'直营',
+						value:'dir'
+					},{
+						lable:'加盟',
+						value:'jiameng'
+					}],
+				energyTypeoptions:[
+					{
+						lable:'渠道',
+						value:'1'
+					},{
+						lable:'个代',
+						value:'2'
+					}],
+				checked:false,
+				userfrontImg: "",
+				userbackImg: "",
+				personData:{
+					name:'',
+					mobile:'',
+					identity:'',
+					password:'',
+					address:'',
+					esmUserImageVo:[]
+				},
+				
+				deptSource:'',
+				userId:''
+			}
+	},
+	async onLoad(e) {
+		this.deptSource=e.deptSource?e.deptSource:''
+		this.userId=e.userId?e.userId:''
+		if(e.id){
+			this.id=e.id
+			this.$http.get('/user/' +e.id).then(res=>{
+				if(res.code==200){
+					this.personData={...res.data.sysUser,esmUserImageVo:[]}
+				}
+				else{
+					uni.showModal({
+						showCancel: false,
+						title: res.msg
+					})
+				}
+			})
+		}
+	},
+
+	methods:{
+		submit(){
+			this.$refs.personData.validate().then(res => {
+				if(this.id){
+					this.$http.post('/user/updateUserInfo1/' +this.id, {
+						 esmUserImageVo: this.personData.esmUserImageVo,
+						 sysUser: this.personData,
+						 sysUserInfo:this.personData,
+					}).then(res=>{
+						if(res.code==200){
+							uni.redirectTo({
+								url: "/pages/index/result"
+							})
+						}
+						else{
+							uni.showModal({
+								showCancel: false,
+								title: res.msg
+							})
+						}
+					})
+				}else{
+					this.$http.post('/user/saveUserInfoByPartner', {
+						isPartner:"1",
+						sysUser:{...this.personData,roleId:"22",referrerId:this.userId,type:2,deptSource:this.deptSource},
+						esmUserImageVo:this.personData.esmUserImageVo
+					}).then(res=>{
+						if(res.code==200){
+							uni.redirectTo({
+								url: "/pages/index/result"
+							})
+						}
+						else{
+							uni.showModal({
+								showCancel: false,
+								title: res.msg
+							})
+						}
+					})
+				}
+				
+			}).catch(err => {
+				console.log('err', err);
+			})
+		},
+		//  submit(){
+		// 	 uni.redirectTo({
+		// 	 	url: "/pages/index/result?key="+encodeURIComponent(JSON.stringify({status:2}))
+		// 	 	// url: "/pages/index/result?status=1&remark=111"
+		// 	 })
+		// 	// this.$refs.personData.validate().then(res => {
+		// 		this.$refs.baseForm.submit().then(res => {
+		// 			this.$http.post('/user/saveUserInfo', {
+		// 				isPartner:"1",
+		// 				sysUser:{...this.personData,roleId:"22",referrerId:this.userInfo.sysUser.userId,type:2,deptSource:this.deptSource},
+		// 				esmUserImageVo:this.personData.esmUserImageVo
+		// 			}).then(res=>{
+		// 				if(res.code==200){
+		// 					uni.redirectTo({
+		// 						url: "/pages/index/result?key="+encodeURIComponent(JSON.stringify({status:1}))
+		// 					})
+		// 				}
+		// 				else{
+		// 					uni.showModal({
+		// 						showCancel: false,
+		// 						title: res.msg
+		// 					})
+		// 					// uni.showToast({
+		// 					// 	title: res.msg
+		// 					// })
+		// 				}
+		// 			})
+				
+		// 		// if (data.code == '200') {
+		// 		// }
+		// 	}).catch(err => {
+		// 		console.log('err', err);
+		// 	})
+		// },
+		dictionaryConfirm(val){
+			this.personData.deptSourceName=val[0].label
+			this.personData.deptSource=val[0].value
+		},
+		deptConfirm(val){
+			this.personData.deptName=val[0].label
+			this.personData.deptType=val[0].value
+		},
+		async userfrontChange() {
+			// this.personData.esmUserImageVo[0]={}
+			let [chooseImageErr, chooseImageRes] = await uni.chooseImage({
+				count: 1,
+				sizeType: ['compressed']
+			});
+		
+			let size = chooseImageRes.tempFiles[0].size / 1024 / 1024 < 5;
+			if (!size) {
+				this.$refs.uToast.show({
+					title: '上传图片大小不能超过 5MB!',
+					type: 'error',
+				})
+				return false
+			}
+			if (chooseImageRes) {
+				this.userfrontImg = chooseImageRes.tempFilePaths[0];
+				uni.uploadFile({
+					url: this.$base.baseUrl + '/ins/taskImage/uploadFileByPartner',
+					filePath: chooseImageRes.tempFilePaths[0],
+					name: "multipartFile",
+					formData: {
+						'type': 'image',
+					},
+					// header: {
+					// 	Authorization: store.state.token,
+					// },
+					success: (imgRes) => {
+						let data = JSON.parse(imgRes.data);
+						if (data.code == '200') {
+							this.personData.esmUserImageVo.push(
+								{
+								imageId: data.data.id,
+            					type: "SFZ_01",
+							}
+							)
+							// this.personData.esmUserImageVo[0]={
+							// 	imageId: data.data.id,
+            				// 	type: "SFZ_01",
+							// }
+						}
+		
+					}
+				});
+			} 
+		},
+		async userbackChange() {
+			// this.personData.esmUserImageVo[1]={}
+			let [chooseImageErr, chooseImageRes] = await uni.chooseImage({
+				count: 1,
+				sizeType: ['compressed']
+			});
+			let size = chooseImageRes.tempFiles[0].size / 1024 / 1024 < 5;
+			if (!size) {
+				this.$refs.uToast.show({
+					title: '上传图片大小不能超过 5MB!',
+					type: 'error',
+				})
+				return false
+			}
+			if (chooseImageRes) {
+				this.userbackImg = chooseImageRes.tempFilePaths[0];
+				uni.uploadFile({
+					url: this.$base.baseUrl + '/ins/taskImage/uploadFileByPartner',
+					filePath: chooseImageRes.tempFilePaths[0],
+					name: "multipartFile",
+					formData: {
+						'type': 'image',
+					},
+					// header: {
+					// 	Authorization: store.state.token,
+					// },
+					success: (imgRes) => {
+						let data = JSON.parse(imgRes.data);
+						if (data.code == '200') {
+							// this.personData.esmUserImageVo[1]=data.data
+							this.personData.esmUserImageVo.push(
+								{
+								imageId: data.data.id,
+            					type: "SFZ_02",
+							}
+							)
+						}
+		
+					}
+				});
+			} 
+		},
+	},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.box {
+		height: 330px;
+		width: 100%;
+		// background-repeat: no-repeat;
+		// background: #F9F9F9;
+		// background: url(/static/shenqing.png) no-repeat;
+		// background-size: contain;
+		padding: 130px 15px 0 15px;
+		// padding: 200px 16px 15px 16px;
+	}
+	.box-con{
+		background: #FFFFFF;
+		padding: 10px 15px;
+		border-radius: 5px 5px 5px 5px;
+	}
+	.userBox{
+		border-radius: 5px 5px 5px 5px;
+		margin:10px 15px;
+		padding: 10px 15px;
+		background: #fff;
+		font-size: 15px;
+		color: #666666;
+		.imgOcr-border {
+			// position: relative;
+			width: 48%;
+			text-align: center;
+			image {
+				display: inline-block;
+				height: 95px;
+				width: 100%;
+			}
+		}
+	}
+	.submit{
+		margin: 15px;
+		text-align: center;
+		color: #fff;
+		height: 46px;
+		line-height: 46px;
+		background: linear-gradient( 133deg, #2DD9FF 0%, #2D6DFF 100%);
+		border-radius: 31px 31px 31px 31px;
+	}
+</style>

+ 363 - 0
pages/index/applyteam.vue

@@ -0,0 +1,363 @@
+<template>
+	<view>
+		<public-module></public-module>
+		
+			<view class="box"  :style="{background:`url(${indexBackgroundImage})`,backgroundSize: 'contain',backgroundRepeat: 'no-repeat'}">
+		<view class="box-con">
+			<uni-forms :rules="carRules" :value="personData" ref="personData" validate-trigger="bind"
+				 err-show-type="toast" label-width="100">
+				<uni-forms-item label="姓名" required  name="name">
+					<input class="uni-input-input textColor" placeholder="输入姓名" v-model="personData.name"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+				<uni-forms-item label="手机号" required  name="mobile">
+					<input class="uni-input-input textColor" maxlength="11"  placeholder="输入手机号" v-model="personData.mobile"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+				<uni-forms-item label="证件号" required  name="identity">
+					<input class="uni-input-input textColor" placeholder="输入证件号" v-model="personData.identity"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+				<uni-forms-item label="密码" required  name="password">
+					<input class="uni-input-input textColor" placeholder="输入密码" v-model="personData.password"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+				<uni-forms-item label="地址" required  name="address">
+					<input class="uni-input-input textColor" placeholder="输入地址" v-model="personData.address"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+			</uni-forms>
+		</view>
+		</view>
+		<!-- <view class="box-con" style="margin-top:10px">
+			<uni-forms :rules="carRules" :value="personData" ref="personData" validate-trigger="bind"
+				 err-show-type="toast" label-width="100">
+				<uni-forms-item label="开户行">
+					<input class="uni-input-input textColor" placeholder="输入开户行" v-model="personData.bankName"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+				<uni-forms-item label="开户账号">
+					<input class="uni-input-input textColor" placeholder="输入开户账号" v-model="personData.accountno"
+						placeholder-style="font-size:28upx"  />
+				</uni-forms-item>
+				<view >
+					<view>银行卡照片</view>
+					<view class="dis j-c" >
+						<image style="height: 95px;width: 150px;padding: 10px 0;" :src=" userfrontImg?userfrontImg:'/static/image/my/yinhangka.png'" mode=""
+							@click="userfrontChange"></image>
+					</view>
+				</view>
+			</uni-forms>
+		</view> -->
+		<view class="userBox" style="margin-top:10px">
+			<text>身份证件照</text>
+			<view class="dis j-s" style="margin: 10px 0;">
+				<view class="imgOcr-border">
+					<image :src=" userfrontImg?userfrontImg:'/static/image/my/shenfenzz.png'" mode=""
+						@click="userfrontChange"></image>
+					<view>人像面</view>
+				</view>
+				<view class="imgOcr-border">
+					<image :src="userbackImg?userbackImg:'/static/image/my/shenzf.png'" mode=""
+						@click="userbackChange"></image>
+						<view>国徽面</view>
+				</view>
+			</view>
+		</view>
+		<!-- <view class="userBox">
+			<u-checkbox v-model="checked"></u-checkbox>
+			<text>同时创建我的团队</text>
+		</view> -->
+		<view class="submit" @click="submit()">
+			提交
+		</view>
+	</view>
+</template>
+
+<script>
+	// import {
+	// 	mapState,
+	// 	mapMutations
+	// } from "vuex"
+	// import store from '@/store';
+	import indexBackgroundImage from "@/static/shenqing.png"
+	export default {
+		// computed: {
+		// 	...mapState(['userInfo', "userCheckInfo", ]),
+		// },
+		data(){
+			return {
+				indexBackgroundImage:indexBackgroundImage,
+				checked:false,
+				userfrontImg: "",
+				userbackImg: "",
+				personData:{
+					name:'',
+					mobile:'',
+					identity:'',
+					password:'',
+					address:'',
+					esmUserImageVo:[]
+				},
+				carRules: {
+					name:{
+						rules: [{
+							required: true,
+							errorMessage: '姓名不能为空'
+						}]
+					},
+					mobile:{
+						rules: [{
+							required: true,
+							errorMessage: '请输入手机号',
+						},
+						{
+							pattern: /^1[3-9]\d{9}$/,
+							errorMessage: '请输入正确的手机号',
+						}]
+					},
+					identity:{
+						rules: [{
+							required: true,
+							errorMessage: '请输入身份证号',
+						},
+						{
+							pattern: /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/,
+							errorMessage: '请输入正确的身份证号',
+						}]
+					},
+					password:{
+						rules: [{
+							required: true,
+							errorMessage: '请输入密码'
+						}]
+					},
+					address:{
+						rules: [{
+							required: true,
+							errorMessage: '请输入地址',
+						}]
+					},
+				},
+				userId:''
+			}
+	},
+	
+	async onLoad(e) {
+		this.userId=e.userId?e.userId:''
+		if(e.id){
+			this.id=e.id
+			this.$http.get('/user/' +e.id).then(res=>{
+				if(res.code==200){
+					this.personData={...res.data.sysUser,esmUserImageVo:[]}
+				}
+				else{
+					uni.showModal({
+						showCancel: false,
+						title: res.msg
+					})
+				}
+			})
+		}
+	},
+	methods:{
+		submit(){
+			this.$refs.personData.validate().then(res => {
+				if(this.id){
+					this.$http.post('/user/updateUserInfo1/' +this.id, {
+						 esmUserImageVo: this.personData.esmUserImageVo,
+						 sysUser: this.personData,
+						 sysUserInfo:this.personData,
+					}).then(res=>{
+						if(res.code==200){
+							uni.redirectTo({
+								url: "/pages/index/result"
+							})
+						}
+						else{
+							uni.showModal({
+								showCancel: false,
+								title: res.msg
+							})
+						}
+					})
+				}else{
+					this.$http.post('/user/saveTeamLeader', {
+						sysUser:{...this.personData,roleId:"21",referrerId:this.userId},
+						esmUserImageVo:this.personData.esmUserImageVo
+					}).then(res=>{
+						if(res.code==200){
+							uni.redirectTo({
+								url: "/pages/index/result"
+							})
+						}
+						else{
+							uni.showModal({
+								showCancel: false,
+								title: res.msg
+							})
+						}
+					})
+				}
+			}).catch(err => {
+				console.log('err', err);
+			})
+		},
+		//  submit(ref){
+		// 	this.$refs[ref].validate().then(res => {
+		// 		if(res){
+		// 			this.$http.post('/user/saveTeamLeader', {
+		// 				sysUser:{...this.personData,roleId:"21",referrerId:this.userInfo.sysUser.userId},
+		// 				esmUserImageVo:this.personData.esmUserImageVo
+		// 			}).then(res=>{
+						
+		// 			})
+		// 		}
+				
+		// 		// if (data.code == '200') {
+		// 		// }
+		// 	}).catch(err => {
+		// 		console.log('err', err);
+		// 	})
+		// },
+		async userfrontChange() {
+			let [chooseImageErr, chooseImageRes] = await uni.chooseImage({
+				count: 1,
+				sizeType: ['compressed']
+			});
+		
+			let size = chooseImageRes.tempFiles[0].size / 1024 / 1024 < 5;
+			if (!size) {
+				this.$refs.uToast.show({
+					title: '上传图片大小不能超过 5MB!',
+					type: 'error',
+				})
+				return false
+			}
+			if (chooseImageRes) {
+				this.userfrontImg = chooseImageRes.tempFilePaths[0];
+				uni.uploadFile({
+					url: this.$base.baseUrl + '/ins/taskImage/uploadFileByPartner',
+					filePath: chooseImageRes.tempFilePaths[0],
+					name: "multipartFile",
+					formData: {
+						'type': 'image',
+					},
+					// header: {
+					// 	Authorization: store.state.token,
+					// },
+					success: (imgRes) => {
+						let data = JSON.parse(imgRes.data);
+						if (data.code == '200') {
+							this.personData.esmUserImageVo.push(
+								{
+								imageId: data.data.id,
+            					type: "SFZ_01",
+							}
+							)
+						}
+		
+					}
+				});
+			} 
+		},
+		async userbackChange() {
+			let [chooseImageErr, chooseImageRes] = await uni.chooseImage({
+				count: 1,
+				sizeType: ['compressed']
+			});
+			let size = chooseImageRes.tempFiles[0].size / 1024 / 1024 < 5;
+			if (!size) {
+				this.$refs.uToast.show({
+					title: '上传图片大小不能超过 5MB!',
+					type: 'error',
+				})
+				return false
+			}
+			if (chooseImageRes) {
+				this.userbackImg = chooseImageRes.tempFilePaths[0];
+				uni.uploadFile({
+					url: this.$base.baseUrl + '/ins/taskImage/uploadFileByPartner',
+					filePath: chooseImageRes.tempFilePaths[0],
+					name: "multipartFile",
+					formData: {
+						'type': 'image',
+					},
+					// header: {
+					// 	Authorization: store.state.token,
+					// },
+					success: (imgRes) => {
+						let data = JSON.parse(imgRes.data);
+						if (data.code == '200') {
+							this.personData.esmUserImageVo.push(
+								{
+								imageId: data.data.id,
+            					type: "SFZ_02",
+							}
+							)
+							// this.personData.esmUserImageVo[1]=data.data
+						}
+		
+					}
+				});
+			} 
+		},
+	},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.box {
+		height: 330px;
+		width: 100%;
+		background: #F9F9F9;
+		background: url(/static/shenqing.png) no-repeat;
+		background-size: contain;
+		padding: 130px 15px 0 15px;
+		// padding: 200px 16px 15px 16px;
+	}
+	.box-con{
+		background: #FFFFFF;
+		padding: 10px 15px;
+		border-radius: 5px 5px 5px 5px;
+	}
+	.userBox{
+		border-radius: 5px 5px 5px 5px;
+		margin:10px 15px;
+		padding: 10px 15px;
+		background: #fff;
+		font-size: 15px;
+		color: #666666;
+		.imgOcr-border {
+			// position: relative;
+			width: 48%;
+			text-align: center;
+			image {
+				display: inline-block;
+				height: 95px;
+				width: 100%;
+			}
+			
+			// .del_btn {
+			// 	position: absolute;
+			// 	cursor: pointer;
+			// 	position: absolute;
+			// 	top: 5rpx;
+			// 	right: 0;
+			// 	width: 50rpx;
+			// 	height: 50rpx;
+			// 	border-radius: 50%;
+			// 	z-index: 20;
+			// }
+		}
+	}
+	.submit{
+		margin: 15px;
+		text-align: center;
+		color: #fff;
+		height: 46px;
+		line-height: 46px;
+		background: linear-gradient( 133deg, #2DD9FF 0%, #2D6DFF 100%);
+		border-radius: 31px 31px 31px 31px;
+	}
+</style>

+ 0 - 819
pages/index/index - 副本.vue

@@ -1,819 +0,0 @@
-<template>
-	<view>
-		<!-- <u-notice-bar :autoplay="autoplay" :playState="playState" :speed="speed" :mode="mode" @click="click"
-			:show="show" :type="type" :list="list" :moreIcon="moreIcon" :volumeIcon="volumeIcon" :duration="duration"
-			bgColor="" padding="8rpx 24rpx" :isCircular="isCircular"
-			style="position: absolute;top: 12%;z-index: 9;width: 100%;"></u-notice-bar> -->
-
-		<!-- 状态栏 -->
-		<view class="status" :style="{position:headerPosition,backgroundColor:bgColor}"></view>
-		<!-- 漂浮头部 -->
-		<view class="header dis a-c j-s" :style="{position:headerPosition,backgroundColor:bgColor}">
-			<view class="city dis a-c ">
-				<text>{{city}}</text>
-				<view class="icon iconfont icon-sanjiao_fill-"></view>
-			</view>
-
-			<view class="input dis a-c">
-				<view class="icon iconfont icon-saoyisao" @tap="scan"></view>
-				<input disabled placeholder="车险" @tap="toSearch()" />
-			</view>
-			<view class="menu">
-				<image mode="aspectFill" :src="avatar"
-					@click='isShow?navigate({url:"/pages/realname/realname"}," ",true):""'></image>
-			</view>
-		</view>
-		<!-- 公共组件-每个页面必须引入 -->
-		<public-module></public-module>
-
-		<!-- 占位 -->
-		<view class="place" :style="{backgroundColor:'#fff'}"></view>
-		<!-- 实名认证提示 -->
-		<view class="" @click='navigate({url:"/pages/realname/realname"},"navigateTo",true)' v-show="isShow">
-			<u-notice-bar :list="list" type="error" padding="8rpx 24rpx"></u-notice-bar>
-		</view>
-
-		<!-- 轮播图 -->
-		<swiper-image :resdata="swiperList" @changeEvent="swiperChange"></swiper-image>
-		<!-- <view class="" @click="arr">
-			321321
-		</view> -->
-		<!-- 分类轮播 -->
-		<index-nav :resdata="categoryList" :row="2"></index-nav>
-		<!-- 推荐商品 -->
-		<view class="pick" :style="{'background':'#fff'}">
-			<view class="box">
-				<view class="title">
-					<view class="big">推荐商品</view>
-					<view class="small">好货推荐 低价精选</view>
-				</view>
-				<view class="product-list">
-					<view v-for="product in pickList" :key="product.goods_id" @tap="toPick(product)">
-						<image mode="widthFix" :src="product.img"></image>
-						<view class="price">{{product.price}}起</view>
-						<view class="slogan">{{product.slogan}}</view>
-					</view>
-				</view>
-			</view>
-		</view>
-		<!-- 广告横幅 -->
-		<view class="banner">
-			<image mode="widthFix" src="/static/image/index/ad-img/ad.jpg"></image>
-		</view>
-		<!-- 商品列表 -->
-		<view class="goods-list">
-			<view class="title">— 猜你喜欢 —</view>
-			<view class="product-list">
-				<view class="product" v-for="product in productList" :key="product.goods_id" @tap="toGoods(product)">
-					<image mode="widthFix" :src="product.img"></image>
-					<view class="name">{{product.name}}</view>
-					<view class="info">
-						<view class="price">¥{{product.price}} 起</view>
-						<view class="slogan">{{product.slogan}}</view>
-					</view>
-				</view>
-			</view>
-			<view class="loading-text">{{loadingText}}</view>
-		</view>
-	</view>
-</template>
-<script>
-	import swiperImage from "@/components/modules/index/swiper-image.vue"
-	import indexNav from "@/components/modules/index/index-nav.vue"
-	import bankBin from "@/common/bankcardinfo.js"
-	import store from '@/store';
-	import {
-		pathToBase64,
-		base64ToPath
-	} from '@/common/image-tools-base64.js';
-	import {
-		mapState
-	} from "vuex"
-	export default {
-		components: {
-			swiperImage,
-			indexNav,
-		},
-		data() {
-			return {
-				city: "",
-				avatar: "",
-				xuelishow: false,
-				border: false,
-				form: {
-					name: "", //姓名
-					identity: "", //身份证号
-					birthday: "", //出生日期
-					addressnow: "", //居住地址
-					education: "", //学历
-					bankname: "", //开户行
-					accountno: "", //银行卡号
-				},
-				labelPosition: 'left',
-				errorType: ['message'],
-				rules: {
-					name: [{
-						required: true,
-						message: '请输入姓名',
-						trigger: 'blur',
-					}, ]
-				},
-				contentSlot: true,
-				showTitle: false,
-				asyncClose: false,
-				isShow: false,
-				autoplay: true,
-				type: 'warning',
-				list: ['欢迎登录晋掌柜,请点击此处文字进行实名验证,方可使用所有功能。'],
-				mode: 'horizontal',
-				playState: 'play',
-				speed: 160,
-				duration: 1000,
-				moreIcon: true,
-				volumeIcon: true,
-				isCircular: true,
-				current: 0,
-				banben: {},
-				bgColor: "#4B75EB",
-				//轮播
-				swiperList: [],
-				//分类
-				categoryList: [{
-						cat_id: 0,
-						img: '/static/image/index/category-img/0.png',
-						title: '车险',
-						src: '/pages/carInsure/entry'
-					},
-					{
-						cat_id: 1,
-						img: '/static/image/index/category-img/1.png',
-						title: '车损测算',
-						// src: '/pages/carInsure2/entry'
-					},
-					{
-						cat_id: 2,
-						img: '/static/image/index/category-img/2.png',
-						title: '道路救援',
-						src: '/pages/roadRescue/index'
-					},
-					{
-						cat_id: 3,
-						img: '/static/image/index/category-img/3.png',
-						title: '司法鉴定',
-						src: ''
-					},
-					{
-						cat_id: 4,
-						img: '/static/image/index/category-img/4.png',
-						title: '掌柜商城',
-						src: ''
-					},
-					{
-						cat_id: 5,
-						img: '/static/image/index/category-img/5.png',
-						title: '洗车',
-						src: ''
-					},
-					{
-						cat_id: 6,
-						img: '/static/image/index/category-img/6.png',
-						title: '审车',
-						src: ''
-					},
-					{
-						cat_id: 7,
-						img: '/static/image/index/category-img/7.png',
-						title: '代驾',
-						src: ''
-					},
-					{
-						cat_id: 8,
-						img: '/static/image/index/category-img/8.png',
-						title: '车检代办',
-						src: '/pages/caragent/index'
-					},
-					{
-						cat_id: 9,
-						img: '/static/image/index/category-img/9.png',
-						title: '一键挪车',
-						src: '/pages/ticket/ticket'
-					}
-				],
-
-				//推荐商品 3个
-				pickList: [{
-						goods_id: 0,
-						img: '/static/image/index/pick-img/p1.jpg',
-						price: '¥5.85',
-						slogan: '限时抢购'
-					},
-					{
-						goods_id: 1,
-						img: '/static/image/index/pick-img/p2.jpg',
-						price: '¥270',
-						slogan: '精选商品'
-					},
-					{
-						goods_id: 2,
-						img: '/static/image/index/pick-img/p3.jpg',
-						price: '¥281',
-						slogan: '今日疯抢'
-					}
-				],
-				//猜你喜欢列表
-				productList: [{
-						goods_id: 0,
-						img: '/static/image/index/img/p1.jpg',
-						name: '平安个人意外伤害险',
-						price: '25.8',
-						slogan: '1235人购买'
-					},
-					{
-						goods_id: 1,
-						img: '/static/image/index/img/p2.jpg',
-						name: '一年期意外险',
-						price: '1.2',
-						slogan: '1235人购买'
-					},
-					{
-						goods_id: 2,
-						img: '/static/image/index/img/p3.jpg',
-						name: '平安行·国内自助游保险',
-						price: '88',
-						slogan: '1235人购买'
-					},
-					{
-						goods_id: 3,
-						img: '/static/image/index/img/p4.jpg',
-						name: '企业团体综合意外险',
-						price: '1.9',
-						slogan: '1235人购买'
-					},
-					{
-						goods_id: 4,
-						img: '/static/image/index/img/p5.jpg',
-						name: '平安行·境内自驾旅游保险',
-						price: '442',
-						slogan: '1235人购买'
-					},
-					{
-						goods_id: 5,
-						img: '/static/image/index/img/p6.jpg',
-						name: '平安行·境内节假日旅游保险',
-						price: '257',
-						slogan: '1235人购买'
-					},
-					{
-						goods_id: 6,
-						img: '/static/image/index/img/p7.jpg',
-						name: '平安行·境内高原旅游保险',
-						price: '0.2',
-						slogan: '1235人购买'
-					},
-					{
-						goods_id: 7,
-						img: '/static/image/index/img/p8.jpg',
-						name: '儿童综合医疗保险',
-						price: '1400',
-						slogan: '1235人购买'
-					},
-					{
-						goods_id: 8,
-						img: '/static/image/index/img/p9.jpg',
-						name: '女性关爱保险',
-						price: '70',
-						slogan: '1235人付款'
-					},
-					{
-						goods_id: 9,
-						img: '/static/image/index/img/p10.jpg',
-						name: '全球交通意外保险',
-						price: '74.5',
-						slogan: '1235人购买'
-					}
-				],
-				headerPosition: "fixed",
-				loadingText: "正在加载...",
-				getApplicationStatus: "",
-
-			};
-		},
-
-
-		computed: {
-			...mapState(['userInfo'])
-		},
-
-
-		onPageScroll(e) {
-			//兼容iOS端下拉时顶部漂移
-			if (e.scrollTop >= 0) {
-				this.headerPosition = "fixed";
-			} else {
-				this.headerPosition = "absolute";
-			}
-		},
-		onShow() {
-			if (this.userInfo.sysUser.headSculpture) {
-				this.avatar = this.$base.baseUrl + this.userInfo.sysUser.headSculpture;
-			} else {
-				this.avatar = "/static/image/my/avatar1.png"
-			}
-			const arr = uni.getStorageSync('historyInfo');
-			if (arr) {
-				uni.removeStorageSync('historyInfo');
-			}
-		},
-		async onLoad() {
-			// uni.startPullDownRefresh(); 
-			this.isShow = this.userInfo.sysUser.status == '2' ? true : false
-			let res = await this.$http.get('/apps/getApplicationStatus?jobNumber=' + this.userInfo.sysUser.id);
-			if (res.code == 200) {
-				if (res.data == '0') {
-					this.getApplicationStatus = res.data;
-				}
-			} else {
-
-			}
-			let banner = await this.$http.get('/apps/getCarousel');
-			this.swiperList = banner.data;
-			this.bgColor = this.swiperList[0].color;
-			// #ifdef APP-PLUS
-			// this.getCurrentLocation();
-			// #endif
-		},
-		async onPullDownRefresh() {
-			let userInfoRes = await this.$http.get('/APPPartner/getUserInfo')
-			// let userInfoRes = await this.$http.get('/esmUserInternal/findById?id=' + this.userInfo.sysUser.id, {}, {});
-			uni.stopPullDownRefresh();
-			store.commit('setUserModules', {
-				title: 'userInfo',
-				data: {
-					sysUser: {
-						...userInfoRes.data
-					}
-				}
-			})
-			if (userInfoRes.data.status == 2) {
-				this.isShow = true;
-			} else {
-				this.isShow = false;
-			}
-
-		},
-		//上拉加载,需要自己在page.json文件中配置"onReachBottomDistance"
-		onReachBottom() {
-			uni.showLoading({
-				mask: true,
-				title: "Loading..."
-			})
-			let len = this.productList.length;
-			if (len >= 40) {
-				uni.hideLoading()
-				this.loadingText = "到底了";
-				return false;
-			}
-			let end_goods_id = this.productList[len - 1].goods_id;
-			for (let i = 1; i <= 10; i++) {
-				let goods_id = end_goods_id + i;
-				let goods_name = this.productList[i - 1].name;
-				let goods_price = this.productList[i - 1].price;
-				let p = {
-					goods_id: goods_id,
-					img: '/static/image/index/img/p' + (goods_id % 10 == 0 ? 10 : goods_id % 10) + '.jpg',
-					name: goods_name,
-					price: goods_price,
-					slogan: '1235人购买'
-				};
-				this.productList.push(p);
-			}
-			setTimeout(() => {
-				uni.hideLoading()
-			}, 1000)
-		},
-
-		//  async onShow() {
-		// 	if (this.userInfo.sysUser.status == '2') {
-		// 		this.show = true;
-		// 	} else {
-		// 		this.show = false;
-		// 	}
-		// },
-		methods: {
-			getCurrentLocation() {
-				//获取当前的地理位置
-				let vthis = this;
-				uni.getLocation({
-					type: 'gcj02',
-					geocode: true,
-					success: function(res) {
-						vthis.city = res.address.city;
-						// let address = res.address.province + res.address.city + res.address.district + res
-						// 	.address.street + res.address.poiName;
-					},
-					fail: function(err) {
-						console.log(err);
-
-					}
-				});
-			},
-			citySelection() {
-				uni.navigateTo({
-					url: '/pages/index/cityIndex'
-				})
-			},
-			arr() {
-				uni.navigateTo({
-					url: '/pages/ad/ad?userId=' + this.userInfo.sysUser.id,
-				})
-			},
-			nameClick() {
-				this.navigate({
-					url: "/pages/realname/realname"
-				}, "navigateTo", true)
-			},
-			async chooseImage() {
-				var _this = this;
-				uni.chooseImage({
-					count: 1,
-					sizeType: "compressed",
-					success(res) {
-						pathToBase64(res.tempFilePaths[0])
-							.then(async base64 => {
-								var paramImg = {
-									"image": base64, //图片base64
-									"imgType": "1" //1身份证 2行驶证
-								}
-								let res2 = await _this.$http.post('/api/huanong/imgAI', paramImg);
-								var data = res2.data.customerInfo;
-								data.identifyValidDate = data.identifyValidDate.substr(0, 4) + '-' +
-									data.identifyValidDate.substr(4, 2) + "-" + data.identifyValidDate
-									.substr(6, 2)
-								_this.form.name = data.name;
-								_this.form.identifyNumber = data.identifyNumber;
-								_this.form.identifyValidDate = data.identifyValidDate;
-							})
-
-					}
-				});
-			},
-			// 验证银行卡
-			async validateBankCard() {
-				var that = this;
-				that.bankname = "";
-				await bankBin.getBankBin(this.form.name4)
-					.then((data) => {
-						that.form.name5 = data.bankName;
-						return true;
-					})
-					.catch((err) => {
-						return uni.showToast({
-							title: err.split(":")[1],
-							icon: "none"
-						});
-					})
-			},
-
-			//点击通知
-			async click(index) {
-				let res1 = await this.$http.get('/apps/getApplicationStatus?jobNumber=' + this.userInfo.sysUser.id);
-				if (res1.code == 200) {
-					this.getApplicationStatus = res1.data;
-					if (this.getApplicationStatus == '0') {
-						uni.showToast({
-							icon: "none",
-							title: '实名认证等待审核中',
-							duration: 1500
-						})
-					} else if (this.getApplicationStatus == '3') {
-						uni.showToast({
-							icon: "none",
-							title: '实名认证不通过,请修改后提交',
-							duration: 1500
-						})
-						setTimeout(() => {
-							uni.navigateTo({
-								url: '/pages/user/certification'
-							})
-						}, 1000)
-					}
-				} else if (res1.code != '200') {
-					setTimeout(() => {
-						uni.navigateTo({
-							url: '/pages/user/infoInput'
-						})
-					}, 1000)
-				}
-				if (res1.code == 200) {
-					this.getApplicationStatus = res1.data;
-				}
-
-			},
-			// 改变头部颜色
-			swiperChange(event) {
-				this.bgColor = this.swiperList[event.detail.current].color;
-			},
-			//扫一扫
-			scan() {
-				uni.scanCode({
-					success: async (res) => {
-						let uuid = this.getParameterByName("uuid", res.result)
-						let resCode = await this.$http.get('/scanQrCode?uuid=' + uuid);
-					}
-				});
-			},
-			//搜索跳转
-			toSearch() {
-				// uni.showToast({title: "建议跳转到新页面做搜索功能"});
-			},
-			//推荐商品跳转
-			toPick(e) {
-				// uni.showToast({title: '推荐商品'+e.goods_id});
-			},
-			//商品跳转
-			toGoods(e) {
-				// uni.showToast({title: '商品'+e.goods_id});
-			},
-			getParameterByName(name, url) {
-				if (!url) url = window.location.href;
-				name = name.replace(/[\[\]]/g, '\\$&');
-				var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
-					results = regex.exec(url);
-				if (!results) return null;
-				if (!results[2]) return '';
-				return decodeURIComponent(results[2].replace(/\+/g, ' '));
-			}
-
-		}
-	};
-</script>
-<style lang="scss" scoped>
-	.status {
-		width: 100%;
-		height: 0;
-		/*  #ifdef  APP-PLUS  */
-		height: var(--status-bar-height);
-		/*  #endif  */
-		position: fixed;
-		top: 0;
-		z-index: 999;
-	}
-
-	.header {
-		width: 100%;
-		height: 100upx;
-		display: flex;
-		position: fixed;
-		top: 0;
-		/* #ifdef  APP-PLUS */
-		top: var(--status-bar-height);
-		/*  #endif  */
-		z-index: 996;
-		padding: 0 10px;
-	}
-
-	.header .city {
-		color: #fff;
-		font-size: 15px;
-
-		.icon {
-			font-size: 10px;
-			margin-left: 5px;
-		}
-	}
-
-	.header .input {
-		width: 70%;
-		background-color: #fff;
-		border-radius: 30px;
-		height: 30px;
-		padding: 10px;
-		box-sizing: border-box;
-	}
-
-	.header .input input {
-		// width: calc(100% - 150px);
-		// height: 60upx;
-		// background-color: #ffffff;
-		// border-radius: 60upx;
-		// padding-left: 60upx;
-		// font-size: 30upx;
-	}
-
-	.header .input .icon {
-		color: #a18090;
-		font-size: 18px;
-		margin-right: 10px;
-	}
-
-	.header .menu {
-		background-color: #FFFFFF;
-		border-radius: 50%;
-		box-sizing: border-box;
-		width: 30px;
-		height: 30px;
-		padding: 3px;
-		box-sizing: border-box;
-	}
-
-	.header .menu image {
-		width: 100%;
-		height: 100%;
-		border-radius: 50%;
-	}
-
-	/* 占位 */
-	.place {
-		/*  #ifdef  APP-PLUS  */
-		margin-top: var(--status-bar-height);
-		/*  #endif  */
-		height: 100upx;
-	}
-
-	.pick {
-		padding: 0 2.5vw 2.5vw 2.5vw;
-	}
-
-	.pick .box {
-		width: 100%;
-		border-radius: 20upx;
-		background-color: #ffffff;
-	}
-
-	.pick .box .title {
-		display: flex;
-		justify-content: flex-start;
-		align-items: flex-end;
-		height: 60upx;
-		border-bottom: solid 1upx #eee;
-		padding-bottom: 10upx;
-	}
-
-	.pick .box .title .big {
-		font-size: 34upx;
-		padding-left: 20upx;
-		color: #46434f;
-	}
-
-	.pick .box .title .small {
-		font-size: 24upx;
-		padding-left: 20upx;
-		color: #827f8b;
-	}
-
-	.pick .box .product-list {
-		padding-top: 15upx;
-		box-sizing: border-box;
-		overflow: hidden;
-	}
-
-	.pick .box .product-list>view {
-		background-color: #f8f8f8;
-		display: inline-block;
-		width: calc(50% - 10upx);
-		position: relative;
-		box-sizing: border-box;
-		margin: 5upx;
-		float: left;
-	}
-
-	.pick .box .product-list>view:nth-child(1) {
-		height: 390upx;
-	}
-
-	.pick .box .product-list>view:nth-child(2),
-	.pick .box .product-list>view:nth-child(3) {
-		height: 190upx;
-	}
-
-	.pick .box .product-list>view:nth-child(1) .price {
-		color: #e65339;
-		font-size: 26upx;
-		position: absolute;
-		bottom: 6upx;
-		left: 8upx;
-	}
-
-	.pick .box .product-list>view:nth-child(1) .slogan {
-		color: #807c87;
-		font-size: 26upx;
-		position: absolute;
-		bottom: 6upx;
-		right: 15upx;
-	}
-
-	.pick .box .product-list>view:nth-child(1) image {
-		width: 100%;
-		height: 350upx !important;
-		padding: 15upx;
-		box-sizing: border-box;
-		margin-bottom: 40upx;
-	}
-
-	.pick .box .product-list>view:nth-child(2),
-	.pick .box .product-list>view:nth-child(3) {
-		padding: 10upx;
-		box-sizing: border-box;
-	}
-
-	.pick .box .product-list>view:nth-child(2) image,
-	.pick .box .product-list>view:nth-child(3) image {
-		width: calc(50% - 5upx);
-		height: 170upx !important;
-	}
-
-	.pick .box .product-list>view:nth-child(2) .price,
-	.pick .box .product-list>view:nth-child(3) .price {
-		position: absolute;
-		top: 25%;
-		left: 55%;
-		color: #e65339;
-		font-size: 30upx;
-	}
-
-	.pick .box .product-list>view:nth-child(2) .slogan,
-	.pick .box .product-list>view:nth-child(3) .slogan {
-		position: absolute;
-		top: 60%;
-		left: 55%;
-		color: #807c87;
-		font-size: 26upx;
-	}
-
-	.banner image {
-		width: 100%;
-	}
-
-	.goods-list {
-		background-color: #f4f4f4;
-	}
-
-	.goods-list .title {
-		width: 100%;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		height: 60upx;
-		color: #979797;
-		font-size: 24upx;
-	}
-
-	.goods-list .loading-text {
-		width: 100%;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		height: 60upx;
-		color: #979797;
-		font-size: 24upx;
-	}
-
-	.goods-list .product-list {
-		padding: 0 2.5% 2.5vw 2.5%;
-		display: flex;
-		justify-content: space-between;
-		flex-wrap: wrap;
-	}
-
-	.goods-list .product-list .product {
-		width: 48.75%;
-		border-radius: 20upx;
-		background-color: #fff;
-		margin: 0 0 15upx 0;
-	}
-
-	.goods-list .product-list .product image {
-		width: 100%;
-		border-radius: 20upx 20upx 0 0;
-	}
-
-	.goods-list .product-list .product .name {
-		width: 92%;
-		padding: 10upx 4%;
-		display: -webkit-box;
-		-webkit-box-orient: vertical;
-		-webkit-line-clamp: 1;
-		text-align: justify;
-		overflow: hidden;
-		font-size: 30upx;
-	}
-
-	.goods-list .product-list .product .info {
-		display: flex;
-		justify-content: space-between;
-		align-items: flex-end;
-		width: 92%;
-		padding: 10upx 4% 10upx 4%;
-	}
-
-	.goods-list .product-list .product .info .price {
-		color: #e65339;
-		font-size: 30upx;
-		font-weight: 600;
-	}
-
-	.goods-list .product-list .product .info .slogan {
-		color: #807c87;
-		font-size: 24upx;
-	}
-</style>

+ 204 - 63
pages/index/index.vue

@@ -14,82 +14,102 @@
 				<text>团队新人员加入信息/新出单信息</text>
 			</view>
 			<uni-notice-bar show-icon scrollable text="uni-app 版正式发布,开发一次,同时发布iOS、Android、H5、微信小程序、支付宝小程序、百度小程序、头条小程序等7大平台。" />
-		<!-- <view class="homepage" style="position: absolute;padding: 0px 20px;    top: 170px;">
-			<view class="wallet" @click="bankwallet()">
-				<view>钱包</view>
-				<view>查看金额与记录</view>
-			</view>
-			<view class="wallet" @click="detail()">
-				<view>绑定银行卡</view>
-				<view>提现请先绑定</view>
-			</view>
-		</view> -->
 		</view>
 		<view class="insurance dis j-s" >
 			<view style="text-align: center;">
-				<view class="insurance-cash" >{{totalList.sumPremium}}</view>
-				<text class="insurance-text">总保费	</text>
+				<view class="insurance-cash">{{totalList.teamManNum || 0}}</view>
+				<text class="insurance-text">会员总人数	</text>
 			</view>
 			<view style="text-align: center;">
-				<view class="insurance-cash">{{totalList.teamManNum }}</view>
-				<text class="insurance-text">总人数	</text>
+				<view class="insurance-cash" >{{totalList.sumPremium || 0}}</view>
+				<text class="insurance-text">总保费	</text>
 			</view>
 			<view style="text-align: center;">
-				<view class="insurance-cash">{{totalList.extractFee}}</view>
+				<view class="insurance-cash">{{totalList.extractFee || 0}}</view>
 				<text class="insurance-text">总佣金</text>
 			</view>
 		</view>
 		<view >
-			<view class="institutional-data" v-if="type == 2">
-			<view class="inst-con" @click="closeStudion()">
-				<view>工作室</view>
-				<text >{{totalList.workroomTeamNum}}</text>
-			</view>
-				<!-- <view class="institutional-title homepage">
-					<text>团队贡献数据</text>
-					<text   @click="viewTeam()" class="view-now" style="font-size: 11px;" >查看更多</text>
+			<view class="institutional-data  dis j-s" v-if="type == 2 ||userInfo.sysUser.level==5">
+				<view class="inst-con" @click="userInfo.sysUser.level==5 ?closeInstitution():closeStudion()">
+					<view>我的工作室</view>
+					<text >{{userInfo.sysUser.level==5 ?totalList.workroomNum :totalList.workroomTeamNum}}</text>
+				</view>
+				<view class="inst-con"  @click="userInfo.sysUser.level==5 ?recruitmentWorkCode() :recruitmentCode()">
+					<view>我的招募码</view>
+					<text >扫码加入</text>
 				</view>
-				<o-empty   height="15vh" v-if="totalList1.length==0" />
-				<view class="institutional-list" v-if="totalList1.length > 0">
-					<view style="padding: 10px 0;">
-						<view class="homepage" style="font-size: 13px;font-weight: 500;">
-							<text>{{ totalList1[0].deptName }}</text>
-						</view>
-						<view class="dis j-s">
-							<view type="primary" size="mini">负责人:{{ totalList1[0].userName }}</view>
-							<text @click="closeDetailPro(totalList1[0])" class="view-now1"
-								>查看详情</text>
-						</view>
-					</view>
-					<view style="padding: 10px 0;border-top: 1px solid #ccc" v-if="totalList1.length > 1">
-						<view class="homepage" style="font-size: 13px;font-weight: 500;">
-							<text>{{ totalList1[1].deptName }}</text>
-						</view>
-						<view class="dis j-s">
-							<view type="primary" size="mini">负责人:{{ totalList1[1].userName }}</view>
-							<text class="view-now1" @click="closeDetailPro(totalList1[1])"
-								>查看详情</text>
-						</view>
-					</view>
-				</view> -->
 			</view>
-			<view class="inst-data dis j-s" v-if="type == 1">
+			<view class="inst-data dis j-s" v-if="type == 1 && userInfo.sysUser.level!==5" >
 				<view class="inst-con" @click="closePartner()">
-					<view>合伙人</view>
+					<view >我的合伙人</view>
 					<text >{{totalList.partnerNum}}</text>
 				</view>
 				<view class="inst-con" @click="closeInstitution()">
-					<view>工作室</view>
+					<view>我的工作室</view>
 					<text >{{totalList.workroomNum}}</text>
 				</view>
 			</view>
 		</view>
+		<u-popup v-model="ShowModalCode" mode="bottom"  border-radius="15" >
+				<view class="ShowModalCode-style ">
+					<text>团队招募码</text>
+					<view class=" ShowModalCode-con">
+						<view>扫码加入</view>
+						<image :src="teamImg" mode="widthFix" lazy-load style="width: 150px;"></image>
+					</view>
+				</view>
+		</u-popup>
+		<u-popup v-model="ShowModalCodebusiness" mode="bottom" border-radius="15">
+			<view>
+				<text class=" ShowModalCode-business">工作室业务</text>
+				<view>
+					<radio-group class="uni-list" @change="styleChange">
+						<view v-for="(item, index) in styles" :key="index" class="uni-list-item">
+							<view class="uni-list-item__container">
+								<view class="uni-list-item__content">
+									<text class="uni-list-item__content-title">{{ item.text }}</text>
+								</view>
+								<view class="uni-list-item__extra">
+									<radio :value="item.value" :checked="item.checked" />
+								</view>
+							</view>
+							<view class="uni-list-item__notestext">{{ item.notestext }}</view>
+						</view>
+					</radio-group>
+				</view>
+				<view class="ShowModalCode-sumbit" @click="ShowModalCodeSumbit()">确定</view>
+			</view>
+		</u-popup>
+		<u-popup v-model="ShowModalCode1" mode="bottom" border-radius="15">
+			<view class="ShowModalCode-style ">
+				<text>工作室招募码</text>
+				<view class=" ShowModalCode-con">
+					<view>扫码加入</view>
+					<image :src="workImg" mode="widthFix" lazy-load style="width: 150px;"></image>
+				</view>
+			</view>
+		</u-popup>
 	</view>
 </template>
 <script>
+	import QR from "@/common/wxqrcode.js"
+	import {
+		mapState,
+		mapMutations
+	} from "vuex"
+import { vShow } from "vue"
 export default {
+	computed: {
+		...mapState(['userInfo', "userCheckInfo", ]),
+	},
 	data() {
 		return {
+			ShowModalCode:false,
+			ShowModalCode1:false,
+			ShowModalCodebusiness:false,
+			teamImg:'',
+			workImg:'',
 			totalList:{},
 			type: uni.getStorageSync('type'),
 			headerStyle: {
@@ -100,10 +120,23 @@ export default {
 				boxShadow: ''
 				// 其他样式属性...
 			},
+			styles: [{
+				value: '1',
+				text: '渠道',
+				notestext: '团队长加出单员模式,无分销模式,结费都在团队长处。',
+				checked: true
+			},
+			{
+				value: '2',
+				notestext: '团队长加代理人模式,三级分销模式,结费方式为个人,有佣金。',
+				text: '个代'
+			}
+			],
+			deptSource:1
 			// type:JSON.parse(localStorage.getItem('type')).data
 		}
 	},
-	async onLoad(e) {
+	async onShow(e) {
 		this.type = uni.getStorageSync('type')
 		let res = await this.$http.get('/APPPartner/getHomePage', {
 			type: uni.getStorageSync('type'),
@@ -114,6 +147,27 @@ export default {
 	
 	},
 	methods: {
+		styleChange(e) {
+			this.deptSource = e.detail.value
+		},
+		recruitmentCode(){
+			this.ShowModalCode=true
+			this.teamImg = QR.createQrCodeImg(this.$base.h5BaseUrl + "/#/pages/index/applyteam?userId="+this.userInfo.sysUser.userId, {
+				size: parseInt(200) //二维码大小  
+			})
+		},
+		ShowModalCodeSumbit(){
+			console.log(this.deptSource,44444444);
+			this.ShowModalCode1=true
+			this.workImg = QR.createQrCodeImg(this.$base.h5BaseUrl + "/#/pages/index/applystudio?deptSource=" + this.deptSource + '&userId=' + this.userInfo.sysUser.userId, {
+				size: parseInt(200) //二维码大小  
+			})
+		},
+		recruitmentWorkCode(){
+			this.ShowModalCodebusiness=true
+			this.deptSource = 1
+
+		},
 		detail(id){
 			uni.navigateTo({
 				url: "/pages/institutional/walletDetail?id="+id
@@ -126,7 +180,10 @@ export default {
 			},
 		
 		closeInstitution() {
-			this.totalList.type=1
+			// if(this.totalList.workroomNum>0){
+				
+			// }
+			// this.totalList.type=1
 			uni.navigateTo({
 				url: "/pages/institutional/institutionalTeam?key="+encodeURIComponent(JSON.stringify(this.totalList))
 			})
@@ -153,7 +210,7 @@ export default {
 		},
 		bankwallet() {
 			uni.navigateTo({
-				url: "/pages/institutional/wallet"
+				url: "/pages/index/applystudio"
 			})
 		},
 	}
@@ -204,15 +261,18 @@ export default {
 
 .institutional-data {
 	margin: 16px;
-	.inst-con {
-		padding: 13px 18px;
-		width: 100%;
-		background: url(../../static/工作室.png) no-repeat;
-		background-size: 100% 100%;
-		color: #009B9F;
-	}
+}
+.institutional-data>view:nth-child(1) {
+	background: url(../../static/work.png) no-repeat;
+	background-size: 100% 100%;
+	color: #009B9F;
 }
 
+.institutional-data>view:nth-child(2) {
+	background: url(../../static/zhaomum.png) no-repeat;
+	background-size: 100% 100%;
+	color: #3168DA;
+}
 // .institutional-title {
 // 	padding: 10upx 10upx 20upx 10upx;
 // 	font-weight: bold;
@@ -280,10 +340,10 @@ export default {
 
 .inst-con {
 	width: 47%;
-	padding: 13px 18px;
+	padding: 13px 16px;
 	}	
 .inst-con>view:nth-child(1) {
-	font-size: 19px;
+	font-size: 14px;
 	font-weight: 700;
 }
 
@@ -293,13 +353,13 @@ export default {
 }
 
 .inst-data>view:nth-child(1) {
-	background: url(../../static/合伙人.png) no-repeat;
+	background: url(../../static/hehuor.png) no-repeat;
 	background-size: 100% 100%;
 	color: #3168DA;
 }
 
 .inst-data>view:nth-child(2) {
-	background: url(../../static/工作室.png) no-repeat;
+	background: url(../../static/work.png) no-repeat;
 	background-size: 100% 100%;
 	color: #009B9F;
 }
@@ -373,4 +433,85 @@ export default {
 	.studio{
 		margin:16px;
 	}
+	.ShowModalCode-style{
+		text:first-child{
+			display: block;
+			font-weight: 600;
+			font-size: 16px;
+			color: #333333;
+			border: 1px solid #EEEEEE;
+			padding: 15px;
+			text-align: center;
+		}
+	}
+	.ShowModalCode-con{
+		padding: 30px;
+		text-align: center;
+		image{
+			margin: 0 auto;
+			margin-top: 15px;
+		}
+	}
+	.ShowModalCode-business {
+	display: block;
+	font-weight: 600;
+	font-size: 16px;
+	color: #333333;
+	// border: 1px solid #EEEEEE;
+	padding: 15px;
+	text-align: center;
+}
+.ShowModalCode-sumbit {
+	background: linear-gradient(132deg, #2DD9FF 0%, #2D6DFF 100%);
+	border-radius: 5px 5px 5px 5px;
+	height: 40px;
+	line-height: 40px;
+	font-size: 16px;
+	color: #FFFFFF;
+	margin: 15px;
+	text-align: center;
+}
+.uni-list {
+	flex: 1;
+}
+
+.uni-list-item:first-child {
+	/* #ifndef APP-NVUE */
+	// display: flex;
+	/* #endif */
+	flex: 1;
+	flex-direction: row;
+	background-color: #FFFFFF;
+	border-bottom-style: solid;
+	border-bottom-width: 1px;
+	border-bottom-color: #eee;
+}
+
+
+.uni-list-item__container {
+	padding: 12px 15px;
+	width: 100%;
+	flex: 1;
+
+	position: relative;
+	/* #ifndef APP-NVUE */
+	display: flex;
+	box-sizing: border-box;
+	/* #endif */
+	flex-direction: row;
+	justify-content: space-between;
+	align-items: center;
+
+}
+
+.uni-list-item__notestext {
+	padding: 0 15px 15px 15px;
+	font-size: 15px;
+	color: #666666;
+}
+
+.uni-list-item__content-title {
+	font-size: 17px;
+	color: #333333;
+}
 </style>

+ 118 - 0
pages/index/result.vue

@@ -0,0 +1,118 @@
+<template>
+	<view style="height: 100%;background: #fff;">
+		<!-- 公共组件-每个页面必须引入 -->
+		<public-module></public-module>
+		<view style="padding:95px 25px;">
+			<view class="assets" >
+				<image v-if="!id"  src="/static/icon/Vector.png" mode=""></image>
+				<image v-if="id"  src="/static/icon/Vector (1).png" mode=""></image>
+				<view  style="font-size: 16px;">{{!id?'申请成功':'审核驳回'}}</view>
+				<!-- <view style="font-size: 31px;font-weight: bold;margin-top:5px">{{MoneyData.cashFee}}</view> -->
+				<text v-if="!id" style="font-size: 15px;">已提交合伙人/工作室/团队注册申请,请等待耐心等待系统审核</text>
+				<text v-if="id"  style="font-size: 15px;">请核对并修改以下信息后,再重新提交。</text>
+				<view v-if="remark" style="padding: 15px;background: #F9F9F9;font-size: 15px;text-align: left;
+color: #666666;border-radius: 3px 3px 3px 3px;margin-top: 15px;">
+					{{remark}}
+				</view>
+				<view class="bottom-button dis j-s" v-if="id" >
+					<text>取消</text>
+					<text @click="resubmit">重新提交</text>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+
+	export default {
+		data() {
+			return {
+				MoneyData: {},
+				id:'',
+				remark:'',
+				type:'',
+				level:'',
+				deptSource:'',
+			}
+		},
+		
+		onShow() {
+
+		},
+	async onLoad(e) {
+		// 工号/合伙人还是工作室/驳回内容/审核状态/等级/机构来源
+		if(e){
+			this.id=e.id
+			this.remark=e.remark //驳回内容
+			this.type=e.type //合伙人1 工作室2 团队3
+			// this.level=e.level?e.level:'' //type为1,传合伙人等级
+			// this.deptSource=e.deptSource?e.deptSource:'' //type为2,传机构来源
+		}
+	},
+		onShow() {},
+		methods: {
+			async resubmit(){
+				if(this.type==1){
+					uni.redirectTo({
+						url: "/pages/index/applypartner?id="+this.id
+					})
+				}
+				if(this.type==2){
+					uni.redirectTo({
+						url: "/pages/index/applystudio?id="+this.id
+					})
+				}
+				if(this.type==3){
+					uni.redirectTo({
+						url: "/pages/index/applyteam?id="+this.id
+					})
+				}
+			}
+
+
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	page{
+		background: #fff;
+	}
+
+	.assets {
+		color: #333333;
+		text-align: center;
+		font-size: 16px;
+		text{
+			font-size: 13px;
+			color: #666666;
+		}
+		image{
+			display: inline-block;
+			width:52px;
+			height:52px
+		}
+	}
+.bottom-button{
+	margin-top: 40px;
+	text{
+		display: inline-block;
+		border-radius: 31px 31px 31px 31px;
+		width: 40%;
+		font-size: 16px;
+		height: 40px;
+		line-height:40px;
+		text-align: center;
+	}
+	text:first-child{
+		border: 1px solid #2D6DFF;
+		color: #2D6DFF;
+	}
+	text:last-child{
+		color: #FFFFFF;
+		background: linear-gradient( 133deg, #2DD9FF 0%, #2D6DFF 100%);
+	}
+}
+
+</style>

+ 0 - 346
pages/institutional/institutional - 副本.vue

@@ -1,346 +0,0 @@
-<template>
-	<view >
-		<public-module></public-module>
-		<view class=" flexd " style="z-index: 99;">
-			<view class="search dis a-c j-s">
-				<u-search v-model="pageRequest.deptName" @custom="custom" @search="search" :shape="shape"
-					:height='68' bg-color="#fff"  
-					:input-style="{background:'transparent'}" placeholder-color="#ccc" :clearabled="clearabled"
-					:show-action="showAction" :input-align="inputAlign" @clear="clear"
-					:action-style="{background:'#fff'}" placeholder="请输入机构关键词"></u-search>
-				<image src="/static/shaixuan.png" mode="" @click="searchPopup"></image>
-			</view>
-		</view>
-		<o-empty v-if="pageResult.length==0" />
-		<view  style="padding-top:120upx"  >
-			<view class="institutional-list" v-for="item in pageResult" @click="closeDetail(item)">
-				<view class="homepage" style="font-size: 13px;font-weight: 500;">
-					<text>团队名称:{{item.deptName}}</text>
-					<text>¥{{item.sumpremium}}</text>
-				</view>
-				<view class="dis j-s">
-					<view class="homepage-title">
-						<text class="button1">出单{{item.orderManNum}}人</text>
-						<text class="button2">总人数{{item.deptManNum}}人</text>
-					</view>
-					<view>
-					<u-button   size="mini" type="primary"  class="view-now" @click="closeDetail(item)">查看详情</u-button>
-				</view>
-				<!-- 	<text>团队人数:{{item.deptManNum}}</text>
-					<text>出单人力:{{item.orderManNum}}</text> -->
-				</view>
-				
-				<!-- <u-button class="view-now"  >立即查看</u-button> -->
-			</view>
-		</view>
-		<u-loadmore v-if="pageResult.length!=0" :status="status" />
-		<!-- 普通弹窗 -->
-		<u-popup ref="popup"  :mask="true" mode="bottom">
-			<view  >
-				<view class="tabs">
-					 <u-tabs style="justify-content: flex-start;"  :show-bar="false"
-						active-color="#232832" :is-scroll="false" :current="0"  :list="tabslist" 
-						bar-width="60"></u-tabs> 
-				</view>
-				<view class="dis  a-c f-wrap j-s" style="margin: 10px;">
-					<view class="status-data" :class="item.value==timespecifications? 'active':''"
-						v-for="(item,index) in dateList" @tap="dateclick(index)" :key="index">
-						{{item.label}}
-					</view>
-					<view class="dis a-c">
-						<view class="status-data" :class="startShow? 'active' :''"
-							@tap="startShowmethod()">
-							<text v-if="pageRequest.beginTime!=''">{{pageRequest.beginTime}}</text>
-							<text v-else>{{transformTime()}}</text>
-						</view>
-						<text style="margin: 0 8px;font-size: 12px;">至</text>
-						<view class="status-data" :class="endShow? 'active' :''" @tap="endShowmethod()">
-							<text v-if="pageRequest.endTime!=''">{{pageRequest.endTime}}</text>
-							<text v-else>{{transformTime()}}</text>
-						</view>
-					</view>
-				</view>
-				<view class="dis  a-c f-wrap j-s trading-foot">
-					<text @click="$refs.popup.close()">取消</text>
-					<text @click="confirm">确认</text>
-				</view>
-			</view>
-		</u-popup>
-	</view>
-</template>
-
-<script>
-import { log } from 'util';
-	export default {
-		name: 'name', //插件名称
-		data() {
-			return {
-				//日期筛选list
-				dateList: [{
-						label: '全部',
-						value: 0,
-					},
-					{
-						label: '一周内',
-						value: 1,
-					},
-					{
-						label: '一个月内',
-						value: 2,
-					},
-					{
-						label: '三个月内',
-						value: 3,
-					},
-					{
-						label: '六个月内',
-						value: 4,
-					},
-				
-				],
-				rangeData:'',
-				 btnGetCode: {
-				          borderRadius: '7px',//驼峰命名注意----这里如果不规范,会整体失效,px,rpx作为单位都可以,一定要有引号
-				          height: '34px', 
-				    },
-				isLoading:false,
-				clearabled: true,
-				inputAlign: 'left',
-				showAction: false,
-				shape: 'square',
-				pageRequest: { //查询的默认条件
-					deptName: "",
-					beginTime:'',
-					endTime:'',
-					pageNum: 1,
-					pageSize: 20,
-				},
-				pageResult:[],
-				tabslist: [{
-					name: '时间筛选'
-				}, ],
-				timespecifications: null,
-				startShow: false,
-				endShow:false,
-				totalPages: 0, //订单总页数
-				status: 'loadmore',
-			}
-		},
-		async onLoad(e) {
-			// if(e.userId){
-			// 	this.pageRequest.userId=e.userId
-			// }
-			this.getOrdersList(1, 20)
-		},
-		methods: {
-			closeDetail(val){
-				uni.navigateTo({
-					url: `/pages/institutional/detail?deptId=${val.deptId}&deptName=${val.deptName}&startTime=${val.startTime}`
-				})
-			},
-			onReachBottom() {
-				if (this.pageRequest.pageNum >= this.totalPages) return;
-				this.status = 'loading';
-				this.pageRequest.pageNum = ++this.pageRequest.pageNum;
-				setTimeout(async () => {
-					let res = await this.$http.post('/agency/queryTeamInfoPage', this.pageRequest);
-					if (res.code == '200') {
-						this.pageResult = [...this.pageResult, ...res.data.content];
-					}
-					if (this.pageRequest.pageNum >= this.totalPages) this.status = 'nomore';
-					else this.status = 'loading';
-				}, 1000)
-			},
-			//当前时间
-			transformTime(day) {
-				var date = new Date();
-				date.setFullYear(date.getFullYear());
-				date.setTime(date.getTime());
-				var strYear = date.getFullYear();
-				var strDay = day ? date.getDate() - day : date.getDate();
-				var strMonth = date.getMonth() + 1;
-				if (strMonth < 10) {
-					strMonth = "0" + strMonth;
-				}
-				if (strDay < 10) {
-					strDay = "0" + strDay;
-				}
-				var datastr = strYear + "-" + strMonth + "-" + strDay;
-				return datastr;
-			},
-			transformTime1(month) {
-				var date = new Date();
-				date.setFullYear(date.getFullYear());
-				date.setTime(date.getTime());
-				var strYear = date.getFullYear();
-				var strDay = date.getDate();
-				var strMonth = month ? (date.getMonth() + 1) - month : date.getMonth() + 1;
-				if (strMonth < 10) {
-					strMonth = "0" + strMonth;
-				}
-				if (strDay < 10) {
-					strDay = "0" + strDay;
-				}
-				var datastr = strYear + "-" + strMonth + "-" + strDay;
-				return datastr;
-			},
-			startShowmethod() {
-				this.startShow = true;
-				this.timespecifications = null;
-			},
-			endShowmethod() {
-				this.endShow = true;
-				this.timespecifications = null;
-			},
-			//日期筛选
-			dateclick(e) {
-				/* 0:全部  1:一周内 2:一个月内 3:三个月内  4:六个月内*/
-				switch (e) {
-					case 0:
-						this.pageRequest.beginTime = "";
-						this.pageRequest.endTime = "";
-						break;
-					case 1:
-						this.pageRequest.beginTime = this.transformTime(7);
-						this.pageRequest.endTime = this.transformTime();
-						break;
-					case 2:
-						this.pageRequest.beginTime = this.transformTime1(1);
-						this.pageRequest.endTime = this.transformTime();
-						break;
-					case 3:
-						this.pageRequest.beginTime = this.transformTime1(3);
-						this.pageRequest.endTime = this.transformTime();
-						break;
-					case 4:
-						this.pageRequest.beginTime = this.transformTime1(6);
-						this.pageRequest.endTime = this.transformTime();
-						break;
-					default:
-				}
-				this.timespecifications = e;
-			},
-			searchPopup() {
-				this.$refs.popup.open()
-			},
-			search(e) {
-				this.pageRequest.deptName=e
-				this.getOrdersList(1, 20);
-			},
-			confirm() {
-				this.getOrdersList(1, 20);
-				this.$refs.popup.close()
-			},
-			async getOrdersList(page, size) {
-				this.isLoading=true
-				this.pageRequest.pageNum = page;
-				this.pageRequest.pageSize = size;
-				let res = await this.$http.post('/agency/queryTeamInfoPage', this.pageRequest);
-				if (res.code == '200') {
-					this.isLoading=false
-					this.pageResult = res.data.content;
-					this.totalPages = res.data.totalPages;
-				}
-			},
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.flexd {
-		position: fixed;
-		left: 0;
-		right: 0;
-		background: linear-gradient( 180deg, #DAE0EE 0%, #E9ECF4 100%);
-	}
-	.homepage{
-		display: flex;
-		width: 100%;
-		 justify-content: space-between;
-	}
-.search {
-		padding: 13px 16px;
-		image {
-			width: 22px;
-			height: 22px;
-			margin-left: 20px;
-		}
-	}
-	.institutional-list{
-		background: #FFFFFF;
-		padding: 20upx;
-		font-size: 38upx;
-		border-bottom: 1px solid #ccc;
-	}
-	.tabs {
-		padding: 0 15px;
-		border: 1px solid #f2f2f2;
-	}
-	
-	.status-data {
-		padding: 4px 10px;
-		box-sizing: border-box;
-		margin: 0 4px 4px 0;
-		font-size: 12px;
-		border: 1px solid #eee;
-		cursor: pointer;
-	}
-	.active {
-		position: relative;
-		background: rgba(0, 82, 255, 0.1);
-		color: #0052FF;
-		border: 1px solid #0052FF;
-		font-weight: 700;
-	}
-	
-	.active::before {
-		content: "";
-		position: absolute;
-		top: 0;
-		left: 0;
-		width: 10px;
-		height: 10px;
-		background-image: url("/static/image/car-insure/before.png");
-		background-size: cover;
-	}
-	.trading-foot>text{
-		width: 50%;
-		text-align: center;
-		background: #EAEAEA;
-		color: #0052FF;
-		line-height: 80upx;
-	}
-	.trading-foot>text:last-child{
-		background: #343EEF;
-		color: #FFFFFF;
-	}
-	.homepage-title{
-		margin-top: 5px;
-		button{
-			background-color: #FEF0E1 ;
-			color: #FE8F1C ;
-		}
-	}
-	.homepage-title>button:last-child{
-		background: #E6FAE3;
-		color: #3AC716;
-			margin-left: 10px;
-	}
-	.view-now{
-		background: linear-gradient( 90deg, #7E99D1 0%, #4F78B1 100%);
-		border-radius: 20px 20px 20px 20px;
-	}
-	.button1{
-		background-color: #FEF0E1 ;
-		color: #FE8F1C ;
-		font-size: 11px;
-		padding:5px 10px
-	}
-	.button2{
-		background: #E6FAE3;
-		color: #3AC716;
-		margin-left: 10px;
-		font-size: 11px;
-		padding:5px 10px
-	}
-</style>

+ 2 - 2
pages/institutional/institutional.vue

@@ -4,7 +4,7 @@
 		 <view class="headers " :style="headerStyle">
 			<view class="dis a-c j-start " style="padding: 0 15px;">
 				<u-icon name="arrow-left"  size="40" @tap="back"></u-icon>
-				<text style="margin: auto;">{{parentData.userName || '工作室'}}</text>
+				<text style="margin: auto;">{{parentData.deptName || '我的工作室'}}</text>
 			</view>
 		</view>
 		
@@ -31,7 +31,7 @@
 			return{
 				headerStyle: {
 					backgroundColor: 'transparent',
-					backgroundImage: 'url("/static/背景 (1).png")',
+					backgroundImage: 'url("/static/beijing (2).png")',
 					backgroundSize: 'cover',
 					backgroundPosition: '',
 					boxShadow: ''

+ 1 - 1
pages/institutional/institutionalDetail.vue

@@ -72,7 +72,7 @@
 				chineseNumbers:[ '一', '二', '三', '四', '五', '六', '七', '八', '九'],
 				headerStyle: {
 					backgroundColor: 'transparent',
-					backgroundImage: 'url("/static/背景 (1).png")',
+					backgroundImage: 'url("/static/beijing (2).png")',
 					backgroundSize: 'cover',
 					backgroundPosition: '',
 					boxShadow: ''

+ 546 - 231
pages/institutional/institutionalTeam.vue

@@ -1,286 +1,601 @@
 <template>
-	<view class="" >
+	<view class="">
 		<public-module></public-module>
-		 <view class="headers " :style="headerStyle">
+		<view class="headers " :style="headerStyle">
 			<view class="dis a-c j-start " style="padding: 0 15px;">
-				<u-icon name="arrow-left"  size="40" @tap="back"></u-icon>
-				<text style="margin: auto;">工作室</text>
+				<u-icon name="arrow-left" size="40" @tap="back"></u-icon>
+				<text
+					style="margin: auto;">{{ parentData.level ? `工作室(${chineseNumbers[parentData.level - 1]}级合伙人)` : '我的工作室' }}</text>
 			</view>
 		</view>
-		
-        <view class="body"   style="background: #F8FAFE;margin-top: 85px;">
+
+		<view class="body" style="background: #F8FAFE;margin-top: 85px;">
 			<view class="partner-head">
-				<seach  @queryData="queryData" :directLsit='parentData' />
+				<seach @queryData="queryData" :directLsit='parentData' />
 			</view>
 			<!-- <card :cardData='directLsit'></card> -->
-			<block v-for="(item,index) in directLsit" :key="index">
-				<view class="card" >
+			<block v-for="(item, index) in directLsit" :key="index">
+				<view class="card">
 					<view style="padding: 10px 15px 0 10px">
-					<view class="dis j-s card-title">
-						<view>
-							<text style="font-size: 16px;">{{item.userName}}</text>
-							<image v-if="parentData.partnerType==1 " style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/级别 (5).png" mode=""></image>
-							<image v-if="parentData.partnerType==2 "  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/级别.png" mode=""></image>
-							<image v-if="parentData.partnerType==3"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/级别 (1).png" mode=""></image>
-							<image v-if="parentData.partnerType==4"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/级别 (2).png" mode=""></image>
+						<view class="dis j-s card-title">
+							<view>
+								<text style="font-size: 16px;">{{ item.deptName }}({{ item.userName }})</text>
+								<!-- <image v-if="parentData.partnerType==1 " style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/jibie1.png" mode=""></image>
+							<image v-if="parentData.partnerType==2 "  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/jibie.png" mode=""></image>
+							<image v-if="parentData.partnerType==3"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/jibie3.png" mode=""></image>
+							<image v-if="parentData.partnerType==4"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/jibie4.png" mode=""></image> -->
+							</view>
+							<text v-if="item.teamManNum > 0" @click="detail(item)">详情
+								<image style="display: inline-block; width: 9px;height:9px;vertical-align: -1px;"
+									src="/static/icon/right.png" mode=""></image>
+							</text>
 						</view>
-						<text  @click="detail(item)">详情
-						<image style="display: inline-block; width: 9px;height:9px;vertical-align: -1px;" src="/static/icon/向右.png" mode=""></image></text>
-					</view>
-					<view style="padding:0 15px;font-size: 10px;
+						<view style="padding:0 15px;font-size: 10px;
 					color: #666666;font-weight: 600;">下级团队共计
-					<text style="font-size: 12px;color: #333333;font-weight: 600;">{{item.deptNum}}</text>
-					个</view>
-					<view class="card-con dis j-c a-c">
-						<view >
-							<text>{{item.suggestName || '未设置'}}</text>
-							<text>推荐人</text>
-						</view>
-						<view >
-							<text>{{item.teamManNum}}</text>
-							<text>总人数</text>
-						</view>
-						<view>
-							<text>{{item.sumPremium}}</text>
-							<text>总保费</text>
+							<text style="font-size: 12px;color: #333333;font-weight: 600;">{{ item.deptNum }}</text>
+							个
 						</view>
-						<view style="border-right:none">
-							<text>{{item.extractFee}}</text>
-							<text>总佣金</text>
+						<view class="card-con dis j-c a-c">
+							<view>
+								<text>{{ item.suggestName || '未设置' }}</text>
+								<text>推荐人</text>
+							</view>
+							<view>
+								<text>{{ item.teamManNum }}</text>
+								<text>会员总人数</text>
+							</view>
+							<view>
+								<text>{{ item.sumPremium }}</text>
+								<text>总保费</text>
+							</view>
+							<view style="border-right:none">
+								<text>{{ item.extractFee }}</text>
+								<text>总佣金</text>
+							</view>
 						</view>
 					</view>
-					</view>
 				</view>
-				
+
 			</block>
 			<!-- <u-loadmore style="margin-top: 5px;" v-if="directLsit.length!=0" :status="status" />
 			<o-empty v-if="directLsit.length==0" /> -->
-		
-    </view>
-		
+
+		</view>
+		<view id="_drag_button" class="drag" :style="'left: ' + left + 'px; top:' + top + 'px;'"
+		@touchmove.stop.prevent="touchmove" @touchend="touchend">
+			<image src="/static/code.png" mode="" @click.stop.prevent="btnClick"></image>
+			<text>招募码</text>
+		</view>
+		<u-popup v-model="ShowModalCodebusiness" mode="bottom" border-radius="15">
+			<view>
+				<text class=" ShowModalCode-business">工作室业务</text>
+				<view>
+					<radio-group class="uni-list" @change="styleChange">
+						<view v-for="(item, index) in styles" :key="index" class="uni-list-item">
+							<view class="uni-list-item__container">
+								<view class="uni-list-item__content">
+									<text class="uni-list-item__content-title">{{ item.text }}</text>
+								</view>
+								<view class="uni-list-item__extra">
+									<radio :value="item.value" :checked="item.checked" />
+								</view>
+							</view>
+							<view class="uni-list-item__notestext">{{ item.notestext }}</view>
+						</view>
+					</radio-group>
+				</view>
+				<view class="ShowModalCode-sumbit" @click="ShowModalCodeSumbit()">确定</view>
+			</view>
+		</u-popup>
+		<u-popup v-model="ShowModalCode1" mode="bottom" border-radius="15">
+			<view class="ShowModalCode-style ">
+				<text>{{deptSource==1?'渠道':'个代'}}工作室招募码</text>
+				<view class=" ShowModalCode-con">
+					<view>扫码加入</view>
+					<image :src="workImg" mode="widthFix" lazy-load style="width: 150px;"></image>
+				</view>
+			</view>
+		</u-popup>
 	</view>
 </template>
 <script>
-	import myDatePicker from '../components/date-picker.vue';
-	import seach from '../components/seach.vue';
-	// import card from '../components/card.vue'
-	export default{
-		components:{myDatePicker,seach},
-		data(){
-			return{
-				startShow:false,
-				year:[{
-					lable:'日',
-					startShow:false
-				},{
-					lable:'月',
-					startShow:false
-				},{
-					lable:'季',
-					startShow:false
-				},{
-					lable:'年',
-					startShow:false
-				},{
-					lable:'自定义',
-					startShow:false
-				}],
-				chineseNumbers:[ '一', '二', '三', '四', '五', '六', '七', '八', '九'],
-				headerStyle: {
-					backgroundColor: 'transparent',
-					backgroundImage: 'url("/static/背景 (1).png")',
-					backgroundSize: 'cover',
-					backgroundPosition: '',
-					boxShadow: ''
-					// 其他样式属性...
-				},
-				teamTabIndex: 0,
-				directLsit: [],
-                source:0,
-				totalPages:0,
-                totalSize:0,
-				status: 'loadmore',
-				pageRequest: { //查询的默认条件
-					pageNum: 1,
-					pageSize: 20,
-                    userName:''
-				},
-				parentData:{}
+import myDatePicker from '../components/date-picker.vue';
+import seach from '../components/seach.vue';
+import QR from "@/common/wxqrcode.js"
+import {
+	mapState,
+	mapMutations
+} from "vuex"
+// import card from '../components/card.vue'
+export default {
+	components: { myDatePicker, seach },
+	data() {
+		return {
+			ShowModalCodebusiness:false,
+			ShowModalCode1:false,
+			styles: [{
+				value: '1',
+				text: '渠道',
+				notestext: '团队长加出单员模式,无分销模式,结费都在团队长处。',
+				checked: true
+			},
+			{
+				value: '2',
+				notestext: '团队长加代理人模式,三级分销模式,结费方式为个人,有佣金。',
+				text: '个代'
+			}
+			],
+			deptSource: 1,
+			workImg:'',
+			top: 0,
+			left: 0,
+			width: 0,
+			height: 0,
+			offsetWidth: 0,
+			offsetHeight: 0,
+			windowWidth: 0,
+			windowHeight: 0,
+			isMove: true,
+			edge: 10,
+			startShow: false,
+			year: [{
+				lable: '日',
+				startShow: false
+			}, {
+				lable: '月',
+				startShow: false
+			}, {
+				lable: '季',
+				startShow: false
+			}, {
+				lable: '年',
+				startShow: false
+			}, {
+				lable: '自定义',
+				startShow: false
+			}],
+			chineseNumbers: ['一', '二', '三', '四', '五', '六', '七', '八', '九'],
+			headerStyle: {
+				backgroundColor: 'transparent',
+				backgroundImage: 'url("/static/beijing (2).png")',
+				backgroundSize: 'cover',
+				backgroundPosition: '',
+				boxShadow: ''
+				// 其他样式属性...
+			},
+			teamTabIndex: 0,
+			directLsit: [],
+			source: 0,
+			totalPages: 0,
+			totalSize: 0,
+			status: 'loadmore',
+			pageRequest: { //查询的默认条件
+				pageNum: 1,
+				pageSize: 20,
+				userName: ''
+			},
+			parentData: {}
+		}
+	},
+	computed: {
+		...mapState(['userInfo', "userCheckInfo",]),
+	},
+	async onLoad(e) {
+		this.parentData = JSON.parse(decodeURIComponent(e.key));
+		// this.parentData.partnerType=this.parentData.level+1
+		console.log(this.parentData)
+		this.queryData()
+
+	},
+	mounted() {
+		const sys = uni.getSystemInfoSync();
+
+		this.windowWidth = sys.windowWidth;
+		this.windowHeight = sys.windowHeight;
+
+		// #ifdef APP-PLUS
+		this.existTabBar && (this.windowHeight -= 50);
+		// #endif
+		if (sys.windowTop) {
+			this.windowHeight += sys.windowTop;
+		}
+		const query = uni.createSelectorQuery().in(this);
+		query.select('#_drag_button').boundingClientRect(data => {
+			this.width = data.width;
+			this.height = data.height;
+			this.offsetWidth = data.width / 2;
+			this.offsetHeight = data.height / 2;
+			this.left = this.windowWidth - this.width - this.edge;
+			if (this.bottomPx * 1 > 0) {
+				this.top = this.windowHeight - this.height - this.bottomPx;
+			} else {
+				this.top = this.windowHeight - this.height - this.edge;
 			}
-		},
-		async onLoad(e) {
-			this.parentData = JSON.parse(decodeURIComponent(e.key));
-			this.parentData.partnerType=this.parentData.level+1
-			console.log(this.parentData)
-			this.queryData()
 
+		}).exec();
+		//避免部分情况下图片加载延迟导致高度渲染出错
+		setTimeout(() => {
+			const query = uni.createSelectorQuery().in(this);
+			query.select('#_drag_button').boundingClientRect(data => {
+				this.width = data.width;
+				this.height = data.height;
+				this.offsetWidth = data.width / 2;
+				this.offsetHeight = data.height / 2;
+				this.left = this.windowWidth - this.width - this.edge;
+				if (this.bottomPx * 1 > 0) {
+					this.top = this.windowHeight - this.height - this.bottomPx;
+				} else {
+					this.top = this.windowHeight - this.height - this.edge;
+				}
+			}).exec();
+		}, 200);
+	},
+	methods: {
+		styleChange(e) {
+			this.deptSource = e.detail.value
 		},
-		methods:{
-			back() {
-				uni.navigateBack({
-					delta: 1, // 返回的页面数,如果是1表示返回上一页
-					success: function() {}
-				});
-				
-			},
-			detail(item){
-				uni.navigateTo({
-					url: "/pages/institutional/institutional?key="+encodeURIComponent(JSON.stringify(item))
-				})
+		btnClick() {
+			this.ShowModalCodebusiness = true
+			this.deptSource = 1
+		},
+		ShowModalCodeSumbit(){
+			this. ShowModalCode1 = true
+			this.workImg = QR.createQrCodeImg(this.$base.h5BaseUrl + "/#/pages/index/applystudio?deptSource=" + this.deptSource + '&userId=' + this.userInfo.sysUser.userId, {
+				size: parseInt(200) //二维码大小  
+			})
+		},
+		touchmove(e) {
+				// 单指触摸
+				if (e.touches.length !== 1) {
+					return false;
+				}
+				if (!this.isMove) {
+				}
+				this.isMove = true;
+
+				this.left = e.touches[0].clientX - this.offsetWidth;
+
+				let clientY = e.touches[0].clientY - this.offsetHeight;
+				// #ifdef H5
+				clientY += this.height;
+				// #endif
+				let edgeBottom = this.windowHeight - this.height - this.edge;
+
+				// 上下触及边界
+				if (clientY < this.edge) {
+					this.top = this.edge;
+				} else if (clientY > edgeBottom) {
+					this.top = edgeBottom;
+				} else {
+					this.top = clientY
+				}
+
 			},
-			onReachBottom() {
-				if (this.pageRequest.pageNum >= this.totalPages) return;
-				this.status = 'loading';
-				this.pageRequest.pageNum = ++this.pageRequest.pageNum;
-				setTimeout(async () => {
-					let res = await this.$http.post('/sysPartner/querySysPartnerAPPPage', {
-						...this.pageRequest,
-                        source:this.source
-				});
-					if (res.code == '200') {
-					this.totalSize = res.data.totalSize;
-						this.directLsit = [...this.directLsit, ...res.data.content];
+			touchend(e) {
+				if (this.isDock) {
+					let edgeRigth = this.windowWidth - this.width - this.edge;
+
+					if (this.left < this.windowWidth / 2 - this.offsetWidth) {
+						this.left = this.edge;
+					} else {
+						this.left = edgeRigth;
 					}
-					if (this.pageRequest.pageNum >= this.totalPages) this.status = 'nomore';
-					else this.status = 'loading';
-				}, 1000)
-			},
-			
-			async queryData(data) {
-				let params = {
-					beginTime:data&& data.beginTime || '',
-					endTime:data&& data.endTime  || '',
-					leaderIds:this.parentData.leaderIds,
-					level: this.parentData.partnerType+1 || this.parentData.level+1 ,
-					industrySector:data&& data.industrySector  ||'',
-					// ...this.pageRequest
+
+				}
+				if (this.isMove) {
+					this.isMove = false;
+
 				}
-				let res = await this.$http.post('/APPPartner/partnerLeaderInfo', params);
+
+			},
+		back() {
+			uni.navigateBack({
+				delta: 1, // 返回的页面数,如果是1表示返回上一页
+				success: function () { }
+			});
+
+		},
+		detail(item) {
+			uni.navigateTo({
+				url: "/pages/institutional/institutional?key=" + encodeURIComponent(JSON.stringify(item))
+			})
+		},
+		onReachBottom() {
+			if (this.pageRequest.pageNum >= this.totalPages) return;
+			this.status = 'loading';
+			this.pageRequest.pageNum = ++this.pageRequest.pageNum;
+			setTimeout(async () => {
+				let res = await this.$http.post('/sysPartner/querySysPartnerAPPPage', {
+					...this.pageRequest,
+					source: this.source
+				});
 				if (res.code == '200') {
-					this.directLsit=res.data.partnerInfoVoList
-					this.parentData= {...this.parentData,...res.data}
-					this.totalPages = res.data.totalPages;
 					this.totalSize = res.data.totalSize;
-					if (this.pageRequest.pageNum >= res.data.totalPages) this.status = 'nomore';
-					else this.status = 'loadmore';
-                    
+					this.directLsit = [...this.directLsit, ...res.data.content];
 				}
-			},
-			onShowDatePicker() { //显示
-				this.showDatePicker = true;
-			},
-		}
-		
+				if (this.pageRequest.pageNum >= this.totalPages) this.status = 'nomore';
+				else this.status = 'loading';
+			}, 1000)
+		},
+
+		async queryData(data) {
+			let params = {
+				beginTime: data && data.beginTime || '',
+				endTime: data && data.endTime || '',
+				leaderIds: this.parentData.leaderIds,
+				level: this.parentData.partnerType + 1 || this.parentData.level + 1,
+				industrySector: data && data.industrySector || '',
+				// ...this.pageRequest
+			}
+			let res = await this.$http.post('/APPPartner/partnerLeaderInfo', params);
+			if (res.code == '200') {
+				this.directLsit = res.data.partnerInfoVoList
+				this.parentData = { ...this.parentData, ...res.data }
+				this.totalPages = res.data.totalPages;
+				this.totalSize = res.data.totalSize;
+				if (this.pageRequest.pageNum >= res.data.totalPages) this.status = 'nomore';
+				else this.status = 'loadmore';
+
+			}
+		},
+		onShowDatePicker() { //显示
+			this.showDatePicker = true;
+		},
 	}
+
+}
 </script>
 
 <style lang="scss" scoped>
-	
-	.headers {
-		position: fixed;
-		top: 0;
-		left: 0;
-		width: 100%;
-		z-index: 999999;
-		padding-top: 40px;
-		    height: 85px;
+.headers {
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	z-index: 999999;
+	padding-top: 40px;
+	height: 85px;
+
+	text {
+		font-size: 18px;
+		font-weight: bold;
+	}
+}
+
+.partner-head {
+	background: #FFFFFF;
+	color: #333333;
+	font-size: 14px;
+
+	i {
+		margin-left: 2px;
+		display: inline-block;
+		width: 0;
+		height: 0;
+		border: 4px solid;
+		border-color: #666666;
+		border-bottom: 4px solid transparent;
+		border-right: 4px solid transparent;
+		border-left: 4px solid transparent;
+	}
+
+	.search-data {
+		color: #666666;
+
+		.active {
+			color: #FFFFFF;
+			background: linear-gradient(132deg, #2DD9FF 0%, #2D6DFF 100%);
+		}
+
+		text {
+			// width: 25px;
+			// height: 25px;
+			// text-align: center;
+			padding: 5px 8px;
+			border: 1px solid #EEEEEE;
+		}
+	}
+}
+
+.sum-insurance {
+	padding: 10px 0;
+
+	view {
+		text-align: center;
+		width: 33.33%;
+		border-right: 1px solid #EEEEEE;
+
 		text {
+			display: block;
+		}
+
+		text:first-child {
+			font-weight: 600;
 			font-size: 18px;
-			font-weight: bold;
+			color: #333333;
+		}
+
+		text:last-child {
+			font-size: 10px;
+			color: #999999;
 		}
 	}
-	.partner-head{
-		background: #FFFFFF;
-		color: #333333;
-		font-size: 14px;
-		i{
-			margin-left: 2px;
-			display:inline-block;
-			width: 0;
-			height: 0;
-			border: 4px solid;
-			border-color: #666666;
-			border-bottom: 4px solid transparent; 
-			border-right: 4px solid transparent;
-			border-left: 4px solid transparent;
+}
+
+.card {
+	background: #FFFFFF;
+	border-radius: 5px 5px 5px 5px;
+	margin: 10px;
+	background-image: url("/static/card.png");
+	background-size: 100% 100%;
+	border-top: 1px solid;
+	border-image: linear-gradient(270deg, rgba(45, 217, 255, 0), rgba(45, 217, 255, 1), rgba(45, 217, 255, 0)) 1 1;
+
+	.card-title {
+		padding: 10px 15px;
+
+		text:first-child {
+			font-weight: 600;
+			font-size: 16px;
+			color: #333333;
 		}
-		.search-data{
+
+		text:last-child {
+			font-size: 12px;
 			color: #666666;
-			.active{
-				color: #FFFFFF;
-				background: linear-gradient( 132deg, #2DD9FF 0%, #2D6DFF 100%);
-			}
-			text{
-				// width: 25px;
-				// height: 25px;
-				// text-align: center;
-				padding: 5px 8px;
-				border: 1px solid #EEEEEE;
-			}
 		}
 	}
-	.sum-insurance{
+
+	.card-con {
 		padding: 10px 0;
-		view{
+
+		view {
 			text-align: center;
 			width: 33.33%;
 			border-right: 1px solid #EEEEEE;
-				text{
-					display: block;
-				}
-				text:first-child{
-					font-weight: 600;
-					font-size: 18px;
-					color: #333333;
-				}
-				text:last-child{
-					font-size: 10px;
-					color: #999999;
-				}
+
+			text {
+				display: block;
 			}
-	}
-	.card{
-		background: #FFFFFF;
-		border-radius: 5px 5px 5px 5px;
-		margin: 10px;
-		background-image: url("/static/card.png");
-		background-size: 100% 100%;
-		border-top: 1px solid;
-		border-image: linear-gradient(270deg, rgba(45, 217, 255, 0), rgba(45, 217, 255, 1), rgba(45, 217, 255, 0)) 1 1;
-		
-		.card-title{
-			padding:10px 15px;
-			text:first-child{
+
+			text:first-child {
 				font-weight: 600;
 				font-size: 16px;
 				color: #333333;
+				line-height: 18px;
 			}
-			text:last-child{
-				font-size: 12px;
-				color: #666666;
+
+			text:last-child {
+				font-size: 10px;
+				color: #999999;
 			}
 		}
-		.card-con{
-			padding: 10px 0;
-			view{
-				text-align: center;
-				width: 33.33%;
-				border-right: 1px solid #EEEEEE;
-					text{
-						display: block;
-					}
-					text:first-child{
-						font-weight: 600;
-						font-size: 16px;
-						color: #333333;
-						line-height: 18px;
-					}
-					text:last-child{
-						font-size: 10px;
-						color: #999999;
-					}
-				}
-		}
-		
 	}
+
+}
+
+.drag {
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	align-items: center;
+	min-height: 80rpx;
+	position: fixed;
+	z-index: 999999;
+	font-size: 12px;
+	color: #FFFFFF;
+	width: 50px;
+	height: 50px;
+	padding-top: 2px;
+	background: linear-gradient(132deg, #2DD9FF 0%, #2D6DFF 100%);
+	border-radius: 3px 3px 3px 3px;
+
+	image {
+		display: inline-block;
+		width: 23px;
+		height: 23px;
+	}
+
+	&.transition {
+		transition: left .3s ease, top .3s ease;
+	}
+
+}
+.ShowModalCode-business {
+	display: block;
+	font-weight: 600;
+	font-size: 16px;
+	color: #333333;
+	// border: 1px solid #EEEEEE;
+	padding: 15px;
+	text-align: center;
+}
+
+.ShowModalCode-con {
+	padding: 30px;
+	text-align: center;
+
+	image {
+		margin: 0 auto;
+		margin-top: 15px;
+	}
+}
+
+.uni-list {
+	flex: 1;
+}
+
+.uni-list-item:first-child {
+	/* #ifndef APP-NVUE */
+	// display: flex;
+	/* #endif */
+	flex: 1;
+	flex-direction: row;
+	background-color: #FFFFFF;
+	border-bottom-style: solid;
+	border-bottom-width: 1px;
+	border-bottom-color: #eee;
+}
+
+
+.uni-list-item__container {
+	padding: 12px 15px;
+	width: 100%;
+	flex: 1;
+
+	position: relative;
+	/* #ifndef APP-NVUE */
+	display: flex;
+	box-sizing: border-box;
+	/* #endif */
+	flex-direction: row;
+	justify-content: space-between;
+	align-items: center;
+
+}
+
+.uni-list-item__notestext {
+	padding: 0 15px 15px 15px;
+	font-size: 15px;
+	color: #666666;
+}
+
+.uni-list-item__content-title {
+	font-size: 17px;
+	color: #333333;
+}
+
+.ShowModalCode-sumbit {
+	background: linear-gradient(132deg, #2DD9FF 0%, #2D6DFF 100%);
+	border-radius: 5px 5px 5px 5px;
+	height: 40px;
+	line-height: 40px;
+	font-size: 16px;
+	color: #FFFFFF;
+	margin: 15px;
+	text-align: center;
+}
+.ShowModalCode-style {
+	text:first-of-type {
+		display: block;
+		font-weight: 600;
+		font-size: 16px;
+		color: #333333;
+		border: 1px solid #EEEEEE;
+		padding: 15px;
+		text-align: center;
+	}
+}
+.popup-code {
+	text {
+		display: block;
+		border-bottom: 1px solid #EEEEEE;
+		height: 50px;
+		line-height: 50px;
+		text-align: center;
+		font-size: 16px;
+		color: #666666;
+	}
+}
+
 </style>

+ 0 - 210
pages/institutional/partner - 副本.vue

@@ -1,210 +0,0 @@
-<template>
-	<view class="" >
-		<public-module></public-module>
-		<u-tabs :list="list" :is-scroll="false" :current="source" @change="change"></u-tabs>
-        <view class="body"   style="background: #F8FAFE;padding:12px">
-
-			<view class=" dis a-c j-s">
-                    <u-search v-model="pageRequest.userName"  style ='borderRadius: 0px 0px 0px 0px"' @search="search" 
-                        :height='68' bg-color="#fff"   :show-action="false" 
-                        :input-style="{background:'transparent'}" placeholder-color="#ccc" 
-                        :input-align="inputAlign"
-                        :action-style="{background:'#fff'}" placeholder="请输入合伙人姓名"></u-search>
-                    <text style="margin-left:55px" class="button1">共 {{totalSize}}个</text> 
-            </view>
-			<view class="teamStatistics "  >
-				<view class="statisticsTitle">
-					<view >机构名称</view>
-					<view >合伙人姓名</view>
-					<view >贡献金额</view>
-				</view>
-				<block v-for="(item,index) in directLsit" :key="index">
-					<view class="" style="padding: 0 10px;">
-						<view class="statisticsContent " :class="index==teamTabIndex?'active':''">
-							<view >{{item.deptName}}</view>
-							<view >{{item.userName}}</view>
-							<view >{{item.sumpremium}} </view>
-						</view>
-					</view>
-	
-				</block>
-				<u-loadmore style="margin-top: 5px;" v-if="directLsit.length!=0" :status="status" />
-				<o-empty v-if="directLsit.length==0" />
-			
-		</view>
-    </view>
-
-		
-	</view>
-</template>
-
-<script>
-	export default{
-		data(){
-			return{
-				teamTabIndex: 0,
-				directLsit: [],
-                source:0,
-				totalPages:0,
-                totalSize:0,
-				status: 'loadmore',
-				pageRequest: { //查询的默认条件
-					pageNum: 1,
-					pageSize: 20,
-                    userName:''
-				},
-				inputAlign: 'left',
-                list: [{
-					name: '直接合伙人'
-				}, {
-					name: '间接合伙人'
-				}],
-			}
-		},
-		async onLoad(params) {
-			this.queryData()
-
-		},
-		methods:{
-			search(e) {
-				this.pageRequest.userName=e
-				this.queryData()
-			},
-            change(index) {
-                this.pageRequest.userName=''
-				this.source = index;
-				this.pageRequest.pageNum = 1;
-          		this.pageRequest.pageSize = 20;
-			    this.queryData()
-			},
-			onReachBottom() {
-				if (this.pageRequest.pageNum >= this.totalPages) return;
-				this.status = 'loading';
-				this.pageRequest.pageNum = ++this.pageRequest.pageNum;
-				setTimeout(async () => {
-					let res = await this.$http.post('/sysPartner/querySysPartnerAPPPage', {
-						...this.pageRequest,
-                        source:this.source
-				});
-					if (res.code == '200') {
-					this.totalSize = res.data.totalSize;
-						this.directLsit = [...this.directLsit, ...res.data.content];
-					}
-					if (this.pageRequest.pageNum >= this.totalPages) this.status = 'nomore';
-					else this.status = 'loading';
-				}, 1000)
-			},
-			onSelected(e) { //选择
-				this.showDatePicker = false;
-				if (e) {
-					this.dateRange = e.value;
-					this.queryData();
-				}
-			},
-			async queryData() {
-				let params = {
-                    source:this.source,
-					...this.pageRequest
-				}
-				let res = await this.$http.post('/sysPartner/querySysPartnerAPPPage', params);
-				if (res.code == '200') {
-					
-					this.directLsit=res.data.content
-					this.totalPages = res.data.totalPages;
-					this.totalSize = res.data.totalSize;
-					if (this.pageRequest.pageNum >= res.data.totalPages) this.status = 'nomore';
-					else this.status = 'loadmore';
-                    
-				}
-			},
-			onShowDatePicker() { //显示
-				this.showDatePicker = true;
-			},
-		}
-		
-	}
-</script>
-
-<style lang="scss" scoped>
-	.teamStatistics {
-		width: 100%;
-		height: auto;
-		background: #FFFFFF;
-		box-shadow: 0px 4px 10px 0px #DAE3F4;
-		border-radius: 6px;
-	}
-	.body .teamStatistics .statisticsTitle {
-		height: 70upx;
-		margin-top: 10px;
-		box-sizing: border-box;
-		line-height: 70upx;
-		font-size: 24rpx;
-		border-radius: 6px 6px 0 0;
-		color: #232832;
-	}
-	
-	.body .teamStatistics .statisticsContent {
-		box-sizing: border-box;
-		height: 70upx;
-        text-align: center;
-		line-height: 70upx;
-		font-size: 26rpx;
-		color: #232832;
-        view{
-            text-align: center;
-		line-height: 70upx;
-        }
-	}
-	
-	.body .teamStatistics .statisticsTitle,
-	.body .teamStatistics .statisticsContent {
-		display: flex;
-		flex-wrap: nowrap;
-		justify-content: space-between;
-	}
-	
-	.body .teamStatistics .statisticsTitle>view,
-	.body .teamStatistics .statisticsContent>view {
-        width: 33.33%;
-		text-align: center;
-		font-size: 12px;
-	}
-	.statisticsDate {
-		color: rgba(51,51,51,0.8);
-		height: 34px;
-		border-radius: 6px;
-	}
-	.teamStatistics .statisticsTitle {
-		height: 70upx;
-		margin-top: 10px;
-		box-sizing: border-box;
-		line-height: 70upx;
-		font-size: 24rpx;
-		background: linear-gradient( 180deg, #DAE0EE 0%, #E9ECF4 100%);
-		border-radius: 6px 6px 0 0;
-		color: #232832;
-        view{
-            text-align: center;
-            line-height: 35px;
-        }
-        view:nth-child(1){
-            background: #EBEFF8 ;
-            line-height: 35px;
-        }
-        view:nth-child(2){
-            background: #FEF0E1  ;
-            color: #EF871C;
-        }
-        view:nth-child(3){
-            background: #E6FAE3;
-            color: #3AC716;
-        }
-	}
-	
-    .button1{
-        background: #EEF0FD;
-            color: #3640F0;
-		font-size: 11px;
-		padding:5px 10px
-	}
-</style>

+ 802 - 256
pages/institutional/partner.vue

@@ -1,316 +1,862 @@
 <template>
-	<view class="" >
+	<view class="">
 		<public-module></public-module>
-		 <view class="headers " :style="headerStyle">
+		<view class="headers " :style="headerStyle">
 			<view class="dis a-c j-start " style="padding: 0 15px;">
-				<u-icon name="arrow-left"  size="40" @tap="back"></u-icon>
-				<text style="margin: auto;">合伙人</text>
+				<u-icon name="arrow-left" size="40" @tap="back"></u-icon>
+				<text style="margin: auto;">我的合伙人</text>
 			</view>
 		</view>
-		
-        <view class="body"   style="background: #F8FAFE;margin-top: 85px;">
+
+		<view class="body" style="background: #F8FAFE;margin-top: 85px;">
 			<view class="partner-head">
-				<seach  @queryData="queryData" :partnerHierarchy="true" />
-				<!-- <view class=" dis j-s" style="border: 1px solid #EEEEEE;padding: 10px;">
-					<text>行业分类<i></i></text>
-					<text>合伙人层级<i></i></text>
-					<view class="search-data" >
-						<text v-for="(val,index) in year" :key="index" :class="val.startShow? 'active' :''" @click="onSeachYear(index)">{{val.lable}}</text>
+				<seach @queryData="queryData" :partnerHierarchy="true" />
+			</view>
+			<!-- <card :cardData='directLsit'></card> -->
+			<block>
+				<!-- 一级合伙人 -->
+				<view v-if="userLevel == 1">
+					<view class="card">
+						<view style="padding: 10px 15px 0 10px">
+							<view class="dis j-s card-title">
+								<view>
+									<text>一级合伙人</text>
+									<image style="display: inline-block; width: 45px;height:18px;vertical-align: sub;"
+										src="/static/icon/jibie1.png" mode=""></image>
+								</view>
+								<view @click="ShowModalCodeFun(2,1)">
+									<image style="display: inline-block; width: 13px;height:13px;vertical-align: -1px;"
+										src="/static/icon/code2.png" mode=""></image>
+									<text>招募码</text>
+								</view>
+							</view>
+							<view class="card-con dis j-c a-c">
+								<view>
+									<text>{{ directLsitOne.teamManNum || 0 }}</text>
+									<text>会员总人数</text>
+								</view>
+								<view>
+									<text>{{ directLsitOne.sumPremium || 0 }}</text>
+									<text>总保费</text>
+								</view>
+								<view style="border-right:none">
+									<text>{{ directLsitOne.extractFee || 0 }}</text>
+									<text>总佣金</text>
+								</view>
+							</view>
+						</view>
+						<view class="card-footer dis">
+							<text style="border-right: 1px solid #EEEEEE;" @click="partnerDetail(directLsitOne,1)">
+								<image src="/static/icon/hehuoren.png" mode=""></image>
+								合伙人({{ directLsitOne.partnerNumber || 0 }})
+							</text>
+							<text @click="closeInstitution(directLsitOne,1)">
+								<image src="/static/icon/gongzuoshi.png" mode=""></image>
+								工作室({{ directLsitOne.workNumber || 0 }})
+							</text>
+						</view>
 					</view>
-				</view> -->
-				<!-- <view class="sum-insurance dis j-c a-c">
-					<view >
-						<text>{{directLsit[Object.keys(directLsit)[0]].sumPremium}}</text>
-						<text>总保费</text>
+					<view class="card" >
+						<view style="padding: 10px 15px 0 10px">
+							<view class="dis j-s card-title">
+								<view>
+									<text>二级合伙人</text>
+									<image style="display: inline-block; width: 45px;height:18px;vertical-align: sub;"
+										src="/static/icon/jibie.png" mode=""></image>
+								</view>
+								<view @click="ShowModalCodeFun(3,2)">
+									<image style="display: inline-block; width: 13px;height:13px;vertical-align: -1px;"
+										src="/static/icon/code2.png" mode=""></image>
+									<text>招募码</text>
+								</view>
+							</view>
+							<view class="card-con dis j-c a-c">
+								<view>
+									<text>{{ directLsitTwo.teamManNum || 0 }}</text>
+									<text>会员总人数</text>
+								</view>
+								<view>
+									<text>{{ directLsitTwo.sumPremium || 0 }}</text>
+									<text>总保费</text>
+								</view>
+								<view style="border-right:none">
+									<text>{{ directLsitTwo.extractFee || 0 }}</text>
+									<text>总佣金</text>
+								</view>
+							</view>
+						</view>
+						<view class="card-footer dis">
+							<text style="border-right: 1px solid #EEEEEE;" @click="partnerDetail(directLsitTwo,2)">
+								<image src="/static/icon/hehuoren.png" mode=""></image>
+								合伙人({{ directLsitTwo.partnerNumber || 0 }})
+							</text>
+							<text @click="closeInstitution(directLsitTwo,2)">
+								<image src="/static/icon/gongzuoshi.png" mode=""></image>
+								工作室({{ directLsitTwo.workNumber || 0 }})
+							</text>
+						</view>
 					</view>
-					<view>
-						<text>{{directLsit[Object.keys(directLsit)[0]].teamManNum}}</text>
-						<text>成员总人数</text>
+					<!-- 三级 -->
+					<view class="card" >
+						<view style="padding: 10px 15px 0 10px">
+							<view class="dis j-s card-title">
+								<view>
+									<text>三级合伙人</text>
+									<image style="display: inline-block; width: 45px;height:18px;vertical-align: sub;"
+										src="/static/icon/jibie3.png" mode=""></image>
+								</view>
+								<view @click="ShowModalCodeFun(4,3)">
+									<image style="display: inline-block; width: 13px;height:13px;vertical-align: -1px;"
+										src="/static/icon/code2.png" mode=""></image>
+									<text>招募码</text>
+								</view>
+							</view>
+							<view class="card-con dis j-c a-c">
+								<view>
+									<text>{{ directLsitThree.teamManNum || 0 }}</text>
+									<text>会员总人数</text>
+								</view>
+								<view>
+									<text>{{ directLsitThree.sumPremium || 0 }}</text>
+									<text>总保费</text>
+								</view>
+								<view style="border-right:none">
+									<text>{{ directLsitThree.extractFee || 0 }}</text>
+									<text>总佣金</text>
+								</view>
+							</view>
+						</view>
+						<view class="card-footer dis">
+							<text style="border-right: 1px solid #EEEEEE;" @click="partnerDetail(directLsitThree,3)">
+								<image src="/static/icon/hehuoren.png" mode=""></image>
+								合伙人({{ directLsitThree.partnerNumber || 0 }})
+							</text>
+							<text @click="closeInstitution(directLsitThree,3)">
+								<image src="/static/icon/gongzuoshi.png" mode=""></image>
+								工作室({{ directLsitThree.workNumber || 0 }})
+							</text>
+						</view>
 					</view>
-					<view style="border-right:none">
-						<text>{{directLsit[Object.keys(directLsit)[0]].extractFee}}</text>
-						<text>总佣金</text>
+					<view class="card" v-if="userLevel == 1">
+						<view style="padding: 10px 15px 0 10px">
+							<view class="dis j-s card-title">
+								<view>
+									<text>四级合伙人</text>
+									<image style="display: inline-block; width: 45px;height:18px;vertical-align: sub;"
+										src="/static/icon/jibie4.png" mode=""></image>
+								</view>
+								<view @click="ShowModalCodeFun(5,4)">
+									<image style="display: inline-block; width: 13px;height:13px;vertical-align: -1px;"
+										src="/static/icon/code2.png" mode=""></image>
+									<text>招募码</text>
+								</view>
+								<!-- <view @click="ShowModalCodeworkFun()" >
+									<image style="display: inline-block; width: 13px;height:13px;vertical-align: -1px;" src="/static/icon/code2.png" mode=""></image>
+									<text>招募码</text>
+								</view> -->
+							</view>
+							<view class="card-con dis j-c a-c">
+								<view>
+									<text>{{ directLsitFour.teamManNum || 0 }}</text>
+									<text>会员总人数</text>
+								</view>
+								<view>
+									<text>{{ directLsitFour.sumPremium || 0 }}</text>
+									<text>总保费</text>
+								</view>
+								<view style="border-right:none">
+									<text>{{ directLsitFour.extractFee || 0 }}</text>
+									<text>总佣金</text>
+								</view>
+							</view>
+						</view>
+						<view class="card-footer dis">
+							<text style="border-right: 1px solid #EEEEEE;" @click="partnerDetail(directLsitFour,4)">
+								<image src="/static/icon/hehuoren.png" mode=""></image>
+								合伙人({{ directLsitFour.partnerNumber || 0 }})
+							</text>
+							<text @click="closeInstitution(directLsitFour,4)">
+								<image src="/static/icon/gongzuoshi.png" mode=""></image>
+								工作室({{ directLsitFour.workNumber || 0 }})
+							</text>
+						</view>
 					</view>
-				</view> -->
-			</view>
-			<!-- <card :cardData='directLsit'></card> -->
-			<block v-for="(item,index) in directLsit" :key="index">
-				<view class="card" >
-					<view style="padding: 10px 15px 0 10px">
-					<view class="dis j-s card-title">
-						<view>
-							<text>{{chineseNumbers[item.partnerType-1]}}级合伙人</text>
-							<image v-if="item.partnerType==1"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/级别 (5).png" mode=""></image>
-							<image v-if="item.partnerType==2"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/级别.png" mode=""></image>
-							<image v-if="item.partnerType==3"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/级别 (1).png" mode=""></image>
-							<image v-if="item.partnerType==4"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/级别 (2).png" mode=""></image>
+				</view>
+				<!-- 二级合伙人 -->
+				<view v-if="userLevel == 2">
+					<view class="card" >
+						<view style="padding: 10px 15px 0 10px">
+							<view class="dis j-s card-title">
+								<view>
+									<text>一级合伙人</text>
+									<image style="display: inline-block; width: 45px;height:18px;vertical-align: sub;"
+										src="/static/icon/jibie.png" mode=""></image>
+								</view>
+								<view @click="ShowModalCodeFun(3,1)">
+									<image style="display: inline-block; width: 13px;height:13px;vertical-align: -1px;"
+										src="/static/icon/code2.png" mode=""></image>
+									<text>招募码</text>
+								</view>
+							</view>
+							<view class="card-con dis j-c a-c">
+								<view>
+									<text>{{ directLsitTwo.teamManNum || 0 }}</text>
+									<text>会员总人数</text>
+								</view>
+								<view>
+									<text>{{ directLsitTwo.sumPremium || 0 }}</text>
+									<text>总保费</text>
+								</view>
+								<view style="border-right:none">
+									<text>{{ directLsitTwo.extractFee || 0 }}</text>
+									<text>总佣金</text>
+								</view>
+							</view>
+						</view>
+						<view class="card-footer dis">
+							<text style="border-right: 1px solid #EEEEEE;" @click="partnerDetail(directLsitTwo,1)">
+								<image src="/static/icon/hehuoren.png" mode=""></image>
+								合伙人({{ directLsitTwo.partnerNumber || 0 }})
+							</text>
+							<text @click="closeInstitution(directLsitTwo,1)">
+								<image src="/static/icon/gongzuoshi.png" mode=""></image>
+								工作室({{ directLsitTwo.workNumber || 0 }})
+							</text>
 						</view>
-						<!-- <text>详情 
-						<image style="display: inline-block; width: 9px;height:9px;vertical-align: -1px;" src="/static/icon/向右.png" mode=""></image></text> -->
 					</view>
-					<view class="card-con dis j-c a-c">
-						<view >
-							<text>{{item.teamManNum}}</text>
-							<text>总人数</text>
+					<view class="card" >
+						<view style="padding: 10px 15px 0 10px">
+							<view class="dis j-s card-title">
+								<view>
+									<text>二级合伙人</text>
+									<image style="display: inline-block; width: 45px;height:18px;vertical-align: sub;"
+										src="/static/icon/jibie3.png" mode=""></image>
+								</view>
+								<view @click="ShowModalCodeFun(4,2)">
+									<image style="display: inline-block; width: 13px;height:13px;vertical-align: -1px;"
+										src="/static/icon/code2.png" mode=""></image>
+									<text>招募码</text>
+								</view>
+							</view>
+							<view class="card-con dis j-c a-c">
+								<view>
+									<text>{{ directLsitThree.teamManNum || 0 }}</text>
+									<text>会员总人数</text>
+								</view>
+								<view>
+									<text>{{ directLsitThree.sumPremium || 0 }}</text>
+									<text>总保费</text>
+								</view>
+								<view style="border-right:none">
+									<text>{{ directLsitThree.extractFee || 0 }}</text>
+									<text>总佣金</text>
+								</view>
+							</view>
 						</view>
-						<view>
-							<text>{{item.sumPremium}}</text>
-							<text>总保费</text>
+						<view class="card-footer dis">
+							<text style="border-right: 1px solid #EEEEEE;" @click="partnerDetail(directLsitThree,2)">
+								<image src="/static/icon/hehuoren.png" mode=""></image>
+								合伙人({{ directLsitThree.partnerNumber || 0 }})
+							</text>
+							<text @click="closeInstitution(directLsitThree,2)">
+								<image src="/static/icon/gongzuoshi.png" mode=""></image>
+								工作室({{ directLsitThree.workNumber || 0 }})
+							</text>
 						</view>
-						<view style="border-right:none">
-							<text>{{item.extractFee}}</text>
-							<text>总佣金</text>
+					</view>
+					<view class="card" >
+						<view style="padding: 10px 15px 0 10px">
+							<view class="dis j-s card-title">
+								<view>
+									<text>三级合伙人</text>
+									<image style="display: inline-block; width: 45px;height:18px;vertical-align: sub;"
+										src="/static/icon/jibie4.png" mode=""></image>
+								</view>
+								<view @click="ShowModalCodeFun(5,3)" >
+									<image style="display: inline-block; width: 13px;height:13px;vertical-align: -1px;" src="/static/icon/code2.png" mode=""></image>
+									<text>招募码</text>
+								</view>
+							</view>
+							<view class="card-con dis j-c a-c">
+								<view>
+									<text>{{ directLsitFour.teamManNum || 0 }}</text>
+									<text>会员总人数</text>
+								</view>
+								<view>
+									<text>{{ directLsitFour.sumPremium || 0 }}</text>
+									<text>总保费</text>
+								</view>
+								<view style="border-right:none">
+									<text>{{ directLsitFour.extractFee || 0 }}</text>
+									<text>总佣金</text>
+								</view>
+							</view>
+						</view>
+						<view class="card-footer dis">
+							<text style="border-right: 1px solid #EEEEEE;" @click="partnerDetail(directLsitFour,3)">
+								<image src="/static/icon/hehuoren.png" mode=""></image>
+								合伙人({{ directLsitFour.partnerNumber || 0 }})
+							</text>
+							<text @click="closeInstitution(directLsitFour,3)">
+								<image src="/static/icon/gongzuoshi.png" mode=""></image>
+								工作室({{ directLsitFour.workNumber || 0 }})
+							</text>
 						</view>
 					</view>
+				</view>
+				<!-- 三级合伙人 -->
+				<view v-if="userLevel == 3">
+					<view class="card" >
+						<view style="padding: 10px 15px 0 10px">
+							<view class="dis j-s card-title">
+								<view>
+									<text>一级合伙人</text>
+									<image style="display: inline-block; width: 45px;height:18px;vertical-align: sub;"
+										src="/static/icon/jibie3.png" mode=""></image>
+								</view>
+								<view @click="ShowModalCodeFun(4,1)">
+									<image style="display: inline-block; width: 13px;height:13px;vertical-align: -1px;"
+										src="/static/icon/code2.png" mode=""></image>
+									<text>招募码</text>
+								</view>
+							</view>
+							<view class="card-con dis j-c a-c">
+								<view>
+									<text>{{ directLsitThree.teamManNum || 0 }}</text>
+									<text>会员总人数</text>
+								</view>
+								<view>
+									<text>{{ directLsitThree.sumPremium || 0 }}</text>
+									<text>总保费</text>
+								</view>
+								<view style="border-right:none">
+									<text>{{ directLsitThree.extractFee || 0 }}</text>
+									<text>总佣金</text>
+								</view>
+							</view>
+						</view>
+						<view class="card-footer dis">
+							<text style="border-right: 1px solid #EEEEEE;" @click="partnerDetail(directLsitThree,1)">
+								<image src="/static/icon/hehuoren.png" mode=""></image>
+								合伙人({{ directLsitThree.partnerNumber || 0 }})
+							</text>
+							<text @click="closeInstitution(directLsitThree,1)">
+								<image src="/static/icon/gongzuoshi.png" mode=""></image>
+								工作室({{ directLsitThree.workNumber || 0 }})
+							</text>
+						</view>
 					</view>
-					<view class="card-footer dis">
-						<text style="border-right: 1px solid #EEEEEE;" @click="partnerDetail(item)">
-							<image  src="/static/icon/hehuoren.png" mode=""></image>
-							合伙人({{item.partnerNumber}})
-						</text>
-						<text @click="closeInstitution(item)">
-							<image  src="/static/icon/gongzuoshi.png" mode="" ></image>
-							工作室({{item.workNumber}})
-						</text>
+					<view class="card" >
+						<view style="padding: 10px 15px 0 10px">
+							<view class="dis j-s card-title">
+								<view>
+									<text>二级合伙人</text>
+									<image style="display: inline-block; width: 45px;height:18px;vertical-align: sub;"
+										src="/static/icon/jibie4.png" mode=""></image>
+								</view>
+								<view @click="ShowModalCodeFun(5,2)" >
+									<image style="display: inline-block; width: 13px;height:13px;vertical-align: -1px;" src="/static/icon/code2.png" mode=""></image>
+									<text>招募码</text>
+								</view>
+							</view>
+							<view class="card-con dis j-c a-c">
+								<view>
+									<text>{{ directLsitFour.teamManNum || 0 }}</text>
+									<text>会员总人数</text>
+								</view>
+								<view>
+									<text>{{ directLsitFour.sumPremium || 0 }}</text>
+									<text>总保费</text>
+								</view>
+								<view style="border-right:none">
+									<text>{{ directLsitFour.extractFee || 0 }}</text>
+									<text>总佣金</text>
+								</view>
+							</view>
+						</view>
+						<view class="card-footer dis">
+							<text style="border-right: 1px solid #EEEEEE;" @click="partnerDetail(directLsitFour,2)">
+								<image src="/static/icon/hehuoren.png" mode=""></image>
+								合伙人({{ directLsitFour.partnerNumber || 0 }})
+							</text>
+							<text @click="closeInstitution(directLsitFour,2)">
+								<image src="/static/icon/gongzuoshi.png" mode=""></image>
+								工作室({{ directLsitFour.workNumber || 0 }})
+							</text>
+						</view>
+					</view>
+				</view>
+				<!-- 四级合伙人 -->
+				<view v-if="userLevel == 4">
+					<view class="card" >
+						<view style="padding: 10px 15px 0 10px">
+							<view class="dis j-s card-title">
+								<view>
+									<text>一级合伙人</text>
+									<image style="display: inline-block; width: 45px;height:18px;vertical-align: sub;"
+										src="/static/icon/jibie4.png" mode=""></image>
+								</view>
+								<view @click="ShowModalCodeFun(5,1)" >
+									<image style="display: inline-block; width: 13px;height:13px;vertical-align: -1px;" src="/static/icon/code2.png" mode=""></image>
+									<text>招募码</text>
+								</view>
+							</view>
+							<view class="card-con dis j-c a-c">
+								<view>
+									<text>{{ directLsitFour.teamManNum || 0 }}</text>
+									<text>会员总人数</text>
+								</view>
+								<view>
+									<text>{{ directLsitFour.sumPremium || 0 }}</text>
+									<text>总保费</text>
+								</view>
+								<view style="border-right:none">
+									<text>{{ directLsitFour.extractFee || 0 }}</text>
+									<text>总佣金</text>
+								</view>
+							</view>
+						</view>
+						<view class="card-footer dis">
+							<text style="border-right: 1px solid #EEEEEE;" @click="partnerDetail(directLsitFour,1)">
+								<image src="/static/icon/hehuoren.png" mode=""></image>
+								合伙人({{ directLsitFour.partnerNumber || 0 }})
+							</text>
+							<text @click="closeInstitution(directLsitFour,1)">
+								<image src="/static/icon/gongzuoshi.png" mode=""></image>
+								工作室({{ directLsitFour.workNumber || 0 }})
+							</text>
+						</view>
 					</view>
 				</view>
-				
 			</block>
 			<!-- <u-loadmore style="margin-top: 5px;" v-if="directLsit.length!=0" :status="status" />
 			<o-empty v-if="directLsit.length==0" /> -->
-		
-    </view>
-		
+
+		</view>
+		<u-popup v-model="ShowModal" mode="bottom" border-radius="15">
+			<view class="popup-code">
+				<text @click="ShowModalCodeFun(level)">合伙人</text>
+				<text @click="ShowModalCodeworkFun">工作室</text>
+			</view>
+		</u-popup>
+		<u-popup v-model="ShowModalCode" mode="bottom" border-radius="15">
+			<view class="ShowModalCode-style ">
+				<text>{{chineseNumbers[relativeLeavl]}}级合伙人招募码</text>
+				<view class=" ShowModalCode-con">
+					<view>扫码加入</view>
+					<image :src="partnerImg" mode="widthFix" lazy-load style="width: 150px;"></image>
+				</view>
+			</view>
+		</u-popup>
+
+		<u-popup v-model="ShowModalCodebusiness" mode="bottom" border-radius="15">
+			<view>
+				<text class=" ShowModalCode-business">工作室业务</text>
+				<view>
+					<radio-group class="uni-list" @change="styleChange">
+						<view v-for="(item, index) in styles" :key="index" class="uni-list-item">
+							<view class="uni-list-item__container">
+								<view class="uni-list-item__content">
+									<text class="uni-list-item__content-title">{{ item.text }}</text>
+								</view>
+								<view class="uni-list-item__extra">
+									<radio :value="item.value" :checked="item.checked" />
+								</view>
+							</view>
+							<view class="uni-list-item__notestext">{{ item.notestext }}</view>
+						</view>
+					</radio-group>
+				</view>
+				<view class="ShowModalCode-sumbit" @click="ShowModalCodeSumbit()">确定</view>
+			</view>
+		</u-popup>
+		<u-popup v-model="ShowModalCode1" mode="bottom" border-radius="15">
+			<view class="ShowModalCode-style ">
+				<text>工作室招募码</text>
+				<view class=" ShowModalCode-con">
+					<view>扫码加入</view>
+					<image :src="workImg" mode="widthFix" lazy-load style="width: 150px;"></image>
+				</view>
+			</view>
+		</u-popup>
+		<u-popup  mode="center" ref="alertDialog" type="dialog">
+				<uni-popup-dialog type="warn" cancelText="取消" confirmText="确定" title=" " :content="dialogContent" @confirm="dialogConfirm"
+					@close="dialogClose"></uni-popup-dialog>
+			</u-popup>
 	</view>
 </template>
 <script>
-	import myDatePicker from '../components/date-picker.vue';
-	import seach from '../components/seach.vue';
-	// import card from '../components/card.vue'
-	export default{
-		components:{myDatePicker,seach},
-		data(){
-			return{
-				chineseNumbers:[ '一', '二', '三', '四', '五', '六', '七', '八', '九'],
-				headerStyle: {
-					backgroundColor: 'transparent',
-					backgroundImage: 'url("/static/背景 (1).png")',
-					backgroundSize: 'cover',
-					backgroundPosition: '',
-					boxShadow: ''
-					// 其他样式属性...
-				},
-				teamTabIndex: 0,
-				directLsit: [],
-                source:0,
-				totalPages:0,
-                totalSize:0,
-				status: 'loadmore',
-				pageRequest: { //查询的默认条件
-					pageNum: 1,
-					pageSize: 20,
-                    userName:''
+import myDatePicker from '../components/date-picker.vue';
+import seach from '../components/seach.vue';
+import QR from "@/common/wxqrcode.js"
+
+import {
+	mapState,
+	mapMutations
+} from "vuex"
+// import uniPopup from 'x../../../components/';
+
+// import card from '../components/card.vue'
+export default {
+	components: { myDatePicker, seach },
+	computed: {
+		...mapState(['userInfo', "userCheckInfo",]),
+	},
+	data() {
+		return {
+			dialogContent:'',
+			ShowalertDialog:false,
+			relativeLeavl:null,
+			ShowModal: false,
+			ShowModalCode: false,
+			ShowModalCode1: false,
+			ShowModalCodebusiness: false,
+			chineseNumbers:[ '零', '一', '二', '三', '四', '五', '六', '七', '八', '九'],
+			headerStyle: {
+				backgroundColor: 'transparent',
+				backgroundImage: 'url("/static/beijing (2).png")',
+				backgroundSize: 'cover',
+				backgroundPosition: '',
+				boxShadow: ''
+				// 其他样式属性...
+			},
+			teamTabIndex: 0,
+			directLsit: [
+				{
+					partnerNumber: 1
 				},
+				{
+					partnerNumber: 2
+				}
+			],
+			source: 0,
+			totalPages: 0,
+			totalSize: 0,
+			status: 'loadmore',
+			pageRequest: { //查询的默认条件
+				pageNum: 1,
+				pageSize: 20,
+				userName: ''
+			},
+			partnerImg: '',
+			workImg: '',
+			directLsitOne: {},
+			directLsitTwo: {},
+			directLsitThree: {},
+			directLsitFour: {},
+			userLevel: "",
+			styles: [{
+				value: '1',
+				text: '渠道',
+				notestext: '团队长加出单员模式,无分销模式,结费都在团队长处。',
+				checked: true
+			},
+			{
+				value: '2',
+				notestext: '团队长加代理人模式,三级分销模式,结费方式为个人,有佣金。',
+				text: '个代'
 			}
+			],
+			deptSource: 1
+		}
+	},
+	async onLoad(params) {
+		this.queryData()
+		this.userLevel = this.userInfo.sysUser.level
+	},
+	methods: {
+		dialogClose(){
+			this.$refs.alertDialog.close()
+		},
+		styleChange(e) {
+			this.deptSource = e.detail.value
 		},
-		async onLoad(params) {
-			this.queryData()
+		dialogConfirm (){
+			this.ShowModalCode = true
+			this.$refs.alertDialog.close()
+			this.partnerImg = QR.createQrCodeImg(this.$base.h5BaseUrl + "/#/pages/index/applypartner?level=" + this.level + '&userId=' + this.userInfo.sysUser.userId, {
+				size: parseInt(200) //二维码大小  
+			})
+		},
+		ShowModalCodeFun(level,relativeLeavl) {
+			// 绝对等级:level  相对等级:relativeLeavl
+			this.level=level 
+			this.relativeLeavl=relativeLeavl
+			// this.ShowalertDialog=true
+			this.dialogContent=`是否招募${this.chineseNumbers[relativeLeavl]}级合伙人?`
+			this.$refs.alertDialog.open()
+		},
+		ShowModalCodeSumbit(){
+			this. ShowModalCode1 = true
+			this.workImg = QR.createQrCodeImg(this.$base.h5BaseUrl + "/#/pages/index/applystudio?deptSource=" + this.deptSource + '&userId=' + this.userInfo.sysUser.userId, {
+				size: parseInt(200) //二维码大小  
+			})
+		},
+		ShowModalCodeworkFun() {
+			this.ShowModalCodebusiness = true
+			this.deptSource = 1
+		},
+		// partnersAndStudios(level){
+		// 	this.level=level
+		// 	this.ShowModal = true
+		// },
+		// recruitment(level) {
+		// 	this.level = level
+		// 	this.ShowModalCodeFun(level)
+		// },
+		back() {
+			uni.navigateBack({
+				delta: 1, // 返回的页面数,如果是1表示返回上一页
+				success: function () { }
+			});
 
 		},
-		methods:{
-			back() {
-				uni.navigateBack({
-					delta: 1, // 返回的页面数,如果是1表示返回上一页
-					success: function() {}
-				});
-				
-			},
-			partnerDetail(item){
+		partnerDetail(item,level) {
+			if (item.partnerNumber) {
+				item.partnerType=level
 				uni.navigateTo({
-					url: "/pages/institutional/partnerDetail?key="+encodeURIComponent(JSON.stringify(item))
+					url: "/pages/institutional/partnerDetail?key=" + encodeURIComponent(JSON.stringify(item))
 				})
-			},
-			closeInstitution(item){
-				if(item.leaderIds.length>0){
-					item.type=1
-					uni.navigateTo({
-						url: "/pages/institutional/institutionalTeam?key="+encodeURIComponent(JSON.stringify(item))
-					})
-				}
-			},
-			onReachBottom() {
-				if (this.pageRequest.pageNum >= this.totalPages) return;
-				this.status = 'loading';
-				this.pageRequest.pageNum = ++this.pageRequest.pageNum;
-				setTimeout(async () => {
-					let res = await this.$http.post('/sysPartner/querySysPartnerAPPPage', {
-						...this.pageRequest,
-                        source:this.source
-				});
-					if (res.code == '200') {
-					this.totalSize = res.data.totalSize;
-						this.directLsit = [...this.directLsit, ...res.data.content];
+			}
+		},
+		closeInstitution(item,level) {
+			if (item.leaderIds.length > 0) {
+				item.level=level
+				uni.navigateTo({
+					url: "/pages/institutional/institutionalTeam?key=" + encodeURIComponent(JSON.stringify(item))
+				})
+			}
+		},
+		// onReachBottom() {
+		// 	if (this.pageRequest.pageNum >= this.totalPages) return;
+		// 	this.status = 'loading';
+		// 	this.pageRequest.pageNum = ++this.pageRequest.pageNum;
+		// 	setTimeout(async () => {
+		// 		let res = await this.$http.post('/sysPartner/querySysPartnerAPPPage', {
+		// 			...this.pageRequest,
+		//                      source:this.source
+		// 	});
+		// 		if (res.code == '200') {
+		// 		this.totalSize = res.data.totalSize;
+		// 			this.directLsit = [...this.directLsit, ...res.data.content];
+		// 		}
+		// 		if (this.pageRequest.pageNum >= this.totalPages) this.status = 'nomore';
+		// 		else this.status = 'loading';
+		// 	}, 1000)
+		// },
+
+		async queryData(data) {
+			let params = {
+				beginTime: data && data.beginTime || '',
+				endTime: data && data.endTime || '',
+				partnerType: data && data.partnerType || '',
+				industrySector: data && data.industrySector || '',
+				// ...this.pageRequest
+			}
+			let res = await this.$http.post('/APPPartner/info', params);
+			if (res.code == '200') {
+				res.data.forEach(e => {
+					switch (e.partnerType) {
+						case 2:
+							this.directLsitOne = e
+							break;
+						case 3:
+							this.directLsitTwo = e
+							break;
+						case 4:
+							this.directLsitThree = e
+							break;
+						case 5:
+							this.directLsitFour = e
+							break;
+						default:
+							break;
 					}
-					if (this.pageRequest.pageNum >= this.totalPages) this.status = 'nomore';
-					else this.status = 'loading';
-				}, 1000)
-			},
-			
-			async queryData(data) {
-				let params = {
-                    beginTime:data&& data.beginTime || '',
-                    endTime:data&& data.endTime  || '',
-					partnerType:data&& data.partnerType  ||'',
-					industrySector:data&& data.industrySector  ||'',
-					// ...this.pageRequest
-				}
-				let res = await this.$http.post('/APPPartner/info', params);
-				if (res.code == '200') {
-					res.data.forEach(e=>{
-						if(e.partnerType){
-							e.level=e.partnerType-1
-						}
-					})
-					this.directLsit=res.data
-					this.totalPages = res.data.totalPages;
-					this.totalSize = res.data.totalSize;
-					if (this.pageRequest.pageNum >= res.data.totalPages) this.status = 'nomore';
-					else this.status = 'loadmore';
-                    
-				}
-			},
-			onShowDatePicker() { //显示
-				this.showDatePicker = true;
-			},
-		}
-		
+				})
+				// this.directLsit=res.data
+				// this.totalPages = res.data.totalPages;
+				// this.totalSize = res.data.totalSize;
+				// if (this.pageRequest.pageNum >= res.data.totalPages) this.status = 'nomore';
+				// else this.status = 'loadmore';
+			}
+		},
+
 	}
+
+}
 </script>
 
 <style lang="scss" scoped>
-	
-	.headers {
-		position: fixed;
-		top: 0;
-		left: 0;
-		width: 100%;
-		z-index: 999999;
-		padding-top: 40px;
-		    height: 85px;
+.headers {
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	z-index: 999999;
+	padding-top: 40px;
+	height: 85px;
+
+	text {
+		font-size: 18px;
+		font-weight: bold;
+	}
+}
+
+.partner-head {
+	background: #FFFFFF;
+	color: #333333;
+	font-size: 14px;
+
+	i {
+		margin-left: 2px;
+		display: inline-block;
+		width: 0;
+		height: 0;
+		border: 4px solid;
+		border-color: #666666;
+		border-bottom: 4px solid transparent;
+		border-right: 4px solid transparent;
+		border-left: 4px solid transparent;
+	}
+}
+
+.sum-insurance {
+	padding: 10px 0;
+
+	view {
+		text-align: center;
+		width: 33.33%;
+		border-right: 1px solid #EEEEEE;
+
 		text {
+			display: block;
+		}
+
+		text:first-child {
+			font-weight: 600;
 			font-size: 18px;
-			font-weight: bold;
+			color: #333333;
+		}
+
+		text:last-child {
+			font-size: 10px;
+			color: #999999;
 		}
 	}
-	.partner-head{
-		background: #FFFFFF;
-		color: #333333;
-		font-size: 14px;
-		i{
-			margin-left: 2px;
-			display:inline-block;
-			width: 0;
-			height: 0;
-			border: 4px solid;
-			border-color: #666666;
-			border-bottom: 4px solid transparent; 
-			border-right: 4px solid transparent;
-			border-left: 4px solid transparent;
+}
+
+.card {
+	background: #FFFFFF;
+	border-radius: 5px 5px 5px 5px;
+	margin: 10px;
+	background-image: url("/static/card.png");
+	background-size: 100% 100%;
+	border-top: 1px solid;
+	border-image: linear-gradient(270deg, rgba(45, 217, 255, 0), rgba(45, 217, 255, 1), rgba(45, 217, 255, 0)) 1 1;
+
+	.card-title {
+		text:first-child {
+			font-weight: 600;
+			font-size: 16px;
+			color: #333333;
 		}
-		.search-data{
+
+		text:last-child {
+			font-size: 14px;
 			color: #666666;
-			.active{
-				color: #FFFFFF;
-				background: linear-gradient( 132deg, #2DD9FF 0%, #2D6DFF 100%);
-			}
-			text{
-				// width: 25px;
-				// height: 25px;
-				// text-align: center;
-				padding: 5px 8px;
-				border: 1px solid #EEEEEE;
-			}
+			margin-left: 3px;
 		}
 	}
-	.sum-insurance{
+
+	.card-con {
 		padding: 10px 0;
-		view{
+
+		view {
 			text-align: center;
 			width: 33.33%;
 			border-right: 1px solid #EEEEEE;
-				text{
-					display: block;
-				}
-				text:first-child{
-					font-weight: 600;
-					font-size: 18px;
-					color: #333333;
-				}
-				text:last-child{
-					font-size: 10px;
-					color: #999999;
-				}
+
+			text {
+				display: block;
 			}
-	}
-	.card{
-		background: #FFFFFF;
-		border-radius: 5px 5px 5px 5px;
-		margin: 10px;
-		background-image: url("/static/card.png");
-		background-size: 100% 100%;
-		border-top: 1px solid;
-		border-image: linear-gradient(270deg, rgba(45, 217, 255, 0), rgba(45, 217, 255, 1), rgba(45, 217, 255, 0)) 1 1;
-		
-		.card-title{
-			padding:10px 15px;
-			text:first-child{
+
+			text:first-child {
 				font-weight: 600;
 				font-size: 16px;
 				color: #333333;
+				line-height: 18px;
 			}
-			text:last-child{
-				font-size: 12px;
-				color: #666666;
+
+			text:last-child {
+				font-size: 10px;
+				color: #999999;
 			}
 		}
-		.card-con{
-			padding: 10px 0;
-			view{
-				text-align: center;
-				width: 33.33%;
-				border-right: 1px solid #EEEEEE;
-					text{
-						display: block;
-					}
-					text:first-child{
-						font-weight: 600;
-						font-size: 16px;
-						color: #333333;
-						line-height: 18px;
-					}
-					text:last-child{
-						font-size: 10px;
-						color: #999999;
-					}
-				}
+	}
+
+	.card-footer {
+		border-top: 1px solid #EEEEEE;
+		line-height: 42px;
+
+		image {
+			display: inline-block;
+			width: 17px;
+			height: 17px;
+			vertical-align: middle;
+			margin-right: 8px;
 		}
-		.card-footer{
-			border-top: 1px solid #EEEEEE;
-			line-height: 42px;
-			image{
-				display: inline-block; 
-				width: 17px;
-				height:17px;
-				vertical-align: middle;
-				margin-right: 8px;
-			}
-			text{
-				width: 49%;
-				text-align: center;
-				line-height: 40px;
-				font-size: 16px;
-				color: #333333;
-			}
+
+		text {
+			width: 49%;
+			text-align: center;
+			line-height: 40px;
+			font-size: 16px;
+			color: #333333;
 		}
 	}
+}
+
+.popup-code {
+	text {
+		display: block;
+		border-bottom: 1px solid #EEEEEE;
+		height: 50px;
+		line-height: 50px;
+		text-align: center;
+		font-size: 16px;
+		color: #666666;
+	}
+}
+
+.ShowModalCode-style {
+	text:first-of-type {
+		display: block;
+		font-weight: 600;
+		font-size: 16px;
+		color: #333333;
+		border: 1px solid #EEEEEE;
+		padding: 15px;
+		text-align: center;
+	}
+}
+.popup-code {
+	text {
+		display: block;
+		border-bottom: 1px solid #EEEEEE;
+		height: 50px;
+		line-height: 50px;
+		text-align: center;
+		font-size: 16px;
+		color: #666666;
+	}
+}
+.ShowModalCode-con {
+	padding: 30px;
+	text-align: center;
+
+	image {
+		margin: 0 auto;
+		margin-top: 15px;
+	}
+}
 </style>

+ 5 - 5
pages/institutional/partnerDetail.vue

@@ -19,10 +19,10 @@
 					<view class="dis j-s card-title">
 						<view>
 							<text>{{chineseNumbers[index-1]}}级合伙人</text>
-							<image v-if="index==1" style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/级别 (5).png" mode=""></image></text>
-							<image v-if="index==2"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/级别.png" mode=""></image></text>
-							<image v-if="index==3"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/级别 (1).png" mode=""></image></text>
-							<image v-if="index==4"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/级别 (2).png" mode=""></image></text>
+							<image v-if="index==1" style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/jibie1.png" mode=""></image></text>
+							<image v-if="index==2"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/jibie.png" mode=""></image></text>
+							<image v-if="index==3"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/jibie3.png" mode=""></image></text>
+							<image v-if="index==4"  style="display: inline-block; width: 45px;height:18px;vertical-align: sub;" src="/static/icon/jibie4.png" mode=""></image></text>
 						</view>
 					</view>
 					<view class="card-con dis j-c a-c">
@@ -68,7 +68,7 @@
 				chineseNumbers:[ '一', '二', '三', '四', '五', '六', '七', '八', '九'],
 				headerStyle: {
 					backgroundColor: 'transparent',
-					backgroundImage: 'url("/static/背景 (1).png")',
+					backgroundImage: 'url("/static/beijing (2).png")',
 					backgroundSize: 'cover',
 					backgroundPosition: '',
 					boxShadow: ''

+ 11 - 7
pages/login/login.vue

@@ -11,7 +11,7 @@
 			</image>
 		</view>
 		<view class="" style="margin-top: -120px;">
-			<u-tabs :list="list" :is-scroll="true" :current="current" @change="change"
+			<u-tabs :list="list" :is-scroll="true" :current="current" @change="change" 	active-color="#FF852D" 
 				style="background: transparent;margin-bottom: 30px;"></u-tabs>
 			<!-- 登录区域Start -->
 			<view class="mx-3">
@@ -90,7 +90,7 @@
 					:class="{'bg-hover-color':disabled}" type="primary" @tap="submit" :disabled="disabled"
 					style="letter-spacing: 20rpx;">登录</button>
 				<view class=" left-0 right-0 dis a-c j-start  text-light-muted" style="bottom:30rpx">
-					<u-checkbox v-model="checked"></u-checkbox>
+					<u-checkbox v-model="checked"  active-color="#FF852D "></u-checkbox>
 					我已确认并同意<view> <text @tap="nav('/pages/login/xieyi')" class="text-color">平台协议</text>及<text
 							class="text-color" @tap="nav('/pages/login/mimi')">隐私协议</text>政策</view>
 				</view>
@@ -738,7 +738,7 @@
 <style lang="scss" scoped>
 	/deep/ {
 		.u-tab-bar {
-			background: linear-gradient(90deg, #0052FF 0%, rgba(0, 82, 255, 0) 100%) !important;
+			background: linear-gradient(90deg, #FF9E2D 0%, rgba(0, 82, 255, 0) 100%) !important;
 			border-radius: 4px 4px 4px 4px;
 		}
 	}
@@ -766,7 +766,7 @@
 
 	.shili_btn>view:nth-child(2) {
 		color: #FFFFFF;
-		background-color: #007BFF;
+		background-color: #FF9E2D;
 	}
 
 	.shili>text:nth-child(1) {
@@ -849,17 +849,21 @@
 	}
 
 	.bg-color {
-		background-color: #0052FF;
+		background-color: #FF9E2D;
 		border-radius: 20px;
 	}
 
 	.bg-hover-color {
-		background-color: #0052FF;
+		background-color: #FF9E2D !important;
 		opacity: 0.65;
 		border-radius: 20px;
 	}
 
 	.text-color {
-		color: #0052FF;
+		color: #FF9E2D;
 	}
+	// .u-checkbox>.u-checkbox__icon-wrap--checked{
+	// 	background-color: #FF9E2D !important;
+    // border-color: #FF9E2D !important;
+	// }
 </style>

+ 1 - 1
pages/my/commission.vue

@@ -46,7 +46,7 @@
 			return{
 				headerStyle: {
 					backgroundColor: 'transparent',
-					backgroundImage: 'url("/static/背景 (1).png")',
+					backgroundImage: 'url("/static/beijing (2).png")',
 					backgroundSize: 'cover',
 					backgroundPosition: '',
 					boxShadow: ''

+ 1 - 1
pages/my/commissionDetail.vue

@@ -58,7 +58,7 @@
 				trajectoryLength: 0,
 				headerStyle: {
 					backgroundColor: 'transparent',
-					backgroundImage: 'url("/static/背景 (1).png")',
+					backgroundImage: 'url("/static/beijing (2).png")',
 					backgroundSize: 'cover',
 					backgroundPosition: '',
 					boxShadow: ''

+ 0 - 808
pages/my/my - 副本.vue

@@ -1,808 +0,0 @@
-<template>
-	<view>
-		<!-- 公共组件-每个页面必须引入 -->
-		<public-module></public-module>
-		<!-- 头部信息Start -->
-		<view class="headers " :style="headerStyle">
-			<view class="dis a-c j-c">
-				<text>我的</text>
-				<image @tap="tool" src="/static/image/my/Frame.png" mode=""></image>
-			</view>
-		</view>
-		<view class="Personnel">
-			<view class="dis a-c" @tap="openDetail">
-				<image :src="avatar" class="avatar" mode=""></image>
-				<view class="info">
-					<view class="dis a-c">
-						<text>{{userInfo.sysUser.name}}</text>
-						<u-tag :text="userInfo.sysUser.status=='1'?'已认证':'未认证'" mode="dark"
-							style="background: linear-gradient( 268deg, #FF8B2F 0%, #FF5A00 100%);" />
-					</view>
-					<text>你身边最贴心,最权威的保险咨询专家。</text>
-				</view>
-			</view>
-			<view class="my-wallet">
-				<view class="wallet-body dis f-c">
-					<view class="dis a-c j-s route">
-						<view class="flex-1 dis f-c a-c" @tap="accountTool('/pages/wallet/wallet')">
-							<image src="/static/image/my/qianbao.png" mode=""></image>
-							<text>钱包</text>
-						</view>
-						<view class="flex-1 dis f-c a-c" @tap="accountTool('/pages/wallet/bankCard')">
-							<image src="/static/image/my/ka.png" mode=""></image>
-							<text>银行卡</text>
-						</view>
-						<view class="flex-1 dis f-c a-c" @tap="accountTool()">
-							<image src="/static/image/my/chongzhi.png" mode="">
-							</image>
-							<text>充值</text>
-						</view>
-					</view>
-
-
-				</view>
-			</view>
-		</view>
-		<view class="my-tools">
-			<view class="header ">
-				<text>我的工具</text>
-			</view>
-			<view class="order-body d-flex a-center">
-				<!-- 因为swiper特性的关系,请指定swiper的高度 ,swiper的高度并不会被内容撑开-->
-				<uni-swiper-dot :info="info" :current="current" field="content" :mode="mode" :dots-styles="dotsStyles">
-					<swiper style="height:calc(324upx)" class="swiper" @change="change">
-						<swiper-item class="swiper" v-for="(count,cindex) of  toolsListLength" :key="count">
-							<uni-grid :column="4" :show-border="false" :square="false" :highlight="false"
-								@change="toTools($event,'toolsList')">
-								<uni-grid-item class="" v-show="(index>=(cindex)*8) && (index<(cindex+1)*8)"
-									v-for="(item ,index) in toolsList" :index="index" :key="item.text">
-									<view class="grid-item-box dis a-c j-c f-c">
-										<view class="icon iconfont" :class="item.icon">
-										</view>
-										<text class="text">{{item.text}}</text>
-										<u-badge v-if="item.text=='客户管理'" size="mini" type="error" :count="InsureCount"
-											:offset="[10, 10]"></u-badge>
-									</view>
-								</uni-grid-item>
-							</uni-grid>
-						</swiper-item>
-					</swiper>
-				</uni-swiper-dot>
-
-			</view>
-		</view>
-		<!-- 我的工具End -->
-
-		<!-- 售后管理Start -->
-		<view class="my-tools">
-			<view class="header d-flex a-center j-sb">
-				<view>售后管理</view>
-			</view>
-			<view class="order-body d-flex a-center">
-				<!-- 因为swiper特性的关系,请指定swiper的高度 ,swiper的高度并不会被内容撑开-->
-				<swiper style="height:calc(162upx)" class="swiper" :indicator-dots="(serviceListLength!=1)?true:false">
-					<swiper-item class="swiper dis a-c" v-for="(count,cindex) of  serviceListLength" :key="count">
-						<uni-grid :column="4" :show-border="false" :square="false" :highlight="false"
-							@change="toTools($event,'serviceList')">
-							<uni-grid-item v-show="(index>=(cindex)*8) && (index<(cindex+1)*8)"
-								v-for="(item ,index) in serviceList" :index="index" :key="item.text">
-								<view class="grid-item-box dis a-c  f-c">
-									<image :src="item.image" mode=""></image>
-									<text class="text">{{item.text}}</text>
-								</view>
-							</uni-grid-item>
-						</uni-grid>
-					</swiper-item>
-				</swiper>
-			</view>
-		</view>
-		<!-- 售后管理End -->
-
-		<!-- 我的关于Start -->
-		<view class="my-tools">
-			<view class="header d-flex a-center j-sb">
-				<view>关于掌柜</view>
-			</view>
-			<view class="order-body d-flex a-center">
-				<!-- 因为swiper特性的关系,请指定swiper的高度 ,swiper的高度并不会被内容撑开-->
-				<swiper style="height:calc(162upx)" class="swiper" :indicator-dots="(aboutListLength!=1)?true:false">
-					<swiper-item class="swiper dis a-c" v-for="(count,cindex) of  aboutListLength" :key="count">
-						<uni-grid :column="4" :show-border="false" :square="false" :highlight="false"
-							@change="toTools($event,'aboutList')">
-							<uni-grid-item class="d-flex a-center j-center"
-								v-show="(index>=(cindex)*8) && (index<(cindex+1)*8)" v-for="(item ,index) in aboutList"
-								:index="index" :key="item.text">
-								<view class="grid-item-box d-flex a-center j-center flex-column">
-									<image :src="item.image" mode=""></image>
-									<text class="text">{{item.text}}</text>
-								</view>
-							</uni-grid-item>
-						</uni-grid>
-					</swiper-item>
-				</swiper>
-			</view>
-		</view>
-
-		<!-- 我的关于End -->
-
-		<!-- 菜单Start -->
-		<!-- <block v-for="(item,index) in menusList" :key="index">
-			<my-list-item :item="item" :index="index"></my-list-item>
-		</block> -->
-		<!-- 菜单End -->
-		<u-modal v-model="modalshow" :show-title="false">
-			<view class="slot-content dis a-c j-c" style="padding: 20px;">
-				<img :src="promoImage" alt="" style="width: 150px;height: 150px;" />
-			</view>
-		</u-modal>
-	</view>
-</template>
-
-<script>
-	import store from '@/store';
-	import {
-		mapState,
-		mapMutations
-	} from "vuex"
-	import zPopup from '@/components/common/z-popup.vue'
-	import {
-		pathToBase64,
-		base64ToPath
-	} from '@/common/image-tools-base64.js';
-	import myListItem from "@/components/modules/my/my-list-item.vue";
-	import QR from "@/common/wxqrcode.js"
-	export default {
-		components: {
-			zPopup,
-			myListItem
-		},
-
-		data() {
-			return {
-				promoImage: "",
-				modalshow: false,
-				info: ["", ""],
-				dotsStyles: {
-					backgroundColor: '#E5E5E5',
-					selectedBackgroundColor: '#0052FF',
-				},
-				current: 0,
-				mode: 'default',
-				headerStyle: {
-					backgroundColor: '',
-					backgroundImage: '',
-					backgroundSize: '',
-					backgroundPosition: '',
-					boxShadow: ''
-					// 其他样式属性...
-				},
-				showBackground: false,
-				prevScrollTop: 0,
-				popupShow: false, //头像是否展示
-				mystatusText: "已认证",
-				prodetIntroShow: true, //显示滚动公告
-				avatar: "",
-				orderTypeList: [{
-						icon: 'icon-jixurenwu',
-						orderstatus: 0,
-						text: '报价中',
-						badge: '0',
-						type: "primary",
-						orderStage: 0,
-						iconColor: '#0696FF'
-					},
-					{
-						icon: 'icon-hebaozhong',
-						orderstatus: 1,
-						text: '待核保',
-						badge: '0',
-						type: "success",
-						orderStage: 1,
-						iconColor: '#FFA22A'
-					},
-					{
-						icon: 'icon-querenzhifu',
-						orderstatus: 2,
-						text: '待缴费',
-						badge: '0',
-						type: "error",
-						orderStage: 2,
-					},
-					{
-						icon: 'icon-peisong',
-						orderstatus: 3,
-						text: '已承保',
-						badge: '0',
-						type: "error",
-						orderStage: 3,
-					},
-				],
-				toolsList: [{
-						icon: 'icon-Frame-1',
-						text: '会员分享',
-						url: '/pages/tools/addStaff/addStaff',
-					},
-					{
-						icon: 'icon-Frame',
-						text: '会员管理',
-						url: '/pages/tools/team/team',
-					},
-					{
-						icon: 'icon-Frame-2',
-						text: '客户管理',
-						url: '/pages/tools/customer/customer',
-					},
-					{
-						icon: 'icon-Frame-3',
-						text: '业绩管理',
-						url: '/pages/tools/achievement/achievement',
-					},
-					{
-						icon: 'icon-Frame-5',
-						text: '报案服务',
-						url: '/pages/tools/insuranceClaims/insuranceClaims',
-					},
-					{
-						icon: 'icon-Frame-4',
-						text: '掌柜秘书',
-						url: '/pages/tools/messageReminder/messageReminder',
-					},
-					{
-						icon: 'icon-Frame-6',
-						text: '保单',
-						url: '/pages/tools/policy/policy',
-					},
-					{
-						icon: 'icon-Frame-7',
-						text: '计算器',
-						url: '/pages/tools/calculator/calculator',
-					},
-					{
-						icon: 'icon-a-02',
-						text: '海报管理',
-						url: '/pages/tools/poster/poster',
-					},
-					{
-						icon: 'icon-a-01',
-						text: '优惠劵',
-						url: '/pages/tools/coupon/coupon',
-					},
-					{
-						icon: 'icon-a-03',
-						text: '掌柜商城',
-					},
-					{
-						icon: 'icon-a-04',
-						text: '车险之家',
-						url: "/pages/carInsure/entry",
-					}
-				],
-				aboutList: [{
-						image: '/static/image/my/Frame5.png',
-						text: '常见问题',
-						url: '/pages/set/question',
-					},
-					// { icon: 'icon-baodan',text: '意见反馈',url:'/pages/set/suggest',iconColor:'#DD525E'},
-					{
-						image: '/static/image/my/Frame6.png',
-						text: '意见反馈',
-						url: '',
-					},
-					{
-						image: '/static/image/my/Frame7.png',
-						text: '联系客服',
-						tel: '4006333016',
-					},
-					{
-						image: '/static/image/my/Frame8.png',
-						text: '关于我们',
-						url: '/pages/set/about',
-					}
-				],
-				serviceList: [{
-						image: '/static/image/my/Frame1.png',
-						text: '发票申请',
-						popup: '此功能还未开放,有需要请联系客服',
-					},
-					{
-						image: '/static/image/my/Frame2.png',
-						text: '保单批改',
-						popup: '此功能还未开放,有需要请联系客服',
-					},
-					{
-						image: '/static/image/my/Frame3.png',
-						text: '申请退保',
-						popup: '此功能还未开放,有需要请联系客服',
-					},
-					{
-						image: '/static/image/my/Frame4.png',
-						text: '自助理赔',
-						popup: '此功能还未开放,有需要请联系客服',
-					}
-				],
-				menusList: [{
-						icon: "shangcheng",
-						name: "掌柜商场",
-						clicktype: "nothing",
-						url: "",
-						auth: true
-					},
-					{
-						icon: "chexiandingdan",
-						name: "车险之家",
-						clicktype: "navigateTo",
-						url: "/pages/carInsure/entry",
-						auth: true
-					}
-				],
-				InsureCount: 0,
-			}
-		},
-
-		computed: {
-			...mapState(['userInfo', "userCheckInfo", ]),
-			toolsListLength() {
-				// let length = Math.ceil(this.toolsList.length / 8);
-				let list = ["1", "2"]
-				return list;
-			},
-			aboutListLength() {
-				return Math.ceil(this.aboutList.length / 4);
-			},
-			serviceListLength() {
-				return Math.ceil(this.serviceList.length / 4);
-			}
-		},
-		async onShow() {
-			await this.getInsureCount();
-			if (this.userInfo.sysUser.headSculpture) {
-				this.avatar = this.$base.baseUrl + this.userInfo.sysUser.headSculpture;
-			} else {
-				this.avatar = "/static/image/my/avatar1.png"
-
-			}
-			if (this.userInfo.sysUser.status == '1') {
-				this.mystatusText = "已认证";
-			} else if (this.userStatus == '2') {
-				this.mystatusText = "未认证";
-			}
-		},
-		async onload() {
-			await this.getInsureCount();
-		},
-		onPageScroll(e) {
-			this.handleScroll(e);
-		},
-		mounted() {
-			uni.pageScrollTo({
-				scrollTop: 0,
-				duration: 0
-			});
-			uni.$on('scroll', this.handleScroll);
-		},
-		destroyed() {
-			uni.$off('scroll', this.handleScroll);
-		},
-		methods: {
-			...mapMutations(['setUserModules', 'setOrderType', 'setOrderStage']),
-			//头部颜色变化js
-			change(e) {
-				this.current = e.detail.current;
-			},
-
-			async getInsureCount() {
-				let res = await this.$http.post('/insurance/order/getExpirationInsureCount');
-				if (res.code == '200') {
-					this.InsureCount = res.data;
-				}
-			},
-			handleScroll(e) {
-				const scrollTop = e.scrollTop;
-				if (scrollTop > this.prevScrollTop) {
-					// 向下滚动
-					this.showBackground = true; // 显示背景图
-				} else if (scrollTop < 50) {
-					// 在顶部附近,隐藏背景图
-					this.showBackground = false;
-				} else {
-					// 向上滚动
-					this.showBackground = true; // 显示背景图
-				}
-				this.headerStyle.backgroundColor = this.showBackground ? '#fff' : 'transparent';
-				this.headerStyle.backgroundImage = this.showBackground ? 'url("/static/image/my/banner.png")' : '';
-				this.headerStyle.backgroundSize = this.showBackground ? 'cover' : '';
-				this.headerStyle.backgroundPosition = this.showBackground ? 'center' : '';
-				this.prevScrollTop = scrollTop;
-			},
-			tool() {
-				uni.navigateTo({
-					url: "/pages/set/set"
-				})
-			},
-			//去工具页面
-			async toTools(e, listName) {
-				if (this.userInfo.sysUser.status == '2') {
-					return uni.showToast({
-						icon: "none",
-						title: '请先通过实名认证',
-						duration: 1500
-					})
-				}
-				if (!!this[listName][e.detail.index].url && (this[listName][e.detail.index].url ==
-						'/pages/wallet/wallet')) {
-					if ((!!this.userInfo.esmUserInternal) && (!!this.userInfo.esmUserInternal.accountno)) {
-						this.navigate({
-							url: this[listName][e.detail.index].url
-						}, "navigateTo", true)
-					} else {
-						this.navigate({
-							url: '/pages/wallet/bindBank',
-							complete: () => {
-								setTimeout(() => {
-									uni.showToast({
-										title: '请先绑定银行卡',
-										duration: 3000,
-										icon: "none"
-									});
-								}, 500);
-
-							}
-						}, "navigateTo", true)
-					}
-				} else if (this[listName][e.detail.index].url) {
-					this.navigate({
-						url: this[listName][e.detail.index].url
-					}, "navigateTo", true)
-				} else if (this[listName][e.detail.index].tel) {
-					uni.makePhoneCall({
-						phoneNumber: this[listName][e.detail.index].tel,
-					})
-				} else if (this[listName][e.detail.index].popup) {
-					let res = await this.$http.get('/sys/qy/wechat/find/picture');
-					if (res.code == '200') {
-						this.promoImage = QR.createQrCodeImg(res.data.wechatPictureUrl, {
-							size: parseInt(200) //二维码大小  
-						})
-						this.modalshow = true;
-					} else {
-						uni.showModal({
-							showCancel: false,
-							content: this[listName][e.detail.index].popup,
-						});
-					}
-
-				} else {
-					uni.showToast({
-						title: this[listName][e.detail.index].text + '更新中...',
-						icon: 'none'
-					})
-				}
-
-			},
-			async accountTool(path) {
-
-				if (path) {
-					if (path == '/pages/wallet/bankCard') {
-						let res = await this.$http.post('/userBank/getUserBankList', {
-							auditStatus: '',
-						});
-						if (!res.data.length) {
-							this.navigate({
-								url: '/pages/wallet/bindBank',
-								complete: () => {
-									setTimeout(() => {
-										uni.showToast({
-											title: '请先绑定银行卡',
-											duration: 3000,
-											icon: "none"
-										});
-									}, 500);
-
-								}
-							}, "navigateTo", true)
-						} else {
-							this.navigate({
-								url: path,
-							}, "navigateTo", true)
-						}
-					} else {
-						this.navigate({
-							url: path,
-						}, "navigateTo", true)
-					}
-				} else {
-					uni.showToast({
-						title: '功能待开发...',
-						icon: "none"
-					});
-				}
-			},
-			// 去账单明细
-			toBillDetails(type) {
-				this.navigate({
-					url: `/pages/wallet/billDetails${type}`,
-				}, "navigateTo", true)
-			},
-			// 去账单明细
-			toWallet(type) {
-				this.navigate({
-					url: "/pages/wallet/wallet"
-				}, "navigateTo", true)
-			},
-			//跳转个人信息页面
-			openDetail() {
-				this.navigate({
-					url: "/pages/user/userInfo"
-				}, "navigateTo", false)
-			},
-			//跳转订单页面
-			openOrder(e) {
-
-				this.setOrderStage(this.orderTypeList[e].orderStage);
-				this.navigate({
-					url: "/pages/orders/orders"
-				}, "switchTab", true)
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import '@/style/mixin.scss';
-
-	page {
-		background-color: #F8FAFE;
-	}
-
-	.headers {
-		position: fixed;
-		top: 0;
-		left: 0;
-		height: auto;
-		width: 100%;
-		z-index: 999999;
-		padding: 16px;
-		padding-top: 50px;
-
-		>view {
-			width: 100%;
-			height: 100%;
-			position: relative;
-		}
-
-		image {
-			position: absolute;
-			right: 0;
-			width: 20px;
-			height: 20px;
-		}
-
-		text {
-			font-size: 18px;
-			font-weight: bold;
-			color: #000;
-		}
-	}
-
-	.Personnel {
-		height: auto;
-		width: 100%;
-		background: #fff;
-		background-image: url("/static/image/my/banner.png");
-		background-size: 100% 100%;
-		padding: 110px 16px 10px 16px;
-
-		.avatar {
-			width: 60px;
-			height: 60px;
-			border-radius: 50%;
-		}
-
-		.info {
-			margin-left: 10px;
-
-			text {
-				margin-right: 10px;
-				color: #333333;
-				font-size: 13px;
-			}
-
-			text:last-child {
-				color: rgba(51, 51, 51, 0.8);
-				font-size: 12px;
-			}
-
-		}
-	}
-
-	.my-tools {
-		padding: 0 16px;
-
-		.header {
-			padding: 10px 0;
-			font-size: 14px;
-			color: #232832;
-			font-weight: bold;
-		}
-
-		.order-body {
-			background: #fff;
-			box-shadow: 0px 4px 10px 0px #DAE3F4;
-			border-radius: 6px;
-		}
-	}
-
-	/* 产品介绍Start */
-	.prodet-intro {
-		width: 100%;
-		height: 70upx;
-		background-color: #333;
-		color: #3ae;
-		white-space: nowrap;
-		border-top: 1upx solid #666;
-		border-bottom: 1upx solid #666;
-		box-sizing: border-box;
-	}
-
-	.prodet-intro>view:nth-of-type(1) {
-		width: 60upx;
-		height: 100%;
-		flex-shrink: 1;
-		padding-left: 20upx;
-		font-size: 36upx;
-	}
-
-	.prodet-intro>view:nth-of-type(2) {
-		overflow: hidden;
-		line-height: 70upx;
-		font-size: 24upx;
-	}
-
-	.prodet-intro>view:nth-of-type(3) {
-		width: 60upx;
-		padding-right: 20upx;
-		flex-shrink: 1;
-		height: 100%;
-		font-size: 36upx;
-	}
-
-	.animate {
-		padding-left: 40rpx;
-		display: inline-block;
-		white-space: nowrap;
-		animation: 20s wordsLoop linear infinite normal;
-	}
-
-	@keyframes wordsLoop {
-		0% {
-			transform: translateX(750rpx);
-			-webkit-transform: translateX(750rpx);
-		}
-
-		100% {
-			transform: translateX(-100%);
-			-webkit-transform: translateX(-100%);
-		}
-	}
-
-	/* 产品介绍End */
-
-
-
-	/* 个人信息Start */
-
-	/* 个人信息End */
-
-	/* 我的订单Start */
-	.my-orders {
-		display: flex;
-		justify-content: center;
-		align-items: center;
-	}
-
-	.my-orders,
-	.wallet-body {
-		position: relative;
-		width: 95%;
-		height: 180upx;
-		background: #FFFFFF;
-		border-radius: 20upx;
-		box-shadow: 0upx 0upx 10upx #efeff4;
-		overflow: hidden;
-	}
-
-
-
-	/* 我的订单End */
-
-	/* 我的钱包Start */
-	.my-wallet {
-		.wallet-body {
-			width: 100%;
-			height: auto;
-			padding: 8px 16px;
-			background: #FFFFFF;
-			box-shadow: 0px 4px 10px 0px #DAE3F4;
-			border-radius: 6px;
-			margin-top: 10px;
-
-			.route {
-				text {
-					font-size: 12px;
-					color: #333;
-					font-weight: 400;
-				}
-
-				image {
-					width: 45px;
-					height: 40px;
-				}
-			}
-
-			.money {
-				padding: 8px 0;
-				background-color: #F9F8FD;
-				border-radius: 4px;
-				margin-top: 8px;
-
-				text {
-					font-size: 12px;
-					color: #333;
-					font-weight: 400;
-				}
-
-			}
-		}
-	}
-
-	/* 我的钱包End */
-
-	/* 小的分项标题Start */
-
-
-
-	/* 小的分项标题End */
-
-
-
-	.grid-item-box {
-
-		.icon {
-			font-size: 26px;
-		}
-
-		.text {
-			font-size: 12px;
-		}
-
-		image {
-			width: 32px;
-			height: 32px;
-		}
-	}
-
-	.swiper {
-		width: 100%;
-	}
-
-	.swiper-view .keep-out {
-		width: 100%;
-		height: 30upx;
-		border-radius: 100% 100% 0 0;
-		margin-top: -15upx;
-		position: absolute;
-	}
-
-	.swiper-view .swiper {
-		overflow: hidden;
-		padding: 30upx 20upx 0;
-		box-sizing: border-box;
-		width: 100%;
-		height: 200upx;
-	}
-
-	.swiper-view .swiper image {
-		width: 100%;
-		height: 200upx;
-	}
-</style>

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 579 - 325
pages/my/my.vue


+ 1 - 1
pages/my/withdrawalDetail.vue

@@ -65,7 +65,7 @@ color: #666666;border-radius: 3px 3px 3px 3px;margin-top: 15px;">
 				trajectoryLength: 0,
 				headerStyle: {
 					backgroundColor: 'transparent',
-					backgroundImage: 'url("/static/背景 (1).png")',
+					backgroundImage: 'url("/static/beijing (2).png")',
 					backgroundSize: 'cover',
 					backgroundPosition: '',
 					boxShadow: ''

+ 672 - 0
pages/statistics/statistics.vue

@@ -0,0 +1,672 @@
+<template>
+	<view>
+		<!-- 公共组件-每个页面必须引入 -->
+		<public-module></public-module>
+		<!-- 头部信息Start -->
+		<view class="headers " :style="headerStyle">
+			<view class="dis a-c j-c">
+				<text>统计</text>
+				<!-- <view class="headers-right">
+					<image @click="weChatService" src="/static/image/my/kefu.png" mode="">
+					</image>
+					<text>客服</text>
+				</view> -->
+			</view>
+		</view>
+		<view class="body-box" style="margin-top: 100px" v-if="type == 1">
+			<view class=" dis j-s a-c" style="padding: 10px 10px 0 0;">
+				<view class="statistics-title">新增人员汇总统计</view>
+				<view class="search-data">
+					<text v-for="(val, index) in year" :key="index" :class="val.startShow ? 'active' : ''"
+						@click="onSeachYear(val, index, 1)">{{ val.lable }}</text>
+				</view>
+			</view>
+			<view class="statistics-number ">
+				<view v-if="level <= 4">
+					<text>{{ echartsList.onePartnerNum || 0 }}</text>
+					<text>一级合伙人</text>
+				</view>
+				<view v-if="level <= 3">
+					<text>{{ echartsList.twoPartnerNum || 0 }}</text>
+					<text>二级合伙人</text>
+				</view>
+				<view v-if="level <= 2">
+					<text>{{ echartsList.threePartnerNum || 0 }}</text>
+					<text>三级合伙人</text>
+				</view>
+				<view v-if="level == 1">
+					<text>{{ echartsList.fourPartnerNum || 0 }}</text>
+					<text>四级合伙人</text>
+				</view>
+				<!-- <view v-if="level==1">
+						<text>{{ echartsList.onePartnerNum || 0 }}</text>
+						<text>一级合伙人</text>
+					</view>
+					<view v-if="level<=2">
+						<text>{{ echartsList.twoPartnerNum || 0 }}</text>
+						<text>{{level==2?'一级合伙人':'二级合伙人'}}</text>
+					</view>
+					<view v-if="level<=3">
+						<text>{{ echartsList.threePartnerNum || 0 }}</text>
+						<text>{{level==3?'一级合伙人':level==2?'二级合伙人':'三级合伙人'}}</text>
+					</view>
+					<view v-if="level<=4">
+						<text>{{ echartsList.fourPartnerNum || 0 }}</text>
+						<text>{{level==4?'一级合伙人':level==3?'二级合伙人':level==2?'三级合伙人':'四级合伙人'}}</text>
+					</view> -->
+				<view>
+					<text>{{ echartsList.workSum || 0 }}</text>
+					<text>工作室</text>
+				</view>
+				<view>
+					<text>{{ echartsList.deptSum || 0 }}</text>
+					<text>团队</text>
+				</view>
+				<view>
+					<text>{{ echartsList.deptManSum || 0 }}</text>
+					<text>代理人</text>
+				</view>
+			</view>
+			<view class="partner-type dis">
+				<view style="width: 650px;overflow-x: auto;">
+					<text :class="typeStatistics == val.value ? 'selected' : ''" v-for="val in partnerTypeOption"
+						:key="val.value" @click="getPartnerType(val.value)">{{ val.lable }}</text>
+				</view>
+			</view>
+			<o-empty v-if="echartsList.countUserNumVoList && echartsList.countUserNumVoList.length == 0" height="20vh" />
+			<qiun-data-charts  v-else type="area" :opts="opts1" :chartData="chartData1"  />
+
+		</view>
+		<view class="body-box" v-if="type == 1">
+			<view class=" dis j-s a-c" style="padding: 10px 10px 0 0;">
+				<view class="statistics-title">新增人员占比分析</view>
+				<view class="search-data">
+					<text v-for="(val, index) in year" :key="index" :class="val.startShow ? 'active' : ''"
+						@click="onSeachYear(val, index, 2)">{{ val.lable }}</text>
+				</view>
+			</view>
+			<leverStaff @getPartnerType="getPartnerType2"></leverStaff>
+			<!-- <o-empty v-if="echartsList.countUserNumVoList && echartsList.countUserNumVoList.length==0" height="20vh" /> -->
+			<view class="charts-box">
+			<qiun-data-charts type="ring" :opts="{ legend: { position: 'bottom' } }" :eopts="ringOpts" :chartData="chartsDataPie2"
+                :echartsH5="true" :echartsApp="true" />
+			</view>
+		</view>
+		<view class="body-box" style="padding-bottom: 10px;" v-if="type == 1">
+			<view class=" dis j-s a-c" style="padding: 10px 10px 0 0;">
+				<view class="statistics-title">排名</view>
+			</view>
+			<leverStaff @getPartnerType="getPartnerType3"></leverStaff>
+			<view class="teamStatistics ">
+				<view class="statisticsTitle">
+					<view>排名</view>
+					<view>姓名</view>
+					<view>人数</view>
+					<view>详情</view>
+				</view>
+				<block v-for="(item, index) in directLsit" :key="index">
+					<view>
+						<view class="statisticsContent ">
+							<view>
+								<image v-if="index == 0" src="/static/icon/paiming1.png" mode=""></image>
+								<image v-else-if="index == 1" src="/static/icon/paiming2.png" mode=""></image>
+								<image v-else-if="index == 2" src="/static/icon/paiming3.png" mode=""></image>
+								<text v-else>{{ index + 1 }}</text>
+							</view>
+							<view>{{ item.userName }}</view>
+							<view>{{ item.deptManNum }}</view>
+							<view style="color:#739EFF ">查看</view>
+						</view>
+					</view>
+				</block>
+				<!-- <o-empty v-if="directLsit.length==0"  /> -->
+
+			</view>
+		</view>
+		<view class="body-box" style="margin-top: 100px;" v-if="type == 2">
+			<view class=" dis j-s a-c" style="padding: 10px 10px 0 0;">
+				<view class="statistics-title">新增人员汇总统计</view>
+				<view class="search-data">
+					<text v-for="(val, index) in year" :key="index" :class="val.startShow ? 'active' : ''"
+						@click="onSeachYear(val, index, 1)">{{ val.lable }}</text>
+				</view>
+			</view>
+			<view class="statistics-number ">
+				<view>
+					<text>{{ echartsList.countSum || 0 }}</text>
+					<text>新增人员</text>
+				</view>
+				<view>
+					<text>{{ echartsList.deptSum || 0 }}</text>
+					<text>团队</text>
+				</view>
+				<view>
+					<text>{{ echartsList.deptManSum || 0 }}</text>
+					<text>代理人</text>
+				</view>
+			</view>
+			<view class="statistics-type">
+				<text :class="typeStatistics == 1 ? 'selected' : ''" @click="getStatistics(1)">团队</text>
+				<text :class="typeStatistics == 2 ? 'selected' : ''" @click="getStatistics(2)">代理人</text>
+			</view>
+			<o-empty v-if="echartsList.countUserNumVoList && echartsList.countUserNumVoList.length == 0" height="20vh" />
+			<qiun-data-charts  v-else type="area" :opts="opts1" :chartData="chartData1"  />
+		</view>
+
+	</view>
+</template>
+<script>
+import {
+	mapState,
+} from "vuex"
+import leverStaff from "../components/leverStaff.vue"
+export default {
+	components: {
+		leverStaff
+	},
+	data() {
+		return {
+			beginTime:'',
+			endTime:'',
+			ringOpts: {
+                color: [ '#02CDFF','#2D97FF '],
+                legend: { show: false },
+				dataLabel: true,
+            },
+			chartsDataPie2 :{},
+			level: '',
+			type: null,
+			typeStatistics: 1,
+			typeStatistics2: 1,
+			typeStatistics3: 1,
+			option: {},
+			supportStaffUrl: '',
+			headerStyle: {
+				backgroundColor: 'transparent',
+				backgroundImage: 'url("/static/beijing (2).png")',
+				backgroundSize: 'cover',
+				backgroundPosition: '',
+				boxShadow: ''
+				// 其他样式属性...
+			},
+			year: [{
+				lable: '日',
+				startShow: false
+			}, {
+				lable: '周',
+				startShow: false
+			}, {
+				lable: '月',
+				startShow: false
+			}],
+			echartsList: {},
+			analysisEchartsList: {},
+			partnerTypeOption: [
+				{
+					lable: '一级合伙人',
+					value: '1'
+				}, {
+					lable: '二级合伙人',
+					value: '2'
+				}, {
+					lable: '三级合伙人',
+					value: '3'
+				}, {
+					lable: '四级合伙人',
+					value: '4'
+				},
+			],
+			// optsMax:10,
+			opts1: {
+				legend: {
+				show: false // 设置图例不显示
+				},
+				yAxis: {
+				gridType: "dash",
+				dashLength: 2,
+				data: [
+					{
+					min: 0,
+					max: 10
+					}
+				]
+				},
+				extra: {
+					area: {
+						type: "curve",
+						opacity: 0.2,
+						addLine: true,
+						width: 2,
+						gradient: true,
+						activeType: "hollow"
+					}
+					// line: {
+					// 	type: "curve",
+					// 	width: 2,
+					// 	activeType: "hollow",
+					// 	linearType: "custom"
+					// }
+				}
+			},
+			
+			chartData1: {},
+			directLsit: []
+		}
+	},
+	computed: {
+		...mapState(['userInfo']),
+	},
+	onLoad() {
+		this.level = this.userInfo.sysUser.level
+		if (this.level == 2) {
+			this.partnerTypeOption = this.partnerTypeOption.slice(0, -1);
+		}
+		if (this.level == 3) {
+			this.partnerTypeOption = this.partnerTypeOption.slice(0, -2);
+		}
+		if (this.level == 4) {
+			this.partnerTypeOption = this.partnerTypeOption.slice(0, 1);
+		}
+		this.$http.get('/sys/qy/wechat/find/picture').then(res => {
+			this.supportStaffUrl = res.data.supportStaffUrl
+		})
+	},
+	onShow() {
+		this.type = uni.getStorageSync('type')
+		// if(this.type ==2){
+		// 	this.queryData({type:1})
+		// }
+		// else{
+		// 	this.queryData({type:1})
+		// }
+		this.queryData()
+		if (this.type == 1) {
+			this.analysisQueryData()
+			this.rankingQueryData()
+		}
+
+	},
+
+	methods: {
+		canvasInit(canvas, width, height) {
+			// 初始化画布
+			this.canvas2d = canvas;
+		},
+		getPartnerType2(type) {
+			this.typeStatistics2 = type
+			this.analysisQueryData()
+		},
+		getPartnerType3(type) {
+			this.typeStatistics3 = type
+			this.rankingQueryData()
+		},
+		getPartnerType(type) {
+			this.typeStatistics = type
+			this.queryData()
+		},
+		getStatistics(type) {
+			// 	uni.navigateTo({
+			// 	url: "/pages/tools/achievement/achievement"
+			// })
+			// this.studioType=type
+			this.typeStatistics = type
+			this.queryData()
+		},
+		//点击跳转企业微信客服
+		weChatService() {
+			uni.share({
+				provider: "weixin",
+				openCustomerServiceChat: true,
+				customerUrl: this.supportStaffUrl, //企业微信地址
+				corpid: 'wwfe67d19509d43ec5', //企业id
+				success: (res) => { },
+				fail: (err) => { }
+			});
+		},
+		onSeachYear(val, index, type) {
+			this.year.map((value, i) => i === index ? value.startShow = !value.startShow : value.startShow = false);
+			let now = new Date();
+			let year = now.getFullYear();
+			let month = now.getMonth() + 1; // 月份是从0开始的,所以需要加1
+			let day = now.getDate();
+			if (index == 0 && val.startShow) {
+				let theDay = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;
+				this.beginTime=theDay + ' 00:00:01'
+				this.endTime=theDay + ' 23:59:59'
+				type == 1?this.queryData():this.analysisQueryData()
+			}
+			else if (index == 1 && val.startShow) {
+				let dayOfWeek = now.getDay();
+				let firstDayOfWeek = new Date(year, now.getMonth(), day - dayOfWeek + 1);
+				let lastDayOfWeek = new Date(year, now.getMonth(), day + (7 - dayOfWeek));
+				let monday = this.formatDate(firstDayOfWeek);
+				let sunday = this.formatDate(lastDayOfWeek);
+				this.beginTime=monday + ' 00:00:01'
+				this.endTime= sunday + ' 23:59:59'
+				type == 1?this.queryData():this.analysisQueryData()
+			}
+			else if (index == 2 && val.startShow) {
+				this.beginTime= this.getCurrentMonthFirst() + ' 00:00:01'
+				this.endTime= this.getCurrentMonthLast() + ' 23:59:59' 
+				type == 1?this.queryData():this.analysisQueryData()
+			}
+			else {
+				this.beginTime= ''
+				this.endTime= ''
+				type == 1?this.queryData():this.analysisQueryData()
+			}
+
+		},
+		formatDate(date) {
+			let year = date.getFullYear();
+			let month = date.getMonth() + 1;
+			let day = date.getDate();
+			month = month < 10 ? '0' + month : month;
+			day = day < 10 ? '0' + day : day;
+			return year + '-' + month + '-' + day;
+		},
+		getCurrentMonthFirst() {
+			// 获取当月第一天数据
+			let date = new Date()
+			date.setDate(1)
+			let month = parseInt(date.getMonth() + 1)
+			let day = date.getDate()
+			if (month < 10) month = '0' + month
+			if (day < 10) day = '0' + day
+			return date.getFullYear() + '-' + month + '-' + day
+		},
+		getCurrentMonthLast() {
+			// 获取当月最后一天数据
+			let date = new Date()
+			let year = date.getFullYear()
+			let month = date.getMonth() + 1
+			month = month < 10 ? '0' + month : month
+			let day = new Date(year, month, 0)
+			return year + '-' + month + '-' + day.getDate()
+		},
+		async analysisQueryData() {
+			let params = {
+				beginTime: this.beginTime,
+				endTime: this.endTime,
+				type: this.typeStatistics2,
+			}
+			let res = await this.$http.post('/APPPartner/getPartnerProportion', params);
+			if (res.code == '200') {
+				this.chartsDataPie2 = {
+					"series": [{
+						"data": [
+							{  name: `新增`,value: res.data.newProportion,labelText:`历史:${res.data.oldProportion}%` },
+							{name: "历史", value: res.data.oldProportion, labelText:`历史:${res.data.oldProportion}%` }
+						]
+					}]
+				}
+			}
+		},
+		async rankingQueryData() {
+			let params = {
+				type: this.typeStatistics3,
+			}
+			let res = await this.$http.get('/APPPartner/getLevelPartner', params);
+
+			if (res.code == '200') {
+				this.directLsit = res.data
+			}
+		},
+		async queryData() {
+			let params = {
+				beginTime: this.beginTime,
+				endTime: this.endTime,
+				type: this.typeStatistics,
+			}
+			let res = {}
+			if (this.type == 1) {
+				res = await this.$http.post('/APPPartner/getPartnerCount', params);
+			}
+			else {
+				res = await this.$http.post('/APPPartner/getCountUser', params);
+			}
+			if (res.code == '200') {
+				this.echartsList = res.data
+				if (res.data.countUserNumVoList && res.data.countUserNumVoList.length > 0) {
+					let dateList = res.data.countUserNumVoList.map(function (item) {
+						// return item.time.split(" ")[1] ? item.time.split(" ")[1] + ':00' : item.time.split(" ")[0]
+						return item.time
+					});
+					let valueList = res.data.countUserNumVoList.map(function (item) {
+						return item.countNum;
+					});
+
+					let rualit = {
+						categories: dateList,
+						series: [
+							{
+							name: "人数",
+							// type: "line",
+							data: valueList
+						},
+					]
+					};
+					valueList.sort((a,b) => a-b)
+					this.opts1.yAxis.data[0].max= valueList[valueList.length - 1];  
+					this.chartData1 = JSON.parse(JSON.stringify(rualit));
+				}
+			}
+		}
+	}
+}
+</script>
+<style lang="scss" scoped>
+.headers {
+	position: fixed;
+	top: 0;
+	left: 0;
+	height: auto;
+	width: 100%;
+	z-index: 999999;
+	padding: 16px;
+	padding-top: 40px;
+
+	text {
+		font-size: 18px;
+		font-weight: 700;
+		color: #333333;
+	}
+}
+
+.headers-right {
+	position: absolute;
+	right: 15px;
+	display: flex;
+	align-items: center;
+
+	text {
+		font-size: 13px;
+		color: #666666;
+	}
+
+	image {
+		// right: 0;
+		width: 15px;
+		height: 15px;
+		margin-right: 5px;
+	}
+}
+
+.body-box {
+	background: #ffffff;
+
+	margin: 15px
+}
+
+.statistics-title {
+	font-size: 16px;
+	color: #333333;
+}
+
+.statistics-title::before {
+	content: " ";
+	display: inline-block;
+	width: 4px;
+	height: 12px;
+	background: linear-gradient(132deg, #2DD9FF 0%, #2D6DFF 100%);
+	border-radius: 5px 5px 5px 5px;
+	margin-right: 4px;
+	margin-top: 2px;
+}
+
+.search-data {
+	color: #666666;
+	border: 1px solid #EEEEEE;
+
+	.active {
+		color: #FFFFFF;
+		background: linear-gradient(132deg, #2DD9FF 0%, #2D6DFF 100%);
+	}
+
+	text {
+		padding: 5px 6px;
+		border-left: 1px solid #EEEEEE;
+	}
+
+	text:first-child {
+		border-left: none
+	}
+}
+
+.statistics-number {
+	margin: 10px 10px 20px 10px;
+	background: #FBFBFB;
+	border-radius: 4px 4px 4px 4px;
+	text-align: center;
+	padding: 15px 0;
+	overflow: hidden;
+
+	view {
+		width: 33.33%;
+		float: left;
+
+	}
+
+	text {
+		display: block;
+	}
+
+	text:first-child {
+		font-size: 25px;
+		color: #333333;
+	}
+
+	text:last-child {
+		font-size: 13px;
+		color: #999999;
+	}
+}
+
+.statistics-type {
+	text-align: center;
+
+	text {
+		display: inline-block;
+		width: 80px;
+		height: 30px;
+		line-height: 30px;
+		text-align: center;
+		font-size: 16px;
+		color: #666666;
+		background: #F4F4F4;
+	}
+
+	.selected {
+		color: #FFFFFF;
+		background: linear-gradient(132deg, #2DD9FF 0%, #2D6DFF 100%);
+	}
+
+	// text:first-child{
+	// 	color: #FFFFFF;
+	// 	background: linear-gradient( 132deg, #2DD9FF 0%, #2D6DFF 100%);
+
+	// }
+}
+
+.partner-type {
+	margin: 10px;
+	width: 97%;
+	overflow: hidden;
+	white-space: nowrap;
+
+	text {
+		display: inline-block;
+		border-radius: 14px 14px 14px 14px;
+		font-size: 14px;
+		color: #666666;
+		padding: 1px 10px;
+		background: #F4F4F4;
+		margin-right: 8px;
+	}
+
+	.selected {
+		color: #FFFFFF;
+		background: linear-gradient(132deg, #2DD9FF 0%, #2D6DFF 100%);
+	}
+}
+
+.teamStatistics {
+	margin: 10px;
+	background: #FFFFFF;
+	// box-shadow: 0px 4px 10px 0px #DAE3F4;
+	border-radius: 2px 2px 2px 2px;
+	border: 1px solid #C8D8FF;
+}
+
+.statisticsContent {
+	box-sizing: border-box;
+	height: 70upx;
+	text-align: center;
+	line-height: 70upx;
+	font-size: 26rpx;
+	color: #666666;
+	display: flex;
+	flex-wrap: nowrap;
+	justify-content: space-around;
+
+	view {
+		text-align: center;
+		line-height: 70upx;
+		width: 25%;
+		font-size: 12px;
+	}
+
+	image {
+		display: inline-block;
+		width: 21px;
+		height: 21px;
+		vertical-align: middle;
+	}
+}
+
+.statisticsTitle {
+	display: flex;
+	flex-wrap: nowrap;
+	justify-content: space-around;
+	height: 70upx;
+	box-sizing: border-box;
+	line-height: 70upx;
+	font-size: 24rpx;
+	color: #232832;
+	background: linear-gradient(180deg, #DAE0EE 0%, #E9ECF4 100%);
+	border-radius: 6px 6px 0 0;
+
+	view {
+		text-align: center;
+		line-height: 35px;
+		color: #2D6DFF;
+		width: 25%;
+		font-size: 12px;
+	}
+
+}
+.charts-box{
+	width: 100%;
+    height: 300px;
+}
+</style>

+ 1 - 1
pages/tools/team/team.vue

@@ -28,7 +28,7 @@
 				</view>
 				<view class="teamStatistics">
 					<view class="statisticsTitle">
-						<view class="d-flex a-center j-start">会员级别</view>
+						<view class="d-flex a-center j-start">会员jibie</view>
 						<view class="d-flex a-center j-center">会员人数</view>
 						<view class="d-flex a-center j-center">签单保费(元)</view>
 						<view class="d-flex a-center j-end">出单人力</view>

+ 0 - 579
pages/wallet/bankCard - 副本.vue

@@ -1,579 +0,0 @@
-<template>
-	<view class="">
-		<u-tabs :list="list" :is-scroll="false" :current="current" @change="change"></u-tabs>
-		<view class="page" v-if="cardPackList1.length>0 || cardPackList2.length>0 || cardPackList3.length>0">
-			<view v-if="current==0" class="bankClass dis a-start f-c j-s" v-for="(item,index) in cardPackList1"
-				:key="index" :style="{background:item.stylelist.background}">
-				<image class="Backgroundimage" src="/static/image/bindBank/img1.png" mode="" style=""></image>
-				<view class="dis j-s">
-					<view class="dis">
-						<view class="logo">
-							<image :src="item.stylelist.logo" mode=""></image>
-						</view>
-						<view class="banktitle dis f-c j-s">
-							<text>{{item.bankAccount}}</text>
-							<text>储蓄卡</text>
-						</view>
-					</view>
-				</view>
-				<view class="bank dis j-s a-c">
-					<view v-for="(item,index) in item.bankArray" :key="index">{{item}}</view>
-				</view>
-			</view>
-			<view v-if="current==1 && item.delFlag==0" class="bankClass dis a-start f-c j-s"
-				v-for="(item,index) in cardPackList2" :key="index" :style="{background:item.stylelist.background}">
-				<image class="Backgroundimage" src="/static/image/bindBank/img1.png" mode="" style=""></image>
-				<view class="dis j-s">
-					<view class="dis">
-						<view class="logo">
-							<image :src="item.stylelist.logo" mode=""></image>
-						</view>
-						<view class="banktitle dis f-c j-s">
-							<text>{{item.bankAccount}}</text>
-							<text>储蓄卡</text>
-						</view>
-					</view>
-					<view class="dis ">
-
-						<image class="tool" src="/static/image/bindBank/del.png" mode="" @click="del(item.id)">
-						</image>
-					</view>
-				</view>
-				<view class="bank dis j-s a-c">
-					<view v-for="(item,index) in item.bankArray" :key="index">{{item}}</view>
-				</view>
-			</view>
-			<view class="" v-if="current==2" v-for="(item,index) in cardPackList3" :key="index">
-				<view class="rejectionReason dis a-start j-start">
-					<view style="width: 5%;margin-top: 2px;">
-						<image src="/static/image/bindBank/bohui.png" mode="" style="width: 14px;height: 14px;">
-						</image>
-					</view>
-					<view style="width: 95%;">
-						驳回原因:{{item.remark?item.remark:'无'}}</view>
-				</view>
-				<view class="bankClass dis a-start f-c j-s" :style="{background:item.stylelist.background}">
-					<image class="Backgroundimage" src="/static/image/bindBank/img1.png" mode="" style=""></image>
-					<view class="dis j-s">
-						<view class="dis">
-							<view class="logo">
-								<image :src="item.stylelist.logo" mode=""></image>
-							</view>
-							<view class="banktitle dis f-c j-s">
-								<text>{{item.bankAccount}}</text>
-								<text>储蓄卡</text>
-							</view>
-						</view>
-					</view>
-					<view class="bank dis j-s a-c">
-						<view v-for="(item,index) in item.bankArray" :key="index">{{item}}</view>
-					</view>
-				</view>
-			</view>
-		</view>
-		<u-empty text="暂无数据" mode="order" class="flexd" v-else></u-empty>
-		<view class="fixed">
-			<u-button type="primary" style="background-color:#0052FF ;font-weight: bold;" @tap="getbankCard">+
-				添加银行卡</u-button>
-		</view>
-		<u-modal v-model="deleteshow" :show-cancel-button='true' @confirm="delbankCard">
-			<view class="slot-content dis a-c j-c" style="padding: 10px;">
-				<span style="font-weight: bold;">点击确定解绑银行卡</span>
-			</view>
-		</u-modal>
-		<u-popup mode="bottom" v-model="promptShow" width="100%" height="50%" border-radius="14" :closeable="true">
-			<view style="padding: 16px;">
-				<view class="binding dis f-c a-c ">
-					<view class="title dis f-c a-c ">
-						<text>修改银行卡信息</text>
-						<text>请填写本人的银行卡信息</text>
-					</view>
-					<view class="formInfo">
-						<u-field v-model="form.realUserName" :field-style="{textAlign:'right'}" label="本人姓名"
-							placeholder="输入真实姓名">
-						</u-field>
-						<u-field v-model="form.bankNumber" @blur="validateBankCard" :field-style="{textAlign:'right'}"
-							label="银行卡号" placeholder="请输入银行卡卡号">
-						</u-field>
-						<u-field @click="showAction" v-model="form.bankAccount" :field-style="{textAlign:'right'}"
-							label="选择银行" placeholder="点击选择银行">
-						</u-field>
-						<u-field v-model="form.bankAddress" :field-style="{textAlign:'right'}" label="开户行"
-							placeholder="输入开户行">
-						</u-field>
-					</view>
-					<u-button class="mt-5" type="primary"
-						style="background-color:#0052FF ;font-weight: bold;width: 100%;" @tap="updateSubmit">
-						点击修改</u-button>
-				</view>
-			</view>
-		</u-popup>
-		<u-select v-model="show" :list="bnklist" @confirm="confirm"></u-select>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				show: false,
-				bnklist: [{
-						value: '1',
-						label: '中国工商银行'
-					},
-					{
-						value: '2',
-						label: '中国农业银行'
-					},
-					{
-						value: '3',
-						label: '中国银行'
-					},
-					{
-						value: '4',
-						label: '中国建设银行'
-					},
-					{
-						value: '5',
-						label: '交通银行'
-					},
-					{
-						value: '6',
-						label: '中国邮政储蓄银行'
-					},
-					{
-						value: '7',
-						label: '招商银行'
-					},
-					{
-						value: '8',
-						label: '中信银行'
-					},
-					{
-						value: '9',
-						label: '中国光大银行'
-					},
-					{
-						value: '10',
-						label: '华夏银行'
-					},
-					{
-						value: '11',
-						label: '中国民生银行'
-					},
-					{
-						value: '12',
-						label: '广发银行'
-					},
-					{
-						value: '13',
-						label: '平安银行'
-					},
-					{
-						value: '14',
-						label: '上海浦东发展银行'
-					},
-					{
-						value: '15',
-						label: '兴业银行'
-					},
-					{
-						value: '16',
-						label: '浙商银行'
-					},
-					{
-						value: '17',
-						label: '渤海银行'
-					},
-					{
-						value: '18',
-						label: '恒丰银行'
-					},
-					{
-						value: '19',
-						label: '北京银行'
-					},
-					{
-						value: '20',
-						label: '上海银行'
-					},
-					{
-						value: '21',
-						label: '晋商银行'
-					},
-					{
-						value: '22',
-						label: '山西银行'
-					},
-					{
-						value: '23',
-						label: '农村商业银行'
-					},
-				],
-				form: {
-					bankNumber: "",
-					realUserName: "",
-					bankAccount: "",
-					bankAddress: "",
-				},
-				promptShow: false,
-				id: "",
-				deleteshow: false,
-				list: [{
-					name: '未审核'
-				}, {
-					name: '已审核'
-				}, {
-					name: '驳回',
-				}],
-				current: 1,
-				validateBankCardStatus: false, //银行卡验证状态
-				bankNumber: "",
-				cardPackList1: [],
-				cardPackList2: [],
-				cardPackList3: [],
-				bankList: [{
-						bankName: "中国邮政储蓄银行",
-						logo: "/static/image/bankLogo/youzheng.png",
-						background: "linear-gradient(90deg, rgba(79, 136, 69, 0.7) 0%, #4f8845 100%)"
-					},
-					{
-						bankName: "中国工商银行",
-						logo: "/static/image/bankLogo/gongshang.png",
-						background: "linear-gradient(90deg, rgba(177, 0, 13, 0.7) 0%, #b1000d 100%)"
-					},
-					{
-						bankName: "中国农业银行",
-						logo: "/static/image/bankLogo/nongye.png",
-						background: "linear-gradient(90deg, rgba(86,152, 130, 0.7) 0%, #569882 100%)"
-					},
-					{
-						bankName: "中国银行",
-						logo: "/static/image/bankLogo/zhongguo.png",
-						background: "linear-gradient(90deg, rgba(157, 32, 40, 0.7) 0%, #9d2028 100%)"
-					},
-					{
-						bankName: "中国建设银行",
-						logo: "/static/image/bankLogo/jianshe.png",
-						background: "linear-gradient(90deg, rgba(6, 89, 159, 0.7) 0%, #06569F 100%)"
-					},
-					{
-						bankName: "招商银行",
-						logo: "/static/image/bankLogo/zhaoshang.png",
-						background: "linear-gradient(90deg, rgba(197, 0, 25, 0.7) 0%, #c50019 100%)"
-					},
-					{
-						bankName: "中国民生银行",
-						logo: "/static/image/bankLogo/minsheng.png",
-						background: "linear-gradient(90deg, rgba(84,149, 92, 0.7) 0%, #54955c 100%)"
-					},
-					{
-						bankName: "中国光大银行",
-						logo: "/static/image/bankLogo/guangda.png",
-						background: "linear-gradient(90deg, rgba(93, 30, 131, 0.7) 0%, #5d1e83 100%)"
-					},
-					{
-						bankName: "中信银行",
-						logo: "/static/image/bankLogo/zhongxin.png",
-						background: "linear-gradient(90deg, rgba(184, 0,22, 0.7) 0%, #b80016 100%)"
-					},
-					{
-						bankName: "华夏银行",
-						logo: "/static/image/bankLogo/huaxia.png",
-						background: "linear-gradient(90deg, rgba(216, 12, 24, 0.7) 0%, #d80c18 100%)"
-					},
-					{
-						bankName: "中国交通银行",
-						logo: "/static/image/bankLogo/jiaotong.png",
-						background: "linear-gradient(90deg, rgba(33, 58, 120, 0.7) 0%, #213a78 100%)"
-					},
-					{
-						bankName: "晋商银行",
-						logo: "/static/image/bankLogo/jinshang.png",
-						background: "linear-gradient(90deg, rgba(224, 150, 165, 0.7) 0%, #e096a5 100%)"
-					},
-					{
-						bankName: "山西银行",
-						logo: "/static/image/bankLogo/shanxi.png",
-						background: "linear-gradient(90deg, rgba(192, 19, 73, 0.7) 0%, #c01349 100%)"
-					},
-					{
-						bankName: "农村商业银行",
-						logo: "/static/image/bankLogo/nongcun.png",
-						background: "linear-gradient(90deg, rgba(0, 155, 77, 0.7) 0%, #009b4d 100%)"
-					},
-				],
-			}
-		},
-		onShow() {
-			this.getcardPack(); //获取卡包
-		},
-		watch: {
-			"form.bankNumber": {
-				handler(val) {
-					if (val) {
-						this.form.bankNumber = val.replace(/\s/g, "");
-					}
-				},
-			},
-		},
-		onLoad() {},
-		methods: {
-			async updateSubmit() {
-				if (!this.form.bankNumber || !this.form.realUserName || !this.form.bankAccount || !this.form
-					.bankAddress) {
-					return uni.showToast({
-						title: '信息不完整',
-						duration: 2000,
-						icon: "none"
-					});
-				}
-				let res = await this.$http.put('/userBank/update', this.form);
-				if (res.code == '200') {
-					uni.showToast({
-						title: res.msg,
-						icon: "none"
-					});
-					this.promptShow = false;
-					this.getcardPack();
-				} else {
-					uni.showToast({
-						title: res.msg,
-						icon: "none"
-					});
-				}
-			},
-			confirm(e) {
-				this.form.bankAccount = e[0].label;
-			},
-			showAction() {
-				this.show = true;
-			},
-			// 验证银行卡
-			async validateBankCard() {
-				var that = this;
-				that.form.bankAccount = "";
-				await bankBin.getBankBin(this.accountno)
-					.then((data) => {
-						that.form.bankAccount = data.bankName;
-						that.validateBankCardStatus = true;
-						return true;
-					})
-					.catch((err) => {
-						that.validateBankCardStatus = false;
-						return uni.showToast({
-							title: err.split(":")[1],
-							icon: "none"
-						});
-					})
-			},
-			change(index) {
-				this.current = index;
-			},
-			async getcardPack() {
-				let res = await this.$http.post('/userBank/getUserBankList', {
-					auditStatus: "",
-				});
-				let list1 = [];
-				let list2 = [];
-				let list3 = [];
-				if (res.code == '200' && res.data) {
-					res.data.map(val => {
-						let name = this.bankList.find(ele => ele.bankName === val.bankAccount)
-						if (name) {
-							val.stylelist = {
-								...name
-							};
-						} else {
-							val.stylelist = {
-								logo: "/static/image/bindBank/img1.png",
-								background: 'linear-gradient(90deg, rgba(229, 166,0,0.7) 0%, #e5a600 100%)',
-							}
-						}
-						const resultArray = [];
-						for (let i = 0; i < val.bankNumber.length; i += 4) {
-							resultArray.push(val.bankNumber.substring(i, i + 4));
-						}
-						val.bankArray = resultArray;
-						switch (val.auditStatus) {
-							case "0":
-								list1.push(val);
-								break;
-							case "1":
-								list2.push(val);
-								break;
-							case "2":
-								list3.push(val);
-								break;
-						}
-					})
-					this.cardPackList1 = list1;
-					this.cardPackList2 = list2;
-					this.cardPackList3 = list3;
-				}
-			},
-			getbankCard() {
-				this.navigate({
-					url: '/pages/wallet/bindBank',
-				}, "navigateTo", true)
-			},
-			del(id) {
-				this.id = id;
-				this.deleteshow = true;
-			},
-
-			async delbankCard() {
-				let res = await this.$http.post('/userBank/unbind', {
-					id: this.id,
-					delFlag: '1',
-				});
-				if (res.code == '200') {
-					this.getcardPack();
-					uni.showToast({
-						title: res.msg,
-						duration: 2000,
-						icon: "success"
-					});
-				}
-			}
-		},
-	}
-</script>
-
-<style lang="scss" scoped>
-	.binding {
-		padding: 16px;
-
-		.title {
-			font-size: 14px;
-			color: #333333;
-
-			text:first-child {
-				font-size: 20px;
-				font-weight: bold;
-			}
-		}
-
-		.formInfo {
-			margin-top: 18px;
-			width: 100%;
-			background: #FFFFFF;
-			box-shadow: 0px 4px 10px 0px #DAE3F4;
-			border-radius: 6px;
-
-
-		}
-
-
-	}
-
-	.rejectionReason {
-		width: 100%;
-		height: auto;
-		padding: 5px;
-		background: rgba(255, 15, 0, 0.1);
-		border-radius: 8px 8px 8px 8px;
-		margin-bottom: 5px;
-
-
-		>view {
-			color: #DC0D00;
-			font-size: 12px;
-		}
-	}
-
-	page {
-		background-color: #fff;
-	}
-
-	.page {
-		padding: 10px 16px;
-	}
-
-	.fixed {
-		position: fixed;
-		bottom: 0;
-		left: 0;
-		width: 100%;
-		height: 62px;
-		background: #FFFFFF;
-		box-shadow: 0px -4px 10px 0px rgba(0, 0, 0, 0.1);
-		padding: 12px 16px;
-	}
-
-	.bankClass {
-		width: 100%;
-		height: 110px;
-		border-radius: 6px;
-		padding: 14px;
-		position: relative;
-		margin-bottom: 15px;
-
-		.Backgroundimage {
-			width: 94px;
-			height: 86px;
-			position: absolute;
-			right: 0;
-			bottom: 0;
-		}
-
-		>view {
-			width: 100%;
-		}
-
-		.bank {
-			font-size: 18px;
-			color: #fff;
-			line-height: 1;
-
-			view {
-				font-size: 18px;
-				line-height: 1;
-			}
-		}
-
-		.logo {
-			width: 39px;
-			height: 39px;
-			background: #FFFFFF;
-			border-radius: 6px;
-
-			image {
-				width: 100%;
-				height: 100%;
-			}
-		}
-
-		.tool {
-			width: 20px;
-			height: 20px;
-		}
-
-		.banktitle {
-			margin-left: 12px;
-
-			text:first-child {
-				color: #fff;
-				font-weight: bold;
-				font-size: 16px;
-				line-height: 1;
-			}
-
-			text:last-child {
-				color: #fff;
-				font-size: 12px;
-				line-height: 1;
-			}
-		}
-
-	}
-
-	.flexd {
-		position: fixed;
-		top: 0;
-		bottom: 0;
-		left: 0;
-		right: 0;
-		z-index: -1;
-	}
-</style>

+ 1 - 1
pages/wallet/billInfo.vue

@@ -65,7 +65,7 @@
 						<text>{{promotionData.agentName}}</text>
 					</view>
 					<view class="dis j-s a-c" v-if="promotionData.agentLevel">
-						<text>代理人级别:</text>
+						<text>代理人jibie:</text>
 						<text>{{promotionData.agentLevel}}</text>
 					</view>
 				</template>

+ 8 - 6
pages/wallet/withdraw.vue

@@ -287,12 +287,14 @@
 						title: res.msg,
 						icon: "none"
 					});
-					setTimeout(() => {
-						return uni.navigateTo({
-							url: "pages/my/my"
-						})
-						// return uni.navigateBack(1);
-					}, 2000);
+					return uni.navigateBack(1);
+
+					// setTimeout(() => {
+					// 	 uni.navigateTo({
+					// 		url: "/pages/my/my"
+					// 	})
+					// 	// return uni.navigateBack(1);
+					// }, 500);
 				}
 
 			},

+ 0 - 0
static/背景 (1).png → static/beijing (2).png


BIN
static/code.png


+ 0 - 0
static/合伙人.png → static/hehuor.png


BIN
static/icon/code.png


BIN
static/icon/code2.png


+ 0 - 0
static/icon/电话.png → static/icon/dianhua.png


+ 0 - 0
static/icon/级别.png → static/icon/jibie.png


+ 0 - 0
static/icon/级别 (5).png → static/icon/jibie1.png


+ 0 - 0
static/icon/级别 (1).png → static/icon/jibie3.png


+ 0 - 0
static/icon/级别 (2).png → static/icon/jibie4.png


+ 0 - 0
static/icon/级别 (3).png → static/icon/jibie5.png


+ 0 - 0
static/icon/级别 (4).png → static/icon/jibie6.png


+ 0 - 0
static/icon/男.png → static/icon/nan.png


+ 0 - 0
static/icon/女.png → static/icon/nv.png


BIN
static/icon/paiming1.png


BIN
static/icon/paiming2.png


BIN
static/icon/paiming3.png


+ 0 - 0
static/icon/向右.png → static/icon/right.png


+ 0 - 0
static/icon/tab/首页1.png → static/icon/tab/home1.png


+ 0 - 0
static/icon/tab/首页2.png → static/icon/tab/home2.png


+ 0 - 0
static/icon/tab/我的1.png → static/icon/tab/my1.png


+ 0 - 0
static/icon/tab/我的2.png → static/icon/tab/my2.png


BIN
static/icon/tab/tongji1.png


BIN
static/icon/tab/tongji2.png


+ 0 - 0
static/icon/微信.png → static/icon/weixin.png


BIN
static/icon/搜索.png


BIN
static/image/login/2.png


BIN
static/image/login/biyan.png


BIN
static/image/login/mima.png


BIN
static/image/login/shoujihao.png


BIN
static/image/login/yanzhengma.png


BIN
static/image/login/zhanghao.png


BIN
static/image/login/zhengyan.png


BIN
static/image/my/baocun.png


+ 0 - 0
static/image/my/背景.png → static/image/my/beijing.png


BIN
static/image/my/fenxiang.png


BIN
static/image/my/kefu.png


+ 0 - 0
static/image/my/男.png → static/image/my/nan.png


+ 0 - 0
static/image/my/女.png → static/image/my/nv.png


BIN
static/image/my/shenfenzz.png


BIN
static/image/my/shenqing.png


BIN
static/image/my/shenzf.png


BIN
static/image/my/tichu.png


BIN
static/image/my/weixin.png


+ 0 - 0
static/image/my/无性别.png → static/image/my/wuxingb.png


BIN
static/image/my/yinhangka.png


BIN
static/shenqing.png


BIN
static/work.png


BIN
static/zhaomum.png


BIN
static/工作室.png


+ 0 - 37
uni_modules/qiun-data-charts/changelog.md

@@ -1,40 +1,3 @@
-## 2.5.0-20230101(2023-01-01)
-- 秋云图表组件 修改条件编译顺序,确保uniapp的cli方式的项目依赖不完整时可以正常显示
-- 秋云图表组件 恢复props属性directory的使用,以修复vue3项目中,开启echarts后,echarts目录识别错误的bug
-- uCharts.js 修复区域图、混合图只有一个数据时图表显示不正确的bug
-- uCharts.js 修复折线图、区域图中时间轴类别图表tooltip指示点显示不正确的bug
-- uCharts.js 修复x轴使用labelCount时,并且boundaryGap = 'justify' 并且关闭Y轴显示的时候,最后一个坐标值不显示的bug
-- uCharts.js 修复折线图只有一组数据时 ios16 渲染颜色不正确的bug
-- uCharts.js 修复玫瑰图半径显示不正确的bug
-- uCharts.js 柱状图、山峰图增加正负图功能,y轴网格如果需要显示0轴则由 min max 及 splitNumber 确定,后续版本优化自动显示0轴
-- uCharts.js 柱状图column增加 opts.extra.column.labelPosition,数据标签位置,有效值为 outside外部, insideTop内顶部, center内中间, bottom内底部
-- uCharts.js 雷达图radar增加 opts.extra.radar.labelShow,否显示各项标识文案是,默认true
-- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.boxPadding,提示窗边框填充距离,默认3px
-- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.fontSize,提示窗字体大小配置,默认13px
-- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.lineHeight,提示窗文字行高,默认20px
-- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.legendShow,是否显示左侧图例,默认true
-- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.legendShape,图例形状,图例标识样式,有效值为 auto自动跟随图例, diamond◆, circle●, triangle▲, square■, rect▬, line-
-- uCharts.js 标记线markLine增加 opts.extra.markLine.labelFontSize,字体大小配置,默认13px
-- uCharts.js 标记线markLine增加 opts.extra.markLine.labelPadding,标签边框内填充距离,默认6px
-- uCharts.js 折线图line增加 opts.extra.line.linearType,渐变色类型,可选值 none关闭渐变色,custom 自定义渐变色。使用自定义渐变色时请赋值serie.linearColor作为颜色值
-- uCharts.js 折线图line增加 serie.linearColor,渐变色数组,格式为2维数组[起始位置,颜色值],例如[[0,'#0EE2F8'],[0.3,'#2BDCA8'],[0.6,'#1890FF'],[1,'#9A60B4']]
-- uCharts.js 折线图line增加 opts.extra.line.onShadow,是否开启折线阴影,开启后请赋值serie.setShadow阴影设置
-- uCharts.js 折线图line增加 serie.setShadow,阴影配置,格式为4位数组:[offsetX,offsetY,blur,color]
-- uCharts.js 折线图line增加 opts.extra.line.animation,动画效果方向,可选值为vertical 垂直动画效果,horizontal 水平动画效果
-- uCharts.js X轴xAxis增加 opts.xAxis.lineHeight,X轴字体行高,默认20px
-- uCharts.js X轴xAxis增加 opts.xAxis.marginTop,X轴文字距离轴线的距离,默认0px
-- uCharts.js X轴xAxis增加 opts.xAxis.title,当前X轴标题
-- uCharts.js X轴xAxis增加 opts.xAxis.titleFontSize,标题字体大小,默认13px
-- uCharts.js X轴xAxis增加 opts.xAxis.titleOffsetY,标题纵向偏移距离,负数为向上偏移,正数向下偏移
-- uCharts.js X轴xAxis增加 opts.xAxis.titleOffsetX,标题横向偏移距离,负数为向左偏移,正数向右偏移
-- uCharts.js X轴xAxis增加 opts.xAxis.titleFontColor,标题字体颜色,默认#666666
-
-## 报错TypeError: Cannot read properties of undefined (reading 'length')
-- 如果是uni-modules版本组件,请先登录HBuilderX账号;
-- 在HBuilderX中的manifest.json,点击重新获取uniapp的appid,或者删除appid重新粘贴,重新运行;
-- 如果是cli项目请使用码云上的非uniCloud版本组件;
-- 或者添加uniCloud的依赖;
-- 或者使用原生uCharts;
 ## 2.4.5-20221130(2022-11-30)
 - uCharts.js 优化tooltip当文字很多变为左侧显示时,如果画布仍显显示不下,提示框错位置变为以左侧0位置起画
 - uCharts.js 折线图修复特殊情况下只有单点数据,并改变线宽后点变为圆形的bug

+ 16 - 6
uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue

@@ -428,12 +428,12 @@ export default {
       this.cid = id
     }
     const systemInfo = uni.getSystemInfoSync()
-    if(systemInfo.platform === 'windows' || systemInfo.platform === 'mac'){
+    if(systemInfo.platform === 'windows' || systemInfo.platform === 'macos'){
       this.inWin = true;
     }
     // #ifdef MP-WEIXIN
     this.inWx = true;
-    if (this.canvas2d === false || systemInfo.platform === 'windows' || systemInfo.platform === 'mac') {
+    if (this.canvas2d === false || systemInfo.platform === 'windows' || systemInfo.platform === 'macos') {
       this.type2d = false;
     }else{
       this.type2d = true;
@@ -446,6 +446,9 @@ export default {
     // #endif
     // #ifdef  MP-TOUTIAO || MP-LARK || MP-ALIPAY
     this.type2d = this.canvas2d;
+    if(this.canvas2d === true){
+      this.pixel = systemInfo.pixelRatio;
+    }
     // #endif
     // #ifdef MP-ALIPAY
     this.inAli = true;
@@ -1306,12 +1309,19 @@ export default {
       }else{
         const script = document.createElement('script')
         // #ifdef APP-VUE
-        script.src = './uni_modules/qiun-data-charts/static/app-plus/echarts.min.js'
+        script.src = './uni_modules/qiun-data-charts/static/app-plus/echarts.min.js';
         // #endif
         // #ifdef H5
-        const rooturl = window.location.origin
-        const directory = instance.getDataset().directory
-        script.src = rooturl + directory + 'uni_modules/qiun-data-charts/static/h5/echarts.min.js'
+        const { origin } = window.location;
+        let base_url = "";
+        // #ifdef VUE2
+        base_url = process.env.BASE_URL;
+        // #endif
+        // #ifdef VUE3
+        base_url = import.meta.env.BASE_URL;
+        // #endif
+        const rooturl = origin + base_url;
+        script.src = rooturl + 'uni_modules/qiun-data-charts/static/h5/echarts.min.js';
         // #endif
         script.onload = this.newEChart
         document.head.appendChild(script)

+ 2 - 1
uni_modules/qiun-data-charts/package.json

@@ -11,7 +11,8 @@
     "可视化"
 ],
   "repository": "https://gitee.com/uCharts/uCharts",
-"engines": {
+  "engines": {
+    "HBuilderX": "^3.3.8"
   },
 "dcloudext": {
     "sale": {

+ 1 - 1
uni_modules/qiun-data-charts/readme.md

@@ -34,7 +34,7 @@
 
 ## 社群支持
 
-uCharts官方拥有5个2000人的QQ群及专属VIP会员群支持,庞大的用户量证明我们一直在努力,请各位放心使用!uCharts的开源图表组件的开发,团队付出了大量的时间与精力,经过来的考验,不会有比较明显的bug,请各位放心使用。如果您有更好的想法,可以在`码云提交Pull Requests`以帮助更多开发者完成需求,再次感谢各位对uCharts的鼓励与支持!
+uCharts官方拥有5个2000人的QQ群及专属VIP会员群支持,庞大的用户量证明我们一直在努力,请各位放心使用!uCharts的开源图表组件的开发,团队付出了大量的时间与精力,经过五年来的考验,不会有比较明显的bug,请各位放心使用。如果您有更好的想法,可以在`码云提交Pull Requests`以帮助更多开发者完成需求,再次感谢各位对uCharts的鼓励与支持!
 
 #### 官方交流群
 - 交流群1:371774600(已满)

+ 92 - 0
uni_modules/uni-popup/changelog.md

@@ -0,0 +1,92 @@
+## 1.9.5(2024-10-15)
+- 修复 微信小程序中的getSystemInfo警告
+## 1.9.4(2024-10-12)
+- 修复 微信小程序中的getSystemInfo警告
+## 1.9.3(2024-10-12)
+- 修复 微信小程序中的getSystemInfo警告
+## 1.9.2(2024-09-21)
+- 修复 uni-popup在android上的重复点击弹出位置不正确的bug
+## 1.9.1(2024-04-02)
+- 修复 uni-popup-dialog vue3下使用value无法进行绑定的bug(双向绑定兼容旧写法)
+## 1.9.0(2024-03-28)
+- 修复 uni-popup-dialog 双向绑定时初始化逻辑修正
+## 1.8.9(2024-03-20)
+- 修复 uni-popup-dialog 数据输入时修正为双向绑定
+## 1.8.8(2024-02-20)
+- 修复 uni-popup 在微信小程序下出现文字向上闪动的bug
+## 1.8.7(2024-02-02)
+- 新增 uni-popup-dialog 新增属性focus:input模式下,是否自动自动聚焦
+## 1.8.6(2024-01-30)
+- 新增 uni-popup-dialog 新增属性maxLength:限制输入框字数
+## 1.8.5(2024-01-26)
+- 新增 uni-popup-dialog 新增属性showClose:控制关闭按钮的显示
+## 1.8.4(2023-11-15)
+- 新增 uni-popup 支持uni-app-x 注意暂时仅支持 `maskClick` `@open` `@close`
+## 1.8.3(2023-04-17)
+- 修复 uni-popup 重复打开时的 bug
+## 1.8.2(2023-02-02)
+- uni-popup-dialog 组件新增 inputType 属性
+## 1.8.1(2022-12-01)
+- 修复 nvue 下 v-show 报错
+## 1.8.0(2022-11-29)
+- 优化 主题样式
+## 1.7.9(2022-04-02)
+- 修复 弹出层内部无法滚动的bug
+## 1.7.8(2022-03-28)
+- 修复 小程序中高度错误的bug
+## 1.7.7(2022-03-17)
+- 修复 快速调用open出现问题的Bug
+## 1.7.6(2022-02-14)
+- 修复 safeArea 属性不能设置为false的bug
+## 1.7.5(2022-01-19)
+- 修复 isMaskClick 失效的bug
+## 1.7.4(2022-01-19)
+- 新增 cancelText \ confirmText 属性 ,可自定义文本
+- 新增 maskBackgroundColor 属性 ,可以修改蒙版颜色
+- 优化 maskClick属性 更新为 isMaskClick ,解决微信小程序警告的问题
+## 1.7.3(2022-01-13)
+- 修复 设置 safeArea 属性不生效的bug
+## 1.7.2(2021-11-26)
+- 优化 组件示例
+## 1.7.1(2021-11-26)
+- 修复 vuedoc 文字错误
+## 1.7.0(2021-11-19)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-popup](https://uniapp.dcloud.io/component/uniui/uni-popup)
+## 1.6.2(2021-08-24)
+- 新增 支持国际化
+## 1.6.1(2021-07-30)
+- 优化 vue3下事件警告的问题
+## 1.6.0(2021-07-13)
+- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
+## 1.5.0(2021-06-23)
+- 新增 mask-click 遮罩层点击事件
+## 1.4.5(2021-06-22)
+- 修复 nvue 平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug
+## 1.4.4(2021-06-18)
+- 修复 H5平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug
+## 1.4.3(2021-06-08)
+- 修复 错误的 watch 字段
+- 修复 safeArea 属性不生效的问题
+- 修复 点击内容,再点击遮罩无法关闭的Bug
+## 1.4.2(2021-05-12)
+- 新增 组件示例地址
+## 1.4.1(2021-04-29)
+- 修复 组件内放置 input 、textarea 组件,无法聚焦的问题
+## 1.4.0 (2021-04-29)
+- 新增 type 属性的 left\right 值,支持左右弹出
+- 新增 open(String:type) 方法参数 ,可以省略 type 属性 ,直接传入类型打开指定弹窗
+- 新增 backgroundColor 属性,可定义主窗口背景色,默认不显示背景色
+- 新增 safeArea 属性,是否适配底部安全区
+- 修复 App\h5\微信小程序底部安全区占位不对的Bug
+- 修复 App 端弹出等待的Bug
+- 优化 提升低配设备性能,优化动画卡顿问题
+- 优化 更简单的组件自定义方式
+## 1.2.9(2021-02-05)
+- 优化 组件引用关系,通过uni_modules引用组件
+## 1.2.8(2021-02-05)
+- 调整为uni_modules目录规范
+## 1.2.7(2021-02-05)
+- 调整为uni_modules目录规范
+- 新增 支持 PC 端
+- 新增 uni-popup-message 、uni-popup-dialog扩展组件支持 PC 端

+ 45 - 0
uni_modules/uni-popup/components/uni-popup-dialog/keypress.js

@@ -0,0 +1,45 @@
+// #ifdef H5
+export default {
+  name: 'Keypress',
+  props: {
+    disable: {
+      type: Boolean,
+      default: false
+    }
+  },
+  mounted () {
+    const keyNames = {
+      esc: ['Esc', 'Escape'],
+      tab: 'Tab',
+      enter: 'Enter',
+      space: [' ', 'Spacebar'],
+      up: ['Up', 'ArrowUp'],
+      left: ['Left', 'ArrowLeft'],
+      right: ['Right', 'ArrowRight'],
+      down: ['Down', 'ArrowDown'],
+      delete: ['Backspace', 'Delete', 'Del']
+    }
+    const listener = ($event) => {
+      if (this.disable) {
+        return
+      }
+      const keyName = Object.keys(keyNames).find(key => {
+        const keyName = $event.key
+        const value = keyNames[key]
+        return value === keyName || (Array.isArray(value) && value.includes(keyName))
+      })
+      if (keyName) {
+        // 避免和其他按键事件冲突
+        setTimeout(() => {
+          this.$emit(keyName, {})
+        }, 0)
+      }
+    }
+    document.addEventListener('keyup', listener)
+    this.$once('hook:beforeDestroy', () => {
+      document.removeEventListener('keyup', listener)
+    })
+  },
+	render: () => {}
+}
+// #endif

+ 316 - 0
uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue

@@ -0,0 +1,316 @@
+<template>
+	<view class="uni-popup-dialog">
+		<view class="uni-dialog-title">
+			<text class="uni-dialog-title-text" :class="['uni-popup__'+dialogType]">{{titleText}}</text>
+		</view>
+		<view v-if="mode === 'base'" class="uni-dialog-content">
+			<slot>
+				<text class="uni-dialog-content-text">{{content}}</text>
+			</slot>
+		</view>
+		<view v-else class="uni-dialog-content">
+			<slot>
+				<input class="uni-dialog-input" :maxlength="maxlength" v-model="val" :type="inputType"
+					:placeholder="placeholderText" :focus="focus">
+			</slot>
+		</view>
+		<view class="uni-dialog-button-group">
+			<view class="uni-dialog-button" v-if="showClose" @click="closeDialog">
+				<text class="uni-dialog-button-text">{{closeText}}</text>
+			</view>
+			<view class="uni-dialog-button" :class="showClose?'uni-border-left':''" @click="onOk">
+				<text class="uni-dialog-button-text uni-button-color">{{okText}}</text>
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import popup from '../uni-popup/popup.js'
+	import {
+		initVueI18n
+	} from '@dcloudio/uni-i18n'
+	import messages from '../uni-popup/i18n/index.js'
+	const {
+		t
+	} = initVueI18n(messages)
+	/**
+	 * PopUp 弹出层-对话框样式
+	 * @description 弹出层-对话框样式
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
+	 * @property {String} value input 模式下的默认值
+	 * @property {String} placeholder input 模式下输入提示
+	 * @property {Boolean} focus input模式下是否自动聚焦,默认为true
+	 * @property {String} type = [success|warning|info|error] 主题样式
+	 *  @value success 成功
+	 * 	@value warning 提示
+	 * 	@value info 消息
+	 * 	@value error 错误
+	 * @property {String} mode = [base|input] 模式、
+	 * 	@value base 基础对话框
+	 * 	@value input 可输入对话框
+	 * @showClose {Boolean} 是否显示关闭按钮
+	 * @property {String} content 对话框内容
+	 * @property {Boolean} beforeClose 是否拦截取消事件
+	 * @property {Number} maxlength 输入
+	 * @event {Function} confirm 点击确认按钮触发
+	 * @event {Function} close 点击取消按钮触发
+	 */
+
+	export default {
+		name: "uniPopupDialog",
+		mixins: [popup],
+		emits: ['confirm', 'close', 'update:modelValue', 'input'],
+		props: {
+			inputType: {
+				type: String,
+				default: 'text'
+			},
+			showClose: {
+				type: Boolean,
+				default: true
+			},
+			// #ifdef VUE2
+			value: {
+				type: [String, Number],
+				default: ''
+			},
+			// #endif
+			// #ifdef VUE3
+			modelValue: {
+				type: [Number, String],
+				default: ''
+			},
+			// #endif
+
+
+			placeholder: {
+				type: [String, Number],
+				default: ''
+			},
+			type: {
+				type: String,
+				default: 'error'
+			},
+			mode: {
+				type: String,
+				default: 'base'
+			},
+			title: {
+				type: String,
+				default: ''
+			},
+			content: {
+				type: String,
+				default: ''
+			},
+			beforeClose: {
+				type: Boolean,
+				default: false
+			},
+			cancelText: {
+				type: String,
+				default: ''
+			},
+			confirmText: {
+				type: String,
+				default: ''
+			},
+			maxlength: {
+				type: Number,
+				default: -1,
+			},
+			focus: {
+				type: Boolean,
+				default: true,
+			}
+		},
+		data() {
+			return {
+				dialogType: 'error',
+				val: ""
+			}
+		},
+		computed: {
+			okText() {
+				return this.confirmText || t("uni-popup.ok")
+			},
+			closeText() {
+				return this.cancelText || t("uni-popup.cancel")
+			},
+			placeholderText() {
+				return this.placeholder || t("uni-popup.placeholder")
+			},
+			titleText() {
+				return this.title || t("uni-popup.title")
+			}
+		},
+		watch: {
+			type(val) {
+				this.dialogType = val
+			},
+			mode(val) {
+				if (val === 'input') {
+					this.dialogType = 'info'
+				}
+			},
+			value(val) {
+				if (this.maxlength != -1 && this.mode === 'input') {
+					this.val = val.slice(0, this.maxlength);
+				} else {
+					this.val = val
+				}
+			},
+			val(val) {
+				// #ifdef VUE2
+				// TODO 兼容 vue2
+				this.$emit('input', val);
+				// #endif
+				// #ifdef VUE3
+				// TODO 兼容 vue3
+				this.$emit('update:modelValue', val);
+				// #endif
+			}
+		},
+		created() {
+			// 对话框遮罩不可点击
+			// this.popup.disableMask()
+			// this.popup.closeMask()
+			if (this.mode === 'input') {
+				this.dialogType = 'info'
+				this.val = this.value;
+				// #ifdef VUE3
+				this.val = this.modelValue;
+				// #endif
+			} else {
+				this.dialogType = this.type
+			}
+		},
+		methods: {
+			/**
+			 * 点击确认按钮
+			 */
+			onOk() {
+				if (this.mode === 'input') {
+					this.$emit('confirm', this.val)
+				} else {
+					this.$emit('confirm')
+				}
+				if (this.beforeClose) return
+				// this.popup.close()
+			},
+			/**
+			 * 点击取消按钮
+			 */
+			closeDialog() {
+				this.$emit('close')
+				if (this.beforeClose) return
+				// this.popup.close()
+			},
+			close() {
+				// this.popup.close()
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.uni-popup-dialog {
+		width: 300px;
+		border-radius: 11px;
+		background-color: #fff;
+	}
+
+	.uni-dialog-title {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding-top: 25px;
+	}
+
+	.uni-dialog-title-text {
+		font-size: 16px;
+		font-weight: 500;
+	}
+
+	.uni-dialog-content {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		padding: 20px;
+	}
+
+	.uni-dialog-content-text {
+		font-size: 14px;
+		color: #6C6C6C;
+	}
+
+	.uni-dialog-button-group {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		border-top-color: #f5f5f5;
+		border-top-style: solid;
+		border-top-width: 1px;
+	}
+
+	.uni-dialog-button {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		height: 45px;
+	}
+
+	.uni-border-left {
+		border-left-color: #f0f0f0;
+		border-left-style: solid;
+		border-left-width: 1px;
+	}
+
+	.uni-dialog-button-text {
+		font-size: 16px;
+		color: #333;
+	}
+
+	.uni-button-color {
+		color: #007aff;
+	}
+
+	.uni-dialog-input {
+		flex: 1;
+		font-size: 14px;
+		border: 1px #eee solid;
+		height: 40px;
+		padding: 0 10px;
+		border-radius: 5px;
+		color: #555;
+	}
+
+	.uni-popup__success {
+		color: #4cd964;
+	}
+
+	.uni-popup__warn {
+		color: #f0ad4e;
+	}
+
+	.uni-popup__error {
+		color: #dd524d;
+	}
+
+	.uni-popup__info {
+		color: #909399;
+	}
+</style>

+ 143 - 0
uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue

@@ -0,0 +1,143 @@
+<template>
+	<view class="uni-popup-message">
+		<view class="uni-popup-message__box fixforpc-width" :class="'uni-popup__'+type">
+			<slot>
+				<text class="uni-popup-message-text" :class="'uni-popup__'+type+'-text'">{{message}}</text>
+			</slot>
+		</view>
+	</view>
+</template>
+
+<script>
+	import popup from '../uni-popup/popup.js'
+	/**
+	 * PopUp 弹出层-消息提示
+	 * @description 弹出层-消息提示
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
+	 * @property {String} type = [success|warning|info|error] 主题样式
+	 *  @value success 成功
+	 * 	@value warning 提示
+	 * 	@value info 消息
+	 * 	@value error 错误
+	 * @property {String} message 消息提示文字
+	 * @property {String} duration 显示时间,设置为 0 则不会自动关闭
+	 */
+
+	export default {
+		name: 'uniPopupMessage',
+		mixins:[popup],
+		props: {
+			/**
+			 * 主题 success/warning/info/error	  默认 success
+			 */
+			type: {
+				type: String,
+				default: 'success'
+			},
+			/**
+			 * 消息文字
+			 */
+			message: {
+				type: String,
+				default: ''
+			},
+			/**
+			 * 显示时间,设置为 0 则不会自动关闭
+			 */
+			duration: {
+				type: Number,
+				default: 3000
+			},
+			maskShow:{
+				type:Boolean,
+				default:false
+			}
+		},
+		data() {
+			return {}
+		},
+		created() {
+			this.popup.maskShow = this.maskShow
+			this.popup.messageChild = this
+		},
+		methods: {
+			timerClose(){
+				if(this.duration === 0) return
+				clearTimeout(this.timer) 
+				this.timer = setTimeout(()=>{
+					this.popup.close()
+				},this.duration)
+			}
+		}
+	}
+</script>
+<style lang="scss" >
+	.uni-popup-message {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+	}
+
+	.uni-popup-message__box {
+		background-color: #e1f3d8;
+		padding: 10px 15px;
+		border-color: #eee;
+		border-style: solid;
+		border-width: 1px;
+		flex: 1;
+	}
+
+	@media screen and (min-width: 500px) {
+		.fixforpc-width {
+			margin-top: 20px;
+			border-radius: 4px;
+			flex: none;
+			min-width: 380px;
+			/* #ifndef APP-NVUE */
+			max-width: 50%;
+			/* #endif */
+			/* #ifdef APP-NVUE */
+			max-width: 500px;
+			/* #endif */
+		}
+	}
+
+	.uni-popup-message-text {
+		font-size: 14px;
+		padding: 0;
+	}
+
+	.uni-popup__success {
+		background-color: #e1f3d8;
+	}
+
+	.uni-popup__success-text {
+		color: #67C23A;
+	}
+
+	.uni-popup__warn {
+		background-color: #faecd8;
+	}
+
+	.uni-popup__warn-text {
+		color: #E6A23C;
+	}
+
+	.uni-popup__error {
+		background-color: #fde2e2;
+	}
+
+	.uni-popup__error-text {
+		color: #F56C6C;
+	}
+
+	.uni-popup__info {
+		background-color: #F2F6FC;
+	}
+
+	.uni-popup__info-text {
+		color: #909399;
+	}
+</style>

+ 187 - 0
uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue

@@ -0,0 +1,187 @@
+<template>
+	<view class="uni-popup-share">
+		<view class="uni-share-title"><text class="uni-share-title-text">{{shareTitleText}}</text></view>
+		<view class="uni-share-content">
+			<view class="uni-share-content-box">
+				<view class="uni-share-content-item" v-for="(item,index) in bottomData" :key="index" @click.stop="select(item,index)">
+					<image class="uni-share-image" :src="item.icon" mode="aspectFill"></image>
+					<text class="uni-share-text">{{item.text}}</text>
+				</view>
+
+			</view>
+		</view>
+		<view class="uni-share-button-box">
+			<button class="uni-share-button" @click="close">{{cancelText}}</button>
+		</view>
+	</view>
+</template>
+
+<script>
+	import popup from '../uni-popup/popup.js'
+	import {
+	initVueI18n
+	} from '@dcloudio/uni-i18n'
+	import messages from '../uni-popup/i18n/index.js'
+	const {	t	} = initVueI18n(messages)
+	export default {
+		name: 'UniPopupShare',
+		mixins:[popup],
+		emits:['select'],
+		props: {
+			title: {
+				type: String,
+				default: ''
+			},
+			beforeClose: {
+				type: Boolean,
+				default: false
+			}
+		},
+		data() {
+			return {
+				bottomData: [{
+						text: '微信',
+						icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/c2b17470-50be-11eb-b680-7980c8a877b8.png',
+						name: 'wx'
+					},
+					{
+						text: '支付宝',
+						icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/d684ae40-50be-11eb-8ff1-d5dcf8779628.png',
+						name: 'ali'
+					},
+					{
+						text: 'QQ',
+						icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/e7a79520-50be-11eb-b997-9918a5dda011.png',
+						name: 'qq'
+					},
+					{
+						text: '新浪',
+						icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/0dacdbe0-50bf-11eb-8ff1-d5dcf8779628.png',
+						name: 'sina'
+					},
+					// {
+					// 	text: '百度',
+					// 	icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/1ec6e920-50bf-11eb-8a36-ebb87efcf8c0.png',
+					// 	name: 'copy'
+					// },
+					// {
+					// 	text: '其他',
+					// 	icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/2e0fdfe0-50bf-11eb-b997-9918a5dda011.png',
+					// 	name: 'more'
+					// }
+				]
+			}
+		},
+		created() {},
+		computed: {
+			cancelText() {
+				return t("uni-popup.cancel")
+			},
+		shareTitleText() {
+				return this.title || t("uni-popup.shareTitle")
+			}
+		},
+		methods: {
+			/**
+			 * 选择内容
+			 */
+			select(item, index) {
+				this.$emit('select', {
+					item,
+					index
+				})
+				this.close()
+
+			},
+			/**
+			 * 关闭窗口
+			 */
+			close() {
+				if(this.beforeClose) return
+				this.popup.close()
+			}
+		}
+	}
+</script>
+<style lang="scss" >
+	.uni-popup-share {
+		background-color: #fff;
+		border-top-left-radius: 11px;
+		border-top-right-radius: 11px;
+	}
+	.uni-share-title {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+		justify-content: center;
+		height: 40px;
+	}
+	.uni-share-title-text {
+		font-size: 14px;
+		color: #666;
+	}
+	.uni-share-content {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		padding-top: 10px;
+	}
+
+	.uni-share-content-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		flex-wrap: wrap;
+		width: 360px;
+	}
+
+	.uni-share-content-item {
+		width: 90px;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		justify-content: center;
+		padding: 10px 0;
+		align-items: center;
+	}
+
+	.uni-share-content-item:active {
+		background-color: #f5f5f5;
+	}
+
+	.uni-share-image {
+		width: 30px;
+		height: 30px;
+	}
+
+	.uni-share-text {
+		margin-top: 10px;
+		font-size: 14px;
+		color: #3B4144;
+	}
+
+	.uni-share-button-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		padding: 10px 15px;
+	}
+
+	.uni-share-button {
+		flex: 1;
+		border-radius: 50px;
+		color: #666;
+		font-size: 16px;
+	}
+
+	.uni-share-button::after {
+		border-radius: 50px;
+	}
+</style>

+ 7 - 0
uni_modules/uni-popup/components/uni-popup/i18n/en.json

@@ -0,0 +1,7 @@
+{
+	"uni-popup.cancel": "cancel",
+	"uni-popup.ok": "ok",
+	"uni-popup.placeholder": "pleace enter",
+	"uni-popup.title": "Hint",
+	"uni-popup.shareTitle": "Share to"
+}

+ 8 - 0
uni_modules/uni-popup/components/uni-popup/i18n/index.js

@@ -0,0 +1,8 @@
+import en from './en.json'
+import zhHans from './zh-Hans.json'
+import zhHant from './zh-Hant.json'
+export default {
+	en,
+	'zh-Hans': zhHans,
+	'zh-Hant': zhHant
+}

+ 7 - 0
uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json

@@ -0,0 +1,7 @@
+{
+	"uni-popup.cancel": "取消",
+	"uni-popup.ok": "确定",
+	"uni-popup.placeholder": "请输入",
+		"uni-popup.title": "提示",
+		"uni-popup.shareTitle": "分享到"
+}

+ 7 - 0
uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json

@@ -0,0 +1,7 @@
+{
+	"uni-popup.cancel": "取消",
+	"uni-popup.ok": "確定",
+	"uni-popup.placeholder": "請輸入",
+	"uni-popup.title": "提示",
+	"uni-popup.shareTitle": "分享到"
+}

+ 45 - 0
uni_modules/uni-popup/components/uni-popup/keypress.js

@@ -0,0 +1,45 @@
+// #ifdef H5
+export default {
+  name: 'Keypress',
+  props: {
+    disable: {
+      type: Boolean,
+      default: false
+    }
+  },
+  mounted () {
+    const keyNames = {
+      esc: ['Esc', 'Escape'],
+      tab: 'Tab',
+      enter: 'Enter',
+      space: [' ', 'Spacebar'],
+      up: ['Up', 'ArrowUp'],
+      left: ['Left', 'ArrowLeft'],
+      right: ['Right', 'ArrowRight'],
+      down: ['Down', 'ArrowDown'],
+      delete: ['Backspace', 'Delete', 'Del']
+    }
+    const listener = ($event) => {
+      if (this.disable) {
+        return
+      }
+      const keyName = Object.keys(keyNames).find(key => {
+        const keyName = $event.key
+        const value = keyNames[key]
+        return value === keyName || (Array.isArray(value) && value.includes(keyName))
+      })
+      if (keyName) {
+        // 避免和其他按键事件冲突
+        setTimeout(() => {
+          this.$emit(keyName, {})
+        }, 0)
+      }
+    }
+    document.addEventListener('keyup', listener)
+    // this.$once('hook:beforeDestroy', () => {
+    //   document.removeEventListener('keyup', listener)
+    // })
+  },
+	render: () => {}
+}
+// #endif

+ 26 - 0
uni_modules/uni-popup/components/uni-popup/popup.js

@@ -0,0 +1,26 @@
+
+export default {
+	data() {
+		return {
+			
+		}
+	},
+	created(){
+		this.popup = this.getParent()
+	},
+	methods:{
+		/**
+		 * 获取父元素实例
+		 */
+		getParent(name = 'uniPopup') {
+			let parent = this.$parent;
+			let parentName = parent.$options.name;
+			while (parentName !== name) {
+				parent = parent.$parent;
+				if (!parent) return false
+				parentName = parent.$options.name;
+			}
+			return parent;
+		},
+	}
+}

+ 90 - 0
uni_modules/uni-popup/components/uni-popup/uni-popup.uvue

@@ -0,0 +1,90 @@
+<template>
+  <view class="popup-root" v-if="isOpen" v-show="isShow" @click="clickMask">
+    <view @click.stop>
+      <slot></slot>
+    </view>
+  </view>
+</template>
+
+<script>
+  type CloseCallBack = ()=> void;
+  let closeCallBack:CloseCallBack = () :void => {};
+  export default {
+    emits:["close","clickMask"],
+    data() {
+      return {
+        isShow:false,
+        isOpen:false
+      }
+    },
+    props: {
+      maskClick: {
+        type: Boolean,
+        default: true
+      },
+    },
+    watch: {
+      // 设置show = true 时,如果没有 open 需要设置为 open
+      isShow:{
+        handler(isShow) {
+          // console.log("isShow",isShow)
+          if(isShow && this.isOpen == false){
+            this.isOpen = true
+          }
+        },
+        immediate:true
+      },
+      // 设置isOpen = true 时,如果没有 isShow 需要设置为 isShow
+      isOpen:{
+        handler(isOpen) {
+          // console.log("isOpen",isOpen)
+          if(isOpen && this.isShow == false){
+            this.isShow = true
+          }
+        },
+        immediate:true
+      }
+    },
+    methods:{
+      open(){
+        // ...funs : CloseCallBack[]
+        // if(funs.length > 0){
+        //   closeCallBack = funs[0]
+        // }
+        this.isOpen = true;
+      },
+      clickMask(){
+        if(this.maskClick == true){
+          this.$emit('clickMask')
+          this.close()
+        }
+      },
+      close(): void{
+        this.isOpen = false;
+        this.$emit('close')
+        closeCallBack()
+      },
+      hiden(){
+        this.isShow = false
+      },
+      show(){
+        this.isShow = true
+      }
+    }
+  }
+</script>
+
+<style>
+.popup-root {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 750rpx;
+  height: 100%;
+  flex: 1;
+  background-color: rgba(0, 0, 0, 0.3);
+  justify-content: center;
+  align-items: center;
+  z-index: 99;
+}
+</style>

+ 518 - 0
uni_modules/uni-popup/components/uni-popup/uni-popup.vue

@@ -0,0 +1,518 @@
+<template>
+	<view v-if="showPopup" class="uni-popup" :class="[popupstyle, isDesktop ? 'fixforpc-z-index' : '']">
+		<view @touchstart="touchstart">
+			<uni-transition key="1" v-if="maskShow" name="mask" mode-class="fade" :styles="maskClass"
+				:duration="duration" :show="showTrans" @click="onTap" />
+			<uni-transition key="2" :mode-class="ani" name="content" :styles="transClass" :duration="duration"
+				:show="showTrans" @click="onTap">
+				<view class="uni-popup__wrapper" :style="getStyles" :class="[popupstyle]" @click="clear">
+					<slot />
+				</view>
+			</uni-transition>
+		</view>
+		<!-- #ifdef H5 -->
+		<keypress v-if="maskShow" @esc="onTap" />
+		<!-- #endif -->
+	</view>
+</template>
+
+<script>
+	// #ifdef H5
+	import keypress from './keypress.js'
+	// #endif
+
+	/**
+	 * PopUp 弹出层
+	 * @description 弹出层组件,为了解决遮罩弹层的问题
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
+	 * @property {String} type = [top|center|bottom|left|right|message|dialog|share] 弹出方式
+	 * 	@value top 顶部弹出
+	 * 	@value center 中间弹出
+	 * 	@value bottom 底部弹出
+	 * 	@value left		左侧弹出
+	 * 	@value right  右侧弹出
+	 * 	@value message 消息提示
+	 * 	@value dialog 对话框
+	 * 	@value share 底部分享示例
+	 * @property {Boolean} animation = [true|false] 是否开启动画
+	 * @property {Boolean} maskClick = [true|false] 蒙版点击是否关闭弹窗(废弃)
+	 * @property {Boolean} isMaskClick = [true|false] 蒙版点击是否关闭弹窗
+	 * @property {String}  backgroundColor 主窗口背景色
+	 * @property {String}  maskBackgroundColor 蒙版颜色
+	 * @property {String}  borderRadius 设置圆角(左上、右上、右下和左下) 示例:"10px 10px 10px 10px"
+	 * @property {Boolean} safeArea		   是否适配底部安全区
+	 * @event {Function} change 打开关闭弹窗触发,e={show: false}
+	 * @event {Function} maskClick 点击遮罩触发
+	 */
+
+	export default {
+		name: 'uniPopup',
+		components: {
+			// #ifdef H5
+			keypress
+			// #endif
+		},
+		emits: ['change', 'maskClick'],
+		props: {
+			// 开启动画
+			animation: {
+				type: Boolean,
+				default: true
+			},
+			// 弹出层类型,可选值,top: 顶部弹出层;bottom:底部弹出层;center:全屏弹出层
+			// message: 消息提示 ; dialog : 对话框
+			type: {
+				type: String,
+				default: 'center'
+			},
+			// maskClick
+			isMaskClick: {
+				type: Boolean,
+				default: null
+			},
+			// TODO 2 个版本后废弃属性 ,使用 isMaskClick
+			maskClick: {
+				type: Boolean,
+				default: null
+			},
+			backgroundColor: {
+				type: String,
+				default: 'none'
+			},
+			safeArea: {
+				type: Boolean,
+				default: true
+			},
+			maskBackgroundColor: {
+				type: String,
+				default: 'rgba(0, 0, 0, 0.4)'
+			},
+			borderRadius:{
+				type: String,
+			}
+		},
+
+		watch: {
+			/**
+			 * 监听type类型
+			 */
+			type: {
+				handler: function(type) {
+					if (!this.config[type]) return
+					this[this.config[type]](true)
+				},
+				immediate: true
+			},
+			isDesktop: {
+				handler: function(newVal) {
+					if (!this.config[newVal]) return
+					this[this.config[this.type]](true)
+				},
+				immediate: true
+			},
+			/**
+			 * 监听遮罩是否可点击
+			 * @param {Object} val
+			 */
+			maskClick: {
+				handler: function(val) {
+					this.mkclick = val
+				},
+				immediate: true
+			},
+			isMaskClick: {
+				handler: function(val) {
+					this.mkclick = val
+				},
+				immediate: true
+			},
+			// H5 下禁止底部滚动
+			showPopup(show) {
+				// #ifdef H5
+				// fix by mehaotian 处理 h5 滚动穿透的问题
+				document.getElementsByTagName('body')[0].style.overflow = show ? 'hidden' : 'visible'
+				// #endif
+			}
+		},
+		data() {
+			return {
+				duration: 300,
+				ani: [],
+				showPopup: false,
+				showTrans: false,
+				popupWidth: 0,
+				popupHeight: 0,
+				config: {
+					top: 'top',
+					bottom: 'bottom',
+					center: 'center',
+					left: 'left',
+					right: 'right',
+					message: 'top',
+					dialog: 'center',
+					share: 'bottom'
+				},
+				maskClass: {
+					position: 'fixed',
+					bottom: 0,
+					top: 0,
+					left: 0,
+					right: 0,
+					backgroundColor: 'rgba(0, 0, 0, 0.4)'
+				},
+				transClass: {
+					backgroundColor: 'transparent',
+					borderRadius: this.borderRadius || "0",
+					position: 'fixed',
+					left: 0,
+					right: 0
+				},
+				maskShow: true,
+				mkclick: true,
+				popupstyle: 'top'
+			}
+		},
+		computed: {
+			getStyles() {
+				let res = { backgroundColor: this.bg };
+				if (this.borderRadius || "0") {
+					res = Object.assign(res, { borderRadius: this.borderRadius })
+				}
+				return res;
+			},
+			isDesktop() {
+				return this.popupWidth >= 500 && this.popupHeight >= 500
+			},
+			bg() {
+				if (this.backgroundColor === '' || this.backgroundColor === 'none') {
+					return 'transparent'
+				}
+				return this.backgroundColor
+			}
+		},
+		mounted() {
+			const fixSize = () => {
+				// #ifdef MP-WEIXIN
+				const {
+					windowWidth,
+					windowHeight,
+					windowTop,
+					safeArea,
+					screenHeight,
+					safeAreaInsets
+				} = uni.getWindowInfo()
+				// #endif
+				// #ifndef MP-WEIXIN
+				const {
+					windowWidth,
+					windowHeight,
+					windowTop,
+					safeArea,
+					screenHeight,
+					safeAreaInsets
+				} = uni.getSystemInfoSync()
+				// #endif
+				this.popupWidth = windowWidth
+				this.popupHeight = windowHeight + (windowTop || 0)
+				// TODO fix by mehaotian 是否适配底部安全区 ,目前微信ios 、和 app ios 计算有差异,需要框架修复
+				if (safeArea && this.safeArea) {
+					// #ifdef MP-WEIXIN
+					this.safeAreaInsets = screenHeight - safeArea.bottom
+					// #endif
+					// #ifndef MP-WEIXIN
+					this.safeAreaInsets = safeAreaInsets.bottom
+					// #endif
+				} else {
+					this.safeAreaInsets = 0
+				}
+			}
+			fixSize()
+			// #ifdef H5
+			// window.addEventListener('resize', fixSize)
+			// this.$once('hook:beforeDestroy', () => {
+			// 	window.removeEventListener('resize', fixSize)
+			// })
+			// #endif
+		},
+		// #ifndef VUE3
+		// TODO vue2
+		destroyed() {
+			this.setH5Visible()
+		},
+		// #endif
+		// #ifdef VUE3
+		// TODO vue3
+		unmounted() {
+			this.setH5Visible()
+		},
+		// #endif
+		activated() {
+   	  this.setH5Visible(!this.showPopup);
+    },
+    deactivated() {
+      this.setH5Visible(true);
+    },
+		created() {
+			// this.mkclick =  this.isMaskClick || this.maskClick
+			if (this.isMaskClick === null && this.maskClick === null) {
+				this.mkclick = true
+			} else {
+				this.mkclick = this.isMaskClick !== null ? this.isMaskClick : this.maskClick
+			}
+			if (this.animation) {
+				this.duration = 300
+			} else {
+				this.duration = 0
+			}
+			// TODO 处理 message 组件生命周期异常的问题
+			this.messageChild = null
+			// TODO 解决头条冒泡的问题
+			this.clearPropagation = false
+			this.maskClass.backgroundColor = this.maskBackgroundColor
+		},
+		methods: {
+			setH5Visible(visible = true) {
+				// #ifdef H5
+				// fix by mehaotian 处理 h5 滚动穿透的问题
+				document.getElementsByTagName('body')[0].style.overflow =  visible ? "visible" : "hidden";
+				// #endif
+			},
+			/**
+			 * 公用方法,不显示遮罩层
+			 */
+			closeMask() {
+				this.maskShow = false
+			},
+			/**
+			 * 公用方法,遮罩层禁止点击
+			 */
+			disableMask() {
+				this.mkclick = false
+			},
+			// TODO nvue 取消冒泡
+			clear(e) {
+				// #ifndef APP-NVUE
+				e.stopPropagation()
+				// #endif
+				this.clearPropagation = true
+			},
+
+			open(direction) {
+				// fix by mehaotian 处理快速打开关闭的情况
+				if (this.showPopup) {
+					return
+				}
+				let innerType = ['top', 'center', 'bottom', 'left', 'right', 'message', 'dialog', 'share']
+				if (!(direction && innerType.indexOf(direction) !== -1)) {
+					direction = this.type
+				}
+				if (!this.config[direction]) {
+					console.error('缺少类型:', direction)
+					return
+				}
+				this[this.config[direction]]()
+				this.$emit('change', {
+					show: true,
+					type: direction
+				})
+			},
+			close(type) {
+				this.showTrans = false
+				this.$emit('change', {
+					show: false,
+					type: this.type
+				})
+				clearTimeout(this.timer)
+				// // 自定义关闭事件
+				// this.customOpen && this.customClose()
+				this.timer = setTimeout(() => {
+					this.showPopup = false
+				}, 300)
+			},
+			// TODO 处理冒泡事件,头条的冒泡事件有问题 ,先这样兼容
+			touchstart() {
+				this.clearPropagation = false
+			},
+
+			onTap() {
+				if (this.clearPropagation) {
+					// fix by mehaotian 兼容 nvue
+					this.clearPropagation = false
+					return
+				}
+				this.$emit('maskClick')
+				if (!this.mkclick) return
+				this.close()
+			},
+			/**
+			 * 顶部弹出样式处理
+			 */
+			top(type) {
+				this.popupstyle = this.isDesktop ? 'fixforpc-top' : 'top'
+				this.ani = ['slide-top']
+				this.transClass = {
+					position: 'fixed',
+					left: 0,
+					right: 0,
+					backgroundColor: this.bg,
+					borderRadius:this.borderRadius || "0"
+				}
+				// TODO 兼容 type 属性 ,后续会废弃
+				if (type) return
+				this.showPopup = true
+				this.showTrans = true
+				this.$nextTick(() => {
+					this.showPoptrans()
+					if (this.messageChild && this.type === 'message') {
+						this.messageChild.timerClose()
+					}
+				})
+			},
+			/**
+			 * 底部弹出样式处理
+			 */
+			bottom(type) {
+				this.popupstyle = 'bottom'
+				this.ani = ['slide-bottom']
+				this.transClass = {
+					position: 'fixed',
+					left: 0,
+					right: 0,
+					bottom: 0,
+					paddingBottom: this.safeAreaInsets + 'px',
+					backgroundColor: this.bg,
+					borderRadius:this.borderRadius || "0",
+				}
+				// TODO 兼容 type 属性 ,后续会废弃
+				if (type) return
+				this.showPoptrans()
+			},
+			/**
+			 * 中间弹出样式处理
+			 */
+			center(type) {
+				this.popupstyle = 'center'
+				//微信小程序下,组合动画会出现文字向上闪动问题,再此做特殊处理
+				// #ifdef MP-WEIXIN
+					this.ani = ['fade']
+				// #endif
+				// #ifndef MP-WEIXIN
+					this.ani = ['zoom-out', 'fade']
+				// #endif
+				this.transClass = {
+					position: 'fixed',
+					/* #ifndef APP-NVUE */
+					display: 'flex',
+					flexDirection: 'column',
+					/* #endif */
+					bottom: 0,
+					left: 0,
+					right: 0,
+					top: 0,
+					justifyContent: 'center',
+					alignItems: 'center',
+					borderRadius:this.borderRadius || "0"
+				}
+				// TODO 兼容 type 属性 ,后续会废弃
+				if (type) return
+				this.showPoptrans()
+			},
+			left(type) {
+				this.popupstyle = 'left'
+				this.ani = ['slide-left']
+				this.transClass = {
+					position: 'fixed',
+					left: 0,
+					bottom: 0,
+					top: 0,
+					backgroundColor: this.bg,
+					borderRadius:this.borderRadius || "0",
+					/* #ifndef APP-NVUE */
+					display: 'flex',
+					flexDirection: 'column'
+					/* #endif */
+				}
+				// TODO 兼容 type 属性 ,后续会废弃
+				if (type) return
+				this.showPoptrans()
+			},
+			right(type) {
+				this.popupstyle = 'right'
+				this.ani = ['slide-right']
+				this.transClass = {
+					position: 'fixed',
+					bottom: 0,
+					right: 0,
+					top: 0,
+					backgroundColor: this.bg,
+					borderRadius:this.borderRadius || "0",
+					/* #ifndef APP-NVUE */
+					display: 'flex',
+					flexDirection: 'column'
+					/* #endif */
+				}
+				// TODO 兼容 type 属性 ,后续会废弃
+				if (type) return
+				this.showPoptrans()
+			},
+			showPoptrans(){
+				this.$nextTick(()=>{
+					this.showPopup = true
+					this.showTrans = true
+				})
+			}
+		}
+	}
+</script>
+<style lang="scss">
+	.uni-popup {
+		position: fixed;
+		/* #ifndef APP-NVUE */
+		z-index: 99;
+
+		/* #endif */
+		&.top,
+		&.left,
+		&.right {
+			/* #ifdef H5 */
+			top: var(--window-top);
+			/* #endif */
+			/* #ifndef H5 */
+			top: 0;
+			/* #endif */
+		}
+
+		.uni-popup__wrapper {
+			/* #ifndef APP-NVUE */
+			display: block;
+			/* #endif */
+			position: relative;
+
+			/* iphonex 等安全区设置,底部安全区适配 */
+			/* #ifndef APP-NVUE */
+			// padding-bottom: constant(safe-area-inset-bottom);
+			// padding-bottom: env(safe-area-inset-bottom);
+			/* #endif */
+			&.left,
+			&.right {
+				/* #ifdef H5 */
+				padding-top: var(--window-top);
+				/* #endif */
+				/* #ifndef H5 */
+				padding-top: 0;
+				/* #endif */
+				flex: 1;
+			}
+		}
+	}
+
+	.fixforpc-z-index {
+		/* #ifndef APP-NVUE */
+		z-index: 999;
+		/* #endif */
+	}
+
+	.fixforpc-top {
+		top: 0;
+	}
+</style>

+ 88 - 0
uni_modules/uni-popup/package.json

@@ -0,0 +1,88 @@
+{
+	"id": "uni-popup",
+	"displayName": "uni-popup 弹出层",
+	"version": "1.9.5",
+	"description": " Popup 组件,提供常用的弹层",
+	"keywords": [
+        "uni-ui",
+        "弹出层",
+        "弹窗",
+        "popup",
+        "弹框"
+    ],
+	"repository": "https://github.com/dcloudio/uni-ui",
+	"engines": {
+		"HBuilderX": ""
+	},
+	"directories": {
+		"example": "../../temps/example_temps"
+	},
+    "dcloudext": {
+        "sale": {
+			"regular": {
+				"price": "0.00"
+			},
+			"sourcecode": {
+				"price": "0.00"
+			}
+		},
+		"contact": {
+			"qq": ""
+		},
+		"declaration": {
+			"ads": "无",
+			"data": "无",
+			"permissions": "无"
+		},
+        "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
+        "type": "component-vue"
+	},
+	"uni_modules": {
+		"dependencies": [
+			"uni-scss",
+			"uni-transition"
+		],
+		"encrypt": [],
+		"platforms": {
+			"cloud": {
+				"tcb": "y",
+                "aliyun": "y",
+                "alipay": "n"
+			},
+			"client": {
+				"App": {
+					"app-vue": "y",
+					"app-nvue": "y"
+				},
+				"H5-mobile": {
+					"Safari": "y",
+					"Android Browser": "y",
+					"微信浏览器(Android)": "y",
+					"QQ浏览器(Android)": "y"
+				},
+				"H5-pc": {
+					"Chrome": "y",
+					"IE": "y",
+					"Edge": "y",
+					"Firefox": "y",
+					"Safari": "y"
+				},
+				"小程序": {
+					"微信": "y",
+					"阿里": "y",
+					"百度": "y",
+					"字节跳动": "y",
+					"QQ": "y"
+				},
+				"快应用": {
+					"华为": "u",
+					"联盟": "u"
+                },
+                "Vue": {
+                    "vue2": "y",
+                    "vue3": "y"
+                }
+			}
+		}
+	}
+}

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov