小程序提交
This commit is contained in:
211
pages/loginModule/employeeAccountApply/employeeAccountApply.js
Normal file
211
pages/loginModule/employeeAccountApply/employeeAccountApply.js
Normal file
@ -0,0 +1,211 @@
|
||||
const { baseUrl } = require('../../../request');
|
||||
const { validate } = require('../../../utils/validate');
|
||||
|
||||
Page({
|
||||
data: {
|
||||
name: '',
|
||||
phone: '',
|
||||
code: '', // 验证码
|
||||
idcard: '', // 身份证号
|
||||
codeSent: false,
|
||||
countdown: 0, // 剩余秒数
|
||||
codeButtonText: '获取验证码',
|
||||
_timer: null,
|
||||
isUploading: false,
|
||||
resumeUploaded: false,
|
||||
resumeFilePath: '',
|
||||
fileCode: '', // 上传文件后端返回的码
|
||||
credential: '', // 用户申请后的唯一凭证,用于查询用户是否审核通过
|
||||
},
|
||||
|
||||
onInput(e) {
|
||||
const field = e.currentTarget.dataset.field;
|
||||
this.setData({
|
||||
[field]: e.detail.value
|
||||
});
|
||||
},
|
||||
|
||||
// 获取验证码(仅校验手机号)
|
||||
getSmsCode() {
|
||||
const { phone } = this.data;
|
||||
|
||||
// 1. 非空校验
|
||||
if (!validate(this.data, { phone: '请输入手机号' })) {
|
||||
return;
|
||||
}
|
||||
// 2. 格式校验
|
||||
if (!/^1\d{10}$/.test(phone)) {
|
||||
return wx.showToast({ title: '手机号格式不正确', icon: 'none' });
|
||||
}
|
||||
|
||||
// 3. 发送验证码请求
|
||||
wx.request({
|
||||
url: baseUrl + '/userInfo/code/pwd',
|
||||
method: 'POST',
|
||||
data: { templateString: phone },
|
||||
success: (res) => {
|
||||
console.log('验证码发送--->',res.data);
|
||||
if (res.data.code === 1) {
|
||||
wx.showToast({ title: '验证码已发送', icon: 'none' });
|
||||
this._startCountdown(60);
|
||||
} else {
|
||||
wx.showToast({ title: res.data.message, icon: 'none' });
|
||||
}
|
||||
},
|
||||
fail: () => {
|
||||
wx.showToast({ title: '发送失败,请重试', icon: 'none' });
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 开始倒计时
|
||||
_startCountdown(seconds) {
|
||||
this.setData({
|
||||
countdown: seconds,
|
||||
codeButtonText: `${seconds}s后重试`
|
||||
});
|
||||
// 如果已有定时器,不重复创建
|
||||
if (this.data._timer) return;
|
||||
this.data._timer = setInterval(() => {
|
||||
const cd = this.data.countdown - 1;
|
||||
if (cd <= 0) {
|
||||
this._clearTimer();
|
||||
this.setData({
|
||||
countdown: 0,
|
||||
codeButtonText: '获取验证码'
|
||||
});
|
||||
} else {
|
||||
this.setData({
|
||||
countdown: cd,
|
||||
codeButtonText: `${cd}s后重试`
|
||||
});
|
||||
}
|
||||
}, 1000);
|
||||
},
|
||||
|
||||
// 清除倒计时定时器
|
||||
_clearTimer() {
|
||||
if (this.data._timer) {
|
||||
clearInterval(this.data._timer);
|
||||
this.data._timer = null;
|
||||
}
|
||||
},
|
||||
|
||||
// 选择并上传简历
|
||||
chooseResume() {
|
||||
if (this.data.resumeUploaded) return;
|
||||
wx.chooseMessageFile({
|
||||
count: 1,
|
||||
type: 'file',
|
||||
success: res => {
|
||||
const file = res.tempFiles[0];
|
||||
this.uploadResume(file);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 上传简历
|
||||
uploadResume(file) {
|
||||
this.setData({ isUploading: true });
|
||||
wx.uploadFile({
|
||||
url: baseUrl + '/file/upload',
|
||||
method: 'POST',
|
||||
name: 'file',
|
||||
header : {
|
||||
Authorization: wx.getStorageSync('token'),
|
||||
},
|
||||
formData: {
|
||||
biz: 'default', // 传 biz 文本字段
|
||||
},
|
||||
filePath: file.path,
|
||||
success: res => {
|
||||
console.log('简历上传后端返回--->',JSON.parse(res.data));
|
||||
const data = JSON.parse(res.data);
|
||||
console.log('后端返回文件码--->',data.data);
|
||||
if (data.code === 1) {
|
||||
wx.showToast({ title: '上传成功', icon: 'success' });
|
||||
this.setData({
|
||||
isUploading: false,
|
||||
resumeUploaded: true,
|
||||
resumeFilePath: file.path,
|
||||
fileCode: data.data
|
||||
});
|
||||
} else {
|
||||
wx.showToast({ title: data.message || '上传失败', icon: 'none' });
|
||||
this.setData({ isUploading: false });
|
||||
}
|
||||
},
|
||||
fail: () => {
|
||||
wx.showToast({ title: '上传失败,请重试', icon: 'none' });
|
||||
this.setData({ isUploading: false });
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 提交表单
|
||||
handleSubmit() {
|
||||
const { name, phone, code, idcard, fileCode } = this.data;
|
||||
|
||||
// 校验用户是否填写所有必要信息
|
||||
if (!name || !phone || !code || !idcard || !fileCode) {
|
||||
wx.showToast({ title: '请填写所有信息', icon: 'none' });
|
||||
return;
|
||||
}
|
||||
|
||||
// 姓名只能中文或英文
|
||||
if (!/^[\u4e00-\u9fa5A-Za-z]+$/.test(name)) {
|
||||
wx.showToast({ title: '姓名只能为中英文', icon: 'none' });
|
||||
return;
|
||||
}
|
||||
|
||||
// 提交表单数据到后端
|
||||
wx.request({
|
||||
url: baseUrl + '/advancementApply/add',
|
||||
method: 'POST',
|
||||
header: {
|
||||
Authorization: wx.getStorageSync('token')
|
||||
},
|
||||
data: {
|
||||
name: name,
|
||||
phone: phone,
|
||||
verificationCode: code,
|
||||
idCard: idcard,
|
||||
resume: fileCode
|
||||
},
|
||||
success: res => {
|
||||
console.log('后端返回的申请---->', res);
|
||||
if (res.data.code === 1) {
|
||||
wx.showToast({ title: '验证通过,提交成功', icon: 'success' });
|
||||
|
||||
// 清空表单内容
|
||||
this.setData({
|
||||
name: '',
|
||||
phone: '',
|
||||
code: '',
|
||||
idcard: '',
|
||||
fileCode: '',
|
||||
resumeUploaded: false, // 重置简历上传状态
|
||||
resumeFilePath: '', // 清空简历文件路径
|
||||
credential: '' // 清空凭证
|
||||
});
|
||||
} else {
|
||||
wx.showToast({ title: '系统错误', icon: 'error' });
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 跳转申请须知
|
||||
gotoNotice() {
|
||||
wx.navigateTo({
|
||||
url: '/pages/loginModule/employeeAccountNotice/employeeAccountNotice',
|
||||
})
|
||||
},
|
||||
|
||||
// 跳转我的申请记录
|
||||
gotoQuery() {
|
||||
wx.navigateTo({
|
||||
url: '/pages/loginModule/employeeApplyQuery/employeeApplyQuery',
|
||||
})
|
||||
},
|
||||
});
|
Reference in New Issue
Block a user