Browse Source

6/4提交

@dongkboy 4 days ago
parent
commit
078ff37d56
28 changed files with 1123 additions and 2539 deletions
  1. 182 185
      manifest.json
  2. 1 0
      pages.json
  3. 40 2
      pages/components/date-picker.vue
  4. 32 49
      pages/index/applypartner.vue
  5. 153 38
      pages/index/index.vue
  6. 117 7
      pages/institutional/invitationCode.vue
  7. 33 87
      pages/institutional/myEarnings.vue
  8. 34 4
      pages/my/avatarCropper.vue
  9. 80 37
      pages/my/benefits.vue
  10. 40 55
      pages/my/commissionDetail.vue
  11. 30 30
      pages/my/my.vue
  12. 166 249
      pages/statistics/statistics.vue
  13. 215 200
      pages/statistics/statisticsDetail.vue
  14. 0 92
      uni_modules/uni-popup/changelog.md
  15. 0 45
      uni_modules/uni-popup/components/uni-popup-dialog/keypress.js
  16. 0 316
      uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue
  17. 0 143
      uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue
  18. 0 187
      uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue
  19. 0 7
      uni_modules/uni-popup/components/uni-popup/i18n/en.json
  20. 0 8
      uni_modules/uni-popup/components/uni-popup/i18n/index.js
  21. 0 7
      uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json
  22. 0 7
      uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json
  23. 0 45
      uni_modules/uni-popup/components/uni-popup/keypress.js
  24. 0 26
      uni_modules/uni-popup/components/uni-popup/popup.js
  25. 0 90
      uni_modules/uni-popup/components/uni-popup/uni-popup.uvue
  26. 0 518
      uni_modules/uni-popup/components/uni-popup/uni-popup.vue
  27. 0 88
      uni_modules/uni-popup/package.json
  28. 0 17
      uni_modules/uni-popup/readme.md

+ 182 - 185
manifest.json

@@ -1,187 +1,184 @@
 {
 {
-    "name" : "晋掌柜合伙人",
-    "appid" : "__UNI__3FA05C4",
-    "description" : "保险类app",
-    "transformPx" : false,
-    "icons" : [
-        {
-            "sizes" : "分辨率,192x192",
-            "src" : "图片路径"
-        }
-    ],
-    "versionName" : "1.2.4",
-    "versionCode" : 124,
-    "app-plus" : {
-        "error" : {
-            "url" : "hybrid/html/error.html"
-        },
-        "compatible" : {
-            "ignoreVersion" : true
-        },
-        "privacy" : {
-            "prompt" : "template",
-            "template" : {
-                "title" : "平台协议和隐私协议",
-                "message" : "欢迎使用晋掌柜app,我们非常重视您的个人信息和隐私保护。我们将通过《隐私权保护政策》帮助您了解我们收集、使用、存储、共享和保护个人信息的情况,以及您所享有的相关权利。<br/> 为了更好的向您提供注册认证、线上投保、以及周边服务等相关服务功能,我们会收集、使用必要的信息。包括但不限于:<br/>1、为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。2、在使用道路救援功能时,基于您的授权我们可能会获取您的位置信息,以便为您提供服务。您有权拒绝或取消授权。在使用线上投保以及注册等功能时, 基于您的授权我们会获取您的相册存储的权限, 以便在使用时能够正确的上传个人资料。获取通知权限, 用于向您发送重要通知, 如服务更新或安全提醒。<br/>   请仔细阅读<a href='https://sxzgkj.baoxianzhanggui.com/h5/#/pages/login/xieyi'>《平台协议》</a>和<a href='https://sxzgkj.baoxianzhanggui.com/h5/#/pages/login/mimi'>《隐私协议》</a>了解详细信息。我们将按照您同意的条款使用您的个人信息,以便为您提供服务。",
-                "buttonAccept" : "同意",
-                "buttonRefuse" : "暂不同意"
-            }
-        },
-        "modules" : {
-            "Messaging" : {},
-            "OAuth" : {},
-            "Share" : {},
-            "SQLite" : {}
-        },
-        "distribute" : {
-            "android" : {
-                "permissionPhoneState" : {
-                    "request" : "none",
-                    "prompt" : "为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。"
-                },
-                "permissionExternalStorage" : {
-                    "request" : "none",
-                    "prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
-                },
-                "permissions" : [
-                    "<uses-feature android:name=\"android.hardware.camera\"/>",
-                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
-                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
-                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
-                    "<uses-permission android:name=\"android.permission.INSTALL_PACKAGES\"/>",
-                    "<uses-permission android:name=\"android.permission.INTERNET\"/>",
-                    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
-                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_SMS\"/>",
-                    "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
-                    "<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>",
-                    "<uses-permission android:name=\"android.permission.SEND_SMS\"/>",
-                    "<uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>",
-                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
-                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
-                    "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
-                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
-                    "<uses-permission android:name=\"android.permission.WRITE_SMS\"/>"
-                ],
-                "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ],
-                "minSdkVersion" : 21,
-                "schemes" : "hhrapp",
-                "targetSdkVersion" : 30
-            },
-            "sdkConfigs" : {
-                "ad" : {},
-                "oauth" : {
-                    "weixin" : {
-                        "appid" : "wx8e8efe710bd99de2",
-                        "appsecret" : "69d6024eb2f2a96a71f1f859a21cc9bf",
-                        "UniversalLinks" : ""
-                    }
-                },
-                "share" : {
-                    "weixin" : {
-                        "appid" : "wx8e8efe710bd99de2",
-                        "UniversalLinks" : ""
-                    }
-                },
-                "push" : {}
-            },
-            "icons" : {
-                "android" : {
-                    "hdpi" : "unpackage/res/icons/72x72.png",
-                    "xhdpi" : "unpackage/res/icons/96x96.png",
-                    "xxhdpi" : "unpackage/res/icons/144x144.png",
-                    "xxxhdpi" : "unpackage/res/icons/192x192.png"
-                },
-                "ios" : {
-                    "appstore" : "unpackage/res/icons/1024x1024.png",
-                    "ipad" : {
-                        "app" : "unpackage/res/icons/76x76.png",
-                        "app@2x" : "unpackage/res/icons/152x152.png",
-                        "notification" : "unpackage/res/icons/20x20.png",
-                        "notification@2x" : "unpackage/res/icons/40x40.png",
-                        "proapp@2x" : "unpackage/res/icons/167x167.png",
-                        "settings" : "unpackage/res/icons/29x29.png",
-                        "settings@2x" : "unpackage/res/icons/58x58.png",
-                        "spotlight" : "unpackage/res/icons/40x40.png",
-                        "spotlight@2x" : "unpackage/res/icons/80x80.png"
-                    },
-                    "iphone" : {
-                        "app@2x" : "unpackage/res/icons/120x120.png",
-                        "app@3x" : "unpackage/res/icons/180x180.png",
-                        "notification@2x" : "unpackage/res/icons/40x40.png",
-                        "notification@3x" : "unpackage/res/icons/60x60.png",
-                        "settings@2x" : "unpackage/res/icons/58x58.png",
-                        "settings@3x" : "unpackage/res/icons/87x87.png",
-                        "spotlight@2x" : "unpackage/res/icons/80x80.png",
-                        "spotlight@3x" : "unpackage/res/icons/120x120.png"
-                    }
-                }
-            },
-            "splashscreen" : {
-                "androidStyle" : "common",
-                "useOriginalMsgbox" : true
-            },
-            "ios" : {
-                "dSYMs" : false,
-                "urltypes" : "zgcxapp"
-            }
-        },
-        "compilerVersion" : 3,
-        "nvueLaunchMode" : "fast",
-        "splashscreen" : {
-            "alwaysShowBeforeRender" : true
-        },
-        "nativePlugins" : {}
-    },
-    // 5+App特有相关
-    "quickapp" : {},
-    // 快应用特有相关
-    "mp-weixin" : {
-        "setting" : {
-            "urlCheck" : false,
-            "es6" : false,
-            "postcss" : false,
-            "minified" : false
-        },
-        "usingComponents" : true,
-        "appid" : "wx8e8efe710bd99de2",
-        "permission" : {}
-    },
-    "h5" : {
-        "template" : "template.h5.html",
-        "router" : {
-            "mode" : "hash",
-            "base" : "./"
-        },
-        "optimization" : {
-            "treeShaking" : {
-                "enable" : true
-            }
-        },
-        "devServer" : {
-            "https" : false,
-            "port" : 80
-        },
-        "sdkConfigs" : {
-            "maps" : {}
-        },
-        "uniStatistics" : {
-            "enable" : false
-        }
-    },
-    "mp-jd" : {
-        "unipush" : {
-            "enable" : false
-        }
-    }
+	"name": "晋掌柜合伙人",
+	"appid": "__UNI__2041321",
+	"description": "保险类app",
+	"transformPx": false,
+	"icons": [{
+		"sizes": "分辨率,192x192",
+		"src": "图片路径"
+	}],
+	"versionName": "1.2.4",
+	"versionCode": 124,
+	"app-plus": {
+		"error": {
+			"url": "hybrid/html/error.html"
+		},
+		"compatible": {
+			"ignoreVersion": true
+		},
+		"privacy": {
+			"prompt": "template",
+			"template": {
+				"title": "平台协议和隐私协议",
+				"message": "欢迎使用晋掌柜app,我们非常重视您的个人信息和隐私保护。我们将通过《隐私权保护政策》帮助您了解我们收集、使用、存储、共享和保护个人信息的情况,以及您所享有的相关权利。<br/> 为了更好的向您提供注册认证、线上投保、以及周边服务等相关服务功能,我们会收集、使用必要的信息。包括但不限于:<br/>1、为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。2、在使用道路救援功能时,基于您的授权我们可能会获取您的位置信息,以便为您提供服务。您有权拒绝或取消授权。在使用线上投保以及注册等功能时, 基于您的授权我们会获取您的相册存储的权限, 以便在使用时能够正确的上传个人资料。获取通知权限, 用于向您发送重要通知, 如服务更新或安全提醒。<br/>   请仔细阅读<a href='https://sxzgkj.baoxianzhanggui.com/h5/#/pages/login/xieyi'>《平台协议》</a>和<a href='https://sxzgkj.baoxianzhanggui.com/h5/#/pages/login/mimi'>《隐私协议》</a>了解详细信息。我们将按照您同意的条款使用您的个人信息,以便为您提供服务。",
+				"buttonAccept": "同意",
+				"buttonRefuse": "暂不同意"
+			}
+		},
+		"modules": {
+			"Messaging": {},
+			"OAuth": {},
+			"Share": {},
+			"SQLite": {}
+		},
+		"distribute": {
+			"android": {
+				"permissionPhoneState": {
+					"request": "none",
+					"prompt": "为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。"
+				},
+				"permissionExternalStorage": {
+					"request": "none",
+					"prompt": "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
+				},
+				"permissions": [
+					"<uses-feature android:name=\"android.hardware.camera\"/>",
+					"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
+					"<uses-permission android:name=\"android.permission.CAMERA\"/>",
+					"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+					"<uses-permission android:name=\"android.permission.INSTALL_PACKAGES\"/>",
+					"<uses-permission android:name=\"android.permission.INTERNET\"/>",
+					"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
+					"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+					"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+					"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.READ_SMS\"/>",
+					"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
+					"<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>",
+					"<uses-permission android:name=\"android.permission.SEND_SMS\"/>",
+					"<uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>",
+					"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+					"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+					"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
+					"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
+					"<uses-permission android:name=\"android.permission.WRITE_SMS\"/>"
+				],
+				"abiFilters": ["armeabi-v7a", "arm64-v8a", "x86"],
+				"minSdkVersion": 21,
+				"schemes": "hhrapp",
+				"targetSdkVersion": 30
+			},
+			"sdkConfigs": {
+				"ad": {},
+				"oauth": {
+					"weixin": {
+						"appid": "wx8e8efe710bd99de2",
+						"appsecret": "69d6024eb2f2a96a71f1f859a21cc9bf",
+						"UniversalLinks": ""
+					}
+				},
+				"share": {
+					"weixin": {
+						"appid": "wx8e8efe710bd99de2",
+						"UniversalLinks": ""
+					}
+				},
+				"push": {}
+			},
+			"icons": {
+				"android": {
+					"hdpi": "unpackage/res/icons/72x72.png",
+					"xhdpi": "unpackage/res/icons/96x96.png",
+					"xxhdpi": "unpackage/res/icons/144x144.png",
+					"xxxhdpi": "unpackage/res/icons/192x192.png"
+				},
+				"ios": {
+					"appstore": "unpackage/res/icons/1024x1024.png",
+					"ipad": {
+						"app": "unpackage/res/icons/76x76.png",
+						"app@2x": "unpackage/res/icons/152x152.png",
+						"notification": "unpackage/res/icons/20x20.png",
+						"notification@2x": "unpackage/res/icons/40x40.png",
+						"proapp@2x": "unpackage/res/icons/167x167.png",
+						"settings": "unpackage/res/icons/29x29.png",
+						"settings@2x": "unpackage/res/icons/58x58.png",
+						"spotlight": "unpackage/res/icons/40x40.png",
+						"spotlight@2x": "unpackage/res/icons/80x80.png"
+					},
+					"iphone": {
+						"app@2x": "unpackage/res/icons/120x120.png",
+						"app@3x": "unpackage/res/icons/180x180.png",
+						"notification@2x": "unpackage/res/icons/40x40.png",
+						"notification@3x": "unpackage/res/icons/60x60.png",
+						"settings@2x": "unpackage/res/icons/58x58.png",
+						"settings@3x": "unpackage/res/icons/87x87.png",
+						"spotlight@2x": "unpackage/res/icons/80x80.png",
+						"spotlight@3x": "unpackage/res/icons/120x120.png"
+					}
+				}
+			},
+			"splashscreen": {
+				"androidStyle": "common",
+				"useOriginalMsgbox": true
+			},
+			"ios": {
+				"dSYMs": false,
+				"urltypes": "zgcxapp"
+			}
+		},
+		"compilerVersion": 3,
+		"nvueLaunchMode": "fast",
+		"splashscreen": {
+			"alwaysShowBeforeRender": true
+		},
+		"nativePlugins": {}
+	},
+	// 5+App特有相关
+	"quickapp": {},
+	// 快应用特有相关
+	"mp-weixin": {
+		"setting": {
+			"urlCheck": false,
+			"es6": false,
+			"postcss": false,
+			"minified": false
+		},
+		"usingComponents": true,
+		"appid": "wx8e8efe710bd99de2",
+		"permission": {}
+	},
+	"h5": {
+		"template": "template.h5.html",
+		"router": {
+			"mode": "hash",
+			"base": "./"
+		},
+		"optimization": {
+			"treeShaking": {
+				"enable": true
+			}
+		},
+		"devServer": {
+			"https": false,
+			"port": 80
+		},
+		"sdkConfigs": {
+			"maps": {}
+		},
+		"uniStatistics": {
+			"enable": false
+		}
+	},
+	"mp-jd": {
+		"unipush": {
+			"enable": false
+		}
+	}
 }
 }
-// 小程序特有相关
-
+// 小程序特有相关

+ 1 - 0
pages.json

@@ -1141,6 +1141,7 @@
 				"selectedIconPath": "static/icon/tab/home1.png",
 				"selectedIconPath": "static/icon/tab/home1.png",
 				"text": "首页"
 				"text": "首页"
 			},
 			},
+			//统计
 			{
 			{
 				"pagePath": "pages/statistics/statistics",
 				"pagePath": "pages/statistics/statistics",
 				"iconPath": "static/icon/tab/tongji2.png",
 				"iconPath": "static/icon/tab/tongji2.png",

+ 40 - 2
pages/components/date-picker.vue

@@ -10,7 +10,7 @@
 					<text class="title">快捷选择</text>
 					<text class="title">快捷选择</text>
 					<view class=" dis a-c j-start">
 					<view class=" dis a-c j-start">
 						<view class="tab" :class="{tabactive:OptionsTabIndex==index}"
 						<view class="tab" :class="{tabactive:OptionsTabIndex==index}"
-							v-for="(item,index) in quickOptions" :key="index" @click="OptionsTabSelect(index)">
+							v-for="(item,index) in quickOptions" :key="index" @click="OptionsTabSelect(item,index)">
 							<text>{{item}}</text>
 							<text>{{item}}</text>
 						</view>
 						</view>
 					</view>
 					</view>
@@ -99,9 +99,47 @@
 		},
 		},
 		methods: {
 		methods: {
 			//快捷选择
 			//快捷选择
-			OptionsTabSelect(index) {
+			OptionsTabSelect(item, index) {
+				switch (item) {
+					case "今日":
+						let dotayDate = new Date().toISOString().split('T')[0] //今日日期
+						this.interviewStartTime = dotayDate;
+						this.interviewEndTime = dotayDate;
+						break;
+					case "本月":
+						const currentMonthRange = this.getCurrentMonthRange();
+						this.interviewStartTime = currentMonthRange.start;
+						this.interviewEndTime = currentMonthRange.end;
+						break;
+					case "本年":
+						const currentYear = new Date().getFullYear();
+						this.interviewStartTime = `${currentYear}-01-01`;
+						this.interviewEndTime = `${currentYear}-12-31`;
+						break;
+					default:
+						break;
+				}
 				this.OptionsTabIndex = index;
 				this.OptionsTabIndex = index;
 			},
 			},
+			//获取本月
+			getCurrentMonthRange() {
+				const today = new Date();
+				const firstDay = new Date(today.getFullYear(), today.getMonth(), 1); // 本月第一天
+				const lastDay = new Date(today.getFullYear(), today.getMonth() + 1, 0); // 本月最后一天
+
+				// 格式化为 YYYY-MM-DD
+				const formatDate = (date) => {
+					const year = date.getFullYear();
+					const month = String(date.getMonth() + 1).padStart(2, '0');
+					const day = String(date.getDate()).padStart(2, '0');
+					return `${year}-${month}-${day}`;
+				};
+
+				return {
+					start: formatDate(firstDay),
+					end: formatDate(lastDay)
+				};
+			},
 			open() {
 			open() {
 				this.$refs.popup.open()
 				this.$refs.popup.open()
 			},
 			},

+ 32 - 49
pages/index/applypartner.vue

@@ -113,67 +113,50 @@
 						}]
 						}]
 					},
 					},
 				},
 				},
-				grade: '',
+				grade: '', //人员等级
 				id: '',
 				id: '',
+				deptSource: null, //业务来源
 			}
 			}
 		},
 		},
 		computed: {
 		computed: {
 			...mapState(['userInfo', "userCheckInfo"]),
 			...mapState(['userInfo', "userCheckInfo"]),
 		},
 		},
 		async onLoad(options) {
 		async onLoad(options) {
-			this.grade = options.grade ? options.grade : ''
+			this.grade = options.grade ? options.grade : '';
+			this.id = options.userId ? options.userId : '';
+			this.deptSource = options.deptSource ? options.deptSource : '';
 		},
 		},
 		methods: {
 		methods: {
 			//提交注册
 			//提交注册
 			submit() {
 			submit() {
 				this.$refs.personData.submit().then(res => {
 				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) {
-								let obj = JSON.stringify({
-									id: this.id,
-									mobile: this.personData.mobile
-								});
-								uni.redirectTo({
-									url: "/pages/index/success?data=" + obj
-								})
-							} else {
-								uni.showModal({
-									showCancel: false,
-									title: res.msg
-								})
-							}
-						})
-					} else {
-						this.$http.post('/user/newSaveUserInfoByPartner', {
-							sysUser: {
-								...this.personData,
-								roleId: "97",
-								referrerId: this.userInfo.sysUser.userId,
-								grade: this.grade,
-							},
-							esmUserImageVo: this.personData.esmUserImageVo
-						}).then(res => {
-							if (res.code == 200) {
-								let obj = JSON.stringify({
-									id: res.data.id,
-									mobile: res.data.mobile
-								});
-								uni.redirectTo({
-									url: "/pages/index/success?data=" + obj
-								})
-							} else {
-								uni.showModal({
-									showCancel: false,
-									title: res.msg
-								})
-							}
-						})
-					}
+					this.$http.post('/user/newSaveUserInfoByPartner', {
+						sysUser: {
+							...this.personData,
+							roleId: this.grade == 4 ? "21" : "97",
+							referrerId: this.id,
+							grade: this.grade,
+							...(this.deptSource != null && {
+								deptSource: this.deptSource
+							}),
+						},
+						esmUserImageVo: this.personData.esmUserImageVo
+					}).then(res => {
+						if (res.code == 200) {
+							let obj = JSON.stringify({
+								id: res.data.id,
+								mobile: res.data.mobile
+							});
+							uni.redirectTo({
+								url: "/pages/index/success?data=" + obj
+							})
+						} else {
+							uni.showModal({
+								showCancel: false,
+								title: res.msg
+							})
+						}
+					})
 				}).catch(err => {
 				}).catch(err => {
 					console.log('err', err);
 					console.log('err', err);
 				})
 				})

+ 153 - 38
pages/index/index.vue

@@ -19,19 +19,19 @@
 				<image src="/static/home/icon2.png" class="image2" mode=""></image>
 				<image src="/static/home/icon2.png" class="image2" mode=""></image>
 				<view class="data dis f-wrap j-s">
 				<view class="data dis f-wrap j-s">
 					<view class="dis f-c a-start view">
 					<view class="dis f-c a-start view">
-						<text>{{numberFormat(todayOverview.addPerNumber || 0) }}</text>
+						<text>{{numberFormat(todayOverview.numberOrders || 0) }}</text>
 						<text>订单(笔)</text>
 						<text>订单(笔)</text>
 					</view>
 					</view>
 					<view class="dis f-c a-start view">
 					<view class="dis f-c a-start view">
-						<text>{{numberFormat(todayOverview.commission || 0) }}</text>
+						<text>{{numberFormat(todayOverview.addPerNumber || 0) }}</text>
 						<text>新增人员</text>
 						<text>新增人员</text>
 					</view>
 					</view>
 					<view class="dis f-c a-start view">
 					<view class="dis f-c a-start view">
-						<text>{{numberFormat(todayOverview.numberOrders || 0)}}</text>
+						<text>{{numberFormat(todayOverview.premium || 0)}}</text>
 						<text>保费(元)</text>
 						<text>保费(元)</text>
 					</view>
 					</view>
 					<view class="dis f-c a-start view">
 					<view class="dis f-c a-start view">
-						<text>{{numberFormat(todayOverview.premium || 0 ) }}</text>
+						<text>{{numberFormat(todayOverview.commission || 0 ) }}</text>
 						<text>佣金(元)</text>
 						<text>佣金(元)</text>
 					</view>
 					</view>
 				</view>
 				</view>
@@ -175,9 +175,38 @@
 				</view>
 				</view>
 			</view>
 			</view>
 		</view>
 		</view>
-		<u-popup v-model="personTypeshow" mode="bottom" border-radius="14">
-			<view>出淤泥而不染,濯清涟而不妖</view>
+		<u-popup v-model="ShowModalCodebusiness" mode="bottom" border-radius="15" :closeable="true">
+			<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>
+		<u-modal v-model="promptshow" :show-cancel-button="true" :confirm-text="`确认为${deptSource==1?'渠道':'个代'}模式`"
+			cancel-text="重新选择" :cancel-style="{fontSize:'28rpx',color:'#007AFF'}" :confirm-style="{fontSize:'28rpx'}"
+			@confirm="promptshowconfirm">
+			<view class="p-2">
+				<text v-if="deptSource==1">您选择的 <text style="color: #007AFF;margin: 0 10rpx;">个代</text> 模式,业务员出单后,业务员的
+					<text> <strong>佣金都会归到自己账户内</strong> </text>。</text>
+				<text v-else>您选择的 <text style="color: #007AFF;">渠道</text> 模式,业务员出单后,业务员的
+					<text> <strong>佣金都会归到团队长账户内由团队长进行分配</strong></text>。</text>
+			</view>
+
+		</u-modal>
 	</view>
 	</view>
 </template>
 </template>
 <script>
 <script>
@@ -199,6 +228,7 @@
 		},
 		},
 		data() {
 		data() {
 			return {
 			return {
+				promptshow: false, //提示
 				personTypeshow: false, //业务类型弹窗
 				personTypeshow: false, //业务类型弹窗
 				teamOverviewInfo: {}, //页面展示数据
 				teamOverviewInfo: {}, //页面展示数据
 				todayOverview: {}, //今日数据
 				todayOverview: {}, //今日数据
@@ -243,8 +273,8 @@
 						text: '个代'
 						text: '个代'
 					}
 					}
 				],
 				],
-				deptSource: 1
-				// type:JSON.parse(localStorage.getItem('type')).data
+				deptSource: 1,
+				grade: 0,
 			}
 			}
 		},
 		},
 		async onShow(e) {
 		async onShow(e) {
@@ -262,10 +292,28 @@
 		},
 		},
 
 
 		methods: {
 		methods: {
+			//业务来源确定事件
+			promptshowconfirm() {
+				this.promptshow = false;
+				this.ShowModalCodebusiness = false;
+				uni.navigateTo({
+					url: "/pages/institutional/invitationCode?grade=" + this.grade + "&deptSource=" + this
+						.deptSource + '&userId=' + this.userInfo.sysUser.userId,
+				})
+				// uni.navigateTo({
+				// 	url: "/pages/index/applypartner?grade=" + this.grade + "&deptSource=" + this
+				// 		.deptSource + '&userId=' + this.userInfo.sysUser.userId,
+				// })
+			},
+			//业务类型
+			styleChange(e) {
+				this.deptSource = e.detail.value
+			},
 			//数据格式化
 			//数据格式化
 			numberFormat(value) {
 			numberFormat(value) {
 				return (value).toLocaleString('en-US');
 				return (value).toLocaleString('en-US');
 			},
 			},
+			//标签切换
 			change(index) {
 			change(index) {
 				const info = this.teamOverview[index];
 				const info = this.teamOverview[index];
 				this.teamOverviewInfo = info;
 				this.teamOverviewInfo = info;
@@ -288,34 +336,9 @@
 					this.teamOverviewInfo = res.data.teamOverview[0]; //页面赋值第一条数据
 					this.teamOverviewInfo = res.data.teamOverview[0]; //页面赋值第一条数据
 				}
 				}
 			},
 			},
-			searchPopup() {
-				this.$refs.datePicker.open()
-			},
-			confirmPickDate(dateStr, dateStr1, val) {
-				if (dateStr) {
-					dateStr += ' 00:00:01'
-				}
-				if (dateStr1) {
-					dateStr1 += ' 23:59:59'
-				}
-				this.showData = val
-				this.getList(dateStr, dateStr1)
-			},
-
-			recruitmentCode() {
-				this.ShowModalCode = true
-				this.teamImg = QR.createQrCodeImg(this.$base.h5BaseUrl + "/#/pages/index/applyteam?userId=" +
-					this.userInfo
-					.sysUser.userId, {
-						size: parseInt(200) //二维码大小  
-					})
-			},
+			//业务来源确定
 			ShowModalCodeSumbit() {
 			ShowModalCodeSumbit() {
-				this.workImg = QR.createQrCodeImg(this.$base.h5BaseUrl +
-					"/#/pages/index/applystudio?deptSource=" + this
-					.deptSource + '&userId=' + this.userInfo.sysUser.userId, {
-						size: parseInt(200) //二维码大小  
-					})
+				this.promptshow = true;
 			},
 			},
 			//人员列表
 			//人员列表
 			closePartner() {
 			closePartner() {
@@ -339,8 +362,9 @@
 			},
 			},
 			//邀请码
 			//邀请码
 			invitationCode(value) {
 			invitationCode(value) {
-				if (value == 4) {
-					this.personTypeshow = true;
+				this.grade = value;
+				if (value == 4) { //区分合伙人和工作室  4==工作室
+					this.ShowModalCodebusiness = true;
 				} else {
 				} else {
 					uni.navigateTo({
 					uni.navigateTo({
 						url: "/pages/institutional/invitationCode?grade=" + value,
 						url: "/pages/institutional/invitationCode?grade=" + value,
@@ -354,6 +378,10 @@
 	}
 	}
 </script>
 </script>
 <style lang="scss" scoped>
 <style lang="scss" scoped>
+	* {
+		// outline: 1px solid red !important;
+	}
+
 	page {
 	page {
 		background-color: #F7F7F7;
 		background-color: #F7F7F7;
 	}
 	}
@@ -364,7 +392,7 @@
 		left: 0;
 		left: 0;
 		height: auto;
 		height: auto;
 		width: 100%;
 		width: 100%;
-		z-index: 999999;
+		z-index: 99;
 		padding: 30rpx;
 		padding: 30rpx;
 		padding-top: 50px;
 		padding-top: 50px;
 
 
@@ -525,4 +553,91 @@
 			border-radius: 6rpx;
 			border-radius: 6rpx;
 		}
 		}
 	}
 	}
+
+	.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>
 </style>

+ 117 - 7
pages/institutional/invitationCode.vue

@@ -22,11 +22,11 @@
 						<image :src="recommendImg" mode="widthFix" lazy-load></image>
 						<image :src="recommendImg" mode="widthFix" lazy-load></image>
 					</view>
 					</view>
 					<view class="operation mt-4 dis a-c ">
 					<view class="operation mt-4 dis a-c ">
-						<view class="dis f-c a-c" style="margin-right: 136rpx;" @click="">
+						<view class="dis f-c a-c" style="margin-right: 136rpx;" @click="saveImage">
 							<image src="/static/share.png" mode=""></image>
 							<image src="/static/share.png" mode=""></image>
 							<text class="mt-1">保存图片</text>
 							<text class="mt-1">保存图片</text>
 						</view>
 						</view>
-						<view class="dis f-c a-c">
+						<view class="dis f-c a-c" @click="shareLink(recommendUrl)">
 							<image src="/static/save.png" mode=""></image>
 							<image src="/static/save.png" mode=""></image>
 							<text class="mt-1">链接分享</text>
 							<text class="mt-1">链接分享</text>
 						</view>
 						</view>
@@ -64,8 +64,11 @@
 		data() {
 		data() {
 			return {
 			return {
 				recommendImg: "", //邀请码
 				recommendImg: "", //邀请码
+				recommendUrl: "", //链接
+				posterUrl: "", //二维码截图
 				grade: "", //等级
 				grade: "", //等级
 				supportUpgrade: false, //是否支持升级
 				supportUpgrade: false, //是否支持升级
+				deptSource: "",
 			}
 			}
 		},
 		},
 		onShow() {
 		onShow() {
@@ -86,11 +89,45 @@
 		onLoad(options) {
 		onLoad(options) {
 			if (options) {
 			if (options) {
 				this.grade = options.grade;
 				this.grade = options.grade;
+				if (options.deptSource) this.deptSource = options.deptSource;
 			}
 			}
 			this.recommendCode();
 			this.recommendCode();
 			this.entryPoint();
 			this.entryPoint();
 		},
 		},
 		methods: {
 		methods: {
+			//保存图片
+			saveImage() {
+				base64ToPath(this.posterUrl)
+					.then(path => {
+						uni.saveImageToPhotosAlbum({ //保存图片到系统相册。
+							filePath: path, //图片文件路径
+							success: function() {
+								uni.showToast({
+									title: '已保存到相册',
+									icon: 'none',
+								});
+							},
+							fail: function(e) {
+								uni.showToast({
+									title: '图片保存失败',
+									icon: 'none',
+								});
+							}
+						});
+					})
+			},
+			//复制邀请链接
+			shareLink(value) {
+				uni.setClipboardData({
+					data: value, //要被复制的内容
+					success: () => { //复制成功的回调函数
+						uni.showToast({ //提示
+							icon: 'none',
+							title: '邀请链接已复制成功'
+						})
+					}
+				});
+			},
 			//获取升级标识
 			//获取升级标识
 			async entryPoint() {
 			async entryPoint() {
 				let res = await this.$http.post('/partner/verifyUpgradeConditions', {
 				let res = await this.$http.post('/partner/verifyUpgradeConditions', {
@@ -116,11 +153,27 @@
 			},
 			},
 			//邀请二维码生成
 			//邀请二维码生成
 			recommendCode() {
 			recommendCode() {
-				this.recommendImg = QR.createQrCodeImg(this.$base.h5BaseUrl + "/#/pages/index/applypartner?grade=" +
-					this
-					.grade + '&userId=' + this.userInfo.sysUser.userId, {
-						size: parseInt(300) //二维码大小  
-					})
+				if (this.grade == 4) {
+					this.recommendImg = QR.createQrCodeImg(this.$base.h5BaseUrl + "/#/pages/index/applypartner?grade=" +
+						this
+						.grade + '&userId=' + this.userInfo.sysUser.userId + '&deptSource=' + this.deptSource, {
+							size: parseInt(300) //二维码大小  
+						})
+					this.recommendUrl = this.$base.h5BaseUrl + "/#/pages/index/applypartner?grade=" +
+						this
+						.grade + '&userId=' + this.userInfo.sysUser.userId + '&deptSource=' + this.deptSource;
+				} else {
+					this.recommendImg = QR.createQrCodeImg(this.$base.h5BaseUrl + "/#/pages/index/applypartner?grade=" +
+						this
+						.grade + '&userId=' + this.userInfo.sysUser.userId, {
+							size: parseInt(300) //二维码大小  
+						})
+					this.recommendUrl = this.$base.h5BaseUrl + "/#/pages/index/applypartner?grade=" +
+						this
+						.grade + '&userId=' + this.userInfo.sysUser.userId
+				}
+
+
 			},
 			},
 			back() {
 			back() {
 				uni.navigateBack({
 				uni.navigateBack({
@@ -129,10 +182,67 @@
 				});
 				});
 
 
 			},
 			},
+			//页面截图转路径
+			receiveRenderData(val) {
+				this.posterUrl = val.replace(/[\r\n]/g, ''); // 去除base64位中的空格
+				// 将base64转化为临时地址
+				// base64ToPath(imageStr).then(path => {
+				// 	this.payImg = path;
+				// }).catch(error => {
+				// 	console.log(error);
+				// });
+			},
+			showLoading() {
+				uni.showLoading({
+					title: '正在生成图片'
+				});
+			},
+			hideLoading() {
+				uni.hideLoading();
+				this.loading = false;
+			},
 		}
 		}
 	}
 	}
 </script>
 </script>
+<script module="canvasImage" lang="renderjs">
+	import html2canvas from 'html2canvas'
+	export default {
+		data() {
+			return {
 
 
+			}
+		},
+		mounted() {
+			setTimeout(() => {
+				this.canvasImage.generateImage()
+			}, 1000);
+		},
+		methods: {
+			generateImage() {
+				setTimeout(() => {
+					this.$ownerInstance.callMethod('showLoading')
+					const dom = document.getElementById('panelcanvas') // 需要生成图片内容的 dom 节点
+					html2canvas(dom, {
+						width: dom.clientWidth, //dom 原始宽度
+						height: dom.clientHeight,
+						scrollY: 0, // html2canvas默认绘制视图内的页面,需要把scrollY,scrollX设置为0
+						scrollX: 0,
+						useCORS: true, //支持跨域
+						// allowTaint: false,
+						scale: 2, // 设置生成图片的像素比例,默认是1,如果生成的图片模糊的话可以开启该配置项
+					}).then((canvas) => {
+						// 生成成功
+						this.$ownerInstance.callMethod('hideLoading')
+						this.$ownerInstance.callMethod('receiveRenderData', canvas.toDataURL('image/png'))
+					}).catch(err => {
+						// 生成失败 弹出提示弹窗
+						this.$ownerInstance.callMethod('_errAlert', `【生成图片失败,请重试】${err}`)
+					})
+				}, 300)
+			}
+		},
+	}
+</script>
 <style lang="scss" scoped>
 <style lang="scss" scoped>
 	.headers {
 	.headers {
 		position: fixed;
 		position: fixed;

+ 33 - 87
pages/institutional/myEarnings.vue

@@ -11,36 +11,37 @@
 		<view class="homeBackground"></view>
 		<view class="homeBackground"></view>
 		<!-- 业绩 -->
 		<!-- 业绩 -->
 		<view class="filterTime dis j-end a-c ">
 		<view class="filterTime dis j-end a-c ">
-			<view class=" dis a-c ">
+			<view class=" dis a-c " @click="timeDropdownFilter">
 				<text>时间筛选</text>
 				<text>时间筛选</text>
 				<text>▼</text>
 				<text>▼</text>
 			</view>
 			</view>
 		</view>
 		</view>
 		<view class="performance dis a-c j-c ">
 		<view class="performance dis a-c j-c ">
-			共有 5 笔订单,保费54252.25元,佣金569.35
+			共有 {{totalCount.numberOrders}}笔订单,保费{{totalCount.totalPremium}}元,佣金{{totalCount.commission}}
 		</view>
 		</view>
 		<view class="body p-2" style="padding-top: 340rpx;">
 		<view class="body p-2" style="padding-top: 340rpx;">
-			<view class="card mb-2" v-for="i in 10" :key="i" @click="partnerDetail">
+			<view class="card mb-2" v-for="(item,index) in incomeList" :key="index"
+				@click="earningsDetail(item.ordersNo)">
 				<view class="card-title dis a-c j-s mb-2">
 				<view class="card-title dis a-c j-s mb-2">
 					<view class="dis a-c ">
 					<view class="dis a-c ">
 						<view class="avatar">
 						<view class="avatar">
 							<image src="/static/image/my/wuxingb.png" mode=""></image>
 							<image src="/static/image/my/wuxingb.png" mode=""></image>
 						</view>
 						</view>
-						<text class="name ml-1">ZhangXiLin</text>
+						<text class="name ml-1">{{item.carId}}</text>
 					</view>
 					</view>
-					<text>2025.05.21 12:00:59 出单</text>
+					<text>{{item.issuanceTime}} 出单</text>
 				</view>
 				</view>
 				<view class="card-data dis a-c j-s ">
 				<view class="card-data dis a-c j-s ">
 					<view class="view dis f-c a-c ">
 					<view class="view dis f-c a-c ">
-						<text>wangxiaoyu</text>
+						<text>{{item.agent}}</text>
 						<text>代理人</text>
 						<text>代理人</text>
 					</view>
 					</view>
 					<view class="view dis f-c a-c ">
 					<view class="view dis f-c a-c ">
-						<text>22,552.87</text>
+						<text>{{item.premium}}</text>
 						<text>保费</text>
 						<text>保费</text>
 					</view>
 					</view>
 					<view class="view dis f-c a-c ">
 					<view class="view dis f-c a-c ">
-						<text>152.87</text>
+						<text>{{item.commission}}</text>
 						<text>我的佣金</text>
 						<text>我的佣金</text>
 					</view>
 					</view>
 				</view>
 				</view>
@@ -62,40 +63,11 @@
 			</view>
 			</view>
 		</u-popup>
 		</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">
 		<u-popup mode="center" ref="alertDialog" type="dialog">
 			<uni-popup-dialog type="warn" cancelText="取消" confirmText="确定" title=" " :content="dialogContent"
 			<uni-popup-dialog type="warn" cancelText="取消" confirmText="确定" title=" " :content="dialogContent"
 				@confirm="dialogConfirm" @close="dialogClose"></uni-popup-dialog>
 				@confirm="dialogConfirm" @close="dialogClose"></uni-popup-dialog>
 		</u-popup>
 		</u-popup>
+		<my-date-picker ref="datePicker" @confirmPickDate="confirmPickDate" />
 	</view>
 	</view>
 </template>
 </template>
 <script>
 <script>
@@ -107,9 +79,6 @@
 		mapState,
 		mapState,
 		mapMutations
 		mapMutations
 	} from "vuex"
 	} from "vuex"
-	// import uniPopup from 'x../../../components/';
-
-	// import card from '../components/card.vue'
 	export default {
 	export default {
 		components: {
 		components: {
 			myDatePicker,
 			myDatePicker,
@@ -120,6 +89,8 @@
 		},
 		},
 		data() {
 		data() {
 			return {
 			return {
+				totalCount: {}, //统计
+				incomeList: [], //列表
 				//tab选项
 				//tab选项
 				list: [{
 				list: [{
 						name: '我是创始人'
 						name: '我是创始人'
@@ -166,19 +137,10 @@
 				directLsitThree: {},
 				directLsitThree: {},
 				directLsitFour: {},
 				directLsitFour: {},
 				userLevel: "",
 				userLevel: "",
-				styles: [{
-						value: '1',
-						text: '渠道',
-						notestext: '团队长加出单员模式,无分销模式,结费都在团队长处。',
-						checked: true
-					},
-					{
-						value: '2',
-						notestext: '团队长加代理人模式,三级分销模式,结费方式为个人,有佣金。',
-						text: '个代'
-					}
-				],
-				deptSource: 1
+
+				deptSource: 1,
+				startTime: "", //时间筛选 开始
+				endTime: "", //时间筛选 结束
 			}
 			}
 		},
 		},
 		async onLoad(params) {
 		async onLoad(params) {
@@ -186,6 +148,16 @@
 			this.userLevel = this.userInfo.sysUser.level
 			this.userLevel = this.userInfo.sysUser.level
 		},
 		},
 		methods: {
 		methods: {
+			//下拉筛选
+			timeDropdownFilter() {
+				this.$refs.datePicker.open()
+			},
+			//日期选择事件
+			confirmPickDate(startdate, enddate) {
+				this.startTime = startdate;
+				this.endTime = enddate;
+				this.queryData();
+			},
 			change(index) {
 			change(index) {
 				this.current = index;
 				this.current = index;
 			},
 			},
@@ -242,9 +214,9 @@
 					url: "/pages/index/index"
 					url: "/pages/index/index"
 				})
 				})
 			},
 			},
-			partnerDetail() {
+			earningsDetail(ordersNo) {
 				uni.navigateTo({
 				uni.navigateTo({
-					url: "/pages/institutional/partnerDetail"
+					url: "/pages/my/commissionDetail?ordersNo=" + ordersNo,
 				})
 				})
 			},
 			},
 			closeInstitution(item, level) {
 			closeInstitution(item, level) {
@@ -275,38 +247,12 @@
 			// },
 			// },
 
 
 			async queryData(data) {
 			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);
+
+				let res = await this.$http.get('/newAppPartner/myPerformance?grade=' + this.userInfo.sysUser.grade +
+					'&startTime=' + this.startTime + '&endTime=' + this.endTime);
 				if (res.code == '200') {
 				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;
-						}
-					})
-					// 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';
+					this.totalCount = res.data.total; //个人收益统计
+					this.incomeList = res.data.data; //收益列表
 				}
 				}
 			},
 			},
 
 

+ 34 - 4
pages/my/avatarCropper.vue

@@ -27,6 +27,11 @@
 </template>
 </template>
 
 
 <script>
 <script>
+	import {
+		pathToBase64,
+		base64ToPath
+	} from '@/common/pdf.js'
+	import store from '@/store';
 	import WeCropper from './weCropper.js';
 	import WeCropper from './weCropper.js';
 	export default {
 	export default {
 		props: {
 		props: {
@@ -180,11 +185,36 @@
 								urls: [path] // 需要预览的图片 http 链接列表
 								urls: [path] // 需要预览的图片 http 链接列表
 							});
 							});
 						} else {
 						} else {
-							console.log(path);
-							uni.$emit('uAvatarCropper', path);
-							this.$u.route({
-								type: 'back'
+							//上传裁剪后的图片
+							uni.uploadFile({
+								url: this.$base.baseUrl + '/ins/taskImage/uploadFile',
+								filePath: path,
+								name: "multipartFile",
+								formData: {
+									'type': 'image',
+								},
+								header: {
+									Authorization: store.state.token,
+								},
+								success: async (imgRes) => {
+									let data = JSON.parse(imgRes.data).data;
+									//头像上传接口
+									let res = await this.$http.post('/partner/avatarUpdate', {
+										pictureUrl: data.id
+									});
+									if (res.code == '200') {
+										this.$u.route({
+											type: 'back'
+										});
+									} else {
+										uni.showToast({
+											title: res.msg,
+											icon: 'none',
+										});
+									}
+								}
 							});
 							});
+							// uni.$emit('uAvatarCropper', path);
 						}
 						}
 					}
 					}
 				});
 				});

+ 80 - 37
pages/my/benefits.vue

@@ -9,7 +9,7 @@
 				</view>
 				</view>
 			</view>
 			</view>
 			<view class="ratio dis a-end " @click="ratiodetail">
 			<view class="ratio dis a-end " @click="ratiodetail">
-				<text class="mr-1">0.8%</text>
+				<text class="mr-1">{{info.totalRate}}%</text>
 				<u-icon name="arrow-right" color="#999" size="28"></u-icon>
 				<u-icon name="arrow-right" color="#999" size="28"></u-icon>
 			</view>
 			</view>
 		</view>
 		</view>
@@ -32,23 +32,71 @@
 
 
 			<view class="content-container">
 			<view class="content-container">
 				<view class="content-wrap contentwrap1 dis f-c a-c" v-show="activeTab === 0">
 				<view class="content-wrap contentwrap1 dis f-c a-c" v-show="activeTab === 0">
-					<text class="title">- 成为创始人已解锁的权益 -</text>
-					<view class="benefits dis f-c ">
-						<text>发展管理人</text>
-						<text>邀请管理人加入,获得管理人车险订单0.1%的收益</text>
-					</view>
-					<view class="benefits dis f-c ">
-						<text>成为管理人</text>
-						<text>邀请合伙人,获得合伙人0.1-0.5的收益</text>
-					</view>
-					<view class="benefits dis f-c ">
-						<text>成为合伙人</text>
-						<text>邀请工作室,获得下辖团队出单业务的0.1-0.5的收益</text>
-					</view>
-					<view class="benefits dis f-c ">
-						<text>成为工作室</text>
-						<text>邀请团队,获得下辖团队出单业务的0.1-0.5的收益</text>
-					</view>
+					<text class="title">- 成为{{gradeText}}已解锁的权益 -</text>
+					<template v-if="this.userInfo.sysUser.grade==1">
+						<view class="benefits dis f-c ">
+							<text>发展管理人</text>
+							<text>邀请管理人加入,获得管理人车险订单0.1%的收益</text>
+						</view>
+						<view class="benefits dis f-c ">
+							<text>成为管理人</text>
+							<text>邀请合伙人,获得合伙人0.1-0.5的收益</text>
+						</view>
+						<view class="benefits dis f-c ">
+							<text>成为合伙人</text>
+							<text>邀请工作室,获得下辖团队出单业务的0.1-0.5的收益</text>
+						</view>
+						<view class="benefits dis f-c ">
+							<text>成为工作室</text>
+							<text>邀请团队,获得下辖团队出单业务的0.1-0.5的收益</text>
+						</view>
+					</template>
+					<template v-if="this.userInfo.sysUser.grade==2">
+						<view class="benefits dis f-c ">
+							<text>发展合伙人</text>
+							<text>邀请合伙人加入,获得合伙人车险订单0.1-0.5%%的收益</text>
+						</view>
+						<view class="benefits dis f-c ">
+							<text>成为合伙人</text>
+							<text>邀请工作室,获得下辖团队出单业务的0.1-0.5的收益</text>
+						</view>
+						<view class="benefits dis f-c ">
+							<text>成为工作室</text>
+							<text>邀请团队,获得下辖团队出单业务的0.1-0.5的收益</text>
+						</view>
+						<view class="benefits dis f-c ">
+							<text>升级成为创始人</text>
+							<text>邀请团队,获得下辖团队出单业务的0.1-0.5的收益</text>
+						</view>
+					</template>
+					<template v-if="this.userInfo.sysUser.grade==3">
+						<view class="benefits dis f-c ">
+							<text>发展工作室</text>
+							<text>邀请工作室加入,获得合伙人车险订单0.1-0.5%%的收益</text>
+						</view>
+						<view class="benefits dis f-c ">
+							<text>成为工作室</text>
+							<text>邀请团队,获得下辖团队出单业务的0.1-0.5的收益</text>
+						</view>
+						<view class="benefits dis f-c ">
+							<text>升级成为管理人</text>
+							<text>邀请团队,获得下辖团队出单业务的0.1-0.5的收益</text>
+						</view>
+					</template>
+					<template v-if="this.userInfo.sysUser.grade==4">
+						<view class="benefits dis f-c ">
+							<text>发展出单团队</text>
+							<text>邀请出单团队加入,获得出单员车险订单0.1-0.5%%的收益</text>
+						</view>
+						<view class="benefits dis f-c ">
+							<text>成为出单团队</text>
+							<text>成为出单团队,获取车险订单的三级分销佣金</text>
+						</view>
+						<view class="benefits dis f-c ">
+							<text>升级成为合伙人</text>
+							<text>满足考核条件升级成为管理人,解锁更多权益</text>
+						</view>
+					</template>
 				</view>
 				</view>
 				<view class="content-wrap contentwrap2 dis f-c a-c" v-show="activeTab === 1">
 				<view class="content-wrap contentwrap2 dis f-c a-c" v-show="activeTab === 1">
 					<text class="title">- 各类身份的佣金权益 -</text>
 					<text class="title">- 各类身份的佣金权益 -</text>
@@ -71,22 +119,11 @@
 				<text class="font-weight" style="font-size: 36rpx;color: #333;">我的佣金比例</text>
 				<text class="font-weight" style="font-size: 36rpx;color: #333;">我的佣金比例</text>
 			</view>
 			</view>
 			<view class="p-3">
 			<view class="p-3">
-				<view class="ratioitem dis a-c j-s">
-					<text>创始人</text>
-					<text>0.1%</text>
-				</view>
-				<view class="ratioitem dis a-c j-s">
-					<text>管理人</text>
-					<text>0.1%</text>
-				</view>
-				<view class="ratioitem dis a-c j-s">
-					<text>合伙人</text>
-					<text>0.1%</text>
-				</view>
-				<view class="ratioitem dis a-c j-s">
-					<text>工作室</text>
-					<text>0.1%</text>
+				<view class="ratioitem dis a-c j-s" v-for="(item,index) in info.data" :key="index">
+					<text>{{item.gradeName}}</text>
+					<text>{{item.commissionRate}}%</text>
 				</view>
 				</view>
+
 			</view>
 			</view>
 		</u-popup>
 		</u-popup>
 	</view>
 	</view>
@@ -100,6 +137,7 @@
 	export default {
 	export default {
 		data() {
 		data() {
 			return {
 			return {
+				info: {},
 				ratiodetailshow: false, //佣金比例弹窗
 				ratiodetailshow: false, //佣金比例弹窗
 				ratioindex: 0, //佣金权益选中下标
 				ratioindex: 0, //佣金权益选中下标
 				content: "创始人身份可享受邀请的所有管理人发展的团队成员车险订单的0.1% \n例如:创始人邀请了管理人A,管理人A邀请了合伙人B,合伙人B邀请了工作室C,工作室C邀请了团队D,团队D内的成员出单保费1000元(除车船税),管理人即可获得1000*0.1% = 1元",
 				content: "创始人身份可享受邀请的所有管理人发展的团队成员车险订单的0.1% \n例如:创始人邀请了管理人A,管理人A邀请了合伙人B,合伙人B邀请了工作室C,工作室C邀请了团队D,团队D内的成员出单保费1000元(除车船税),管理人即可获得1000*0.1% = 1元",
@@ -158,6 +196,7 @@
 		},
 		},
 		computed: {
 		computed: {
 			...mapState(['userInfo', "userCheckInfo"]),
 			...mapState(['userInfo', "userCheckInfo"]),
+			//匹配等级title
 			gradeText() {
 			gradeText() {
 				const gradeMap = {
 				const gradeMap = {
 					1: '创始人',
 					1: '创始人',
@@ -168,9 +207,13 @@
 				return gradeMap[this.userInfo.sysUser.grade] || ''
 				return gradeMap[this.userInfo.sysUser.grade] || ''
 			}
 			}
 		},
 		},
-		onShow() {
-			this.backLogo = this.backLogoList.find(val => val.grade == this.userInfo.sysUser.grade).url;
-			this.ratioindex = this.userInfo.sysUser.grade - 1;
+		async onShow() {
+			this.backLogo = this.backLogoList.find(val => val.grade == this.userInfo.sysUser.grade).url; //获取对等身份logo标志
+			this.ratioindex = this.userInfo.sysUser.grade - 1; //默认高亮显示对应等级
+			let res = await this.$http.get('/partner/myCommissionRate');
+			if (res.code == '200') {
+				this.info = res.data;
+			}
 		},
 		},
 		onLoad() {
 		onLoad() {
 
 
@@ -187,7 +230,7 @@
 			//比例弹窗
 			//比例弹窗
 			ratiodetail() {
 			ratiodetail() {
 				this.ratiodetailshow = true;
 				this.ratiodetailshow = true;
-			}
+			},
 		}
 		}
 	}
 	}
 </script>
 </script>

+ 40 - 55
pages/my/commissionDetail.vue

@@ -10,78 +10,54 @@
 		</view>
 		</view>
 		<view style="padding:85px 16px 16px">
 		<view style="padding:85px 16px 16px">
 			<view class="assets">
 			<view class="assets">
-				<view>{{MoneyData.extractFee}}</view>
+				<view>{{MoneyData.premium}}</view>
 				<view class="time">
 				<view class="time">
-					<image src="../../static/icon/Frame.png" mode=""></image> {{MoneyData.createTime}}
+					<image src="../../static/icon/Frame.png" mode=""></image> {{MoneyData.orderTime}}
 				</view>
 				</view>
 
 
 			</view>
 			</view>
 			<view class="assets1 dis f-c j-s">
 			<view class="assets1 dis f-c j-s">
-				<view style="border-top: 1px solid #f2f2f2;" class="dis j-s a-c" v-if="MoneyData.companyId">
+				<view style="border-top: 1px solid #f2f2f2;" class="dis j-s a-c" v-if="ordersNo">
 					<text style="font-size: 30rpx; font-weight: 400;">订单号</text>
 					<text style="font-size: 30rpx; font-weight: 400;">订单号</text>
-					<text style="font-size: 30rpx; font-weight: 500;">{{MoneyData.companyId}}</text>
+					<text style="font-size: 30rpx; font-weight: 500;">{{ordersNo}}</text>
 				</view>
 				</view>
-				<view style="border-top: 1px solid #f2f2f2;" class="dis j-s a-c" v-if="MoneyData.licenseno">
+				<view style="border-top: 1px solid #f2f2f2;" class="dis j-s a-c" v-if="MoneyData.carId">
 					<text style="font-size: 30rpx; font-weight: 400;">车牌号</text>
 					<text style="font-size: 30rpx; font-weight: 400;">车牌号</text>
-					<text>{{MoneyData.licenseno}}</text>
+					<text>{{MoneyData.carId}}</text>
 				</view>
 				</view>
-				<view class="dis j-s a-c" v-if="MoneyData.industrySector">
+				<view class="dis j-s a-c" v-if="MoneyData.incomeType">
 					<text style="font-size: 30rpx; font-weight: 400;">收入类型</text>
 					<text style="font-size: 30rpx; font-weight: 400;">收入类型</text>
-					<text>{{MoneyData.industrySector==1?'汽车-车险':'保险-财险'}}</text>
+					<text>{{MoneyData.incomeType==1?'汽车-车险':'保险-财险'}}</text>
 				</view>
 				</view>
-				<view class="dis j-s a-c" v-if="MoneyData.issuerName">
+				<view class="dis j-s a-c" v-if="MoneyData.agent">
 					<text style="font-size: 30rpx; font-weight: 400;">代理人</text>
 					<text style="font-size: 30rpx; font-weight: 400;">代理人</text>
-					<text>{{MoneyData.issuerName}}</text>
+					<text>{{MoneyData.agent}}</text>
 				</view>
 				</view>
-				<view class="dis j-s a-c" v-if="MoneyData.profferName&&MoneyData.profferLevel">
-					<text style="font-size: 30rpx; font-weight: 400;">贡献人</text>
-					<text>
-					<!-- 	<text v-if="MoneyData.profferLevel ==1"> 一级合伙人</text>
-						<text v-if="MoneyData.profferLevel ==2"> 二级合伙人</text>
-						<text v-if="MoneyData.profferLevel ==3"> 三级合伙人</text>
-						<text v-if="MoneyData.profferLevel ==4"> 四级合伙人</text>
-						<text v-if="MoneyData.profferLevel ==5"> 五级合伙人</text> -->
-						<text v-if="MoneyData.profferLevel-userLevel==0">{{MoneyData.workName}}</text>
-						<text v-if="MoneyData.profferLevel-userLevel==1">{{MoneyData.profferName}}-一级合伙人</text>
-						<text v-if="MoneyData.profferLevel-userLevel==2">{{MoneyData.profferName}}-二级合伙人</text>
-						<text v-if="MoneyData.profferLevel-userLevel==3">{{MoneyData.profferName}}-三级合伙人</text>
-						<text v-if="MoneyData.profferLevel-userLevel==4">{{MoneyData.profferName}}-四级合伙人</text>
-						
-					</text>
+				<view class="dis j-s a-c" v-if="MoneyData.belongingTeam">
+					<text style="font-size: 30rpx; font-weight: 400;">代理人所属团队</text>
+					<text>{{MoneyData.belongingTeam}}</text>
 				</view>
 				</view>
-				<view class="dis j-s a-c" v-if="MoneyData.sumpremium">
+				<view class="dis j-s a-c" v-if="MoneyData.premium">
 					<text style="font-size: 30rpx; font-weight: 400;">总保费</text>
 					<text style="font-size: 30rpx; font-weight: 400;">总保费</text>
-					<text>{{MoneyData.sumpremium}}</text>
-				</view>
-				<view class="dis j-s a-c" v-if="MoneyData.proportional">
-					<text>佣金比例</text>
-					<text>{{MoneyData.proportional}}%</text>
+					<text>{{MoneyData.premium}}</text>
 				</view>
 				</view>
-				<view class="dis j-s a-c" v-if="MoneyData.extractFee">
-					<text style="font-size: 30rpx; font-weight: 400;">总佣金</text>
-					<text>{{MoneyData.extractFee}}
-					<u-icon name="arrow-down" size="22" color="#999999" v-if="isShow" @click="toggle" style="margin-left: 11rpx;"></u-icon>
-					<u-icon name="arrow-up" size="22" color="#999999" v-else @click="toggle" style="margin-left: 11rpx;"></u-icon>
+				<view class="dis j-s a-c" v-if="MoneyData.commission">
+					<text style="font-size: 30rpx; font-weight: 400;">我的佣金</text>
+					<text>{{MoneyData.commission}}
+						<u-icon name="arrow-down" size="22" color="#999999" v-if="isShow" @click="toggle"
+							style="margin-left: 11rpx;"></u-icon>
+						<u-icon name="arrow-up" size="22" color="#999999" v-else @click="toggle"
+							style="margin-left: 11rpx;"></u-icon>
 					</text>
 					</text>
 				</view>
 				</view>
 			</view>
 			</view>
 			<view class="extractFee_box" v-if="isShow">
 			<view class="extractFee_box" v-if="isShow">
-				<view class="option" v-for="(item,index) in MoneyData.profferList" :key="index">
+				<view class="option" v-for="(item,index) in MoneyData.commissionRatio" :key="index">
 					<view class="option_left">
 					<view class="option_left">
-						<!-- <text v-if="index ==0"> 我的佣金</text>
-						<text v-if="index !==0&&item.source ==1"> 一级合伙人佣金</text>
-						<text v-if="index !==0&&item.source ==2"> 二级合伙人佣金</text>
-						<text v-if="index !==0&&item.source ==3"> 三级合伙人佣金</text>
-						<text v-if="index !==0&&item.source ==4"> 四级合伙人佣金</text>
-						<text v-if="index !==0&&item.source ==5"> 五级合伙人佣金</text> -->
-						<text v-if="index ==0"> 我的佣金</text>
-						<text v-if="item.source-userLevel ==1"> 一级合伙人佣金</text>
-						<text v-if="item.source-userLevel ==2"> 二级合伙人佣金</text>
-						<text v-if="item.source-userLevel ==3"> 三级合伙人佣金</text>
-						<text v-if="item.source-userLevel ==4"> 四级合伙人佣金</text>
+						<text v-if="index ==0"> {{item.grade}}</text>
 					</view>
 					</view>
 					<view class="option_right">
 					<view class="option_right">
-						{{item.sumpremium}}*{{item.proportional}}% = {{item.extractFee}}
+						{{item.commission}}
 					</view>
 					</view>
 				</view>
 				</view>
 			</view>
 			</view>
@@ -97,6 +73,7 @@
 	export default {
 	export default {
 		data() {
 		data() {
 			return {
 			return {
+				ordersNo: "",
 				userLevel: 0,
 				userLevel: 0,
 				numList: [],
 				numList: [],
 				MoneyData: {},
 				MoneyData: {},
@@ -112,7 +89,7 @@
 					// 其他样式属性...
 					// 其他样式属性...
 				},
 				},
 				//佣金详情是否展示
 				//佣金详情是否展示
-				isShow:true
+				isShow: true
 			}
 			}
 		},
 		},
 		computed: {
 		computed: {
@@ -121,13 +98,19 @@
 		onShow() {
 		onShow() {
 
 
 		},
 		},
-		async onLoad(e) {
-			this.MoneyData = JSON.parse(decodeURIComponent(e.key));
-			this.userLevel = this.userInfo.sysUser.level
+		onLoad(options) {
+			this.ordersNo = options.ordersNo;
+			this.queryData();
 		},
 		},
 		onShow() {},
 		onShow() {},
 		methods: {
 		methods: {
-			toggle(){
+			async queryData() {
+				let res = await this.$http.get('/newAppPartner/myPerformanceDetails?ordersNo=订单号');
+				if (res.code == '200') {
+					this.MoneyData = res.data;
+				}
+			},
+			toggle() {
 				this.isShow = !this.isShow
 				this.isShow = !this.isShow
 			},
 			},
 			back() {
 			back() {
@@ -220,10 +203,12 @@
 			justify-content: space-between;
 			justify-content: space-between;
 			font-size: 26rpx;
 			font-size: 26rpx;
 			margin-bottom: 23rpx;
 			margin-bottom: 23rpx;
+
 			.option_left {
 			.option_left {
 				color: #666666;
 				color: #666666;
 			}
 			}
-			.option_right{
+
+			.option_right {
 				color: #333333;
 				color: #333333;
 			}
 			}
 		}
 		}

+ 30 - 30
pages/my/my.vue

@@ -266,7 +266,21 @@
 			// level:0 工作室
 			// level:0 工作室
 			this.backImage = this.backImageList.find(val => val.grade == this.userInfo.sysUser.grade).url;
 			this.backImage = this.backImageList.find(val => val.grade == this.userInfo.sysUser.grade).url;
 			this.backLogo = this.backLogoList.find(val => val.grade == this.userInfo.sysUser.grade).url;
 			this.backLogo = this.backLogoList.find(val => val.grade == this.userInfo.sysUser.grade).url;
-			let res = await this.$http.get('/APPPartner/getFee');
+			let userInfoRes = await this.$http.get('/newAppPartner/getUserInfo', {
+				type: uni.getStorageSync('type')
+			});
+			if (userInfoRes) {
+				store.commit('setUserModules', {
+					title: 'userInfo',
+					data: {
+						sysUser: {
+							...userInfoRes.data
+						}
+					}
+				})
+
+			}
+			let res = await this.$http.get('/newAppPartner/newGetFee'); //获取账户金额
 			if (res.code == 200) {
 			if (res.code == 200) {
 				this.getApplication = res.data || [];
 				this.getApplication = res.data || [];
 			}
 			}
@@ -276,15 +290,12 @@
 			if (this.userInfo.sysUser.sex == 'M') {
 			if (this.userInfo.sysUser.sex == 'M') {
 				this.avatar = "/static/image/my/nan.png"
 				this.avatar = "/static/image/my/nan.png"
 			}
 			}
-
+			if (this.userInfo.sysUser.insUploadFiles && this.userInfo.sysUser.insUploadFiles.url) {
+				this.avatar = this.$base.baseUrl + this.userInfo.sysUser.insUploadFiles.url;
+			}
 			this.WithdrawalqueryData()
 			this.WithdrawalqueryData()
-			// if (this.userInfo.sysUser.headSculpture) {
-			// 	this.avatar = this.$base.baseUrl + this.userInfo.sysUser.headSculpture;
-			// } else {
-			// 	this.avatar = "/static/image/my/avatar1.png"
-			// }
-		},
 
 
+		},
 		onPageScroll(e) {
 		onPageScroll(e) {
 			this.handleScroll(e);
 			this.handleScroll(e);
 		},
 		},
@@ -316,25 +327,7 @@
 				if (chooseImageRes) {
 				if (chooseImageRes) {
 					console.log(chooseImageRes);
 					console.log(chooseImageRes);
 					this.chooseAvatar(chooseImageRes.tempFilePaths[0]);
 					this.chooseAvatar(chooseImageRes.tempFilePaths[0]);
-					// uni.uploadFile({
-					// 	url: this.$base.baseUrl + '/ins/taskImage/uploadFile',
-					// 	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') {
-
-
-					// 		}
-
-					// 	}
-					// });
+
 				} else {}
 				} else {}
 			},
 			},
 			chooseAvatar(src) {
 			chooseAvatar(src) {
@@ -374,7 +367,8 @@
 						if (res.statusCode == 200) {
 						if (res.statusCode == 200) {
 							// 需要将图片保存到相册
 							// 需要将图片保存到相册
 							uni.saveImageToPhotosAlbum({
 							uni.saveImageToPhotosAlbum({
-								filePath: res.tempFilePath, // 图片文件路径,可以是临时文件路径也可以是永久文件路径,不支持网络图片路径
+								filePath: res
+									.tempFilePath, // 图片文件路径,可以是临时文件路径也可以是永久文件路径,不支持网络图片路径
 								success(res) {
 								success(res) {
 									uni.showToast({
 									uni.showToast({
 										title: '保存成功',
 										title: '保存成功',
@@ -429,7 +423,8 @@
 					}).then((canvas) => {
 					}).then((canvas) => {
 						// 生成成功
 						// 生成成功
 						this.$ownerInstance.callMethod('hideLoading')
 						this.$ownerInstance.callMethod('hideLoading')
-						this.$ownerInstance.callMethod('receiveRenderData', canvas.toDataURL('image/png'))
+						this.$ownerInstance.callMethod('receiveRenderData', canvas.toDataURL(
+							'image/png'))
 						console.log()
 						console.log()
 					}).catch(err => {
 					}).catch(err => {
 						// 生成失败 弹出提示弹窗
 						// 生成失败 弹出提示弹窗
@@ -577,7 +572,8 @@
 					this.showBackground = true; // 显示背景图
 					this.showBackground = true; // 显示背景图
 				}
 				}
 				this.headerStyle.backgroundColor = this.showBackground ? '#fff' : 'transparent';
 				this.headerStyle.backgroundColor = this.showBackground ? '#fff' : 'transparent';
-				this.headerStyle.backgroundImage = this.showBackground ? 'url("/static/image/my/beijing.png")' : '';
+				this.headerStyle.backgroundImage = this.showBackground ?
+					'url("/static/image/my/beijing.png")' : '';
 				this.headerStyle.backgroundSize = this.showBackground ? 'cover' : '';
 				this.headerStyle.backgroundSize = this.showBackground ? 'cover' : '';
 				// this.headerStyle.backgroundPosition = this.showBackground ? 'center' : '';
 				// this.headerStyle.backgroundPosition = this.showBackground ? 'center' : '';
 				this.prevScrollTop = scrollTop;
 				this.prevScrollTop = scrollTop;
@@ -640,6 +636,10 @@
 </script>
 </script>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
+	* {
+		// outline: 1px solid red !important;
+	}
+
 	.headers {
 	.headers {
 		position: fixed;
 		position: fixed;
 		top: 0;
 		top: 0;

+ 166 - 249
pages/statistics/statistics.vue

@@ -6,68 +6,66 @@
 		<view class="headers " :style="headerStyle">
 		<view class="headers " :style="headerStyle">
 			<view class="dis a-c j-c">
 			<view class="dis a-c j-c">
 				<text>统计</text>
 				<text>统计</text>
-				<!-- <view class="headers-right">
-					<image @click="weChatService" src="/static/image/my/kefu.png" mode="">
-					</image>
-					<text>客服</text>
-				</view> -->
 			</view>
 			</view>
 		</view>
 		</view>
-		<view class="body-box" style="margin-top: 100px" v-if="type == 1 && level!==5">
+		<view class="body-box" style="margin-top: 100px">
 			<view class=" dis j-s a-c" style="padding: 10px 10px 0 0;">
 			<view class=" dis j-s a-c" style="padding: 10px 10px 0 0;">
 				<view class="statistics-title">新增人员汇总统计</view>
 				<view class="statistics-title">新增人员汇总统计</view>
-				<year @queryData="queryData" @time="getTime"></year>
-
+				<!-- 时间快捷选择 -->
+				<view class="quickSwitchDate  dis a-c j-c ">
+					<view class="tab" :class="{active:summaryDateIndex==index}" v-for="(item,index)  in quickSwitchDate"
+						:key="index" @click="SwitchDateclick(item,index)">
+						{{item.name}}
+					</view>
+				</view>
 			</view>
 			</view>
+			<!-- 人员汇总 -->
 			<view class="statistics-number ">
 			<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>
-					<text>{{ echartsList.workSum || 0 }}</text>
-					<text>业务员</text>
+				<view v-for="(item,index) in statistics" :key="index">
+					<text>{{ item.count }}</text>
+					<text>{{item.gradeName}}</text>
 				</view>
 				</view>
 			</view>
 			</view>
 			<view class="partner-type dis">
 			<view class="partner-type dis">
 				<view style="width: 650px;overflow-x: auto;">
 				<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>
+					<text :class="summarygrade == val.grade ? 'selected' : ''" v-for="(val,index) in partnerTypeOption"
+						:key="index" @click="getPartnerType(val,val.grade)">{{ val.gradeName }}</text>
 				</view>
 				</view>
 			</view>
 			</view>
-			<o-empty v-if="echartsList.countUserNumVoList && echartsList.countUserNumVoList.length == 0"
-				height="20vh" />
+			<o-empty v-if=" chartData1.categories && chartData1.categories.length==0" height="20vh" />
 			<qiun-data-charts v-else type="area" :ontouch="true" :opts="opts1" :chartData="chartData1" />
 			<qiun-data-charts v-else type="area" :ontouch="true" :opts="opts1" :chartData="chartData1" />
 		</view>
 		</view>
-		<view class="body-box" v-if="type == 1 && level!==5">
+		<view class="body-box">
 			<view class=" dis j-s a-c" style="padding: 10px 10px 0 0;">
 			<view class=" dis j-s a-c" style="padding: 10px 10px 0 0;">
 				<view class="statistics-title">新增人员占比分析</view>
 				<view class="statistics-title">新增人员占比分析</view>
-				<year @queryData="analysisQueryData" @time="getTime"></year>
-
+				<!-- 时间快捷选择 -->
+				<view class="quickSwitchDate  dis a-c j-c ">
+					<view class="tab" :class="{active:ratioDateIndex==index}" v-for="(item,index)  in quickSwitchDate"
+						:key="index" @click="SwitchDateclick1(item,index)">
+						{{item.name}}
+					</view>
+				</view>
 			</view>
 			</view>
-			<leverStaff @getPartnerType="getPartnerType2"></leverStaff>
-			<o-empty v-if="!echartsList2.newProportion && !echartsList2.oldProportion" height="20vh" />
-			<view v-else class="charts-box" style="height: 200px;">
+			<view class="partner-type dis">
+				<view style="width: 650px;overflow-x: auto;">
+					<text :class="ratiograde == val.grade ? 'selected' : ''" v-for="(val,index) in partnerTypeOption1"
+						:key="index" @click="getPartnerType2(val,val.grade)">{{ val.gradeName }}</text>
+				</view>
+			</view>
+			<view class="charts-box" style="height: 200px;">
 				<qiun-data-charts type="ring" :eopts="ringOpts" :chartData="chartsDataPie2" />
 				<qiun-data-charts type="ring" :eopts="ringOpts" :chartData="chartsDataPie2" />
 			</view>
 			</view>
 		</view>
 		</view>
-		<view class="body-box" style="padding-bottom: 10px;" v-if="type == 1 && level!==5">
+		<view class="body-box" style="padding-bottom: 10px;">
 			<view class=" dis j-s a-c" style="padding: 10px 10px 0 0;">
 			<view class=" dis j-s a-c" style="padding: 10px 10px 0 0;">
 				<view class="statistics-title">排名</view>
 				<view class="statistics-title">排名</view>
 			</view>
 			</view>
-			<leverStaff @getPartnerType="getPartnerType3"></leverStaff>
+			<view class="partner-type dis">
+				<view style="width: 650px;overflow-x: auto;">
+					<text :class="rankgrade == val.grade ? 'selected' : ''" v-for="(val,index) in personRankingOption"
+						:key="index" @click="getPartnerType3(val,val.grade)">{{ val.gradeName }}</text>
+				</view>
+			</view>
 			<view class="teamStatistics ">
 			<view class="teamStatistics ">
 				<view class="statisticsTitle">
 				<view class="statisticsTitle">
 					<view>排名</view>
 					<view>排名</view>
@@ -85,90 +83,49 @@
 								<text v-else>{{ index + 1 }}</text>
 								<text v-else>{{ index + 1 }}</text>
 							</view>
 							</view>
 							<view>{{ item.userName }}</view>
 							<view>{{ item.userName }}</view>
-							<view>{{ item.deptManNum }}</view>
-							<view style="color:#739EFF " @click="directDetail(item)">查看</view>
+							<view>{{ item.number }}</view>
+							<view style="color:#739EFF;" @click="directDetail(item.id)">查看</view>
 						</view>
 						</view>
 					</view>
 					</view>
 				</block>
 				</block>
-				<!-- <o-empty v-if="directLsit.length==0"  /> -->
-
 			</view>
 			</view>
 		</view>
 		</view>
-		<view class="body-box" style="margin-top: 100px;" v-if="type == 1&& level==5">
-			<view class=" dis j-s a-c" style="padding: 10px 10px 0 0;">
-				<view class="statistics-title">新增人员汇总统计</view>
-				<year @queryData="queryData" @time="getTime"></year>
-
-			</view>
-			<view class="statistics-number ">
-				<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="statistics-type">
-				<text :class="typeStatistics == 1 ? 'selected' : ''" @click="getStatistics(1)">工作室</text>
-				<text :class="typeStatistics == 2 ? 'selected' : ''" @click="getStatistics(2)">团队</text>
-				<text :class="typeStatistics == 3 ? 'selected' : ''" @click="getStatistics(3)">代理人</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 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>
-				<year @queryData="queryData" @time="getTime"></year>
-
-			</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" :ontouch="true" />
-		</view>
-
 	</view>
 	</view>
 </template>
 </template>
 <script>
 <script>
 	import {
 	import {
 		mapState,
 		mapState,
 	} from "vuex"
 	} from "vuex"
-	import leverStaff from "../components/leverStaff.vue"
-	import year from "../components/year.vue"
+	import levertab from "../components/leverStaff.vue" //等级切换组件
+	import tabDate from "../components/year.vue" //日期快捷选择
 	export default {
 	export default {
 		components: {
 		components: {
-			leverStaff,
-			year
+			levertab,
+			tabDate
 		},
 		},
 		data() {
 		data() {
 			return {
 			return {
-				beginTime: '',
-				endTime: '',
+				statistics: [], //各等级人员统计
+				summaryDateIndex: 1, //人员
+				ratioDateIndex: 1, //汇总
+				summarygrade: null, //汇总选中等级
+				ratiograde: null, //占比选中等级
+				rankgrade: null, //排名选中等级
+				summaryCountCycle: "Week", //汇总日期选择
+				ratioCountCycle: "Week", //占比日期选择
+				quickSwitchDate: [{
+						name: "日",
+						value: "Day"
+					},
+					{
+						name: "周",
+						value: "Week"
+					},
+					{
+						name: "月",
+						value: "Month"
+					}
+				],
 				ringOpts: {
 				ringOpts: {
 					color: ['#02CDFF ', '#2D97FF'],
 					color: ['#02CDFF ', '#2D97FF'],
 					legend: {
 					legend: {
@@ -176,7 +133,7 @@
 					},
 					},
 					dataLabel: true,
 					dataLabel: true,
 				},
 				},
-				chartsDataPie2: {},
+				chartsDataPie2: {}, //图表2显示
 				echartsList2: {},
 				echartsList2: {},
 				level: '',
 				level: '',
 				type: null,
 				type: null,
@@ -205,22 +162,11 @@
 				}],
 				}],
 				echartsList: {},
 				echartsList: {},
 				analysisEchartsList: {},
 				analysisEchartsList: {},
-				partnerTypeOption: [{
-					lable: '一级合伙人',
-					value: '1'
-				}, {
-					lable: '二级合伙人',
-					value: '2'
-				}, {
-					lable: '三级合伙人',
-					value: '3'
-				}, {
-					lable: '四级合伙人',
-					value: '4'
-				}, ],
-				// optsMax:10,
-
-				opts1: {
+				partnerTypeOption: [],
+				partnerTypeOption1: [], //人员占比数据
+				personRankingOption: [], //人员排名集合
+				directLsit: [], //排名列表数据
+				opts1: { //图表1配置参数
 					enableScroll: true,
 					enableScroll: true,
 					padding: [15, 10, 15, 0],
 					padding: [15, 10, 15, 0],
 					legend: {
 					legend: {
@@ -253,7 +199,6 @@
 					},
 					},
 				},
 				},
 				chartData1: {},
 				chartData1: {},
-				directLsit: []
 			}
 			}
 		},
 		},
 		computed: {
 		computed: {
@@ -261,167 +206,139 @@
 		},
 		},
 		onLoad() {
 		onLoad() {
 			this.level = this.userInfo.sysUser.level
 			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.$http.get('/sys/qy/wechat/find/picture').then(res => {
 				this.supportStaffUrl = res.data.supportStaffUrl
 				this.supportStaffUrl = res.data.supportStaffUrl
 			})
 			})
 		},
 		},
 		onShow() {
 		onShow() {
 			this.type = uni.getStorageSync('type')
 			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.level !== 5) {
-				this.analysisQueryData()
-				this.rankingQueryData()
-			}
+			this.newPersonCount() //图表1
+			this.newPersonRatioAnalysis() //图表2
+			this.personRanking() //排名
 
 
 		},
 		},
 
 
 		methods: {
 		methods: {
+			//汇总日期切换
+			SwitchDateclick(item, index) {
+				this.summaryDateIndex = index;
+				this.summaryCountCycle = item.value;
+				this.newPersonCount();
+			},
+			//占比日期切换
+			SwitchDateclick1(item, index) {
+				this.ratioDateIndex = index;
+				this.ratioCountCycle = item.value;
+				this.newPersonRatioAnalysis()
+			},
 			canvasInit(canvas, width, height) {
 			canvasInit(canvas, width, height) {
 				// 初始化画布
 				// 初始化画布
 				this.canvas2d = canvas;
 				this.canvas2d = canvas;
 			},
 			},
 			directDetail(val) {
 			directDetail(val) {
+				console.log(val);
 				uni.navigateTo({
 				uni.navigateTo({
-					url: "/pages/statistics/statisticsDetail?key=" + encodeURIComponent(JSON.stringify(val
-						.partnerIds))
+					url: "/pages/statistics/statisticsDetail?id=" + val,
 				})
 				})
 			},
 			},
-			getPartnerType2(type) {
-				this.typeStatistics2 = type
-				this.analysisQueryData()
-			},
-			getPartnerType3(type) {
-				this.typeStatistics3 = type
-				this.rankingQueryData()
+			//人员汇总数据切换
+			getPartnerType(item, type) {
+				this.summarygrade = type;
+				let rualit = {
+					categories: item.data.dataTime,
+					series: [{
+						name: "人数",
+						// type: "line",
+						data: item.data.data
+					}]
+				};
+				this.chartData1 = JSON.parse(JSON.stringify(rualit)); //更新图表数据
 			},
 			},
-			getPartnerType(type) {
-				this.typeStatistics = type
-				this.queryData()
-			},
-			getStatistics(type) {
-				// 	uni.navigateTo({
-				// 	url: "/pages/tools/achievement/achievement"
-				// })
-				// this.studioType=type
-				this.typeStatistics = type
-				this.queryData()
+			//人员占比图数据切换
+			getPartnerType2(item, type) {
+				this.ratiograde = type;
+				this.chartsDataPie2 = {
+					series: [{
+						"data": [{
+								name: `新增`,
+								value: item.data.newNum,
+								labelText: `${item.data.newNum?'新增:'+item.data.newNum+'%':'新增:0%'}`
+							},
+							{
+								name: "历史",
+								value: item.data.number,
+								labelText: `${item.data.number?'历史:'+item.data.number+'%':'历史:0%'}`
+							}
+						]
+					}]
+				}
 			},
 			},
-			//点击跳转企业微信客服
-			weChatService() {
-				uni.share({
-					provider: "weixin",
-					openCustomerServiceChat: true,
-					customerUrl: this.supportStaffUrl, //企业微信地址
-					corpid: 'wwfe67d19509d43ec5', //企业id
-					success: (res) => {},
-					fail: (err) => {}
-				});
+			//人员排名数据切换
+			getPartnerType3(item, type) {
+				this.rankgrade = type;
+				this.directLsit = item.data;
 			},
 			},
-
-			async analysisQueryData() {
+			//图表2
+			async newPersonRatioAnalysis() {
 				let params = {
 				let params = {
-					beginTime: this.beginTime,
-					endTime: this.endTime,
-					type: this.typeStatistics2,
+					countCycle: this.ratioCountCycle || 'Week',
 				}
 				}
-				let res = await this.$http.post('/APPPartner/getPartnerProportion', params);
+				let res = await this.$http.post('/newAppPartner/userCountProportionVo', params);
 				if (res.code == '200') {
 				if (res.code == '200') {
-					this.echartsList2 = res.data
+					this.partnerTypeOption1 = res.data
+					this.ratiograde = this.partnerTypeOption1[0].grade; //默认获取最高身份等级
 					this.chartsDataPie2 = {
 					this.chartsDataPie2 = {
 						series: [{
 						series: [{
 							"data": [{
 							"data": [{
 									name: `新增`,
 									name: `新增`,
-									value: res.data.newProportion,
-									labelText: `${res.data.newProportion?'新增:'+res.data.newProportion+'%':'新增:0%'}`
+									value: res.data[0].data.newNum,
+									labelText: `${res.data[0].data.newNum?'新增:'+res.data[0].data.newNum+'%':'新增:0%'}`
 								},
 								},
 								{
 								{
 									name: "历史",
 									name: "历史",
-									value: res.data.oldProportion,
-									labelText: `${res.data.oldProportion?'历史:'+res.data.oldProportion+'%':'历史:0%'}`
+									value: res.data[0].data.number,
+									labelText: `${res.data[0].data.number?'历史:'+res.data[0].data.number+'%':'历史:0%'}`
 								}
 								}
 							]
 							]
-							// "data": [
-							// 	{ name: `新增`, value: res.data.newProportion?res.data.newProportion:0},
-							// 	{ name: "历史", value: res.data.oldProportion?res.data.oldProportion:0}
-							// ]
 						}]
 						}]
 					}
 					}
 
 
 				}
 				}
 			},
 			},
-			async rankingQueryData() {
-				let params = {
-					type: this.typeStatistics3,
-				}
-				let res = await this.$http.get('/APPPartner/getLevelPartner', params);
-
+			//排名
+			async personRanking() {
+				let res = await this.$http.post('/newAppPartner/userCountRankingVo', {});
 				if (res.code == '200') {
 				if (res.code == '200') {
-					this.directLsit = res.data
+					this.personRankingOption = res.data;
+					this.directLsit = res.data[0].data;
+					this.rankgrade = this.personRankingOption[0].grade; //默认获取最高身份等级
 				}
 				}
 			},
 			},
 			getTime(beginTime, endTime) {
 			getTime(beginTime, endTime) {
 				this.beginTime = beginTime
 				this.beginTime = beginTime
 				this.endTime = endTime
 				this.endTime = endTime
 			},
 			},
-			async queryData() {
+			//图表1
+			async newPersonCount() {
 				let params = {
 				let params = {
-					beginTime: this.beginTime,
-					endTime: this.endTime,
-					type: this.typeStatistics,
-				}
-				let res = {}
-				if (this.type == 1 && this.level !== 5) {
-					res = await this.$http.post('/APPPartner/getPartnerCount', params);
-				} else if (this.type == 1 && this.level == 5) {
-					params = {
-						beginTime: this.beginTime,
-						endTime: this.endTime,
-						number: this.typeStatistics,
-					}
-					res = await this.$http.post('/APPPartner/getFivePartnerCount', params);
-				} else {
-					res = await this.$http.post('/APPPartner/getCountUser', params);
+					countCycle: this.summaryCountCycle || 'Week',
 				}
 				}
+				let res = await this.$http.post('/newAppPartner/userCountStatisticsVo', params);
 				if (res.code == '200') {
 				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
-							}]
-						};
-
-						this.chartData1 = JSON.parse(JSON.stringify(rualit));
-					} else {
-						this.echartsList.countUserNumVoList = []
-					}
+					this.statistics = res.data.vo1; //统计
+					this.partnerTypeOption = res.data.vo2; //图表数据
+
+					let rualit = {
+						categories: this.partnerTypeOption[0].data.dataTime,
+						series: [{
+							name: "人数",
+							// type: "line",
+							data: this.partnerTypeOption[0].data.data
+						}]
+					};
+					this.chartData1 = JSON.parse(JSON.stringify(rualit)); //默认显示最高等级数据
+					console.log(this.chartData1);
+					this.summarygrade = this.partnerTypeOption[0].grade; //默认获取最高身份等级
 				}
 				}
 			}
 			}
 		}
 		}
@@ -486,24 +403,24 @@
 		margin-top: 2px;
 		margin-top: 2px;
 	}
 	}
 
 
-	.search-data {
-		color: #666666;
-		border: 1px solid #EEEEEE;
+	.quickSwitchDate {
+		border: 1rpx solid #eee;
+		border-radius: 4rpx;
+
+		.tab {
+			padding: 6rpx 12rpx;
+			box-sizing: border-box;
+			font-size: 27rpx;
+			color: #666;
+		}
 
 
 		.active {
 		.active {
 			color: #FFFFFF;
 			color: #FFFFFF;
 			background: linear-gradient(132deg, #2DD9FF 0%, #2D6DFF 100%);
 			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 {
 	.statistics-number {
 		margin: 10px 10px 20px 10px;
 		margin: 10px 10px 20px 10px;

+ 215 - 200
pages/statistics/statisticsDetail.vue

@@ -3,11 +3,11 @@
 		<!-- 公共组件-每个页面必须引入 -->
 		<!-- 公共组件-每个页面必须引入 -->
 		<public-module></public-module>
 		<public-module></public-module>
 		<!-- 头部信息Start -->
 		<!-- 头部信息Start -->
-		
+
 		<view class="headers " :style="headerStyle">
 		<view class="headers " :style="headerStyle">
 			<view class="dis a-c j-start " style="padding: 0 15px;">
 			<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 class="headers-right">
 				<!-- <view class="headers-right">
 					<image @click="weChatService" src="/static/image/my/kefu.png" mode="">
 					<image @click="weChatService" src="/static/image/my/kefu.png" mode="">
 					</image>
 					</image>
@@ -15,7 +15,7 @@
 				</view> -->
 				</view> -->
 			</view>
 			</view>
 		</view>
 		</view>
-		<view class="body-box"  >
+		<view class="body-box">
 
 
 			<view class="teamStatistics " v-if="directLsit.length>0">
 			<view class="teamStatistics " v-if="directLsit.length>0">
 				<view class="statisticsTitle">
 				<view class="statisticsTitle">
@@ -27,8 +27,8 @@
 					<view>
 					<view>
 						<view class="statisticsContent ">
 						<view class="statisticsContent ">
 							<view>{{ item.userName }}</view>
 							<view>{{ item.userName }}</view>
-							<view>{{chineseNumbers[item.level]}}级合伙人</view>
-							<view>{{ item.deptManNum }}</view>
+							<view>{{gradeText}}</view>
+							<view>{{ item.number }}</view>
 						</view>
 						</view>
 					</view>
 					</view>
 				</block>
 				</block>
@@ -40,249 +40,264 @@
 	</view>
 	</view>
 </template>
 </template>
 <script>
 <script>
-export default {
-	data() {
-		return {
-			option: {},
-			supportStaffUrl: '',
-			headerStyle: {
-				backgroundColor: 'transparent',
-				backgroundImage: 'url("/static/beijing (2).png")',
-				backgroundSize: 'cover',
-				backgroundPosition: '',
-				boxShadow: ''
-				// 其他样式属性...
-			},
-			chineseNumbers:[ '零', '一', '二', '三', '四', '五', '六', '七', '八', '九'],
-			directLsit: []
-		}
-	},
-	
-	onLoad(e) {
-		let partnerIds= JSON.parse(decodeURIComponent(e.key));
-		this.queryData(partnerIds)
-	},
-
-	methods: {
-		back() {
+	import {
+		mapState,
+		mapMutations
+	} from "vuex"
+	export default {
+		data() {
+			return {
+				option: {},
+				supportStaffUrl: '',
+				headerStyle: {
+					backgroundColor: 'transparent',
+					backgroundImage: 'url("/static/beijing (2).png")',
+					backgroundSize: 'cover',
+					backgroundPosition: '',
+					boxShadow: ''
+					// 其他样式属性...
+				},
+				chineseNumbers: ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'],
+				directLsit: []
+			}
+		},
+
+		onLoad(options) {
+			this.queryData(options.id)
+		},
+		computed: {
+			...mapState(['userInfo', "userCheckInfo"]),
+			//匹配等级title
+			gradeText() {
+				const gradeMap = {
+					1: '创始人',
+					2: '管理人',
+					3: '合伙人',
+					4: '工作室'
+				}
+				return gradeMap[this.userInfo.sysUser.grade] || ''
+			}
+		},
+		methods: {
+			back() {
 				uni.navigateBack({
 				uni.navigateBack({
 					delta: 1, // 返回的页面数,如果是1表示返回上一页
 					delta: 1, // 返回的页面数,如果是1表示返回上一页
 					success: function() {}
 					success: function() {}
 				});
 				});
-				
+
 			},
 			},
-		//点击跳转企业微信客服
-		weChatService() {
-			uni.share({
-				provider: "weixin",
-				openCustomerServiceChat: true,
-				customerUrl: this.supportStaffUrl, //企业微信地址
-				corpid: 'wwfe67d19509d43ec5', //企业id
-				success: (res) => { },
-				fail: (err) => { }
-			});
-		},
-	
-		async queryData(partnerIds) {
-			
-			let res = await this.$http.post('/APPPartner/getLevelPartnerInfo', partnerIds);
-			if (res.code == '200') {
-				this.directLsit = res.data
+			//点击跳转企业微信客服
+			weChatService() {
+				uni.share({
+					provider: "weixin",
+					openCustomerServiceChat: true,
+					customerUrl: this.supportStaffUrl, //企业微信地址
+					corpid: 'wwfe67d19509d43ec5', //企业id
+					success: (res) => {},
+					fail: (err) => {}
+				});
+			},
+			//列表数据
+			async queryData(partnerIds) {
+				let res = await this.$http.get('/newAppPartner/selectByIdList?id=' + partnerIds);
+				if (res.code == '200') {
+					this.directLsit = res.data.list
+				}
 			}
 			}
 		}
 		}
 	}
 	}
-}
 </script>
 </script>
 <style lang="scss" scoped>
 <style lang="scss" scoped>
-.headers {
+	.headers {
 		position: fixed;
 		position: fixed;
 		top: 0;
 		top: 0;
 		left: 0;
 		left: 0;
 		width: 100%;
 		width: 100%;
 		z-index: 999999;
 		z-index: 999999;
 		padding-top: 40px;
 		padding-top: 40px;
-		    height: 85px;
-		text{
+		height: 85px;
+
+		text {
 			font-size: 18px;
 			font-size: 18px;
 			font-weight: bold;
 			font-weight: bold;
 		}
 		}
 	}
 	}
 
 
 
 
-.body-box {
-	background: #ffffff;
-	margin: 100px 15px 15px 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%);
+	.body-box {
+		background: #ffffff;
+		margin: 100px 15px 15px 15px
 	}
 	}
 
 
-	text {
-		padding: 5px 6px;
-		border-left: 1px solid #EEEEEE;
+	.statistics-title {
+		font-size: 16px;
+		color: #333333;
 	}
 	}
 
 
-	text:first-child {
-		border-left: none
+	.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;
 	}
 	}
-}
 
 
-.statistics-number {
-	margin: 10px 10px 20px 10px;
-	background: #FBFBFB;
-	border-radius: 4px 4px 4px 4px;
-	text-align: center;
-	padding: 15px 0;
-	overflow: hidden;
+	.search-data {
+		color: #666666;
+		border: 1px solid #EEEEEE;
 
 
-	view {
-		width: 33.33%;
-		float: left;
+		.active {
+			color: #FFFFFF;
+			background: linear-gradient(132deg, #2DD9FF 0%, #2D6DFF 100%);
+		}
 
 
-	}
+		text {
+			padding: 5px 6px;
+			border-left: 1px solid #EEEEEE;
+		}
 
 
-	text {
-		display: block;
+		text:first-child {
+			border-left: none
+		}
 	}
 	}
 
 
-	text:first-child {
-		font-size: 25px;
-		color: #333333;
-	}
+	.statistics-number {
+		margin: 10px 10px 20px 10px;
+		background: #FBFBFB;
+		border-radius: 4px 4px 4px 4px;
+		text-align: center;
+		padding: 15px 0;
+		overflow: hidden;
 
 
-	text:last-child {
-		font-size: 13px;
-		color: #999999;
-	}
-}
+		view {
+			width: 33.33%;
+			float: left;
 
 
-.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;
-	}
+		text {
+			display: block;
+		}
 
 
-	.selected {
-		color: #FFFFFF;
-		background: linear-gradient(132deg, #2DD9FF 0%, #2D6DFF 100%);
+		text:first-child {
+			font-size: 25px;
+			color: #333333;
+		}
+
+		text:last-child {
+			font-size: 13px;
+			color: #999999;
+		}
 	}
 	}
 
 
-	// text:first-child{
-	// 	color: #FFFFFF;
-	// 	background: linear-gradient( 132deg, #2DD9FF 0%, #2D6DFF 100%);
+	.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%);
+		}
 
 
-.partner-type {
-	margin: 10px;
-	width: 97%;
-	overflow: hidden;
-	white-space: nowrap;
+		// text:first-child{
+		// 	color: #FFFFFF;
+		// 	background: linear-gradient( 132deg, #2DD9FF 0%, #2D6DFF 100%);
 
 
-	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 {
-	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;
+	.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%);
+		}
 	}
 	}
 
 
-	image {
-		display: inline-block;
-		width: 21px;
-		height: 21px;
-		vertical-align: middle;
+	.teamStatistics {
+		background: #FFFFFF;
+		// box-shadow: 0px 4px 10px 0px #DAE3F4;
+		// border-radius: 2px 2px 2px 2px;
+		border: 1px solid #C8D8FF;
 	}
 	}
-}
-
-.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 {
+
+	.statisticsContent {
+		box-sizing: border-box;
+		height: 70upx;
 		text-align: center;
 		text-align: center;
-		line-height: 35px;
-		color: #2D6DFF;
-		width: 25%;
-		font-size: 12px;
+		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;
-}
+	.charts-box {
+		width: 100%;
+		height: 300px;
+	}
 </style>
 </style>

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

@@ -1,92 +0,0 @@
-## 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 端

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

@@ -1,45 +0,0 @@
-// #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

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

@@ -1,316 +0,0 @@
-<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>

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

@@ -1,143 +0,0 @@
-<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>

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

@@ -1,187 +0,0 @@
-<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>

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

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

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

@@ -1,8 +0,0 @@
-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
-}

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

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

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

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

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

@@ -1,45 +0,0 @@
-// #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

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

@@ -1,26 +0,0 @@
-
-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;
-		},
-	}
-}

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

@@ -1,90 +0,0 @@
-<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>

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

@@ -1,518 +0,0 @@
-<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>

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

@@ -1,88 +0,0 @@
-{
-	"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"
-                }
-			}
-		}
-	}
-}

+ 0 - 17
uni_modules/uni-popup/readme.md

@@ -1,17 +0,0 @@
-
-
-## Popup 弹出层
-> **组件名:uni-popup**
-> 代码块: `uPopup`
-> 关联组件:`uni-transition`
-
-
-弹出层组件,在应用中弹出一个消息提示窗口、提示框等
-
-### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-popup)
-#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 
-
-
-
-
-