Browse Source

修复bug 增加一键登录

XSXS 2 months ago
parent
commit
a00c5feab1
38 changed files with 1178 additions and 356 deletions
  1. 5 1
      .hbuilderx/launch.json
  2. 13 3
      components/NicknamePopup/NicknamePopup.vue
  3. 1 4
      components/SharePopup/SharePopup.vue
  4. 5 3
      components/teenagePopUpWindow/teenagePopUpWindow.vue
  5. 202 201
      manifest.json
  6. 1 1
      pages/index/index.vue
  7. 151 75
      pages/index/workDetail.vue
  8. 211 34
      pages/login/login.vue
  9. 4 4
      pages/make/index.scss
  10. 2 2
      pages/make/index.vue
  11. 161 5
      pages/makedetail/makeDetail.vue
  12. 7 7
      pages/makedetail/makeImgDetail.vue
  13. 11 2
      pages/makedetail/makeMusicDetail.vue
  14. 2 2
      pages/my/editInfo.vue
  15. 2 2
      pages/my/feedback.vue
  16. 1 1
      pages/my/my.vue
  17. 1 1
      pages/my/myStar.scss
  18. 15 4
      pages/my/myStar.vue
  19. 4 4
      pages/my/step.vue
  20. BIN
      static/dome/home-swper.png
  21. BIN
      static/home/home-swper.png
  22. BIN
      static/icon/whiteBackground.png
  23. BIN
      static/image/1080x1882.png
  24. BIN
      static/image/480x762.png
  25. BIN
      static/image/720x1242.png
  26. 23 0
      uniCloud-aliyun/cloudfunctions/oneClickLogin/index.js
  27. 8 0
      uniCloud-aliyun/cloudfunctions/oneClickLogin/package.json
  28. 12 0
      uniCloud-aliyun/database/JQL查询.jql
  29. 6 0
      uni_modules/uni-config-center/changelog.md
  30. 81 0
      uni_modules/uni-config-center/package.json
  31. 93 0
      uni_modules/uni-config-center/readme.md
  32. 0 0
      uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/index.js
  33. 13 0
      uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/package.json
  34. 36 0
      uni_modules/uni-id-common/changelog.md
  35. 84 0
      uni_modules/uni-id-common/package.json
  36. 3 0
      uni_modules/uni-id-common/readme.md
  37. 0 0
      uni_modules/uni-id-common/uniCloud/cloudfunctions/common/uni-id-common/index.js
  38. 20 0
      uni_modules/uni-id-common/uniCloud/cloudfunctions/common/uni-id-common/package.json

+ 5 - 1
.hbuilderx/launch.json

@@ -5,11 +5,15 @@
     "configurations" : [
         {
             "app-plus" : {
-                "launchtype" : "local"
+                "launchtype" : "remote"
             },
             "default" : {
                 "launchtype" : "local"
             },
+            "h5" : {
+                "launchtype" : "local"
+            },
+            "provider" : "aliyun",
             "type" : "uniCloud"
         },
         {

+ 13 - 3
components/NicknamePopup/NicknamePopup.vue

@@ -1,5 +1,5 @@
 <template>
-	<uv-popup ref="popup" mode="bottom" bgColor="none">
+	<uv-popup ref="popup" mode="bottom" bgColor="none" :closeOnClickOverlay="closeOnClickOverlay">
 		<view class="heard">
 			<slot name="heard"></slot>
 			<text class="title" v-if="title">{{ title }}</text>
@@ -9,7 +9,7 @@
 			<slot name="content"></slot>
 		 
 		</view>
-		<image class="close" src="@/static/icon/wd_icon_guanbi.png" @click="close()"></image>
+		<image class="close" src="@/static/icon/wd_icon_guanbi.png" @click="closeIcon()"></image>
 		 
 		<view class="bottomCompatibility"></view>
 	</uv-popup>
@@ -31,13 +31,23 @@ export default {
 		subtitle: {
 			type: String,
 			default: ''
+		},
+		closeOnClickOverlay: {
+			type: Boolean,
+			default: true
 		}
 	},
 	methods: {
 		open() {
 			this.$refs.popup.open();
 		},
-		close() {
+		close() { 
+			this.$refs.popup.close();
+		},
+		closeIcon() {
+			if (this.$listeners.close) {
+				this.$emit('close')
+			}
 			this.$refs.popup.close();
 		}
 	}

+ 1 - 4
components/SharePopup/SharePopup.vue

@@ -269,10 +269,7 @@ export default {
 					url: '/pages/my/feedback'
 				})
 			})
-      uni.showToast({
-        title: '举报功能开发中',
-        icon: 'none'
-      })
+      
     },
     qqShare() {
       // #ifdef APP-PLUS

+ 5 - 3
components/teenagePopUpWindow/teenagePopUpWindow.vue

@@ -24,9 +24,11 @@ export default {
     },
     goPage(){
       this.$refs.customPopup.close();
-      uni.navigateTo({
-        url: '/pages/my/adolescent'
-      })
+			uni.$emit('check_login', () => {
+			uni.navigateTo({
+			  url: '/pages/my/adolescent'
+			})
+		})
     }
   }
 }

+ 202 - 201
manifest.json

@@ -1,202 +1,203 @@
 {
-	"name": "萌创星球",
-	"appid": "__UNI__00BD11F",
-	"description": "",
-	"versionName": "1.0.1",
-	"versionCode": 101,
-	"transformPx": false,
-	"app-plus": {
-		"compatible": {
-			"ignoreVersion": true
-		},
-		"usingComponents": true,
-		"nvueStyleCompiler": "uni-app",
-		"compilerVersion": 3,
-		"splashscreen": {
-			"alwaysShowBeforeRender": false,
-			"waiting": true,
-			"autoclose": true,
-			"delay": 0
-		},
-		"safearea": {
-			"background": "#00000000",
-			"bottom": {
-				"offset": "none"
-			}
-		},
-		"modules": {
-			"Camera": {},
-			"Payment": {},
-			"Share": {},
-			"VideoPlayer": {},
-			"Push": {}
-		},
-		"distribute": {
-			"android": {
-				"permissions": [
-					"<uses-feature android:name=\"android.hardware.camera\"/>",
-					"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
-					"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
-					"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
-					"<uses-permission android:name=\"android.permission.CAMERA\"/>",
-					"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
-					"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
-					"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
-					"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
-					"<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.VIBRATE\"/>",
-					"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
-					"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
-				],
-				"permissionPhoneState": {
-					"request": "none",
-					"prompt": "为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。"
-				},
-				"permissionExternalStorage": {
-					"request": "none",
-					"prompt": "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
-				},
-				"abiFilters": ["armeabi-v7a", "arm64-v8a"],
-				"minSdkVersion": 21,
-				"targetSdkVersion": 31,
-				"enableOAID": false
-			},
-			"ios": {
-				"UIBackgroundModes": "",
-				"dSYMs": false,
-				"idfa": false
-			},
-			"sdkConfigs": {
-				"ad": {},
-				"payment": {
-					"weixin": {
-						"__platform__": ["android"],
-						"appid": "wxfed977c88f539599",
-						"UniversalLinks": ""
-					},
-					"alipay": {
-						"__platform__": ["ios", "android"]
-					}
-				},
-				"speech": {},
-				"oauth": {},
-				"push": {
-					"unipush": {
-						"version": "2",
-						"offline": false
-					}
-				},
-				"geolocation": {
-					"system": {
-						"__platform__": ["android"]
-					}
-				},
-				"share": {
-					"weixin": {
-						"appid": "wxfed977c88f539599",
-						"UniversalLinks": ""
-					}
-				}
-			},
-			"splashscreen": {
-				"androidStyle": "default",
-				"useOriginalMsgbox": true,
-				"iosStyle": "common",
-				"ios": {},
-				"android": {
-					"xxhdpi": "static/image/xiong-bg.png",
-					"xhdpi": "static/image/xiong-bg.png",
-					"hdpi": "static/image/xiong-bg.png"
-				}
-			},
-			"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"
-					}
-				}
-			}
-		}
-	},
-	"networkTimeout": {
-		"request": 6000
-	},
-	"quickapp": {},
-	"mp-weixin": {
-		"appid": "",
-		"setting": {
-			"urlCheck": false
-		},
-		"usingComponents": true
-	},
-	"mp-alipay": {
-		"usingComponents": true
-	},
-	"mp-baidu": {
-		"usingComponents": true
-	},
-	"mp-toutiao": {
-		"usingComponents": true
-	},
-	"uniStatistics": {
-		"enable": false
-	},
-	"channel_list": [{
-			"id": "wandoujia",
-			"name": "豌豆荚"
-		},
-		{
-			"id": "market",
-			"name": "市场部"
-		},
-		{
-			"id": "honor",
-			"name": "荣耀"
-		}
-	],
-	"vueVersion": "2",
-	"h5": {
-		"router": {
-			"base": "./",
-			"mode": "hash"
-		},
-		"template": "h5.template.html",
-		"optimization": {
-			"treeShaking": {
-				"enable": true
-			}
-		},
-		"unipush": {
-			"enable": true
-		}
-	},
-	"fallbackLocale": "zh-Hans"
-}
+    "name" : "萌创星球",
+    "appid" : "__UNI__00BD11F",
+    "description" : "",
+    "versionName" : "1.0.2",
+    "versionCode" : 102,
+    "transformPx" : false,
+    "app-plus" : {
+        "compatible" : {
+            "ignoreVersion" : true
+        },
+        "usingComponents" : true,
+        "nvueStyleCompiler" : "uni-app",
+        "compilerVersion" : 3,
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : false,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        "safearea" : {
+            "background" : "#00000000",
+            "bottom" : {
+                "offset" : "none"
+            }
+        },
+        "modules" : {
+            "Camera" : {},
+            "Payment" : {},
+            "Share" : {},
+            "VideoPlayer" : {},
+            "Push" : {}
+        },
+        "distribute" : {
+            "android" : {
+                "permissions" : [
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<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.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+                ],
+                "permissionPhoneState" : {
+                    "request" : "none",
+                    "prompt" : "为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。"
+                },
+                "permissionExternalStorage" : {
+                    "request" : "none",
+                    "prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
+                },
+                "abiFilters" : [ "armeabi-v7a", "arm64-v8a" ],
+                "minSdkVersion" : 21,
+                "targetSdkVersion" : 31,
+                "enableOAID" : false
+            },
+            "ios" : {
+                "UIBackgroundModes" : "",
+                "dSYMs" : false,
+                "idfa" : false
+            },
+            "sdkConfigs" : {
+                "ad" : {},
+                "payment" : {
+                    "weixin" : {
+                        "__platform__" : [ "android" ],
+                        "appid" : "wxfed977c88f539599",
+                        "UniversalLinks" : ""
+                    },
+                    "alipay" : {
+                        "__platform__" : [ "ios", "android" ]
+                    }
+                },
+                "speech" : {},
+                "oauth" : {},
+                "push" : {
+                    "unipush" : {
+                        "version" : "2",
+                        "offline" : false
+                    }
+                },
+                "geolocation" : {
+                    "system" : {
+                        "__platform__" : [ "android" ]
+                    }
+                },
+                "share" : {
+                    "weixin" : {
+                        "appid" : "wxfed977c88f539599",
+                        "UniversalLinks" : ""
+                    }
+                }
+            },
+            "splashscreen" : {
+                "androidStyle" : "default",
+                "useOriginalMsgbox" : true,
+                "iosStyle" : "common",
+                "ios" : {},
+                "android" : {
+                    "xxhdpi" : "/static/image/1080x1882.png",
+                    "xhdpi" : "/static/image/720x1242.png",
+                    "hdpi" : "/static/image/480x762.png"
+                }
+            },
+            "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"
+                    }
+                }
+            }
+        }
+    },
+    "networkTimeout" : {
+        "request" : 6000
+    },
+    "quickapp" : {},
+    "mp-weixin" : {
+        "appid" : "",
+        "setting" : {
+            "urlCheck" : false
+        },
+        "usingComponents" : true
+    },
+    "mp-alipay" : {
+        "usingComponents" : true
+    },
+    "mp-baidu" : {
+        "usingComponents" : true
+    },
+    "mp-toutiao" : {
+        "usingComponents" : true
+    },
+    "uniStatistics" : {
+        "enable" : false
+    },
+    "channel_list" : [
+        {
+            "id" : "wandoujia",
+            "name" : "豌豆荚"
+        },
+        {
+            "id" : "market",
+            "name" : "市场部"
+        },
+        {
+            "id" : "honor",
+            "name" : "荣耀"
+        }
+    ],
+    "vueVersion" : "2",
+    "h5" : {
+        "router" : {
+            "base" : "./",
+            "mode" : "hash"
+        },
+        "template" : "h5.template.html",
+        "optimization" : {
+            "treeShaking" : {
+                "enable" : true
+            }
+        },
+        "unipush" : {
+            "enable" : true
+        }
+    },
+    "fallbackLocale" : "zh-Hans"
+}

+ 1 - 1
pages/index/index.vue

@@ -286,7 +286,7 @@ export default {
 			},
 			windowHeight: uni.getWindowInfo().windowHeight,
 			bannerList: [
-				"../../static/dome/home-swper.png", 
+				"../../static/home/home-swper.png", 
 			],
 			cardList: [ ],
 			list: [], // 瀑布流全部数据

+ 151 - 75
pages/index/workDetail.vue

@@ -6,6 +6,12 @@
         href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" />
     </view>
 
+    <!-- 权限申请提示 -->
+    <view v-if="showRights" class="permission-tip">
+      <text class="permission-title">正在获取相机、存储权限</text>
+      <text class="permission-desc">该权限用于获取设备拍摄或获取本地应用相册,进行头像或图片上传。</text>
+    </view>
+
     <!-- 顶部导航栏 -->
     <view class="custom-navbar">
       <view class="navbar-left" @click="goBack">
@@ -140,6 +146,7 @@ import previewImage from "@/components/kxj-previewImage/kxj-previewImage.vue"; /
 import CommentSection from "@/components/CommentSection/CommentSection.vue";
 import ActionSheet from "@/components/ActionSheet/ActionSheet.vue";
 import SharePopup from "@/components/SharePopup/SharePopup.vue";
+import permission from '@/common/permission.js';
 function parseImgs(nodes) {
   nodes.forEach((node) => {
     if (node.name === "img" && node.attrs && node.attrs["data-img-size-val"]) {
@@ -212,6 +219,7 @@ export default {
       sms_id: 0,
       isMessage: true,
       isItMe: false,
+      showRights: false,
     };
   },
   onLoad(parms) {
@@ -534,7 +542,7 @@ export default {
         if (this.articleInfo.status == 3) {
           uni.showToast({
             title: '作品已完成,无法修改封面!',
-            icon: 'success'
+            icon: 'none'
           });
           return;
         }
@@ -546,80 +554,11 @@ export default {
     },
     // 修改封面
     editCover() {
-      var _self = this;
-      uni.chooseImage({
-        count: 1,
-        sizeType: ['compressed'],
-        sourceType: ['album', 'camera'],
-        success: function (res) {
-          console.log('res:', res)
-          if (res.tempFilePaths.length > 0) {
-            _self.imglocal = res.tempFilePaths[0]
-            const tempFilePaths = res.tempFilePaths[0];
-            console.log('tempFilePaths:', tempFilePaths);
-            const uploadTask = uni.uploadFile({
-              url: _self.$apiHost + '/Xweb/upload_img?skey=' + _self.skey,
-              filePath: res.tempFilePaths[0],
-              name: 'file',
-              success: function (uploadFileRes) {
-                let resdata = JSON.parse(uploadFileRes.data)
-                console.log('Success11:', uploadFileRes);
-                console.log('Success21:', resdata);
-                if (resdata.success == 'yes') {
-                  // 调用修改封面接口
-                  uni.request({
-                    url: _self.$apiHost + '/WorkAI/queueAction',
-                    method: 'GET',
-                    data: {
-                      uuid: getApp().globalData.uuid,
-                      act: 'editImg',
-                      result_images: resdata.url,
-                      id: _self.arcID
-                    },
-                    header: {
-                      'content-type': 'application/json',
-                      'sign': getApp().globalData.headerSign
-                    },
-                    success: (res) => {
-                      if (res.data.success === "yes") {
-                        // 只有在修改封面成功时才更新页面中的图片
-                        _self.home_image = resdata.url;
-                        uni.showToast({
-                          title: '修改封面成功',
-                          icon: 'success'
-                        });
-                      } else {
-                        uni.showToast({
-                          title: '修改封面失败',
-                          icon: 'none'
-                        });
-                      }
-                    },
-                    fail: () => {
-                      uni.showToast({
-                        title: '修改封面失败',
-                        icon: 'none'
-                      });
-                    }
-                  });
-                }
-              },
-              fail: function (uploadFileFail) {
-                console.log('Error:', uploadFileFail.data);
-                uni.showToast({
-                  title: '图片上传失败',
-                  icon: 'none'
-                });
-              }
-            });
-          }
-        },
-        error: function (e) {
-          console.log(e);
-          uni.showToast({
-            title: '选择图片失败',
-            icon: 'none'
-          });
+      uni.showActionSheet({
+        itemList: ['拍照', '从相册选择'],
+        success: (res) => {
+          const sourceType = res.tapIndex === 0 ? 'camera' : 'album';
+          this.chooseImage(sourceType);
         }
       });
     },
@@ -716,10 +655,147 @@ export default {
 				showmenu:false
       });
     },
+    async chooseImage(sourceType) {
+      try {
+        let hasPermission = false;
+        
+        if (sourceType === 'camera') {
+          hasPermission = await this.checkCameraPermission();
+        } else if (sourceType === 'album') {
+          hasPermission = await this.checkPhotoLibraryPermission();
+        }
+
+        if (!hasPermission) {
+          uni.showToast({
+            title: '未获得权限',
+            icon: 'none'
+          });
+          return;
+        }
+
+        uni.chooseImage({
+          count: 1,
+          sizeType: ['compressed'],
+          sourceType: [sourceType],
+          success: async (res) => {
+            console.log('res:', res)
+            if (res.tempFilePaths.length > 0) {
+              this.imglocal = res.tempFilePaths[0]
+              const tempFilePath = res.tempFilePaths[0];
+              console.log('tempFilePaths:', tempFilePath);
+              await this.uploadImage(tempFilePath);
+            }
+          },
+          fail: (err) => {
+            console.error('选择图片失败:', err);
+            uni.showToast({
+              title: '选择图片失败',
+              icon: 'none'
+            });
+          }
+        });
+      } catch (error) {
+        console.error('权限检查失败:', error);
+        uni.showToast({
+          title: '权限检查失败',
+          icon: 'none'
+        });
+      }
+    },
+    async checkCameraPermission() {
+      const hasPermission = await permission.request(permission.PermissionType.CAMERA, {
+        title: '相机权限申请',
+        describe: '需要使用相机拍摄照片,用于帮助您完成图片制作、图片拍摄、图片上传等功能'
+      });
+      return hasPermission;
+    },
+    async checkPhotoLibraryPermission() {
+      const hasPermission = await permission.request(permission.PermissionType.PHOTO_LIBRARY, {
+        title: '相册权限申请',
+        describe: '需要访问相册选择照片,用于帮助您完成图片制作、图片拍摄、图片上传等功能'
+      });
+      return hasPermission;
+    },
+    uploadImage(tempFilePath) {
+      const _self = this;
+      const uploadTask = uni.uploadFile({
+        url: _self.$apiHost + '/Xweb/upload_img?skey=' + _self.skey,
+        filePath: tempFilePath,
+        name: 'file',
+        success: function(uploadFileRes) {
+          let resdata = JSON.parse(uploadFileRes.data);
+          console.log('Success:', uploadFileRes);
+          console.log('Upload data:', resdata);
+          if (resdata.success == 'yes') {
+            _self.showRights = false;
+            _self.home_image = resdata.url;
+            uni.showToast({
+              title: '图片上传成功',
+              icon: 'success',
+              duration: 1500
+            });
+          } else {
+            uni.showToast({
+              title: resdata.msg || '上传失败',
+              icon: 'none',
+              duration: 1500
+            });
+          }
+        },
+        fail: function(uploadFileFail) {
+          console.error('Error:', uploadFileFail);
+          uni.showToast({
+            title: '上传失败,请重试',
+            icon: 'none',
+            duration: 1500
+          });
+        },
+        complete: () => {
+          console.log('Upload complete');
+        }
+      });
+
+      // 显示上传进度
+      uploadTask.onProgressUpdate((res) => {
+        console.log('上传进度' + res.progress);
+        console.log('已经上传的数据长度' + res.totalBytesSent);
+        console.log('预期需要上传的数据总长度' + res.totalBytesExpectedToSend);
+      });
+    },
   },
 };
 </script>
 
 <style scoped lang="scss">
 @import "workDetail.scss";
+
+.permission-tip {
+  width: 100%;
+  height: 300rpx;
+  background-color: rgba(255, 255, 255, 0.9);
+  position: fixed;
+  top: 0;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  z-index: 999;
+
+  .permission-title {
+    width: 90%;
+    color: #000000;
+    font-size: 38rpx;
+    text-align: left;
+    padding: 10rpx 20rpx;
+    padding-top: 10rpx;
+  }
+
+  .permission-desc {
+    width: 90%;
+    color: #666666;
+    font-size: 28rpx;
+    text-align: left;
+    padding: 10rpx 20rpx;
+  }
+}
 </style>

+ 211 - 34
pages/login/login.vue

@@ -8,7 +8,8 @@
 			<view class="subtitle">手机号登录/注册</view>
 		</view>
 
-		<view class="tbody">
+		<!-- <view class="tbody"> -->
+		<view class="tbody" style="position: fixed;top: 50%;left: 50%;transform: translate(-50%,-50%);">
 			<block v-if="type == 'onelogin'">
 				<image class="icon" mode="widthFix" src="../../static/me/avator.png"></image>
 				<text class="mobile">+ 86 1**********</text>
@@ -21,35 +22,40 @@
 				</view>
 			</block>
 			<block v-if="type == 'pass' || type == 'mobile'">
-				<view class="name">手机号码:</view>
-				<view class="item">
-					<input type="number" class="input" v-model="mobile" placeholder="请输入手机号码" maxlength="11" />
-				</view>
-				<block v-if="type == 'pass'">
-					<view class="name">登录密码:</view>
-					<view class="item">
-						<input type="password" class="input" v-model="password" placeholder="请输入登录密码" maxlength="32" />
-					</view>
-					<view class="other_list">
-						<text class="left" v-if="true" @click="type = 'mobile'">验证码登录</text>
-						<text class="left" v-else></text>
-						<text class="right" @click="type = 'mobile'" v-if="false">验证码登录</text>
-						<text class="right" @click="toRegist">还没有账号?开始注册</text>
-					</view>
-				</block>
-				<block v-if="type == 'mobile'">
-					<view class="name">验证码:</view>
+				<template v-if="false">
+					<view class="name">手机号码:</view>
 					<view class="item">
-						<input type="text" class="input" v-model="code" placeholder="请输入验证码" maxlength="6" />
-						<view class="btn" v-if="captchaTime === 0" @click="getCode">获取验证码</view>
-						<view class="btn" v-if="captchaTime > 0">{{ captchaTime }}秒后重试</view>
-					</view>
-					<view class="other_list" v-if="false">
-						<text class="left"></text>
-						<text class="right" @click="type = 'pass'" style="color: blue;">密码登录</text>
+						<input type="number" class="input" v-model="mobile" placeholder="请输入手机号码" maxlength="11" />
 					</view>
-				</block>
-				<text class="btn_submit" @click="toLogin">登录/注册</text>
+					<block v-if="type == 'pass'">
+						<view class="name">登录密码:</view>
+						<view class="item">
+							<input type="password" class="input" v-model="password" placeholder="请输入登录密码"
+								maxlength="32" />
+						</view>
+						<view class="other_list">
+							<text class="left" v-if="true" @click="type = 'mobile'">验证码登录</text>
+							<text class="left" v-else></text>
+							<text class="right" @click="type = 'mobile'" v-if="false">验证码登录</text>
+							<text class="right" @click="toRegist">还没有账号?开始注册</text>
+						</view>
+					</block>
+
+					<block v-if="type == 'mobile'">
+						<view class="name">验证码:</view>
+						<view class="item">
+							<input type="text" class="input" v-model="code" placeholder="请输入验证码" maxlength="6" />
+							<view class="btn" v-if="captchaTime === 0" @click="getCode">获取验证码</view>
+							<view class="btn" v-if="captchaTime > 0">{{ captchaTime }}秒后重试</view>
+						</view>
+						<view class="other_list" v-if="false">
+							<text class="left"></text>
+							<text class="right" @click="type = 'pass'" style="color: blue;">密码登录</text>
+						</view>
+					</block>
+					<text class="btn_submit" @click="toLogin">登录/注册</text>
+				</template>
+				<text class="btn_submit" @click="oneClickLoginFun">一键登录</text>
 			</block>
 
 			<view class="wechat" v-if="false">
@@ -107,6 +113,78 @@ export default {
 			push_token: '',
 			lat: '',
 			lng: '',
+			univerifyStyle: {
+				"fullScreen": true, // 是否全屏显示,默认值: false
+				"backgroundColor": "#ffffff",  // 授权页面背景颜色,默认值:#ffffff
+				"backgroundImage": "", // 全屏显示的背景图片,默认值:"" (仅支持本地图片,只有全屏显示时支持)
+				"icon": {
+					"path": "/static/logo.png", // 自定义显示在授权框中的logo,仅支持本地图片 默认显示App logo
+					"width": "60px",  //图标宽度 默认值:60px
+					"height": "60px"   //图标高度 默认值:60px
+				},
+				"closeIcon": {
+					"path": "/static/icon/whiteBackground.png", // 自定义显示在授权框中的取消图片,仅支持本地图片
+					"width": "60px",  //图标宽度 默认值:60px (HBuilderX 4.0+ 仅iOS支持)
+					"height": "60px"   //图标高度 默认值:60px (HBuilderX 4.0+ 仅iOS支持)
+				},
+				"phoneNum": {
+					"color": "#202020"  // 手机号文字颜色 默认值:#202020
+				},
+				"slogan": {
+					"color": "#BBBBBB"  //  slogan 字体颜色 默认值:#BBBBBB
+				},
+				"authButton": {
+					"normalColor": "#131313", // 授权按钮正常状态背景颜色 默认值:#3479f5
+					"highlightColor": "#131313",  // 授权按钮按下状态背景颜色 默认值:#2861c5(仅ios支持)
+					"disabledColor": "#73aaf5",  // 授权按钮不可点击时背景颜色 默认值:#73aaf5(仅ios支持)
+					"textColor": "#ffffff",  // 授权按钮文字颜色 默认值:#ffffff
+					"title": "本机号码一键登录", // 授权按钮文案 默认值:“本机号码一键登录”
+					"borderRadius": "24px"	// 授权按钮圆角 默认值:"24px" (按钮高度的一半)
+				},
+				"otherLoginButton": {
+					"visible": false, // 是否显示其他登录按钮,默认值:true
+					"normalColor": "", // 其他登录按钮正常状态背景颜色 默认值:透明
+					"highlightColor": "", // 其他登录按钮按下状态背景颜色 默认值:透明
+					"textColor": "#656565", // 其他登录按钮文字颜色 默认值:#656565
+					"title": "其他登录方式", // 其他登录方式按钮文字 默认值:“其他登录方式”
+					"borderColor": "",  //边框颜色 默认值:透明(仅iOS支持)
+					"borderRadius": "0px" // 其他登录按钮圆角 默认值:"24px" (按钮高度的一半)
+				},
+				"privacyTerms": {
+					"defaultCheckBoxState": true, // 条款勾选框初始状态 默认值: true
+					"isCenterHint": true, //未勾选服务条款时点击登录按钮的提示是否居中显示 默认值: false (3.7.13+ 版本支持)
+					"uncheckedImage": "/static/icon/wd_icon_gouxuan04.png", // 可选 条款勾选框未选中状态图片(仅支持本地图片 建议尺寸 24x24px)(3.2.0+ 版本支持)
+					"checkedImage": "/static/icon/wd_icon_gouxuan05.png", // 可选 条款勾选框选中状态图片(仅支持本地图片 建议尺寸24x24px)(3.2.0+ 版本支持)
+					"checkBoxSize": 16, // 可选 条款勾选框大小
+					"textColor": "#BBBBBB", // 文字颜色 默认值:#BBBBBB
+					"termsColor": "#5496E3", //  协议文字颜色 默认值: #5496E3
+					"prefix": "我已阅读并同意", // 条款前的文案 默认值:“我已阅读并同意”
+					"suffix": "并使用本机号码登录", // 条款后的文案 默认值:“并使用本机号码登录”
+					"privacyItems": [  // 自定义协议条款,最大支持2个,需要同时设置url和title. 否则不生效
+						{
+							"url": "https://e.zhichao.art/web/yszc.php", // 点击跳转的协议详情页面
+							"title": "隐私协议" // 协议名称
+						},
+						{
+							"url": "https://e.zhichao.art/web/yhxy.php", // 点击跳转的协议详情页面
+							"title": "用户使用协议" // 协议名称
+						}
+					]
+				},
+				"buttons": {  // 自定义页面下方按钮仅全屏模式生效(3.1.14+ 版本支持)
+					"iconWidth": "45px", // 图标宽度(高度等比例缩放) 默认值:45px
+					"list": [
+						{
+							"provider": "apple",
+							// "iconPath": "/static/apple.png" // 图标路径仅支持本地图片
+						},
+						{
+							"provider": "weixin",
+							// "iconPath": "/static/wechat.png" // 图标路径仅支持本地图片
+						}
+					]
+				}
+			}
 		}
 	},
 	onLoad() {
@@ -131,6 +209,7 @@ export default {
 				console.log(err)
 			}
 		});
+		this.oneClickLoginFun();
 	},
 	onShow() {
 		// let hsign = pubc.Encrypt("aboa-wifl-kwfl-zjfk-wlaa_FA0412932BAE9D98506580ADB348BEF9");
@@ -155,11 +234,13 @@ export default {
 		// 		console.error('获取位置失败:', error);
 		// 	}
 		// });
+
+
 	},
 	methods: {
 		goWeb(url, title) {
 			uni.navigateTo({
-				url: `/pages/webview/index?url=${encodeURIComponent(url)}&title=${encodeURIComponent(title)	}`
+				url: `/pages/webview/index?url=${encodeURIComponent(url)}&title=${encodeURIComponent(title)}`
 			})
 		},
 		onBack() { },
@@ -199,7 +280,6 @@ export default {
 			});
 		},
 		toLogin() {
-			console.log('aaa');
 			let that = this;
 			if (this.mobile.length != 11) {
 				uni.showToast({
@@ -252,6 +332,11 @@ export default {
 					return;
 				}
 			}
+			this.loginInterface({ isOneClickLogin: false, phone: '' },)
+
+		},
+		loginInterface({ isOneClickLogin, phone }) {
+			let that = this;
 			let channel = "";
 			// #ifdef APP-PLUS
 			channel = plus.runtime.channel;
@@ -261,15 +346,25 @@ export default {
 				mask: true,
 			});
 			console.log("host", this.$apiHost + method);
+			let mobile = this.mobile;
+			let code = this.code;
+			let type = this.type;
+			console.log(type, 89);
+			let method = '/Member/gamelogin';
+			if (isOneClickLogin) {
+				mobile = phone;
+				code = '123601';
+				type = 'mobile';
+			}
 			uni.request({
 				url: this.$apiHost + method,
 				data: {
 					uuid: getApp().globalData.uuid,
 					channel: channel,
-					loginType: this.type,
-					mobile: this.mobile,
+					loginType: type,
+					mobile,
 					password: this.password,
-					code: this.code,
+					code,
 					push_token: this.push_token,
 					lat: this.lat,
 					lng: this.lng,
@@ -313,6 +408,7 @@ export default {
 							},
 							success: (res) => {
 								console.log("--获取用户信息--:", res.data);
+
 								if (res.data.need_login == "yes") {
 
 								}
@@ -415,8 +511,89 @@ export default {
 					this.getCodeTime();
 				}, 1000);
 			}
-		}
+		},
+
+		oneClickLoginFun() {
+			let _this = this;
+			//预登陆
+			uni.preLogin({
+				provider: 'univerify',
+				success() {  //预登录成功
+					// 显示一键登录选项
+					uni.login({
+						provider: 'univerify',
+						univerifyStyle: _this.univerifyStyle,
+						success(res) { // 登录成功
+							console.log(res.authResult.access_token);
+							console.log(res.authResult.openid);
+							// 此处获取了openid和access_token
+							// {openid:'登录授权唯一标识',access_token:'接口返回的 token'}
+							// 通过uniCloud.callFunction函数实现前端获取手机号
+							uniCloud.callFunction({
+								name: "oneClickLogin", // 填写你自己的云函数名称
+								//传入上面获取的openid和access_token获取手机号
+								data: {
+									access_token: res.authResult.access_token, // 客户端一键登录接口返回的access_token
+									openid: res.authResult.openid // 客户端一键登录接口返回的openid
+								}
+							}).then((dataRes) => {
+								//此处已经成功获取手机号等信息
+								console.log("云函数返回的参数1", dataRes)
+								let phone = dataRes.result.data.phoneNumber
+								if (phone) {
+									_this.loginInterface({
+										isOneClickLogin: true,
+										phone,
+									})
+									setTimeout(() => {
+										uni.closeAuthView() //关闭一键登录弹出窗口 
+									}, 500)
+								} else {
+
+								}
+								// 获取手机号后根据自己的需求做后面的登录操作即可
+								//...
+							}).catch((err) => {
+								console.log(err);
+								console.log("云函数报错", err)
+								uni.showToast({
+									title: err.errMsg,
+									icon: "none"
+								})
+								this_ = this
+								setTimeout(() => {
+									uni.closeAuthView() //关闭一键登录弹出窗口
+									this.onClickMsgLogin()
+								}, 500)
+							})
+						},
+						fail(res) {  // 登录失败
+							console.log(res.errCode)
+							console.log(res.errMsg)
+						}
+					})
+				},
+				fail(res) {
+					// 预登录失败
+					// 不显示一键登录选项(或置灰)
+					// 根据错误信息判断失败原因,如有需要可将错误提交给统计服务器
+					console.log(res.errCode)
+					console.log(res.errMsg)
+					this.onClickMsgLogin()
+				}
+			})
+		},
+		// 一键登录失败
+		onClickMsgLogin() {
+			uni.closeAuthView()
+			uni.showToast({
+				// title: '一键登录失败,请使用其他方式登录',
+				title: '一键登录失败,请重试',
+				icon: "none"
+			})
 
+
+		}
 	}
 }
 </script>

+ 4 - 4
pages/make/index.scss

@@ -137,7 +137,7 @@ page {
     }
 
     &.card-medium {
-      padding: 30rpx;
+      padding:18rpx 30rpx;
     }
 
     .card-content {
@@ -150,14 +150,14 @@ page {
       }
 
       .card-title {
-        font-size: 36rpx;
+        font-size: 32rpx;
         color: #fff;
         font-weight: bold;
-        margin-bottom: 8rpx;
+        margin-bottom: 4rpx;
       }
 
       .card-desc {
-        font-size: 26rpx;
+        font-size: 22rpx;
         color: rgba(255, 255, 255, 0.9);
       }
     }

+ 2 - 2
pages/make/index.vue

@@ -38,7 +38,7 @@
 			<!-- AI灵感写歌卡片 -->
 			<view class="card card-medium music" @click="handleCardClick('music')">
 				<view class="card-content">
-					<view class="text-area">
+					<view class="text-area" style="display: flex;flex-direction: column;;">
 						<text class="card-title">AI灵感写歌</text>
 						<text class="card-desc">快速生成专属原创曲目</text>
 					</view>
@@ -49,7 +49,7 @@
 			<!-- 萌萌智绘魔方卡片 -->
 			<view class="card card-medium cube" @click="handleCardClick('cube')">
 				<view class="card-content">
-					<view class="text-area">
+					<view class="text-area" style="display: flex;flex-direction: column;">
 						<text class="card-title">萌萌智绘魔方</text>
 						<text class="card-desc">AI随机生成萌玩原型</text>
 					</view>

+ 161 - 5
pages/makedetail/makeDetail.vue

@@ -5,6 +5,11 @@
 			<link rel="stylesheet"
 				href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
 		</view> 
+		<!-- 权限申请提示 -->
+		<view v-if="showRights" class="permission-tip">
+			<text class="permission-title">正在获取相机、存储权限</text>
+			<text class="permission-desc">该权限用于获取设备拍摄或获取本地应用相册,进行头像或图片上传。</text>
+		</view>
 		<!-- 顶部导航栏 -->
 		<view class="custom-navbar">
 			<view class="navbar-left" @click="goBack">
@@ -145,6 +150,7 @@ import NicknamePopup from '@/components//NicknamePopup/NicknamePopup.vue';
 import CustomPopup from '@/components/CustomPopup/CustomPopup.vue';
 import ActionSheet from '@/components/ActionSheet/ActionSheet.vue';
 import SharePopup from "@/components/SharePopup/SharePopup.vue";
+import permission from '@/common/permission.js';
 export default {
 	components: {
 		previewImage,
@@ -175,6 +181,7 @@ export default {
 			shareDesc: "",
 			shareImg: "",
 			userId: 0,
+			showRights: false,
 			// 队列详情数据
 			queueDetail: {
 				id: 0,
@@ -527,7 +534,7 @@ export default {
 					if (this.fileInformation.status == 3) {
 						uni.showToast({
 							title: '作品已完成,无法修改封面!',
-							icon: 'success'
+							icon: 'none'
 						});
 						break;
 					}
@@ -544,13 +551,16 @@ export default {
 			console.log('ActionSheet cancelled');
 		},
 		// 修改封面
-		editCover() {
+		async editCover() {
 			var _self = this;
+			const hasPermission = await this.checkCameraPermission();
+			if (!hasPermission) return;
+
 			uni.chooseImage({
 				count: 1,
 				sizeType: ['compressed'],
 				sourceType: ['album', 'camera'],
-				success: function (res) {
+				success: async function (res) {
 					console.log('res:', res)
 					if (res.tempFilePaths.length > 0) {
 						_self.imglocal = res.tempFilePaths[0]
@@ -560,7 +570,7 @@ export default {
 							url: _self.$apiHost + '/Xweb/upload_img?skey=' + _self.skey,
 							filePath: res.tempFilePaths[0],
 							name: 'file',
-							success: function (uploadFileRes) {
+							success: async function (uploadFileRes) {
 								let resdata = JSON.parse(uploadFileRes.data)
 								console.log('Success11:', uploadFileRes);
 								console.log('Success21:', resdata);
@@ -580,7 +590,7 @@ export default {
 											'content-type': 'application/json',
 											'sign': getApp().globalData.headerSign
 										},
-										success: (res) => {
+										success: async (res) => {
 											if (res.data.success === "yes") {
 												uni.showToast({
 													title: '修改封面成功',
@@ -840,6 +850,122 @@ export default {
 				}
 			});
 		},
+		async chooseImage(sourceType) {
+			try {
+				let hasPermission = false;
+				
+				if (sourceType === 'camera') {
+					hasPermission = await this.checkCameraPermission();
+				} else if (sourceType === 'album') {
+					hasPermission = await this.checkPhotoLibraryPermission();
+				}
+
+				if (!hasPermission) {
+					uni.showToast({
+						title: '未获得权限',
+						icon: 'none'
+					});
+					return;
+				}
+
+				uni.chooseImage({
+					count: 1,
+					sizeType: ['compressed'],
+					sourceType: [sourceType],
+					success: async (res) => {
+						console.log('res:', res)
+						if (res.tempFilePaths.length > 0) {
+							this.imglocal = res.tempFilePaths[0]
+							const tempFilePath = res.tempFilePaths[0];
+							console.log('tempFilePaths:', tempFilePath);
+							await this.uploadImage(tempFilePath);
+						}
+					},
+					fail: (err) => {
+						console.error('选择图片失败:', err);
+						uni.showToast({
+							title: '选择图片失败',
+							icon: 'none'
+						});
+					}
+				});
+			} catch (error) {
+				console.error('权限检查失败:', error);
+				uni.showToast({
+					title: '权限检查失败',
+					icon: 'none'
+				});
+			}
+		},
+		async checkCameraPermission() {
+			const hasPermission = await permission.request(permission.PermissionType.CAMERA, {
+				title: '相机权限申请',
+				describe: '需要使用相机拍摄照片,用于帮助您完成图片制作、图片拍摄、图片上传等功能'
+			});
+			return hasPermission;
+		},
+		async checkPhotoLibraryPermission() {
+			const hasPermission = await permission.request(permission.PermissionType.PHOTO_LIBRARY, {
+				title: '相册权限申请',
+				describe: '需要访问相册选择照片,用于帮助您完成图片制作、图片拍摄、图片上传等功能'
+			});
+			return hasPermission;
+		},
+		uploadImage(tempFilePath) {
+			const _self = this;
+			const uploadTask = uni.uploadFile({
+				url: _self.$apiHost + '/Xweb/upload_img?skey=' + _self.skey,
+				filePath: tempFilePath,
+				name: 'file',
+				success: function(uploadFileRes) {
+					let resdata = JSON.parse(uploadFileRes.data);
+					console.log('Success:', uploadFileRes);
+					console.log('Upload data:', resdata);
+					if (resdata.success == 'yes') {
+						_self.showRights = false;
+						_self.home_image = resdata.url;
+						uni.showToast({
+							title: '图片上传成功',
+							icon: 'success',
+							duration: 1500
+						});
+					} else {
+						uni.showToast({
+							title: resdata.msg || '上传失败',
+							icon: 'none',
+							duration: 1500
+						});
+					}
+				},
+				fail: function(uploadFileFail) {
+					console.error('Error:', uploadFileFail);
+					uni.showToast({
+						title: '上传失败,请重试',
+						icon: 'none',
+						duration: 1500
+					});
+				},
+				complete: () => {
+					console.log('Upload complete');
+				}
+			});
+
+			// 显示上传进度
+			uploadTask.onProgressUpdate((res) => {
+				console.log('上传进度' + res.progress);
+				console.log('已经上传的数据长度' + res.totalBytesSent);
+				console.log('预期需要上传的数据总长度' + res.totalBytesExpectedToSend);
+			});
+		},
+		editCover() {
+			uni.showActionSheet({
+				itemList: ['拍照', '从相册选择'],
+				success: (res) => {
+					const sourceType = res.tapIndex === 0 ? 'camera' : 'album';
+					this.chooseImage(sourceType);
+				}
+			});
+		},
 	}
 }
 </script>
@@ -857,4 +983,34 @@ export default {
 		min-height: 300rpx;
 	}
 }
+
+.permission-tip {
+	width: 100%;
+	height: 300rpx;
+	background-color: rgba(255, 255, 255, 0.9);
+	position: fixed;
+	top: 0;
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	align-items: center;
+	z-index: 999;
+
+	.permission-title {
+		width: 90%;
+		color: #000000;
+		font-size: 38rpx;
+		text-align: left;
+		padding: 10rpx 20rpx;
+		padding-top: 10rpx;
+	}
+
+	.permission-desc {
+		width: 90%;
+		color: #666666;
+		font-size: 28rpx;
+		text-align: left;
+		padding: 10rpx 20rpx;
+	}
+}
 </style>

+ 7 - 7
pages/makedetail/makeImgDetail.vue

@@ -53,7 +53,7 @@
 			<view class="description-section">
 				<view class="section-header">
 					<text class="section-title">创作描述<text style="display: none;" class="required">*</text></text>
-					<view class="clear-text" @click="doYouWantToEdit() ? state() : clearDescription">
+					<view class="clear-text" @click="doYouWantToEdit() ? state() : clearDescription()">
 						<image src="/static/clear.png" mode="aspectFit"></image>
 						<view class="clear-box">
 							<image src="@/static/makedetail/cz_icon_qingkongwenben.png" class="edit"></image>
@@ -77,9 +77,9 @@
 				</view>
 			</view>
 
-			<!-- 主体环境选择区 -->
+			<!-- 背景环境选择区 -->
 			<view class="environment-section">
-				<view class="section-title">主体环境</view>
+				<view class="section-title">背景环境</view>
 				<input class="input-box" v-model="environment" :disabled="doYouWantToEdit()" placeholder="可输入也可点击推荐词" />
 				<view class="tag-group">
 					<text class="tag" v-for="(item, index) in environmentTags" :key="index"
@@ -88,9 +88,9 @@
 				</view>
 			</view>
 
-			<!-- 主体形象选择区 -->
+			<!-- 主题装扮选择区 -->
 			<view class="image-section">
-				<view class="section-title">主体形象</view>
+				<view class="section-title">主题装扮</view>
 				<input class="input-box" v-model="image" :disabled="doYouWantToEdit()" placeholder="可输入也可点击推荐词" />
 				<view class="tag-group">
 					<text class="tag" v-for="(item, index) in imageTags" :key="index"
@@ -115,7 +115,7 @@
 
 			<!-- 底部按钮 -->
 			<view class="bottom-button">
-				<button v-if="doYouWantToEdit" class="generate-btn" @click="generateImage">立即生成
+				<button v-if="!doYouWantToEdit()" class="generate-btn" @click="generateImage">立即生成
 					<image src="/static/icon/coin_cd.png" mode="aspectFit"></image>
 					10
 				</button>
@@ -200,7 +200,7 @@ export default {
 					},
 					{
 						el: ".image-section",
-						tips: "选择或输入主体形象特征",
+						tips: "选择或输入主题装扮特征",
 						next: "知道了",
 					},
 					{

+ 11 - 2
pages/makedetail/makeMusicDetail.vue

@@ -107,9 +107,9 @@
 
 		<!-- 底部按钮 -->
 		<view class="bottom-button">
-			<button v-if="doYouWantToEdit" class="generate-btn" @click="generateMusic">立即生成
+			<button v-if="!doYouWantToEdit()" class="generate-btn" @click="generateMusic">立即生成
 				<image src="/static/icon/coin_cd.png" mode="aspectFit"></image>
-				10
+				20
 			</button>
 
 			<view v-else class="generate-btn prohibit">生成中 </view>
@@ -366,6 +366,15 @@ export default {
 			if (this.selectedTags[this.selectedTab].includes(tag)) {
 				this.selectedTags[this.selectedTab] = this.selectedTags[this.selectedTab].filter(t => t !== tag);
 			} else {
+				// 计算所有已选标签的总数
+				const totalSelectedTags = Object.values(this.selectedTags).reduce((total, tags) => total + tags.length, 0);
+				if (totalSelectedTags >= 5) {
+					uni.showToast({
+						title: '最多只能选择5个标签',
+						icon: 'none'
+					});
+					return;
+				}
 				this.selectedTags[this.selectedTab].push(tag);
 			}
 		},

+ 2 - 2
pages/my/editInfo.vue

@@ -434,14 +434,14 @@
 			async checkCameraPermission() {
 				const hasPermission = await permission.request(permission.PermissionType.CAMERA, {
 					title: '相机权限申请',
-					describe: '需要使用相机拍摄照片,请允许使用相机权限'
+					describe: '需要使用相机拍摄照片,用于帮助您完成图片制作、图片拍摄、图片上传等功能'
 				});
 				return hasPermission;
 			},
 			async checkPhotoLibraryPermission() {
 				const hasPermission = await permission.request(permission.PermissionType.PHOTO_LIBRARY, {
 					title: '相册权限申请',
-					describe: '需要访问相册选择照片,请允许访问相册权限'
+					describe: '需要访问相册选择照片,用于帮助您完成图片制作、图片拍摄、图片上传等功能'
 				});
 				return hasPermission;
 			},

+ 2 - 2
pages/my/feedback.vue

@@ -1,8 +1,8 @@
 <template>
 	<view class="page">
-		<PageHeader title="意见与反馈" class="PageHeader">
+		<!-- <PageHeader title="意见与反馈" class="PageHeader">
 			<template slot="center"> </template>
-		</PageHeader>
+		</PageHeader> -->
 		<view class="feedback-container">
 			<!-- 问题描述区域 -->
 			<view class="description-area">

+ 1 - 1
pages/my/my.vue

@@ -82,7 +82,7 @@
 							<text v-if="true">开启专属会员权益</text>
 							<text v-else>会员权益生效中</text>
 						</view>
-						<image src="@/static/me/wd_icon_jiantou.png" mode=""></image>
+						<image v-if="isRecharge" src="@/static/me/wd_icon_jiantou.png" mode=""></image>
 					</view>
 				</view>
 			</view>

+ 1 - 1
pages/my/myStar.scss

@@ -398,7 +398,7 @@
           font-size: 28rpx;
           color: #666;
           line-height: 1.6;
-          max-height: 280rpx;
+          min-height: 280rpx;
         }
       }
 

+ 15 - 4
pages/my/myStar.vue

@@ -5,7 +5,7 @@
 		</PageHeader>
 		<!-- 星灵基因重组仓弹窗 -->
 		<view class="gender-popup" v-if="state == 0">
-			<NicknamePopup title="星灵基因重组仓" subtitle="" class="openContentPopUpWindow" ref="openContentPopUpWindow">
+			<NicknamePopup :closeOnClickOverlay="false" title="星灵基因重组仓" subtitle="" class="openContentPopUpWindow" ref="openContentPopUpWindow" @close="goBack()">
 				<template slot="content">
 					<uv-textarea v-model="noteContent" maxlength="200" count autoHeight
 						placeholder="可描述你想要重新赋予Ta的形象、性别、性格、身份、兴趣爱好等(不会展示给其他人,仅你自己知道),示例:有一头波浪状的橙色头发,喜欢运动的阳光男孩..."></uv-textarea>
@@ -173,7 +173,7 @@
 
 			<!-- 底部按钮 -->
 			<view class="join-button" @tap="handleJoin(1)" v-if="state == 5"> 入驻星球 </view>
-			<view class="join-button" @tap="handleJoin(0)" v-if="state == 6"> 已驻星球 </view>
+			<view class="join-button" @tap="handleJoin(0)" v-if="state == 6"> 已驻星球(点击进入星球) </view>
 		</view>
 
 		<!-- 编辑弹窗 -->
@@ -266,6 +266,8 @@ export default {
 		...mapMutations('switchingModule', ['setInformation','deleteInformation']),
 		// 返回上一页
 		goBack() {
+			console.log(66);
+			
 			uni.navigateBack({
 				delta: 1
 			});
@@ -417,6 +419,10 @@ export default {
 					this.retryCount = 0;
 
 					if (res && res.data && res.data.info) {
+						if(res.data.info.content){
+							res.data.info.content = res.data.info.content.replace(/^\n+/, '')
+							console.log(res.data.info.content);
+						}
 						if (res.data.info && res.data.info.tags != "") {
 							res.data.info.tags = res.data.info.tags.split(",");
 							this.predefinedTags = res.data.info.tags.map(tag => { return { text: tag, value: tag } })
@@ -437,13 +443,16 @@ export default {
 						// 更改状态为 用户还匹配成功时 待点击设置心灵简介
 						if (res.data.info.image && res.data.info.status == 2) {
 							this.state = 1
-							this.openContentPopUpWindow();
+							this.isLoading = false
+							// this.openContentPopUpWindow();
 						}
 						if (res.data.info.image && res.data.info.status == 1) {
-							this.state = 6
+							this.state = 6	
+							this.isLoading = false
 						}
 						if (res.data.info.image && res.data.info.status == 3) {
 							this.state = 5
+							this.isLoading = false
 						}
 						this.starInfo = res.data.info;
 
@@ -553,6 +562,8 @@ export default {
 
 		openContentPopUpWindow() {
 			if (this.$refs.openContentPopUpWindow) {
+				console.log(9999,"打开");
+				
 				this.$refs.openContentPopUpWindow.open();
 			}
 		},

+ 4 - 4
pages/my/step.vue

@@ -153,7 +153,7 @@
     </uni-popup>
 
     <!-- 权限申请提示 -->
-    <view v-if="showRights" style="
+    <!-- <view v-if="showRights" style="
         width: 100%;
         height: 300rpx;
         background-color: rgba(255, 255, 255, 0.9);
@@ -177,7 +177,7 @@
           font-size: 28rpx;
           text-align: left;
           padding: 10rpx 20rpx;">该权限用于获取设备拍摄或获取本地应用相册,进行头像或图片上传。</text>
-    </view>
+    </view> -->
   </view>
 </template>
 
@@ -593,14 +593,14 @@ export default {
     async checkCameraPermission() {
       const hasPermission = await permission.request(permission.PermissionType.CAMERA, {
         title: '相机权限申请',
-        describe: '需要使用相机拍摄照片,请允许使用相机权限'
+        describe: '需要使用相机拍摄照片,用于帮助您完成图片制作、图片拍摄、图片上传等功能'
       });
       return hasPermission;
     },
     async checkPhotoLibraryPermission() {
       const hasPermission = await permission.request(permission.PermissionType.PHOTO_LIBRARY, {
         title: '相册权限申请',
-        describe: '需要访问相册选择照片,请允许访问相册权限'
+        describe: '需要访问相册选择照片,用于帮助您完成图片制作、图片拍摄、图片上传等功能'
       });
       return hasPermission;
     },

BIN
static/dome/home-swper.png


BIN
static/home/home-swper.png


BIN
static/icon/whiteBackground.png


BIN
static/image/1080x1882.png


BIN
static/image/480x762.png


BIN
static/image/720x1242.png


+ 23 - 0
uniCloud-aliyun/cloudfunctions/oneClickLogin/index.js

@@ -0,0 +1,23 @@
+'use strict';
+exports.main = async (event, context) => {
+  // event里包含着客户端提交的参数
+  console.log("event:"+event);
+  const res = await uniCloud.getPhoneNumber({
+  	appid: '__UNI__00BD11F', //填写你自己的appid
+  	provider: 'univerify',
+  	access_token: event.access_token,
+  	openid: event.openid
+  })
+ 
+  console.log(res); // res里包含手机号
+  // 执行用户信息入库等操作,正常情况下不要把完整手机号返回给前端
+  // 如果数据库在uniCloud上,可以直接入库
+  // 如果数据库不在uniCloud上,可以通过 uniCloud.httpclient API,
+  // 将手机号通过http方式传递给其他服务器的接口,
+  // 详见:https://uniapp.dcloud.net.cn/uniCloud/cf-functions?id=httpclient
+  return {
+    code: 0,
+    message: '获取手机号成功',
+    data:res
+  }
+}

+ 8 - 0
uniCloud-aliyun/cloudfunctions/oneClickLogin/package.json

@@ -0,0 +1,8 @@
+{
+  "name": "oneClickLogin",
+  "dependencies": {},
+  "extensions": {
+    "uni-cloud-jql": {},
+    "uni-cloud-verify": {}
+  }
+}

+ 12 - 0
uniCloud-aliyun/database/JQL查询.jql

@@ -0,0 +1,12 @@
+// 本文件用于,使用JQL语法操作项目关联的uniCloud空间的数据库,方便开发调试和远程数据库管理
+// 编写clientDB的js API(也支持常规js语法,比如var),可以对云数据库进行增删改查操作。不支持uniCloud-db组件写法
+// 可以全部运行,也可以选中部分代码运行。点击工具栏上的运行按钮或者按下【F5】键运行代码
+// 如果文档中存在多条JQL语句,只有最后一条语句生效
+// 如果混写了普通js,最后一条语句需是数据库操作语句
+// 此处代码运行不受DB Schema的权限控制,移植代码到实际业务中注意在schema中配好permission
+// 不支持clientDB的action
+// 数据库查询有最大返回条数限制,详见:https://uniapp.dcloud.net.cn/uniCloud/cf-database.html#limit
+// 详细JQL语法,请参考:https://uniapp.dcloud.net.cn/uniCloud/jql.html
+
+// 下面示例查询uni-id-users表的所有数据
+db.collection('uni-id-users').get();

+ 6 - 0
uni_modules/uni-config-center/changelog.md

@@ -0,0 +1,6 @@
+## 0.0.3(2022-11-11)
+- 修复 config 方法获取根节点为数组格式配置时错误的转化为了对象的Bug
+## 0.0.2(2021-04-16)
+- 修改插件package信息
+## 0.0.1(2021-03-15)
+- 初始化项目

+ 81 - 0
uni_modules/uni-config-center/package.json

@@ -0,0 +1,81 @@
+{
+  "id": "uni-config-center",
+  "displayName": "uni-config-center",
+  "version": "0.0.3",
+  "description": "uniCloud 配置中心",
+  "keywords": [
+    "配置",
+    "配置中心"
+],
+  "repository": "",
+  "engines": {
+    "HBuilderX": "^3.1.0"
+  },
+"dcloudext": {
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": ""
+    },
+    "declaration": {
+      "ads": "无",
+      "data": "无",
+      "permissions": "无"
+    },
+    "npmurl": "",
+    "type": "unicloud-template-function"
+  },
+  "directories": {
+    "example": "../../../scripts/dist"
+  },
+  "uni_modules": {
+    "dependencies": [],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y"
+      },
+      "client": {
+        "App": {
+          "app-vue": "u",
+          "app-nvue": "u"
+        },
+        "H5-mobile": {
+          "Safari": "u",
+          "Android Browser": "u",
+          "微信浏览器(Android)": "u",
+          "QQ浏览器(Android)": "u"
+        },
+        "H5-pc": {
+          "Chrome": "u",
+          "IE": "u",
+          "Edge": "u",
+          "Firefox": "u",
+          "Safari": "u"
+        },
+        "小程序": {
+          "微信": "u",
+          "阿里": "u",
+          "百度": "u",
+          "字节跳动": "u",
+          "QQ": "u"
+        },
+        "快应用": {
+          "华为": "u",
+          "联盟": "u"
+        },
+        "Vue": {
+            "vue2": "y",
+            "vue3": "u"
+        }
+      }
+    }
+  }
+}

+ 93 - 0
uni_modules/uni-config-center/readme.md

@@ -0,0 +1,93 @@
+# 为什么使用uni-config-center
+
+实际开发中很多插件需要配置文件才可以正常运行,如果每个插件都单独进行配置的话就会产生下面这样的目录结构
+
+```bash
+cloudfunctions
+└─────common 公共模块
+        ├─plugin-a // 插件A对应的目录
+        │  ├─index.js
+        │  ├─config.json // plugin-a对应的配置文件
+        │  └─other-file.cert  // plugin-a依赖的其他文件
+        └─plugin-b // plugin-b对应的目录
+           ├─index.js
+           └─config.json // plugin-b对应的配置文件
+```
+
+假设插件作者要发布一个项目模板,里面使用了很多需要配置的插件,无论是作者发布还是用户使用都是一个大麻烦。
+
+uni-config-center就是用了统一管理这些配置文件的,使用uni-config-center后的目录结构如下
+
+```bash
+cloudfunctions
+└─────common 公共模块
+        ├─plugin-a // 插件A对应的目录
+        │  └─index.js
+        ├─plugin-b // plugin-b对应的目录
+        │  └─index.js
+        └─uni-config-center
+           ├─index.js // config-center入口文件
+           ├─plugin-a
+           │  ├─config.json  // plugin-a对应的配置文件
+           │  └─other-file.cert  // plugin-a依赖的其他文件
+           └─plugin-b
+              └─config.json  // plugin-b对应的配置文件
+```
+
+使用uni-config-center后的优势
+
+- 配置文件统一管理,分离插件主体和配置信息,更新插件更方便
+- 支持对config.json设置schema,插件使用者在HBuilderX内编写config.json文件时会有更好的提示(后续HBuilderX会提供支持)
+
+# 用法
+
+在要使用uni-config-center的公共模块或云函数内引入uni-config-center依赖,请参考:[使用公共模块](https://uniapp.dcloud.net.cn/uniCloud/cf-common)
+
+```js
+const createConfig = require('uni-config-center')
+
+const uniIdConfig = createConfig({
+    pluginId: 'uni-id', // 插件id
+    defaultConfig: { // 默认配置
+        tokenExpiresIn: 7200,
+        tokenExpiresThreshold: 600,
+    },
+    customMerge: function(defaultConfig, userConfig) { // 自定义默认配置和用户配置的合并规则,不设置的情况侠会对默认配置和用户配置进行深度合并
+        // defaudltConfig 默认配置
+        // userConfig 用户配置
+        return Object.assign(defaultConfig, userConfig)
+    }
+})
+
+
+// 以如下配置为例
+// {
+//   "tokenExpiresIn": 7200,
+//   "passwordErrorLimit": 6,
+//   "bindTokenToDevice": false,
+//   "passwordErrorRetryTime": 3600,
+//   "app-plus": {
+//     "tokenExpiresIn": 2592000
+//   },
+//   "service": {
+//     "sms": {
+//       "codeExpiresIn": 300
+//     }
+//   }
+// }
+
+// 获取配置
+uniIdConfig.config() // 获取全部配置,注意:uni-config-center内不存在对应插件目录时会返回空对象
+uniIdConfig.config('tokenExpiresIn') // 指定键值获取配置,返回:7200
+uniIdConfig.config('service.sms.codeExpiresIn') // 指定键值获取配置,返回:300
+uniIdConfig.config('tokenExpiresThreshold', 600) // 指定键值获取配置,如果不存在则取传入的默认值,返回:600
+
+// 获取文件绝对路径
+uniIdConfig.resolve('custom-token.js') // 获取uni-config-center/uni-id/custom-token.js文件的路径
+
+// 引用文件(require)
+uniIDConfig.requireFile('custom-token.js') // 使用require方式引用uni-config-center/uni-id/custom-token.js文件。文件不存在时返回undefined,文件内有其他错误导致require失败时会抛出错误。
+
+// 判断是否包含某文件
+uniIDConfig.hasFile('custom-token.js') // 配置目录是否包含某文件,true: 文件存在,false: 文件不存在
+```

File diff suppressed because it is too large
+ 0 - 0
uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/index.js


+ 13 - 0
uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/package.json

@@ -0,0 +1,13 @@
+{
+    "name": "uni-config-center",
+    "version": "0.0.3",
+    "description": "配置中心",
+    "main": "index.js",
+    "keywords": [],
+    "author": "DCloud",
+    "license": "Apache-2.0",
+    "origin-plugin-dev-name": "uni-config-center",
+    "origin-plugin-version": "0.0.3",
+    "plugin-dev-name": "uni-config-center",
+    "plugin-version": "0.0.3"
+}

+ 36 - 0
uni_modules/uni-id-common/changelog.md

@@ -0,0 +1,36 @@
+## 1.0.18(2024-07-08)
+- checkToken时如果传入的token为空则返回uni-id-check-token-failed错误码以便uniIdRouter能正常跳转
+## 1.0.17(2024-04-26)
+- 兼容uni-app-x对客户端uniPlatform的调整(uni-app-x内uniPlatform区分app-android、app-ios)
+## 1.0.16(2023-04-25)
+- 新增maxTokenLength配置,用于限制数据库用户记录token数组的最大长度
+## 1.0.15(2023-04-06)
+- 修复部分语言国际化出错的Bug
+## 1.0.14(2023-03-07)
+- 修复 admin用户包含其他角色时未包含在token的Bug
+## 1.0.13(2022-07-21)
+- 修复 创建token时未传角色权限信息生成的token不正确的bug
+## 1.0.12(2022-07-15)
+- 提升与旧版本uni-id的兼容性(补充读取配置文件时回退平台app-plus、h5),但是仍推荐使用新平台名进行配置(app、web)
+## 1.0.11(2022-07-14)
+- 修复 部分情况下报`read property 'reduce' of undefined`的错误
+## 1.0.10(2022-07-11)
+- 将token存储在用户表的token字段内,与旧版本uni-id保持一致
+## 1.0.9(2022-07-01)
+- checkToken兼容token内未缓存角色权限的情况,此时将查库获取角色权限
+## 1.0.8(2022-07-01)
+- 修复clientDB默认依赖时部分情况下获取不到uni-id配置的Bug
+## 1.0.7(2022-06-30)
+- 修复config文件不合法时未抛出具体错误的Bug
+## 1.0.6(2022-06-28)
+- 移除插件内的数据表schema
+## 1.0.5(2022-06-27)
+- 修复使用多应用配置时报`Cannot read property 'appId' of undefined`的Bug
+## 1.0.4(2022-06-27)
+- 修复使用自定义token内容功能报错的Bug [详情](https://ask.dcloud.net.cn/question/147945)
+## 1.0.2(2022-06-23)
+- 对齐旧版本uni-id默认配置
+## 1.0.1(2022-06-22)
+- 补充对uni-config-center的依赖
+## 1.0.0(2022-06-21)
+- 提供uni-id token创建、校验、刷新接口,简化旧版uni-id公共模块

+ 84 - 0
uni_modules/uni-id-common/package.json

@@ -0,0 +1,84 @@
+{
+	"id": "uni-id-common",
+	"displayName": "uni-id-common",
+	"version": "1.0.18",
+	"description": "包含uni-id token生成、校验、刷新功能的云函数公共模块",
+	"keywords": [
+        "uni-id-common",
+        "uniCloud",
+        "token",
+        "权限"
+    ],
+	"repository": "https://gitcode.net/dcloud/uni-id-common",
+    "engines": {
+	},
+    "dcloudext": {
+        "sale": {
+			"regular": {
+				"price": 0
+			},
+			"sourcecode": {
+				"price": 0
+			}
+		},
+		"contact": {
+			"qq": ""
+		},
+		"declaration": {
+			"ads": "无",
+			"data": "无",
+			"permissions": "无"
+		},
+        "npmurl": "",
+        "type": "unicloud-template-function"
+	},
+	"uni_modules": {
+		"dependencies": ["uni-config-center"],
+		"encrypt": [],
+		"platforms": {
+			"cloud": {
+				"tcb": "y",
+                "aliyun": "y",
+                "alipay": "n"
+			},
+			"client": {
+				"Vue": {
+					"vue2": "u",
+					"vue3": "u"
+				},
+				"App": {
+					"app-vue": "u",
+					"app-nvue": "u"
+				},
+				"H5-mobile": {
+					"Safari": "u",
+					"Android Browser": "u",
+					"微信浏览器(Android)": "u",
+					"QQ浏览器(Android)": "u"
+				},
+				"H5-pc": {
+					"Chrome": "u",
+					"IE": "u",
+					"Edge": "u",
+					"Firefox": "u",
+					"Safari": "u"
+				},
+				"小程序": {
+					"微信": "u",
+					"阿里": "u",
+					"百度": "u",
+					"字节跳动": "u",
+					"QQ": "u",
+					"钉钉": "u",
+					"快手": "u",
+					"飞书": "u",
+                    "京东": "u"
+				},
+				"快应用": {
+					"华为": "u",
+					"联盟": "u"
+				}
+			}
+		}
+	}
+}

+ 3 - 0
uni_modules/uni-id-common/readme.md

@@ -0,0 +1,3 @@
+# uni-id-common
+
+文档请参考:[uni-id-common](https://uniapp.dcloud.net.cn/uniCloud/uni-id-common.html)

File diff suppressed because it is too large
+ 0 - 0
uni_modules/uni-id-common/uniCloud/cloudfunctions/common/uni-id-common/index.js


+ 20 - 0
uni_modules/uni-id-common/uniCloud/cloudfunctions/common/uni-id-common/package.json

@@ -0,0 +1,20 @@
+{
+    "name": "uni-id-common",
+    "version": "1.0.18",
+    "description": "uni-id token生成、校验、刷新",
+    "main": "index.js",
+    "homepage": "https:\/\/uniapp.dcloud.io\/uniCloud\/uni-id-common.html",
+    "repository": {
+        "type": "git",
+        "url": "git+https:\/\/gitee.com\/dcloud\/uni-id-common.git"
+    },
+    "author": "DCloud",
+    "license": "Apache-2.0",
+    "dependencies": {
+        "uni-config-center": "file:..\/..\/..\/..\/..\/uni-config-center\/uniCloud\/cloudfunctions\/common\/uni-config-center"
+    },
+    "origin-plugin-dev-name": "uni-id-common",
+    "origin-plugin-version": "1.0.18",
+    "plugin-dev-name": "uni-id-common",
+    "plugin-version": "1.0.18"
+}

Some files were not shown because too many files changed in this diff