| @@ -4,7 +4,8 @@ | |||
| "pages/payOrder/payOrder", | |||
| "pages/login/login", | |||
| "pages/userProtocol/userProtocol", | |||
| "pages/upload/upload" | |||
| "pages/upload/upload", | |||
| "pages/checkImg/checkImg" | |||
| ], | |||
| "window": { | |||
| "backgroundTextStyle": "light", | |||
| @@ -0,0 +1,51 @@ | |||
| // pages/checkImg/checkImg.ts | |||
| Page({ | |||
| /** | |||
| * 页面的初始数据 | |||
| */ | |||
| data: { | |||
| }, | |||
| /** | |||
| * 生命周期函数--监听页面加载 | |||
| */ | |||
| onLoad(options) { | |||
| console.log(options); | |||
| }, | |||
| /** | |||
| * 生命周期函数--监听页面显示 | |||
| */ | |||
| onShow() { | |||
| }, | |||
| previewImage() { | |||
| wx.previewImage({ | |||
| }) | |||
| }, | |||
| /** | |||
| * 页面相关事件处理函数--监听用户下拉动作 | |||
| */ | |||
| onPullDownRefresh() { | |||
| }, | |||
| /** | |||
| * 页面上拉触底事件的处理函数 | |||
| */ | |||
| onReachBottom() { | |||
| }, | |||
| /** | |||
| * 用户点击右上角分享 | |||
| */ | |||
| onShareAppMessage() { | |||
| } | |||
| }) | |||
| @@ -0,0 +1,6 @@ | |||
| { | |||
| "navigationBarTitleText": "我的写真", | |||
| "navigationBarBackgroundColor": "#333333", | |||
| "navigationBarTextStyle": "white", | |||
| "usingComponents": {} | |||
| } | |||
| @@ -0,0 +1,4 @@ | |||
| /* pages/checkImg/checkImg.wxss */ | |||
| page { | |||
| background-color: #333333; | |||
| } | |||
| @@ -0,0 +1,19 @@ | |||
| <!--pages/checkImg/checkImg.wxml--> | |||
| <text>pages/checkImg/checkImg.wxml</text> | |||
| <swiper> | |||
| <swiper-item> | |||
| <image src="../../asset/image/test.png" mode="" /> | |||
| </swiper-item> | |||
| <swiper-item> | |||
| <image src="../../asset/image/test.png" mode="" /> | |||
| </swiper-item> | |||
| <swiper-item> | |||
| <image src="../../asset/image/test.png" mode="" /> | |||
| </swiper-item> | |||
| <swiper-item> | |||
| <image src="../../asset/image/test.png" mode="" /> | |||
| </swiper-item> | |||
| <swiper-item> | |||
| <image src="../../asset/image/test.png" mode="" /> | |||
| </swiper-item> | |||
| </swiper> | |||
| @@ -6,8 +6,16 @@ import Dialog from '@vant/weapp/dialog/dialog'; | |||
| Page({ | |||
| data: { | |||
| isLogin: false, | |||
| itemList: [1, 1, 1, 1, 1, 1], | |||
| showPrivacy: false | |||
| itemList: [ | |||
| { id: 1 }, | |||
| { id: 2 }, | |||
| { id: 3 }, | |||
| { id: 4 }, | |||
| { id: 5 }, | |||
| { id: 6 }, | |||
| ], | |||
| showPrivacy: false, | |||
| avatarUrl: "../../asset/icon/logo-5.png" | |||
| }, | |||
| // 事件处理函数 | |||
| @@ -94,16 +102,6 @@ Page({ | |||
| } | |||
| }, | |||
| getUserProfile() { | |||
| // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗 | |||
| wx.getUserProfile({ | |||
| desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写 | |||
| success: (res) => { | |||
| console.log(res, 'getUserProfile') | |||
| } | |||
| }) | |||
| }, | |||
| getUserPhone(e) { | |||
| const sessionKey = wx.getStorageSync('sessionKey') | |||
| this.doGetUserPhone(e.detail.encryptedData, e.detail.iv, sessionKey, request.appId) | |||
| @@ -150,8 +148,12 @@ Page({ | |||
| }) | |||
| }, | |||
| goCheckImage(){ | |||
| goCheckImage(e) { | |||
| console.log(e, 'e'); | |||
| const id = e.currentTarget.dataset.id | |||
| wx.navigateTo({ | |||
| url: `/pages/checkImg/checkImg?id=${id}`, | |||
| }) | |||
| }, | |||
| onShareAppMessage() { | |||
| @@ -26,6 +26,14 @@ page { | |||
| padding-top: 60rpx; | |||
| z-index: -8; | |||
| .getUserinfo { | |||
| background-color: #ffffff00; | |||
| &::after { | |||
| border: none; | |||
| } | |||
| } | |||
| .avatar { | |||
| width: 220rpx; | |||
| height: 220rpx; | |||
| @@ -5,9 +5,9 @@ | |||
| </view> | |||
| <view class="content"> | |||
| <block bindtap="getUserProfile"> | |||
| <block> | |||
| <view class="avatar"> | |||
| <image src="../../asset/icon/logo-5.png" mode="" /> | |||
| <image src="{{ avatarUrl }}" mode="" /> | |||
| </view> | |||
| <view wx:if="{{ !isLogin }}" class="nickname">微信用户</view> | |||
| <view wx:if="{{ isLogin }}" class="nickname">用户名</view> | |||
| @@ -25,7 +25,7 @@ | |||
| </view> | |||
| </view> | |||
| <view class="photoList" bindtap="goCheckImage"> | |||
| <view class="photoList" bindtap="goCheckImage" data-id="{{ item.id }}"> | |||
| <image wx:for="{{[1,1,1,1]}}" wx:key="index" src="../../asset/image/test.png" mode="widthFix" /> | |||
| </view> | |||
| </view> | |||
| @@ -7,15 +7,24 @@ Page({ | |||
| * 页面的初始数据 | |||
| */ | |||
| data: { | |||
| topTitle: "请添加一张正面照片", | |||
| showScanLine: false, | |||
| isUploaded: false, | |||
| tempFilePath: "" | |||
| isSuccess: false, | |||
| tempFilePath: "", | |||
| onlineFilePath: "", | |||
| id: "" | |||
| }, | |||
| /** | |||
| * 生命周期函数--监听页面加载 | |||
| */ | |||
| onLoad() { | |||
| onLoad(options) { | |||
| if (options.id) { | |||
| this.setData({ | |||
| id: options.id | |||
| }) | |||
| } | |||
| }, | |||
| @@ -23,7 +32,6 @@ Page({ | |||
| * 生命周期函数--监听页面显示 | |||
| */ | |||
| onShow() { | |||
| wx.hideHomeButton() | |||
| app.tokenCallBack = res => { | |||
| this.setData({ | |||
| isLogin: res | |||
| @@ -41,12 +49,139 @@ Page({ | |||
| success: res => { | |||
| that.setData({ | |||
| tempFilePath: res.tempFiles[0].tempFilePath, | |||
| isUploaded: true | |||
| showScanLine: true, | |||
| isUploaded: true, | |||
| isSuccess: false | |||
| }) | |||
| that.imgCheckByFace() | |||
| } | |||
| }) | |||
| }, | |||
| // 检查图片是否符合人脸规范 | |||
| imgCheckByFace() { | |||
| const that = this | |||
| const filePath = that.data.tempFilePath | |||
| const BaseUrl = request.baseUrl | |||
| wx.uploadFile({ | |||
| filePath, | |||
| url: BaseUrl + "/api/userDigital/checkPhoto", | |||
| name: 'file', | |||
| formData: { | |||
| user: "test", | |||
| }, | |||
| success: res => { | |||
| const code = JSON.parse(res.data).code | |||
| if (code == 200) { | |||
| that.imgCheckByBaidu() | |||
| } else { | |||
| that.setData({ | |||
| showScanLine: false | |||
| }) | |||
| wx.showToast({ | |||
| title: '图片不合规范,请重新上传', | |||
| icon: "none" | |||
| }) | |||
| } | |||
| }, | |||
| fail: err => { | |||
| wx.showToast({ | |||
| title: '上传失败,请稍后再试', | |||
| icon: "none" | |||
| }) | |||
| } | |||
| }) | |||
| }, | |||
| // 检查图片合法性 | |||
| imgCheckByBaidu() { | |||
| const that = this | |||
| const filePath = that.data.tempFilePath | |||
| const BaseUrl = request.baseUrl | |||
| wx.uploadFile({ | |||
| filePath, | |||
| url: BaseUrl + "/api/baidu/checkPhoto", | |||
| name: 'file', | |||
| formData: { | |||
| user: "test", | |||
| }, | |||
| success: res => { | |||
| const code = JSON.parse(res.data).code | |||
| if (code == 200) { | |||
| that.doUploadImg() | |||
| } else { | |||
| that.setData({ | |||
| showScanLine: false | |||
| }) | |||
| wx.showToast({ | |||
| title: '图片不合规范,请重新上传', | |||
| icon: "none" | |||
| }) | |||
| } | |||
| }, | |||
| fail: err => { | |||
| wx.showToast({ | |||
| title: '上传失败,请稍后再试', | |||
| icon: "none" | |||
| }) | |||
| } | |||
| }) | |||
| }, | |||
| // 上传图片 | |||
| doUploadImg() { | |||
| const that = this | |||
| const filePath = that.data.tempFilePath | |||
| const BaseUrl = request.baseUrl | |||
| wx.uploadFile({ | |||
| filePath, | |||
| url: BaseUrl + "/api/upload/awsImgUpload", | |||
| name: 'file', | |||
| formData: { | |||
| user: "test", | |||
| }, | |||
| header: { | |||
| "Content-Type": "multipart/form-data" | |||
| }, | |||
| success: res => { | |||
| console.log(res, 'res'); | |||
| const code = JSON.parse(res.data).code | |||
| if (code == 200) { | |||
| that.setData({ | |||
| showScanLine: false, | |||
| isSuccess: true | |||
| }) | |||
| wx.showToast({ | |||
| title: '上传成功!', | |||
| icon: "success" | |||
| }) | |||
| } else { | |||
| wx.showToast({ | |||
| title: '服务器繁忙,请稍后再试', | |||
| icon: "none" | |||
| }) | |||
| that.setData({ | |||
| showScanLine: false | |||
| }) | |||
| } | |||
| }, | |||
| fail: err => { | |||
| wx.showToast({ | |||
| title: '上传失败,请稍后再试', | |||
| icon: "none" | |||
| }) | |||
| } | |||
| }) | |||
| }, | |||
| // 确认照片 | |||
| confirmImage() { | |||
| }, | |||
| /** | |||
| * 页面相关事件处理函数--监听用户下拉动作 | |||
| */ | |||
| @@ -15,11 +15,33 @@ page { | |||
| .uploadArea { | |||
| position: relative; | |||
| width: 60%; | |||
| height: 700rpx; | |||
| height: 600rpx; | |||
| background-color: #393b3d; | |||
| margin: 50rpx auto; | |||
| border-radius: 40rpx; | |||
| @keyframes scanAnimation { | |||
| 0% { | |||
| transform: translateY(-100%); | |||
| } | |||
| 100% { | |||
| transform: translateY(150%); | |||
| } | |||
| } | |||
| .scanLine { | |||
| position: absolute; | |||
| top: 0; | |||
| left: 0; | |||
| width: 100%; | |||
| height: 40%; | |||
| background: linear-gradient(180deg, rgba(0, 255, 51, 0) 50%, #00ff33 300%); | |||
| border-bottom: 2px solid #00ff33; | |||
| animation: scanAnimation 2s linear infinite; | |||
| z-index: 9; | |||
| } | |||
| .scanBorder { | |||
| position: absolute; | |||
| top: 50%; | |||
| @@ -42,7 +64,7 @@ page { | |||
| top: 50%; | |||
| left: 50%; | |||
| transform: translate(-50%, -50%); | |||
| width: 78%; | |||
| width: 70%; | |||
| } | |||
| } | |||
| @@ -59,6 +81,22 @@ page { | |||
| margin: auto; | |||
| } | |||
| .reUpload { | |||
| width: 70%; | |||
| height: 100rpx; | |||
| line-height: 100rpx; | |||
| font-weight: 600; | |||
| background-color: #292929; | |||
| color: #ff4f00; | |||
| font-size: 32rpx; | |||
| text-align: center; | |||
| border-radius: 50rpx; | |||
| margin: auto; | |||
| border: 1px solid #ff4f00; | |||
| box-sizing: border-box; | |||
| margin-top: 30rpx; | |||
| } | |||
| .notice { | |||
| margin-top: 50rpx; | |||
| @@ -1,15 +1,21 @@ | |||
| <!--pages/upload/upload.wxml--> | |||
| <view class="content"> | |||
| <view class="title">请添加一整正脸照片</view> | |||
| <view class="title">{{ topTitle }}</view> | |||
| <view class="uploadArea" bindtap="chooseImage"> | |||
| <view wx:if="{{ showScanLine }}" class="scanLine"></view> | |||
| <image class="scanBorder" src="../../asset/icon/scanBorder.png" mode="" /> | |||
| <image wx:if="{{ !isUploaded }}" class="addBtn" src="../../asset/icon/add.png" mode="widthFix" /> | |||
| <image wx:if="{{ isUploaded }}" class="chooseImage" src="{{ tempFilePath }}" mode="widthFix" /> | |||
| </view> | |||
| <view> | |||
| <block wx:if="{{ !isSuccess }}"> | |||
| <button class="uploadImgBtn" bindtap="chooseImage">上传照片</button> | |||
| </view> | |||
| </block> | |||
| <block wx:if="{{ isSuccess }}"> | |||
| <button class="uploadImgBtn" bindtap="confirmImage">就这张了</button> | |||
| <button class="reUpload" bindtap="chooseImage">重新上传</button> | |||
| </block> | |||
| <view class="notice"> | |||
| <view class="text">请参考范例上传五官清晰的照片</view> | |||
| @@ -1,5 +1,3 @@ | |||
| const url = 'https://zhixiangtest.malls.iformall.com/C' | |||
| class request { | |||
| constructor(address) { | |||
| if (address) { | |||
| @@ -9,10 +7,17 @@ class request { | |||
| /** | |||
| * 配置 | |||
| */ | |||
| /** | |||
| * @description 基地址 | |||
| * @returns {string} https://zhixiangtest.malls.iformall.com/C | |||
| */ | |||
| baseUrl = 'https://zhixiangtest.malls.iformall.com/C' | |||
| /** | |||
| * 请求路径前缀 | |||
| */ | |||
| address = url; | |||
| address = 'https://zhixiangtest.malls.iformall.com/C'; | |||
| /** | |||
| * 请求头 | |||
| */ | |||
| @@ -19,7 +19,14 @@ | |||
| { | |||
| "name": "", | |||
| "pathName": "pages/upload/upload", | |||
| "query": "", | |||
| "query": "id=123456", | |||
| "launchMode": "default", | |||
| "scene": null | |||
| }, | |||
| { | |||
| "name": "", | |||
| "pathName": "pages/checkImg/checkImg", | |||
| "query": "id=1", | |||
| "launchMode": "default", | |||
| "scene": null | |||
| } | |||
| @@ -33,6 +33,7 @@ | |||
| "miniprogram/pages/payOrder/payOrder.js", | |||
| "miniprogram/pages/login/login.js", | |||
| "miniprogram/pages/upload/upload.js", | |||
| "miniprogram/pages/checkImg/checkImg.js", | |||
| ], | |||
| "exclude": [ | |||
| "node_modules" | |||