创作者微信小程序端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

350 lines
9.4 KiB

<template>
<view>
<uni-forms :modelValue="formData" validate-trigger='blur' ref="form">
<uni-forms-item label="昵称" required name="name">
<uni-easyinput v-model="formData.name" placeholder="请输入昵称" />
</uni-forms-item>
<uni-forms-item label="手机号" required name="phone">
<uni-easyinput v-model="formData.phone" placeholder="请输入手机号" />
</uni-forms-item>
<uni-forms-item label="密码" required name="password">
<uni-easyinput type="password" v-model="formData.password" placeholder="请输入密码" />
</uni-forms-item>
<uni-forms-item label="搜索码" required name="scanCode">
<uni-easyinput v-model="formData.scanCode" placeholder="请输入搜索码" />
</uni-forms-item>
<uni-forms-item label="邀请码" required name="inviteCode">
<uni-easyinput v-model="formData.inviteCode" placeholder="请输入邀请码" />
</uni-forms-item>
<uni-forms-item label="简介" name="intro">
<uni-easyinput v-model="formData.intro" placeholder="请输入简介" />
</uni-forms-item>
<uni-forms-item label="第三方平台账号详情地址" required name="url">
<uni-easyinput v-model="formData.url" placeholder="请输入第三方平台账号详情地址" />
</uni-forms-item>
<uni-forms-item label="头像" required name="img">
<uni-file-picker limit="1" file-mediatype="image" title="选择一张头像图片上传吧!" file-extname="png,jpg,jpeg"
@success="imgUploadSuccess" @fail="imgUploadFail" @select="uploadImg" @delete="deleteImg">
</uni-file-picker>
</uni-forms-item>
</uni-forms>
<button type="primary" @click="register(formData)">注册</button>
</view>
</template>
<script>
import {
insertCreator,
checkPhone,
checkScanCode,
checkInviteCode
} from '@/api/userInfo.js'
import {
uploadBatch,
uploadBanner,
deleteFile
} from '@/api/common.js'
import md5 from "js-md5"
export default {
data() {
return {
phoneFlag: false,
scanCodeFlag: false,
inviteCodeFlag: false,
formData: {
name: '',
phone: '',
password: '',
scanCode: '',
inviteCode: '',
intro: '',
url: '',
img: ''
},
rules: {
name: {
rules: [{
required: true,
errorMessage: '请输入昵称'
},
{
minLength: 1,
maxLength: 8,
errorMessage: '昵称长度应在 {minLength} 到 {maxLength} 个字符'
}
],
},
password: {
rules: [{
required: true,
errorMessage: '请输入密码'
}, {
minLength: 8,
errorMessage: '密码长度最短 {minLength} 个字符'
}]
},
phone: {
rules: [{
required: true,
errorMessage: '请输入手机号'
},
{
pattern: '^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$',
errorMessage: '请输入正确的手机号'
},
{
validateFunction: () => {
return new Promise((resolve, reject) => {
const params = {
phone: this.formData.phone
}
checkPhone(params).then(res => {
if (res.data.code === 105001) {
// 如果验证不通过,需要在callback()抛出new Error('错误提示信息')
this.phoneFlag = false;
reject(new Error(res.data.msg))
} else {
// 如果校验通过,也要执行callback()回调
this.phoneFlag = true;
resolve()
}
})
})
},
}
],
},
scanCode: {
rules: [{
required: true,
errorMessage: '请输入搜索码'
},
{
minLength: 1,
maxLength: 6,
errorMessage: '搜索码长度应在 {minLength} 到 {maxLength} 个字符'
},
{
validateFunction: () => {
return new Promise((resolve, reject) => {
const params = {
scanCode: this.formData.scanCode
}
checkScanCode(params).then(res => {
console.log('请求scanCode')
if (res.data.code === 105003) {
// 如果验证不通过,需要在callback()抛出new Error('错误提示信息')
this.scanCodeFlag = false;
reject(new Error(res.data.msg))
} else {
// 如果校验通过,也要执行callback()回调
this.scanCodeFlag = true;
resolve()
}
})
})
},
}
],
},
inviteCode: {
rules: [{
required: true,
errorMessage: '请输入邀请码'
}, {
minLength: 6,
errorMessage: '邀请码长度最短 {minLength} 个字符'
}, {
validateFunction: () => {
return new Promise((resolve, reject) => {
const params = {
inviteCode: this.formData.inviteCode
}
checkInviteCode(params).then(res => {
console.log('请求inviteCode')
if (res.data.code === 105002) {
// 如果验证不通过,需要在callback()抛出new Error('错误提示信息')
this.inviteCodeFlag = false;
reject(new Error(res.data.msg))
} else {
// 如果校验通过,也要执行callback()回调
this.inviteCodeFlag = true;
resolve()
}
})
})
},
}]
},
url: {
rules: [{
required: true,
errorMessage: '请输入第三方平台账号详情地址'
}, {
format: 'url',
errorMessage: '请输入以"https://"格式开头格式第三方平台账号详情地址'
}]
},
img: {
rules: [{
required: true,
errorMessage: '请选择一张头像图片上传'
}]
}
}
}
},
mounted(){
//设置校验规则
this.$refs.form.setRules(this.rules);
},
methods: {
//图片上传
uploadImg(e) {
console.log('选择了文件', e)
let that = this
uni.showLoading({
title: "上传中",
success() {
const tempFilePaths = e.tempFilePaths;
for (var i = 0; i < tempFilePaths.length; i++) {
const tempFile = e.tempFiles[i];
uni.uploadFile({
4 years ago
url: `${Vue.prototype.$baseURL}/file/uploadBatch`,
filePath: tempFilePaths[i],
name: 'files',
success: (uploadFileRes) => {
uni.hideLoading();
const result = JSON.parse(uploadFileRes.data);
console.log('result', result)
if (result.code === 200) {
that.$set(result.data, "url", tempFile.url)
that.formData.img = result.data[0]
console.log('that.formDataInner',that.formData)
uni.showToast({
title: '上传成功',
icon: 'success',
duration: 1500
})
}
},
fail: () => {
uni.hideLoading();
uni.showToast("上传失败")
},
complete: function() {
uni.hideLoading();
}
});
}
}
});
},
//删除图片
deleteImg(e) {
console.log('e',this.formData.img)
const param = {
url : this.formData.img
}
deleteFile(param).then(response =>{
console.log('response',response)
if(response.data.code === 200){
uni.showToast({
title: '图片删除成功',
icon: 'success',
duration: 1500
})
}else{
uni.showToast({
title: '删除失败',
icon: 'fail',
duration: 1500
})
}
});
console.log('图片删除成功')
},
// 上传成功
imgUploadSuccess(e) {
console.log('上传成功')
},
// 上传失败
imgUploadFail(e) {
console.log('上传失败:', e)
},
//注册
register(e) {
console.log(e)
let that = this
console.log('that.phoneFlag',that.phoneFlag)
console.log('that.scanCodeFlag',that.scanCodeFlag)
console.log('that.inviteCodeFlag',that.inviteCodeFlag)
if(that.phoneFlag === true && that.scanCodeFlag === true && that.inviteCodeFlag === true){
console.log('全部达成')
uni.showLoading({
title: '艺术家注册中!',
duration: 3000,
success() {
let pwd = md5(that.formData.password)
const param = {
name: that.formData.name,
scanCode: that.formData.scanCode,
phone: that.formData.phone,
password: pwd,
img: that.formData.img,
intro: that.formData.intro,
inviteCode: that.formData.inviteCode,
url: that.formData.url
}
console.log('form', param)
insertCreator(param).then(response => {
if (response.data.code === 200) {
//注册成功,页面跳转到登录页
uni.redirectTo({
url: '../login/login',
success() {
uni.showToast({
title: '艺术家注册成功!请耐心等待审核或联系客服',
icon: 'none',
duration: 4000
})
}
});
} else {
uni.showToast({
title: response.data.msg,
icon: 'none'
})
}
})
},
fail: () => {
uni.hideLoading();
uni.showToast("注册失败")
},
complete: function() {
uni.hideLoading();
}
})
}else{
console.log('尚未全部达成')
uni.showToast({
title: '注册验证尚未全部通过,请更正后提交!',
icon: 'none',
duration: 3000
})
}
}
}
}
</script>
<style>
</style>