Browse Source

upload

master
HolyKnightIX 1 year ago
parent
commit
4fad9049eb
10 changed files with 389 additions and 133 deletions
  1. +1
    -1
      miniprogram/app.js
  2. +42
    -20
      miniprogram/pages/checkImg/checkImg.js
  3. +2
    -2
      miniprogram/pages/checkImg/checkImg.wxml
  4. +225
    -85
      miniprogram/pages/index/index.js
  5. +6
    -6
      miniprogram/pages/index/index.wxml
  6. +62
    -8
      miniprogram/pages/login/login.js
  7. +41
    -5
      miniprogram/pages/upload/upload.js
  8. +2
    -1
      miniprogram/pages/upload/upload.wxml
  9. +5
    -2
      miniprogram/utils/request.js
  10. +3
    -3
      project.private.config.json

+ 1
- 1
miniprogram/app.js View File

@@ -1,5 +1,5 @@
const request = require('./utils/request')
import { timestampToTime } from './utils/util'
const request = require('./utils/request')

App({
globalData: {


+ 42
- 20
miniprogram/pages/checkImg/checkImg.js View File

@@ -1,3 +1,8 @@
const app = getApp()
import request from '../../utils/request'
import Dialog from '@vant/weapp/dialog/dialog';
const { appId } = require("../../utils/request");

// pages/checkImg/checkImg.ts
Page({

@@ -6,24 +11,9 @@ Page({
*/
data: {
currentIndex: 0,
swiperList: [
{
id: "1",
src: "https://suimang.oss-accelerate.aliyuncs.com/capi/2023-09-21/4f3cf1dea65142a2945d5412bee85ca2.jpg?x-oss-process=image/resize,w_10000/quality,q_60"
},
{
id: "2",
src: "https://suimang.oss-accelerate.aliyuncs.com/capi/2023-09-21/4f3cf1dea65142a2945d5412bee85ca2.jpg?x-oss-process=image/resize,w_10000/quality,q_60"
},
{
id: "3",
src: "https://suimang.oss-accelerate.aliyuncs.com/capi/2023-09-21/4f3cf1dea65142a2945d5412bee85ca2.jpg?x-oss-process=image/resize,w_10000/quality,q_60"
},
{
id: "4",
src: "https://suimang.oss-accelerate.aliyuncs.com/capi/2023-09-21/4f3cf1dea65142a2945d5412bee85ca2.jpg?x-oss-process=image/resize,w_10000/quality,q_60"
}
]
id: "",
swiperList: [],
title: ""
},

/**
@@ -31,12 +21,44 @@ Page({
*/
onLoad(options) {
console.log(options);
this.setData({
id: options.id
})
app.tokenCallBack = token => {
if (!token) {
wx.redirectTo({
url: '/pages/login/login',
})
} else {
this.getImageDetail(options.id)
}
}
},

/**
* 生命周期函数--监听页面显示
*/
onShow() {
const isLogin = wx.getStorageSync('token')
if (isLogin) {
this.getImageDetail(this.data.id)
}
},

getImageDetail(id) {
const that = this
console.log(id, 'id');
request.get({
url: `/api/digitalAvatarPhoto/findById?id=${id}`
}).then(res => {
console.log(res, 'getImageDetail');
that.setData({
swiperList: res.data.photoList,
title: res.data.title,
})
}).catch(err => {
console.log(err, 'err');
})

},

@@ -50,7 +72,7 @@ Page({
previewImage() {
const array = []
this.data.swiperList.forEach(item => {
array.push(item.src)
array.push(item.image)
})
wx.previewImage({
urls: array,
@@ -71,7 +93,7 @@ Page({
const list = this.data.swiperList
const filePath = "zhixiangImg.png"

const url = list[index].src
const url = list[index].image

wx.downloadFile({
url,


+ 2
- 2
miniprogram/pages/checkImg/checkImg.wxml View File

@@ -1,9 +1,9 @@
<!--pages/checkImg/checkImg.wxml-->
<view class="name">模板名称</view>
<view class="name">{{title}}</view>

<swiper class="imageList" current="{{ currentIndex }}" bindchange="swiperChanged">
<swiper-item wx:for="{{ swiperList }}" wx:key="index">
<image src="{{ item.src }}" mode="widthFix" bindtap="previewImage" data-src="{{ item.src }}" />
<image src="{{ item.image }}" mode="widthFix" bindtap="previewImage" data-image="{{ item.image }}" />
</swiper-item>
</swiper>



+ 225
- 85
miniprogram/pages/index/index.js View File

@@ -1,4 +1,5 @@
const app = getApp()
const updateManager = wx.getUpdateManager()
import request from '../../utils/request'
import { timestampToTime } from '../../utils/util'
import Dialog from '@vant/weapp/dialog/dialog';
@@ -6,107 +7,67 @@ import Dialog from '@vant/weapp/dialog/dialog';
Page({
data: {
isLogin: false,
itemList: [
{ id: 1 },
{ id: 2 },
{ id: 3 },
{ id: 4 },
{ id: 5 },
{ id: 6 },
],
itemList: [],
showPrivacy: false,
avatarUrl: "../../asset/icon/logo-5.png"
currentIndex: 1,
avatarUrl: "../../asset/icon/logo-5.png",
timer: null
},
// 事件处理函数

clickPrivacy(e) {

},

closePrivacy() {
wx.exitMiniProgram()
},
onLoad(option) {
wx.hideHomeButton()

getPrivacySetting() {
const canIUsePrivacy = wx.canIUse('getPrivacySetting')
console.log(canIUsePrivacy, 'canIUse getPrivacySetting')
if (canIUsePrivacy) {
wx.getPrivacySetting({
success: res => {
console.log(res, 'getPrivacySetting') // 返回结果为: res = { needAuthorization: true/false, privacyContractName: '《xxx隐私保护指引》' }
if (res.needAuthorization) {
// 需要弹出隐私协议
this.setData({
showPrivacy: true
})
} else {
// this.setData({
// showPrivacy: true
// })
// 用户已经同意过隐私协议,所以不需要再弹出隐私协议,也能调用已声明过的隐私接口
// wx.getUserProfile()
// wx.chooseMedia()
// wx.getClipboardData()
// wx.startRecord()
// this.setData({
// showPrivacy: true
// })
}
},
fail: () => { },
complete: () => { }
// 携带机器识别码进入
if (option.machineQrcodeId) {
this.setData({
machineQrcodeId: option.machineQrcodeId
})
}
},

handleAgreePrivacyAuthorization() {
console.log('Privacy Agreed!');
this.setData({
showPrivacy: false
})
// 用户同意隐私协议事件回调
// 用户点击了同意,之后所有已声明过的隐私接口和组件都可以调用了
// wx.getUserProfile()
// wx.chooseMedia()
// wx.getClipboardData()
// wx.startRecord()
},

handleOpenPrivacyContract() {
// 打开隐私协议页面
wx.openPrivacyContract({
success: () => {
// this.setData({
// showPrivacy: false
// })
}, // 打开成功
fail: () => { }, // 打开失败
complete: () => { }
// 更新提示
updateManager.onUpdateReady(function () {
wx.showModal({
title: '更新提示',
content: '新版本已经准备好,是否重启应用?',
success: function (res) {
if (res.confirm) {
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate()
}
}
})
})
},

onLoad(option) {
wx.hideHomeButton()
this.getPrivacySetting()
// 直接进入页面,token回调返回时
app.tokenCallBack = res => {
this.setData({
isLogin: res
})
wx.showLoading({
title: '加载中',
})
this.getImageList(10, this.data.currentIndex)
}
},

onShow() {
const isLogin = wx.getStorageSync('token')
const isPay = wx.getStorageSync('isPay')
this.setData({
isLogin
isLogin,
currentIndex: 1
})
app.tokenCallBack = res => {
this.setData({
isLogin: res
if (isLogin) {
wx.showLoading({
title: '加载中',
})
this.getImageList(10, this.data.currentIndex)
if (this.data.machineQrcodeId && !isPay) {
this.getPayInfo(this.data.machineQrcodeId)
}
}
},

getUserPhone(e) {
const sessionKey = wx.getStorageSync('sessionKey')
this.doGetUserPhone(e.detail.encryptedData, e.detail.iv, sessionKey, request.appId)
},

/** 获取手机号授权 */
doGetUserPhone(encryptedData, iv, sessionKey, appId) {
request.post({
@@ -129,25 +90,52 @@ Page({
})
},

showMore() {
// 删除作品
showMore(e) {
const that = this
const id = e.currentTarget.dataset.id
Dialog.confirm({
title: '删除作品',
message: '确定要删除这个作品吗?',
})
.then(() => {
// on confirm
that.doDeleta(id)
})
.catch(() => {
// on cancel
});
},

doDeleta(id) {
const that = this
const data = {
id
}
request.post({
url: `/api/digitalAvatarPhoto/delete`,
data
}).then(res => {
console.log(res, 'res');
wx.showToast({
title: '删除成功!',
icon: "success"
})
that.getImageList(10, 1)
}).catch(err => {
console.log(err, 'err');
wx.showToast({
title: '删除失败!',
icon: "error"
})
})
},

goLogin() {
wx.redirectTo({
url: '/pages/login/login',
})
},

// 查看作品详情
goCheckImage(e) {
console.log(e, 'e');
const id = e.currentTarget.dataset.id
@@ -156,6 +144,158 @@ Page({
})
},

/** 获取作品列表 */
getImageList(pageSize, pageNum) {
const that = this
request.get({
url: `/api/digitalAvatarPhoto/list?pageSize=${pageSize}&pageNum=${pageNum}`
}).then(res => {
console.log(res, 'getImageList');
const list = res.data.list
list.forEach(item => {
item.createDate = timestampToTime(item.createDate, 'YYYY-MM-DD hh:mm:ss')
})
if (pageNum == 1) {
this.setData({
itemList: list
})
} else {
const tempList = that.data.itemList
list.forEach(item => {
tempList.push(item)
})
this.setData({
itemList: tempList
})
}
if (!res.data.endRow) {
wx.showToast({
title: '已加载全部写真',
icon: "success"
})
}

wx.hideLoading()
}).catch(err => {
console.log(err, 'err');
wx.hideLoading()
})
},

// 下来加载更多
loadMoreData() {
const currentIndex = this.data.currentIndex + 1
this.setData({
currentIndex
})
wx.showLoading({
title: '加载中',
})
this.getImageList(10, currentIndex)
},

// 获取支付信息
getPayInfo(machineQrcodeId) {
const that = this
const openId = wx.getStorageSync('openId')
const data = {
payVendor: 1,
productId: 1,
machineQrcodeId,
openId
}
request.post({
url: '/api/productOrder/pay_screen',
data
}).then(res => {
console.log(res, 'res');
const data = {
timeStamp: res.data.timeStamp,
nonceStr: res.data.nonceStr,
package: res.data.package,
signType: res.data.signType,
paySign: res.data.paySign,
payOrderId: res.data.payOrderId
}
that.doPay(data)
}).catch(err => {
console.log(err, 'err');
wx.showToast({
title: '订单信息获取失败,请重新扫码',
icon: "none"
})
})
},

// 拉起收银台
doPay(data) {
const that = this
// 进入此阶段,无论支付是否成功,不再拉起收银台
wx.setStorageSync('isPay', true)
wx.requestPayment({
timeStamp: data.timeStamp,
nonceStr: data.nonceStr,
package: data.package,
signType: data.signType ? data.signType : "MD5",
paySign: data.paySign,
success: res => {
wx.showLoading({
title: '订单处理中',
})
// 检查支付状态
that.setData({
timer: setInterval(() => {
that.checkPayStatus(data.payOrderId, true)
}, 1000)
})
},
fail: res => {
console.log(res, 'Fail!!!!');
wx.showLoading({
title: '订单处理中',
})
// 检查支付状态
that.setData({
timer: setInterval(() => {
that.checkPayStatus(data.payOrderId, false)
}, 1000)
})
// wx.showToast({
// title: '支付失败,请重新扫码支付',
// icon: 'none'
// })
},
complete: res => { }
});
},

checkPayStatus(id, isSuccess) {
const that = this
request.get({
url: `/api/productOrder/findStatus?orderNumber=${id}`
}).then(res => {
console.log(res, 'res');
const timer = that.data.timer
if (res.data.orderStatus == 3) {
clearInterval(timer)
wx.showToast({
title: '支付成功!',
icon: "success"
})
wx.hideLoading()
} else if ((res.data.orderStatus == 1 && !isSuccess) || res.data.orderStatus == 4) {
clearInterval(timer)
wx.showToast({
title: '支付取消!',
icon: "error"
})
wx.hideLoading()
}
}).catch(err => {
console.log(err, 'err');
})
},

onShareAppMessage() {
const promise = new Promise(resolve => {
setTimeout(() => {


+ 6
- 6
miniprogram/pages/index/index.wxml View File

@@ -10,23 +10,23 @@
<image src="{{ avatarUrl }}" mode="" />
</view>
<view wx:if="{{ !isLogin }}" class="nickname">微信用户</view>
<view wx:if="{{ isLogin }}" class="nickname">用户</view>
<view wx:if="{{ isLogin }}" class="nickname">微信用户</view>
</block>

<block wx:if="{{ isLogin }}">
<view class="tab">我的写真</view>
<scroll-view class="scrollView" type="list" scroll-y scroll-with-animatio>
<scroll-view class="scrollView" type="list" scroll-y scroll-with-animatio bindscrolltolower="loadMoreData">
<view wx:for="{{itemList}}" class="item" wx:key="index">
<view class="top">
<view class="modelName">name</view>
<view class="date">2023-10-1 12:43:14</view>
<view class="more" bindtap="showMore">
<view class="modelName">{{ item.title }}</view>
<view class="date">{{ item.createDate }}</view>
<view class="more" bindtap="showMore" data-id="{{ item.id }}">
<image src="../../asset/icon/more.png" mode="widthFix" />
</view>
</view>

<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" />
<image wx:for="{{ item.photoList }}" wx:for-index="childIndex" wx:for-item="chileItem" wx:key="childIndex" src="{{ chileItem.image }}" mode="widthFix" />
</view>
</view>
</scroll-view>


+ 62
- 8
miniprogram/pages/login/login.js View File

@@ -8,13 +8,29 @@ Page({
* 页面的初始数据
*/
data: {
isAgree: false
isAgree: false,
tmpUserId: ""
},

/**
* 生命周期函数--监听页面加载
*/
onLoad() {
onLoad(options) {
console.log(options, 'options');
wx.hideHomeButton()

if (options.scene) {
this.setData({
tmpUserId: options.scene
})
}
app.tokenCallBack = token => {
if (token) {
this.bindUser()
} else {

}
}

},

@@ -39,10 +55,11 @@ Page({
openId,
appId,
encryptedData,
iv,
iv
}
that.loginWithPhone(data)
} else {
that.getPhoneNumberFail()
wx.showToast({
title: '授权失败',
icon: "error"
@@ -68,6 +85,7 @@ Page({
}
},

// 用户协议状态变更
checkboxChange(e) {
if (e.detail.value[0]) {
this.setData({
@@ -80,6 +98,7 @@ Page({
}
},

// 查看用户协议
goPro() {
wx.navigateTo({
url: '/pages/userProtocol/userProtocol',
@@ -87,29 +106,64 @@ Page({
},

loginWithPhone(data) {
const that = this
request.post({
url: '/api/miniApp/loginPhone',
data
}).then(res => {
// 获取手机号之后,绑定用户与机器
that.bindUser()
}).catch(err => {
console.log(err, 'err');
})
},

// 绑定用户与机器
bindUser() {
const openId = wx.getStorageSync('openId')
const tmpUserId = this.data.tmpUserId
const data = {
openId,
tmpUserId
}
request.post({
url: '/api/miniApp/bindUser',
data
}).then(res => {
console.log(res, 'res');
wx.showToast({
title: '登录成功!',
icon: "success",
duration: 1500,
complete: () => {
setTimeout(() => {
wx.redirectTo({
url: '/pages/index/index',
})
if (tmpUserId) {
wx.setStorageSync('isPay', false)
wx.redirectTo({
url: `/pages/index/index?machineQrcodeId=${tmpUserId}`,
})
} else {
wx.redirectTo({
url: `/pages/index/index`,
})
}

}, 1500);
}
})

}).catch(err => {
console.log(err, 'err');

wx.showToast({
title: '服务器异常,请稍后再试',
icon: "none"
})
})
},

getPhoneNumberFail() {

},

/**
* 页面相关事件处理函数--监听用户下拉动作
*/


+ 41
- 5
miniprogram/pages/upload/upload.js View File

@@ -20,9 +20,10 @@ Page({
* 生命周期函数--监听页面加载
*/
onLoad(options) {
if (options.id) {
console.log(options, 'options');
if (options.scene) {
this.setData({
id: options.id
id: options.scene
})
}
},
@@ -42,6 +43,18 @@ Page({

chooseImage(e) {
const that = this
const action = e.currentTarget.dataset.action

if (action && that.data.tempFilePath) {
that.setData({
showScanLine: true,
isUploaded: true,
isSuccess: false
})
that.imgCheckByFace()
return
}

wx.chooseMedia({
mediaType: ['image'],
sourceType: ['camera'],
@@ -148,11 +161,12 @@ Page({
},
success: res => {
console.log(res, 'res');
const code = JSON.parse(res.data).code
if (code == 200) {
const data = JSON.parse(res.data)
if (data.code == 200) {
that.setData({
showScanLine: false,
isSuccess: true
isSuccess: true,
onlineFilePath: data.data.url
})
wx.showToast({
title: '上传成功!',
@@ -179,7 +193,29 @@ Page({

// 确认照片
confirmImage() {
const that = this
const data = {
id: this.data.id,
image: this.data.onlineFilePath
}

request.post({
url: "/api/screenImg/addImage",
data
}).then(res => {
console.log(res, 'res');
if (res.code == 200) {
wx.showToast({
title: '照片上传成功!请在终端机上查看!',
icon: "none"
})
that.setData({
topTitle: "上传成功!"
})
}
}).catch(err => {
console.log(err, 'err');
})
},

/**


+ 2
- 1
miniprogram/pages/upload/upload.wxml View File

@@ -9,7 +9,8 @@
</view>

<block wx:if="{{ !isSuccess }}">
<button class="uploadImgBtn" bindtap="chooseImage">上传照片</button>
<button class="uploadImgBtn" bindtap="chooseImage" data-action="upload">上传照片</button>
<button wx:if="{{ tempFilePath }}" class="reUpload" bindtap="chooseImage">重新选择</button>
</block>

<block wx:if="{{ isSuccess }}">


+ 5
- 2
miniprogram/utils/request.js View File

@@ -1,3 +1,6 @@
// const BASEURL = "http://192.168.1.105:7600/C"
const BASEURL = "https://zhixiangtest.malls.iformall.com/C"

class request {
constructor(address) {
if (address) {
@@ -12,12 +15,12 @@ class request {
* @description 基地址
* @returns {string} https://zhixiangtest.malls.iformall.com/C
*/
baseUrl = 'https://zhixiangtest.malls.iformall.com/C'
baseUrl = BASEURL

/**
* 请求路径前缀
*/
address = 'https://zhixiangtest.malls.iformall.com/C';
address = BASEURL
/**
* 请求头
*/


+ 3
- 3
project.private.config.json View File

@@ -3,7 +3,7 @@
"projectname": "Metavatar_DCIM_Wapp",
"setting": {
"compileHotReLoad": true,
"urlCheck": true
"urlCheck": false
},
"libVersion": "3.0.1",
"condition": {
@@ -12,14 +12,14 @@
{
"name": "",
"pathName": "pages/login/login",
"query": "",
"query": "scene=865789927095844864",
"launchMode": "default",
"scene": null
},
{
"name": "",
"pathName": "pages/upload/upload",
"query": "id=123456",
"query": "id=1",
"launchMode": "default",
"scene": null
},


Loading…
Cancel
Save