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.
321 lines
8.3 KiB
321 lines
8.3 KiB
<template>
|
|
<view class="container">
|
|
<image class="cbg" :src="base.imgHost('common_bg.png')"></image>
|
|
<view class="wrap">
|
|
<u-form :model="form" :label-width="140" ref="uForm" :label-align="'left'" :error-type="['message']">
|
|
<u-form-item label="姓名" prop="username" required>
|
|
<u-input v-model="form.username" placeholder="请输入姓名" />
|
|
</u-form-item>
|
|
<u-form-item label="就读班级" prop="course" required>
|
|
<u-input @click="showCourse = true" placeholder="请选择就读班级" v-model="form.course" type="select" />
|
|
</u-form-item>
|
|
<u-form-item label="联系方式" prop="mobile" required>
|
|
<u-input type="number" placeholder="请输入联系方式" v-model="form.mobile" />
|
|
</u-form-item>
|
|
<u-form-item label="公司名称" prop="company_name">
|
|
<u-input v-model="form.company_name" placeholder="请输入公司名称" />
|
|
</u-form-item>
|
|
<u-form-item label="职务" prop="company_position">
|
|
<u-input v-model="form.company_position" type="text" placeholder="请输入职务" /></u-form-item>
|
|
<u-form-item label="我希望捐赠" prop="donate" label-position="top">
|
|
<u-input v-model="form.donate" type="textarea" placeholder="我希望捐赠" /></u-form-item>
|
|
</u-form>
|
|
</view>
|
|
<view class="form-btn">
|
|
<view @click="saveDonates">提交</view>
|
|
</view>
|
|
<u-picker @confirm="selectCourse" v-model="showCourse" :range="courseList" range-key="value"
|
|
mode="selector"></u-picker>
|
|
|
|
<!-- 进入后没有手机号的话 绑定 或者 注册 -->
|
|
<view class="modal">
|
|
<u-popup v-model="showRegister" mode="bottom" :mask-close-able='false'>
|
|
<view>
|
|
<view class="modal-tip">提示</view>
|
|
<view class="modal-content">
|
|
<view>如您已是我方校友,请先绑定账号</view>
|
|
<view @click="goBind" class="modal-bind">
|
|
去绑定
|
|
</view>
|
|
<view>如您还不是我方校友,请先注册</view>
|
|
<view @click="toRegister" class="modal-register">
|
|
去注册
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
</u-popup>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
data() {
|
|
return {
|
|
showRegister: false,
|
|
hasMobile: false,
|
|
showCourse: false,
|
|
isLocked: false,
|
|
form: {
|
|
username: '',
|
|
course: '',
|
|
mobile: '',
|
|
company_name: '',
|
|
company_position: '',
|
|
donate: ''
|
|
|
|
},
|
|
courseList: [{
|
|
label: '高研班|第一期高级科创人才研修班',
|
|
value: '高研班|第一期高级科创人才研修班'
|
|
}, {
|
|
label: '高研班|第二期高级科创人才研修班',
|
|
value: '高研班|第二期高级科创人才研修班'
|
|
}, {
|
|
label: '高研班|第三期高级科创人才研修班',
|
|
value: '高研班|第三期高级科创人才研修班'
|
|
}, {
|
|
label: '高研班|第四期高级科创人才研修班',
|
|
value: '高研班|第四期高级科创人才研修班'
|
|
}, {
|
|
label: '高研班|第五期高级科创人才研修班',
|
|
value: '高研班|第五期高级科创人才研修班'
|
|
}, {
|
|
label: '高研班|第六期高级科创人才研修班',
|
|
value: '高研班|第六期高级科创人才研修班'
|
|
}, {
|
|
label: '其他',
|
|
value: '其他'
|
|
}],
|
|
rules: {
|
|
username: [{
|
|
required: true,
|
|
message: '请输入姓名',
|
|
trigger: ['blur'],
|
|
}],
|
|
course: [{
|
|
required: true,
|
|
message: '请选择就读班级',
|
|
trigger: ['change', 'blur'],
|
|
}],
|
|
mobile: [{
|
|
required: true,
|
|
message: '请输入联系方式',
|
|
trigger: ['blur'],
|
|
}, {
|
|
validator: (rule, value, callback) => {
|
|
return this.$u.test.mobile(value);
|
|
},
|
|
message: '手机号码不正确',
|
|
trigger: ['blur'],
|
|
}],
|
|
|
|
}
|
|
}
|
|
},
|
|
onReady() {
|
|
this.$refs.uForm.setRules(this.rules);
|
|
},
|
|
onLoad() {
|
|
let token = uni.getStorageSync('stbc1_lifeData') ? uni.getStorageSync('stbc1_lifeData').vuex_token : ''
|
|
if (this.base.isNull(token)) {
|
|
this.getToken()
|
|
} else {
|
|
this.getUserInfo()
|
|
}
|
|
},
|
|
methods: {
|
|
selectCourse(e) {
|
|
this.form.course = this.courseList[e[0]]['value']
|
|
},
|
|
// 日期
|
|
saveDonates() {
|
|
let that = this
|
|
this.$refs.uForm.validate(valid => {
|
|
if (valid) {
|
|
if (this.isLocked) {
|
|
return
|
|
}
|
|
this.isLocked = true
|
|
this.$u.api.updateDonates(this.form).then(res => {
|
|
this.base.toast('提交成功!感谢您的支持!近期我们将会电话与您联系~', 1500, function() {
|
|
setTimeout(function() {
|
|
uni.switchTab({
|
|
url: '/pages/me/index'
|
|
})
|
|
}, 1500)
|
|
})
|
|
}).catch(res => {
|
|
this.isLocked = false
|
|
})
|
|
} else {
|
|
console.log('验证失败');
|
|
// this.base.toast("注册失败")
|
|
}
|
|
});
|
|
|
|
},
|
|
async getToken() {
|
|
let that = this
|
|
const loginResult = await new Promise((resolve, reject) => {
|
|
uni.login({
|
|
provider: 'weixin',
|
|
success: (res) => {
|
|
resolve(res.code);
|
|
},
|
|
fail: (err) => {
|
|
console.error('uni.login失败:', err);
|
|
reject(err);
|
|
}
|
|
});
|
|
});
|
|
const tokenResult = await new Promise((resolve, reject) => {
|
|
this.$u.api.login({
|
|
code: loginResult
|
|
}).then(res1 => {
|
|
console.log("res1", res1)
|
|
uni.setStorageSync("stbc1_lifeData", {
|
|
'vuex_token': res1.token
|
|
})
|
|
resolve(res1.token);
|
|
}).catch(err => {
|
|
reject(err)
|
|
console.log('login-error:', JSON.stringify(err))
|
|
})
|
|
});
|
|
await this.$u.api.user().then(res => {
|
|
uni.setStorageSync("stbc1_lifeData", {
|
|
'vuex_token': tokenResult,
|
|
"vuex_user": res.user
|
|
})
|
|
this.form.username = res.user.username
|
|
this.form.mobile = res.user.mobile
|
|
this.form.company_position = res.user.company_position
|
|
this.form.company_name = res.user.company_name
|
|
if (that.base.isNull(res.user.mobile)) {
|
|
that.showRegister = true
|
|
that.hasMobile = false
|
|
} else {
|
|
that.showRegister = false
|
|
that.hasMobile = true
|
|
}
|
|
})
|
|
},
|
|
getUserInfo() {
|
|
let that = this
|
|
this.$u.api.user().then(res => {
|
|
this.form.username = res.user.username
|
|
this.form.mobile = res.user.mobile
|
|
this.form.company_position = res.user.company_position
|
|
this.form.company_name = res.user.company_name
|
|
this.$u.vuex('vuex_user', res.user)
|
|
if (that.base.isNull(res.user.mobile)) {
|
|
that.showRegister = true
|
|
that.hasMobile = false
|
|
} else {
|
|
that.showRegister = false
|
|
that.hasMobile = true
|
|
}
|
|
})
|
|
},
|
|
|
|
// 去绑定登录
|
|
goBind() {
|
|
uni.redirectTo({
|
|
url: '/packages/register/login?isDonate=isDonate'
|
|
})
|
|
},
|
|
// 去注册
|
|
toRegister() {
|
|
uni.redirectTo({
|
|
url: '/packages/register/index?isDonate=isDonate'
|
|
})
|
|
},
|
|
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.container {
|
|
padding: 30rpx;
|
|
height: 100vh;
|
|
overflow: scroll;
|
|
|
|
.cbg {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100vh;
|
|
}
|
|
|
|
.wrap {
|
|
background: #fff;
|
|
position: relative;
|
|
padding: 35rpx;
|
|
border-radius: 30rpx;
|
|
padding-top: 0;
|
|
}
|
|
|
|
.form-btn {
|
|
width: 100%;
|
|
position: relative;
|
|
padding: 60rpx 0;
|
|
|
|
&>view {
|
|
width: 70%;
|
|
text-align: center;
|
|
margin: 0 auto;
|
|
color: #fff;
|
|
background: linear-gradient(to right, #5e5fbc, #0d0398);
|
|
border-radius: 30rpx;
|
|
padding: 20rpx;
|
|
}
|
|
}
|
|
.modal {
|
|
::v-deep .u-drawer-bottom {
|
|
border-radius: 40rpx;
|
|
}
|
|
|
|
&-tip {
|
|
text-align: center;
|
|
padding: 30rpx;
|
|
font-size: 32rpx;
|
|
}
|
|
|
|
&-content {
|
|
height: 450rpx;
|
|
padding: 0 30rpx;
|
|
font-size: 32rpx;
|
|
text-align: center;
|
|
|
|
&>view {
|
|
margin: 30rpx auto;
|
|
}
|
|
}
|
|
|
|
&-bind {
|
|
width: 45%;
|
|
text-align: center;
|
|
margin: 0 auto;
|
|
color: #fff;
|
|
border-radius: 30rpx;
|
|
padding: 20rpx;
|
|
background: linear-gradient(to right, #e4cdb4, #c69c6d);
|
|
}
|
|
|
|
&-register {
|
|
width: 45%;
|
|
text-align: center;
|
|
margin: 0 auto;
|
|
color: #fff;
|
|
border-radius: 30rpx;
|
|
padding: 20rpx;
|
|
background: linear-gradient(to right, #5e5fbc, #0d0398);
|
|
}
|
|
}
|
|
|
|
}
|
|
</style> |