|
@@ -63,7 +63,7 @@
|
|
|
</u-form-item>
|
|
|
</view> -->
|
|
|
|
|
|
- <view class="items">
|
|
|
+ <!-- <view class="items">
|
|
|
<view class="item_title">
|
|
|
<text class="star_red">*</text>
|
|
|
<text class="number">04</text>
|
|
@@ -74,8 +74,25 @@
|
|
|
<input v-model.trim="examform.userPhone" class="uni-input" placeholder="请输入" />
|
|
|
</view>
|
|
|
</u-form-item>
|
|
|
+ </view> -->
|
|
|
+ <view class="items">
|
|
|
+ <view class="item_title">
|
|
|
+ <text class="star_red">*</text>
|
|
|
+ <text class="number">04</text>
|
|
|
+ <text class="category">报考专业</text>
|
|
|
+ </view>
|
|
|
+ <u-form-item label=" " label-width="74" prop="majorId" :border-bottom='false'>
|
|
|
+ <view class="inputs">
|
|
|
+ <view class="item_box">
|
|
|
+ <picker class="picker" mode="selector" :range="majorList" range-key="majorName" :value="examform.majorId"
|
|
|
+ @change="majorChange">
|
|
|
+ <view class="pick_con" style="fontSize: 40rpx">{{ majorName }}</view>
|
|
|
+ </picker>
|
|
|
+ <u-icon class="icon" name="arrow-down"></u-icon>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </u-form-item>
|
|
|
</view>
|
|
|
-
|
|
|
<view class="items">
|
|
|
<view class="item_title">
|
|
|
<text class="star_red">*</text>
|
|
@@ -84,7 +101,7 @@
|
|
|
</view>
|
|
|
<u-form-item label=" " label-width="74" prop="userMajors" :border-bottom='false'>
|
|
|
<u-checkbox-group :wrap='true' @change="checkboxGroupChange">
|
|
|
- <u-checkbox v-model="item.checked" v-for="(item, index) in checkboxList" :key="index" :name="item.name">
|
|
|
+ <u-checkbox v-model="item.checked" v-for="(item, index) in subjectLists" :key="index" :name="item.subjectId">
|
|
|
{{ item.name }}
|
|
|
</u-checkbox>
|
|
|
</u-checkbox-group>
|
|
@@ -113,27 +130,39 @@ export default {
|
|
|
callback(new Error("请选择报考科目"))
|
|
|
}
|
|
|
}
|
|
|
+ var validatorMajorId = (rule, value, callback) => {
|
|
|
+ if (value) {
|
|
|
+ callback()
|
|
|
+ } else {
|
|
|
+ callback(new Error("请选择专业"))
|
|
|
+ }
|
|
|
+ }
|
|
|
return {
|
|
|
examform: {
|
|
|
userName: '',
|
|
|
userSex: '',
|
|
|
companyName: '',
|
|
|
- userIdCard: '',
|
|
|
- userPhone: '',
|
|
|
+ // userIdCard: '',
|
|
|
+ // userPhone: '',
|
|
|
userMajors: [],
|
|
|
+ majorId: '',
|
|
|
},
|
|
|
rules: {
|
|
|
userName: [{ required: true, message: '请输入姓名', trigger: ['blur', 'change']}],
|
|
|
userSex: [{ required: true, message: '请选择性别', trigger: ['blur', 'change']}],
|
|
|
companyName: [{ required: true, message: '请输入企业名称', trigger: ['blur', 'change']}],
|
|
|
// userIdCard: [{ required: true, message: '请输入身份证号', trigger: ['blur', 'change']}],
|
|
|
- userPhone: [{ required: true, message: '请输入手机号码', trigger: ['blur', 'change']}],
|
|
|
- userMajors: [{ validator: validatorMajor, trigger: ['blur', 'change']},
|
|
|
- ],
|
|
|
+ majorId: [{ validator: validatorMajorId, trigger: ['change','blur']}],
|
|
|
+ userMajors: [{ validator: validatorMajor, trigger: ['blur', 'change']}],
|
|
|
},
|
|
|
checkboxList: [],
|
|
|
activityId: '', // 活动id
|
|
|
subLoading: true,
|
|
|
+ majorList: [], // 专业
|
|
|
+ subjectLists: [], // 科目
|
|
|
+ majorName: '',
|
|
|
+ startTime: '',
|
|
|
+ endTime: '',
|
|
|
}
|
|
|
},
|
|
|
onLoad(option) {
|
|
@@ -141,21 +170,25 @@ export default {
|
|
|
if (option.scene) {
|
|
|
let tid = decodeURIComponent(option.scene)
|
|
|
this.activityId = tid.split('=')[1]
|
|
|
- console.log('activityId: ', this.activityId)
|
|
|
- this.getActivity()
|
|
|
+ // this.getActivity()
|
|
|
} else {
|
|
|
this.activityId = option.tid
|
|
|
- this.getActivity()
|
|
|
+ // this.getActivity()
|
|
|
}
|
|
|
},
|
|
|
onShow() {
|
|
|
- // console.log('222222222222222')
|
|
|
- // if (!uni.getStorageSync('user_account')) {
|
|
|
- // uni.navigateTo({
|
|
|
- // url: '/pages4/login/login?isBack=true'
|
|
|
- // })
|
|
|
- // return
|
|
|
- // }
|
|
|
+ console.log('activityId: ', this.activityId)
|
|
|
+ if (!uni.getStorageSync('user_account')) { // 未登录
|
|
|
+ console.log('未登录')
|
|
|
+ uni.navigateTo({
|
|
|
+ url: '/pages4/login/login?isBack=true'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ } else {
|
|
|
+ // 已登录
|
|
|
+ console.log('已登录')
|
|
|
+ this.getActivity()
|
|
|
+ }
|
|
|
|
|
|
},
|
|
|
// 必须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕
|
|
@@ -163,26 +196,46 @@ export default {
|
|
|
this.$refs.uForm.setRules(this.rules)
|
|
|
},
|
|
|
methods: {
|
|
|
- // 获取活动信息
|
|
|
+ // 获取活动信息(专业和科目)
|
|
|
getActivity() {
|
|
|
this.$http({
|
|
|
- url: `/app/common/detail/${this.activityId}`,
|
|
|
+ url: `/apply/activity/detail/${this.activityId}`,
|
|
|
method: 'get',
|
|
|
- noToken: true,
|
|
|
}).then((res) => {
|
|
|
if (res.data.code == 200) {
|
|
|
- if (res.data.data.majors) {
|
|
|
- let majors = res.data.data.majors.split(',')
|
|
|
- this.checkboxList = majors.map((item) => {
|
|
|
+ this.hadCheck()
|
|
|
+ let data = res.data.data || {}
|
|
|
+ const { majorList, subjectList, endTime, startTime} = data
|
|
|
+ this.majorList = majorList || []
|
|
|
+ this.startTime = startTime
|
|
|
+ this.endTime = endTime
|
|
|
+ if (subjectList) {
|
|
|
+ this.checkboxList = subjectList.map((item) => {
|
|
|
return {
|
|
|
- name: '《' + item + '》',
|
|
|
- checked: false
|
|
|
+ name: '《' + item.subjectName + '》',
|
|
|
+ checked: false,
|
|
|
+ ...item
|
|
|
}
|
|
|
})
|
|
|
console.log('checkboxList:', this.checkboxList)
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
+ },
|
|
|
+ // 校验用户是否已报名
|
|
|
+ hadCheck() {
|
|
|
+ this.$http({
|
|
|
+ url: `/apply/activity/check/${this.activityId}`,
|
|
|
+ method: 'get',
|
|
|
+ }).then((res) => {
|
|
|
+ if (res.data.data) {
|
|
|
+ // 已经报名
|
|
|
+ uni.navigateTo({
|
|
|
+ url: '/pages5/mockExam/registrationSuccess?endTime=' + this.endTime + '&startTime=' + this.startTime
|
|
|
+ + '&activityId=' + this.activityId
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
},
|
|
|
checkboxGroupChange(e) {
|
|
|
this.examform.userMajors = e
|
|
@@ -190,27 +243,55 @@ export default {
|
|
|
radioGroupChange(e) {
|
|
|
console.log(e, this.examform.userSex);
|
|
|
},
|
|
|
+ majorChange(e) {
|
|
|
+ this.examform.userMajors = []
|
|
|
+ let index = e.detail.value
|
|
|
+ const { majorName, majorId, mockMajorId } = this.majorList[index]
|
|
|
+ this.majorName = majorName
|
|
|
+ this.examform.majorId = majorId
|
|
|
+ // console.log('1111majorId', this.examform.majorId)
|
|
|
+ this.subjectLists = this.checkboxList.filter(e => e.mockMajorId == mockMajorId)
|
|
|
+ this.subjectLists = this.subjectLists.map((item) => {
|
|
|
+ return {
|
|
|
+ name: '《' + item.subjectName + '》',
|
|
|
+ checked: false,
|
|
|
+ ...item
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
submit() {
|
|
|
this.$refs.uForm.validate(valid => {
|
|
|
if (valid) {
|
|
|
- console.log('验证通过');
|
|
|
if (!this.subLoading) {
|
|
|
return
|
|
|
}
|
|
|
this.subLoading = false
|
|
|
+ const { userName, userSex, companyName, majorId, userMajors} = this.examform
|
|
|
+ let arrs = []
|
|
|
+ userMajors.forEach((item, index) => {
|
|
|
+ let findItem = this.subjectLists.find(e => e.subjectId == item)
|
|
|
+ if (findItem) {
|
|
|
+ arrs.push(findItem)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ let mockSubjectIds = arrs.map(e => e.subjectId).join(',')
|
|
|
+ let mockMajorSubjectIds = arrs.map(e => e.mockMajorSubjectId).join(',')
|
|
|
let params = {
|
|
|
activityId: this.activityId,
|
|
|
- ...this.examform,
|
|
|
+ userName: userName,
|
|
|
+ userSex: userSex,
|
|
|
+ companyName: companyName,
|
|
|
+ mockMajorId: majorId,
|
|
|
+ mockSubjectIds: mockSubjectIds,
|
|
|
+ mockMajorSubjectIds: mockMajorSubjectIds,
|
|
|
}
|
|
|
- params.userMajors = this.examform.userMajors.join(',')
|
|
|
- console.log('eret', params)
|
|
|
+ // console.log('eret', params)
|
|
|
this.$http({
|
|
|
- url: '/app/common/launch',
|
|
|
+ url: '/apply/activity/launch',
|
|
|
method: 'post',
|
|
|
data: params,
|
|
|
- noToken: true,
|
|
|
+ // noToken: true,
|
|
|
}).then((res) => {
|
|
|
- console.log('提交', res)
|
|
|
this.subLoading = true
|
|
|
if (res.data.code == 200) {
|
|
|
let data = res.data.data
|
|
@@ -284,6 +365,21 @@ page {
|
|
|
align-items: center;
|
|
|
padding-left: 24rpx;
|
|
|
}
|
|
|
+ .item_box {
|
|
|
+ height: 86rpx;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ .pick_con {
|
|
|
+ width: 500rpx;
|
|
|
+ height: 86rpx;
|
|
|
+ // font-size: 32rpx;
|
|
|
+ }
|
|
|
+ .text {
|
|
|
+ flex:1;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
.btns {
|
|
|
width: 100%;
|