浏览代码

Merge branch 'master' of http://git.lcpcp.cc/root/lcoco

WIN-8NDK4S1KEGQ\Administrator 2 年之前
父节点
当前提交
3580311c99
共有 10 个文件被更改,包括 123 次插入38 次删除
  1. 1 0
      README.md
  2. 1 1
      api/common.js
  3. 5 0
      main.js
  4. 1 1
      pages.json
  5. 1 0
      pages/login/model/loginContent.nvue
  6. 15 10
      pages/perfect/cards.vue
  7. 14 2
      pages/perfect/nickname.vue
  8. 2 2
      service/ajax.js
  9. 19 0
      service/tools.js
  10. 64 22
      service/txOssSts.js

+ 1 - 0
README.md

@@ -1,5 +1,6 @@
 # 功能列表
 (优先做登录,首页,个人中心这三个部分,其余往后放)
+http://www.icoco.tech:9999/doc.html
 
 ## 1.登录&注册
 

+ 1 - 1
api/common.js

@@ -4,5 +4,5 @@ const commonUrl = '/utility/'
 // 发送短信
 export const commonSend = (data) => request(commonUrl + 'send', 'post', { ...data })
 // 获取sts
-export const getTxySts = (data) => request(commonUrl + 'credential', 'post', { ...data })
+export const getTxySts = (data) => request(commonUrl + 'credential', 'get', { ...data })
 

+ 5 - 0
main.js

@@ -5,6 +5,11 @@ import {
 	router,
 	RouterMount
 } from './service/router.js' //路径换成自己的
+import cosServe from "@/service/txOssSts";
+Vue.prototype.getCosPath = (urlName) => {
+	console.log('getCosPath:路径转换调用')
+	return cosServe.getSignUrl(urlName);
+};
 Vue.use(router)
 // #ifndef VUE3
 import Vue from 'vue'

+ 1 - 1
pages.json

@@ -420,7 +420,7 @@
     "list": [
       {
         "name": "列表调试",
-        "path": "pages/login/index",
+        "path": "/pages/perfect/cards",
         "query": ""
       }
     ]

+ 1 - 0
pages/login/model/loginContent.nvue

@@ -55,6 +55,7 @@ export default {
         console.log(res)
         console.log(res.errCode)
         console.log(res.errMsg)
+        that.isPreLogin=false
       }
     })
     //#endif

+ 15 - 10
pages/perfect/cards.vue

@@ -11,7 +11,7 @@
           <text class="sys-color-green">真实照片</text>
           <text class="sys-color-gray-9">,否则部分功能可能会受限</text>
         </view>
-        <view class="card-img" :class="{'open-img':imgBg}" @click="openPopup" :style="{'height':'calc(100vh - '+navHeight+'px  - 278rpx - 270rpx - env(safe-area-inset-bottom)','background-image':'url('+imgBg+')'}">
+        <view class="card-img" :class="{'open-img':imgBg}" @click="openPopup" :style="{'height':'calc(100vh - '+navHeight+'px  - 278rpx - 270rpx - env(safe-area-inset-bottom)','background-image':'url('+getCosPath(imgBg)+')'}">
           <view class="add-box" v-if="!imgBg">
             <image class="add-img" src="/static/img/common/add.png" mode="aspectFill"></image>
           </view>
@@ -71,7 +71,7 @@ import tools from "@/service/tools";
 import LoginAgreement from "@/pages/login/model/loginAgreement";
 import EnPopup from "@/components/en-utils/en-popup/en-popup";
 import {register} from "@/api/login";
-import txUploadFile from "@/service/txOssSts";
+import cosServe from "@/service/txOssSts";
 export default {
   components: {EnPopup, LoginAgreement, EnNav},
   data() {
@@ -95,18 +95,23 @@ export default {
         sizeType: ['original'], //可以指定是原图还是压缩图,默认二者都有
         sourceType: ['album'], //从相册选择
         success:  (res) =>{
-          if(res.tempFilePaths.length>0){
-            console.log(res.tempFilePaths)
-            res.tempFilePaths.forEach((item,key)=>{
-              txUploadFile(item,'gallery').then((res)=>{
-                console.log(res)
+          console.log(res)
+          if(res.tempFiles.length>0){
+            console.log(res.tempFiles)
+            res.tempFiles.forEach((item,key)=>{
+              cosServe.txUploadFile(item,'gallery').then((res)=>{
+                if(key===0){
+                  this.imgBg=res.Location
+                  console.log('this.imgBg:'+this.imgBg)
+                  this.imgBg=cosServe.getSignUrl(this.imgBg)
+                  console.log(this.imgBg)
+                }
+                this.imgList.push(res.Location)
               })
             })
-            this.imgBg=res.tempFilePaths[0]
-            this.imgList=res.tempFilePaths
+            console.log( this.imgList)
             this.isOK=true
           }
-          console.log(JSON.stringify(res.tempFilePaths));
           this.$refs.cardPopup.close()
         }
       });

+ 14 - 2
pages/perfect/nickname.vue

@@ -34,6 +34,7 @@
 <script>
 import EnNav from "@/components/en-utils/en-nav/en-nav";
 import tools from "@/service/tools";
+import {register} from "@/api/login";
 export default {
   components: {EnNav},
   data() {
@@ -58,9 +59,20 @@ export default {
   methods: {
     setNextStep(){
       if(this.isOK){
-        uni.navigateTo({
-          'url':'/pages/perfect/cards'
+        let mobile=uni.getStorageSync('mobile')
+        let dateOfBirth=uni.getStorageSync('dateOfBirth')
+        let gender=uni.getStorageSync('gender')
+        register({'mobile':mobile,'dateOfBirth':dateOfBirth,'gender':gender,'nickname':this.nickname,'password':this.password}).then((res)=>{
+          if(res.code===0){
+            tools.setLoginData(res.data)
+            uni.navigateTo({
+              'url':'/pages/perfect/cards'
+            })
+          }else {
+            tools.error(res.msg)
+          }
         })
+
       }else {
         tools.error('请完善信息')
         this.isShakeBut=true

+ 2 - 2
service/ajax.js

@@ -28,9 +28,9 @@ export const request = (url, method, data, show = false) => {
       method: method || 'post',
       header: {
         'content-type': 'application/json',
-        'apikey': '01ABA77B8BA6F26243D85B5A50FFB88624951C7B3A4078B3F9971983E667D5B8',
         'hversion': '1.0',
-        'Authorization': token
+        'Authorization': 'Bearer cd58ee97-5700-45f3-ae1f-9bebef504fc1'
+        // 'Authorization': 'Bearer '+token
       },
       success: (res) => {
         if (res.statusCode === 200) {

+ 19 - 0
service/tools.js

@@ -375,5 +375,24 @@ tools.setLoginData = function (data) {
 
 }
 
+tools.setCosToken=function (data){
+    uni.setStorageSync('cosToken',data)
+}
+tools.delCosToken=function (data){
+    uni.removeStorageSync('cosToken')
+}
+
+tools.getCosToken=function (){
+  let cosToken= uni.getStorageSync('cosToken')
+    if(!cosToken){
+        return undefined
+    }
+    let time=new Date().getTime()
+    if(cosToken.expiredTime && (cosToken.expiredTime*1000)-time >100000){
+        return  cosToken
+    }else {
+        return undefined
+    }
+}
 
 export default tools

+ 64 - 22
service/txOssSts.js

@@ -12,12 +12,12 @@
  * @param {area} 地区
  * @return {string|boolean} 成功返回文件地址,失败返回false
  */
-import COS from "./cos-wx-sdk-v5.min"
-
-console.log(COS)
+import COS from "cos-js-sdk-v5"
 import tools from "./tools";
 import {getTxySts} from "@/api/common";
 
+
+
 // 存储桶名称,由bucketname-appid 组成,appid必须填入,可以在COS控制台查看存储桶名称。 https://console.cloud.tencent.com/cos5/bucket
 let Bucket = 'icoco-1317650740';
 // 存储桶Region可以在COS控制台指定存储桶的概览页查看 https://console.cloud.tencent.com/cos5/bucket/
@@ -26,32 +26,52 @@ let Region = 'ap-guangzhou';
 
 let cos=null;
 function startCos(){
+    console.log('startCos-----------------')
     cos = new COS({
         getAuthorization: function (options, callback) {
             console.log('---------------获取初始化信息')
-            getTxySts().then((res)=>{
-                if(res.code===0){
-                    callback({
-                        TmpSecretId: res.data.credentials.tmpSecretId,
-                        TmpSecretKey: res.data.credentials.tmpSecretKey,
-                        XCosSecurityToken: res.data.credentials.sessionToken,
-                        StartTime: res.data.startTime, // 时间戳,单位秒,如:1580000000,建议返回服务器时间作为签名的开始时间,避免用户浏览器本地时间偏差过大导致签名错误
-                        ExpiredTime: res.data.expiredTime, // 时间戳,单位秒,如:1580000900
-                    })
-                }
-            })
+            let  cosToken=tools.getCosToken()
+            if(cosToken){
+                callback({
+                    TmpSecretId: cosToken.credentials.tmpSecretId,
+                    TmpSecretKey: cosToken.credentials.tmpSecretKey,
+                    XCosSecurityToken: cosToken.credentials.sessionToken,
+                    StartTime: cosToken.startTime*1, // 时间戳,单位秒,如:1580000000,建议返回服务器时间作为签名的开始时间,避免用户浏览器本地时间偏差过大导致签名错误
+                    ExpiredTime: cosToken.expiredTime*1, // 时间戳,单位秒,如:1580000900
+                })
+            }else {
+                getTxySts().then((res)=>{
+
+                    console.log('---------------获取初始化信息')
+                    if(res.code===0){
+                        tools.setCosToken(res.data)
+                        callback({
+                            TmpSecretId: res.data.credentials.tmpSecretId,
+                            TmpSecretKey: res.data.credentials.tmpSecretKey,
+                            XCosSecurityToken: res.data.credentials.sessionToken,
+                            StartTime: res.data.startTime*1, // 时间戳,单位秒,如:1580000000,建议返回服务器时间作为签名的开始时间,避免用户浏览器本地时间偏差过大导致签名错误
+                            ExpiredTime: res.data.expiredTime*1, // 时间戳,单位秒,如:1580000900
+                        })
+                        setTimeout(()=>{
+                            cos=null
+                            tools.delCosToken()
+                        },(res.data.expiredTime-res.data.startTime))
+                    }
+                })
+            }
+
 
         }
     });
 }
-
+let cosServe={}
 /**
  * COS文件上传
  * @param file
  * @param folder 上传目录
  * @returns {Promise<unknown>}
  */
-function txUploadFile(file,folder){
+cosServe.txUploadFile=function (file,folder){
     if(cos===null){
         console.log('对象初始化')
         //初始化对象
@@ -63,13 +83,13 @@ function txUploadFile(file,folder){
     return new Promise((resolve, reject) => {
         console.log('cos-*-------------------------',cos)
         console.log(file)
-        console.log(folder+'/'+tools.getDate()+tools.getRandFileName(file))
+        console.log(folder+'/'+tools.getDate()+tools.getRandFileName(file.name))
         // 分片上传文件
-        cos.postObject({
+        cos.putObject({
             Bucket: Bucket,
             Region: Region,
-            Key: folder+'/'+tools.getDate()+'/'+tools.getRandFileName(file),
-            FilePath: file,
+            Key: folder+'/'+tools.getDate()+'/'+tools.getRandFileName(file.name),
+            Body: file,
             onHashProgress: function (progressData) {
                 console.log('校验中', JSON.stringify(progressData));
             },
@@ -78,7 +98,8 @@ function txUploadFile(file,folder){
             },
         }, function (err, data) {
             tools.hideLoading()
-            console.log(err, data);
+            console.log(err);
+            console.log(data);
             if(data.Location!==undefined){
                 data.Location='https://'+data.Location;
                 resolve( data)
@@ -92,5 +113,26 @@ function txUploadFile(file,folder){
 }
 
 
+cosServe.getSignUrl=function (url){
+    if(cos===null){
+        startCos();
+    }
+    console.log(url)
+    url= url.replace('https://','')
+    url= url.replace('http://','')
+    url= url.replace('icoco-1317650740.cos.ap-guangzhou.myqcloud.com','')
+    console.log(url)
+    console.log('开始签名----------------------------'+url)
+    let newUrl= cos.getObjectUrl({
+        Bucket: Bucket,
+        Region: Region,
+        Key: url, /* 存储在桶里的对象键(例如1.jpg,a/b/test.txt),支持中文,必须字段 */
+        Sign: true,
+    })
+    console.log('签名完成----------------------------'+newUrl)
+    console.log(newUrl)
+    return newUrl
+}
+
 
-export default txUploadFile
+export default cosServe