提交 b234f130 authored 作者: lidongxu's avatar lidongxu

头像上传阿里云

上级 163ca6c3
export * from './map.js'
\ No newline at end of file
const qlIP = 'http://192.168.131.48:8011'
const apiUrl = `${qlIP}/user/aliyun/signature` // 后台获取阿里云 OSS 权限信息接口
const ossBaseURL = `https://link-promotion-dev.oss-cn-shanghai.aliyuncs.com/`
// 上传文件
export function uploadFile(fileName, filePath) {
// 发送请求获取签名信息
return new Promise((resolve, reject) => {
wx.request({
url: apiUrl,
success: (res) => {
const { policy, security_token: xOssSecurityToken, signature: xOssSignature, x_oss_credential: xOssCredential, x_oss_date: xOssDate, x_oss_signature_version: xOssSignatureVersion } = res.data.data;
//上传参数
const formData = {
key: fileName, // 上传文件名称(拼接路径格式字符串来决定文件夹)
policy: policy, //表单域
'x-oss-signature-version': xOssSignatureVersion, //指定签名的版本和算法
'x-oss-credential': xOssCredential, //指明派生密钥的参数集
'x-oss-date': xOssDate, //请求的时间
'x-oss-signature': xOssSignature, //签名认证描述信息
'x-oss-security-token': xOssSecurityToken, //安全令牌
success_action_status: "200" //上传成功后响应状态码
}
// 发送请求上传文件
wx.uploadFile({
url: `https://${res.data.data.web_js_link}`, // Bucket域名 请替换为目标Bucket域名
filePath: filePath,
name: 'file', // 固定值为file
formData: formData,
success(res) {
if (res.statusCode === 200) {
resolve(ossBaseURL + fileName) // 上传成功
} else {
reject(res) // 上传失败,返回响应
}
},
fail(err) {
wx.showToast({ title: '上传失败,请重试!', icon: 'none' });
reject(err) // 上传失败,返回响应
}
});
},
fail: (err) => {
console.error('请求接口失败:', err);
wx.showToast({ title: '获取上传参数失败,请重试!', icon: 'none' });
reject(err) // 上传失败,返回响应
}
});
})
}
\ No newline at end of file
export * from './attendance/index.js'
export * from './common/map.js'
export * from './common/upload.js'
export * from './common/login.js'
export * from './system/user.js'
\ No newline at end of file
......@@ -2,6 +2,7 @@
"dependencies": {
"await-to-js": "^3.0.0",
"cos-wx-sdk-v5": "^1.7.2",
"qqmap-wx-jssdk": "^1.0.0"
"qqmap-wx-jssdk": "^1.0.0",
"uuid": "^11.0.5"
}
}
......@@ -21,7 +21,7 @@
{
"path": "pages/register",
"style": {
"navigationBarTitleText": "促销员提交"
"navigationBarTitleText": "填写信息"
}
},
{
......@@ -115,6 +115,12 @@
"iconPath": "static/images/tabbar/upload.png",
"selectedIconPath": "static/images/tabbar/upload_active.png",
"text": "上传推广照片"
},
{
"pagePath": "pages/register",
"iconPath": "static/images/tabbar/clock.png",
"selectedIconPath": "static/images/tabbar/clock_active.png",
"text": "填写信息"
}
]
},
......
......@@ -43,7 +43,7 @@
<script>
import { getAttendanceDetailAPI, addAttendanceAPI, getAttendanceListAPI } from '@/api/attendance'
import { getAttendanceDetailAPI, addAttendanceAPI, getAttendanceListAPI } from '@/api'
import { checkStartLessEndTime, parseTime, isSameDay, zeroTo24, checkTimeIsBetween } from '@/utils/common'
export default {
data() {
......
......@@ -35,7 +35,7 @@
<script>
import { getAttendanceDetailAPI, addAttendanceAPI, getAttendanceListAPI } from '@/api/attendance'
import { getAttendanceDetailAPI, addAttendanceAPI, getAttendanceListAPI } from '@/api'
import { checkStartLessEndTime, parseTime, isSameDay, zeroTo24, checkTimeIsBetween } from '@/utils/common'
var QQMapWX = require('../libs/qqmap-wx-jssdk1.2/qqmap-wx-jssdk.js');
import config from '@/config'
......
......@@ -6,12 +6,16 @@
:modelValue="formData">
<uni-forms-item label="头像"
required
name="avatar">
name="avatarUrl">
<button class="avatar"
open-type="chooseAvatar"
@chooseavatar="chooseavatarFn">
<img class="avatar_img"
<img v-if="formData.avatarUrl"
class="avatar_img"
:src="formData.avatarUrl" />
<img v-else
class="avatar_img"
src="/static/default_user.jpg">
</button>
</uni-forms-item>
<uni-forms-item label="姓名"
......@@ -46,15 +50,22 @@
<script>
import { mapGetters } from 'vuex'
import { submitUserInfo } from '../api/login'
import { uploadFile } from '../api'
import storage from '../utils/storage'
import constant from '../utils/constant'
export default {
created() {
this.phone = storage.get(constant.loginPhone)
// this.formData.avatarUrl = this.user.avatarUrl
this.formData.name = this.user.nickName
},
data() {
return {
phone: '',
// 校验表单数据
formData: {
avatarUrl: '',
avatarUrl: undefined,
name: '',
idenFrontPhotoUrl: [],
idenReversePhotoUrl: [],
......@@ -73,7 +84,7 @@ export default {
errorMessage: '名字不能为空'
}]
}
},
}
}
},
computed: {
......@@ -81,12 +92,15 @@ export default {
},
methods: {
// 选择了头像
chooseavatarFn(obj) {
this.formData.avatarUrl = obj.detail.avatarUrl
async chooseavatarFn(obj) {
console.log(this.phone)
const avatarUrl = await uploadFile(`avatar/${this.phone}.png`, obj.detail.avatarUrl)
this.formData.avatarUrl = avatarUrl
},
// 选择了身份证
selectIdenPhotoFn(obj) {
// console.log(obj.tempFiles[0]) // TODO:文件对象-需要自己上传 OSS
this.uploadFileToOSS(obj.tempFiles[0].path)
},
submit(ref) {
this.$refs[ref].validate().then(async res => {
......@@ -111,11 +125,11 @@ export default {
console.log('err', err);
})
},
//上传文件方法
uploadFileToOSS(filePath, callback) {
},
created() {
this.formData.avatarUrl = this.user.avatarUrl
this.formData.name = this.user.nickName
},
}
}
</script>
......@@ -128,6 +142,10 @@ page {
width: 100%;
padding: 40rpx;
button {
padding-left: 0 !important;
}
// 头像
.avatar {
background: transparent;
......@@ -154,7 +172,8 @@ page {
}
.uni-file-picker__container {
padding: 40rpx;
// padding: 40rpx;
margin-right: 10px;
padding-top: 10rpx;
}
......
import storage from '@/utils/storage'
import constant from '@/utils/constant'
import { reverseGeocoding } from '@/api/common'
import { reverseGeocoding } from '@/api'
import $modal from '@/plugins/modal'
const location = {
......
import config from '@/config'
import storage from '@/utils/storage'
import constant from '@/utils/constant'
import { login, logout, getInfo } from '@/api/login'
import { login, logout, getInfo } from '@/api'
import { getWxAccessToken, setWxAccessToken, removeWxAccessToken } from '@/utils/auth'
const baseUrl = config.baseUrl
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论