|
@@ -201,48 +201,50 @@
|
|
|
</van-radio-group>
|
|
|
</template>
|
|
|
</van-field>
|
|
|
- <van-field label="首选声部" v-model="stu.registerSubjectId" readonly name="registerSubjectId"
|
|
|
- :rules="[{ required: true, message: '请选择首选声部', trigger: 'onChange' }]" @click="pickerChange2"
|
|
|
- placeholder="请选择首选声部">
|
|
|
+ <van-field label="孩子是否有学习过的乐器(有请备注)" v-model="stu.learningSubjectName" name="learningSubjectName"
|
|
|
+ placeholder="请输入学习过的乐器">
|
|
|
+ </van-field>
|
|
|
+
|
|
|
+ <van-field label="选报声部1" v-model="stu.registerSubjectId" readonly name="registerSubjectId"
|
|
|
+ :rules="[{ required: true, message: '请选择选报声部1', trigger: 'onChange' }]" @click="pickerChange2"
|
|
|
+ placeholder="请选择选报声部1">
|
|
|
<template #right-icon>
|
|
|
<van-icon name="arrow" :color="'#323233'" size="16"></van-icon>
|
|
|
</template>
|
|
|
</van-field>
|
|
|
- <van-field label="次选声部" v-model="stu.standbyRegisterSubjectId" readonly name="standbyRegisterSubjectId"
|
|
|
- :rules="[{ required: true, message: '请选择次选声部', trigger: 'onChange' }]" @click="pickerChange3"
|
|
|
- placeholder="请选择次选声部">
|
|
|
+ <van-field label="选报声部2" v-model="stu.standbyRegisterSubjectId" readonly name="standbyRegisterSubjectId"
|
|
|
+ :rules="[{ required: true, message: '请选择选报声部2', trigger: 'onChange' }]" @click="pickerChange3"
|
|
|
+ placeholder="请选择选报声部2">
|
|
|
<template #right-icon>
|
|
|
<van-icon name="arrow" :color="'#323233'" size="16"></van-icon>
|
|
|
</template>
|
|
|
</van-field>
|
|
|
|
|
|
- <van-field label="是否服从调配" name="instrumentsPrepareMode" :rules="[{ required: true, message: '请选择是否服从调配' }]">
|
|
|
+ <van-field label="是否服从调配" name="adjust" :rules="[{ required: true, message: '请选择是否服从调配' }]">
|
|
|
<template #input>
|
|
|
<div>
|
|
|
<p class="otherSubject">(如果自选声部名额已满,是否愿意接受安排其他声部?)</p>
|
|
|
|
|
|
- <van-radio-group v-model="stu.instrumentsPrepareMode" checked-color="#57ABF8" direction="horizontal">
|
|
|
- <van-tag size="large" type="primary"
|
|
|
- :color="!(stu.instrumentsPrepareMode === 'GROUP_PURCHASE') ? '#EAEAEA' : '#57ABF8'"
|
|
|
- :text-color="!(stu.instrumentsPrepareMode === 'GROUP_PURCHASE') ? '#AAA' : '#FFF'"
|
|
|
- class="radioSection">
|
|
|
- <van-radio class="radioItem" name="GROUP_PURCHASE"></van-radio>愿意
|
|
|
+ <van-radio-group v-model="stu.adjust" checked-color="#57ABF8" direction="horizontal">
|
|
|
+ <van-tag size="large" type="primary" :color="!(stu.adjust === 1) ? '#EAEAEA' : '#57ABF8'"
|
|
|
+ :text-color="!(stu.adjust === 1) ? '#AAA' : '#FFF'" class="radioSection">
|
|
|
+ <van-radio class="radioItem" :name='1'></van-radio>愿意
|
|
|
</van-tag>
|
|
|
- <van-tag size="large" type="primary"
|
|
|
- :color="!(stu.instrumentsPrepareMode === 'ONESELF') ? '#EAEAEA' : '#57ABF8'"
|
|
|
- :text-color="!(stu.instrumentsPrepareMode === 'ONESELF') ? '#AAA' : '#FFF'" class="radioSection">
|
|
|
- <van-radio class="radioItem" name="ONESELF"></van-radio>不愿意
|
|
|
+ <van-tag size="large" type="primary" :color="!(stu.adjust === 0) ? '#EAEAEA' : '#57ABF8'"
|
|
|
+ :text-color="!(stu.adjust === 0) ? '#AAA' : '#FFF'" class="radioSection">
|
|
|
+ <van-radio class="radioItem" :name='0'></van-radio>不愿意
|
|
|
</van-tag>
|
|
|
</van-radio-group>
|
|
|
</div>
|
|
|
</template>
|
|
|
</van-field>
|
|
|
+
|
|
|
</van-cell-group>
|
|
|
|
|
|
<van-cell-group inset class="cell-group">
|
|
|
<van-field label="乐器参考表&Ai练习参考表" :border="false" style="padding-bottom: 0;">
|
|
|
<template #input>
|
|
|
- <img src="./images/preRegister/banner.png" style="width: 100%" />
|
|
|
+ <img :src="instrumentPriceImg" style="width: 100%" @click="showImg = true" />
|
|
|
</template>
|
|
|
</van-field>
|
|
|
|
|
@@ -250,14 +252,14 @@
|
|
|
<template #input>
|
|
|
<van-radio-group v-model="stu.instrumentsPrepareMode" checked-color="#57ABF8" direction="horizontal">
|
|
|
<van-tag size="large" type="primary"
|
|
|
- :color="!(stu.instrumentsPrepareMode === 'GROUP_PURCHASE') ? '#EAEAEA' : '#57ABF8'"
|
|
|
- :text-color="!(stu.instrumentsPrepareMode === 'GROUP_PURCHASE') ? '#AAA' : '#FFF'" class="radioSection">
|
|
|
- <van-radio class="radioItem" name="GROUP_PURCHASE"></van-radio>团购
|
|
|
+ :color="!(stu.instrumentsPrepareMode === 'ONESELF') ? '#EAEAEA' : '#57ABF8'"
|
|
|
+ :text-color="!(stu.instrumentsPrepareMode === 'ONESELF') ? '#AAA' : '#FFF'" class="radioSection">
|
|
|
+ <van-radio class="radioItem" name="ONESELF"></van-radio>自行购置
|
|
|
</van-tag>
|
|
|
<van-tag size="large" type="primary"
|
|
|
- :color="!(stu.instrumentsPrepareMode === 'ONESELF') ? '#EAEAEA' : '#57ABF8'"
|
|
|
- :text-color="!(stu.instrumentsPrepareMode === 'ONESELF') ? '#AAA' : '#FFF'" class="radioSection">
|
|
|
- <van-radio class="radioItem" name="ONESELF"></van-radio>自备
|
|
|
+ :color="!(stu.instrumentsPrepareMode === 'GROUP_PURCHASE') ? '#EAEAEA' : '#57ABF8'"
|
|
|
+ :text-color="!(stu.instrumentsPrepareMode === 'GROUP_PURCHASE') ? '#AAA' : '#FFF'" class="radioSection">
|
|
|
+ <van-radio class="radioItem" name="GROUP_PURCHASE"></van-radio>希望基金会提供渠道购置
|
|
|
</van-tag>
|
|
|
</van-radio-group>
|
|
|
</template>
|
|
@@ -268,36 +270,28 @@
|
|
|
<template #input>
|
|
|
<van-radio-group v-model="stu.learningSystemPrepareMode" checked-color="#57ABF8" direction="horizontal">
|
|
|
<van-tag size="large" type="primary"
|
|
|
- :color="!(stu.learningSystemPrepareMode === 'GROUP_PURCHASE') ? '#EAEAEA' : '#57ABF8'"
|
|
|
- :text-color="!(stu.learningSystemPrepareMode === 'GROUP_PURCHASE') ? '#AAA' : '#FFF'"
|
|
|
- class="radioSection">
|
|
|
- <van-radio class="radioItem" name="GROUP_PURCHASE"></van-radio>团购
|
|
|
+ :color="!(stu.learningSystemPrepareMode === 'ONESELF') ? '#EAEAEA' : '#57ABF8'"
|
|
|
+ :text-color="!(stu.learningSystemPrepareMode === 'ONESELF') ? '#AAA' : '#FFF'" class="radioSection">
|
|
|
+ <van-radio class="radioItem" name="ONESELF"></van-radio>自行购置
|
|
|
</van-tag>
|
|
|
<van-tag size="large" type="primary"
|
|
|
- :color="!(stu.learningSystemPrepareMode === 'ONESELF') ? '#EAEAEA' : '#57ABF8'"
|
|
|
- :text-color="!(stu.learningSystemPrepareMode === 'ONESELF') ? '#AAA' : '#FFF'" :color="'#57ABF8'"
|
|
|
+ :color="!(stu.learningSystemPrepareMode === 'GROUP_PURCHASE') ? '#EAEAEA' : '#57ABF8'"
|
|
|
+ :text-color="!(stu.learningSystemPrepareMode === 'GROUP_PURCHASE') ? '#AAA' : '#FFF'" :color="'#57ABF8'"
|
|
|
class="radioSection">
|
|
|
- <van-radio class="radioItem" name="ONESELF"></van-radio>自备
|
|
|
+ <van-radio class="radioItem" name="GROUP_PURCHASE"></van-radio>希望基金会提供渠道购置
|
|
|
</van-tag>
|
|
|
</van-radio-group>
|
|
|
</template>
|
|
|
</van-field>
|
|
|
- <van-field type="tel" @blur='checkchangePhone' maxlength="11" minlength="11" label="联系电话(直接监护人)"
|
|
|
- v-model="stu.phone" name="phone" :rules="[{ pattern, message: '输入监护人手机号码有误' }]" placeholder="请输入监护人手机号码">
|
|
|
+
|
|
|
+ <van-field type="tel" maxlength="11" minlength="11" label="联系电话(直接监护人)" v-model="stu.phone" name="phone"
|
|
|
+ :rules="[{ pattern, message: '输入监护人手机号码有误' }]" placeholder="请输入监护人手机号码">
|
|
|
</van-field>
|
|
|
</van-cell-group>
|
|
|
|
|
|
<van-button size="large" block round class="btn-submit" :loading="btnLoading" native-type="submit"></van-button>
|
|
|
</van-form>
|
|
|
|
|
|
- <van-popup v-model:show="showPicker" position="bottom" round>
|
|
|
- <van-picker show-toolbar :columns="currentGrade" @cancel="showPicker = false" @confirm="onConfirm" />
|
|
|
- </van-popup>
|
|
|
-
|
|
|
- <van-popup v-model:show="classPicker" position="bottom" round>
|
|
|
- <van-picker show-toolbar :columns="classList" @cancel="classPicker = false" @confirm="onConfirmClass" />
|
|
|
- </van-popup>
|
|
|
-
|
|
|
<van-popup v-model:show="subjectPicker" position="bottom" round>
|
|
|
<van-picker show-toolbar :columns="subjectList" @cancel="subjectPicker = false" @confirm="onConfirmSubject" />
|
|
|
</van-popup>
|
|
@@ -306,6 +300,9 @@
|
|
|
<van-picker show-toolbar :columns="subjectList" @cancel="subjectPicker2 = false" @confirm="onConfirmSubject2" />
|
|
|
</van-popup>
|
|
|
|
|
|
+ <van-image-preview v-model:show="showImg" :images="[instrumentPriceImg]">
|
|
|
+ </van-image-preview>
|
|
|
+
|
|
|
<van-popup v-model:show="submitStatus" round
|
|
|
style="width: 100%;background-color: transparent;transform: translateY(-60%);" :close-on-click-overlay="false">
|
|
|
<div class="submit-container">
|
|
@@ -326,55 +323,42 @@
|
|
|
<!-- 引入 Vue 和 Vant 的 JS 文件 -->
|
|
|
<script src="./js/vue.global.min.js"></script>
|
|
|
<script src="./js/vant.min.js"></script>
|
|
|
+ <!-- <script src="https://fastly.jsdelivr.net/npm/vant@4/lib/vant.min.js"></script> -->
|
|
|
<!-- <script src="https://cdn.jsdelivr.net/npm/umi-request@1.4.0/dist/index.min.js"></script> -->
|
|
|
<script src="./js/axios.js"></script>
|
|
|
<script type="text/javascript" src="./js/utils.js"></script>
|
|
|
<script>
|
|
|
// 乐团交付,乐团停止或关闭,有新的交付团;则不允许报名
|
|
|
- var classList = []
|
|
|
- for (var i = 1; i <= 40; i++) {
|
|
|
- classList.push({ text: i + '班', value: i })
|
|
|
- }
|
|
|
var app = Vue.createApp({
|
|
|
data() {
|
|
|
return {
|
|
|
orchestraId: getQueryVariable('orchestraId'),
|
|
|
+ openId: getQueryVariable('openId'),
|
|
|
orchestraName: null,
|
|
|
schoolId: null,
|
|
|
- showPicker: false,
|
|
|
- classPicker: false,
|
|
|
subjectPickerType: 'first',
|
|
|
subjectPicker: false,
|
|
|
subjectPicker2: false,
|
|
|
submitStatus: false,
|
|
|
pattern: /^((13[0-9])|(14(0|[5-7]|9))|(15([0-3]|[5-9]))|(16(2|[5-7]))|(17[0-8])|(18[0-9])|(19([0-3]|[5-9])))\d{8}$/,
|
|
|
nameReg: /^[\u4E00-\u9FA5]+$/,
|
|
|
- currentGrade: [
|
|
|
- { text: '一年级', value: 1 },
|
|
|
- { text: '二年级', value: 2 },
|
|
|
- { text: '三年级', value: 3 },
|
|
|
- { text: '四年级', value: 4 },
|
|
|
- { text: '五年级', value: 5 },
|
|
|
- ], // 年级数组列表
|
|
|
- classList: classList,
|
|
|
- subjectList: [],
|
|
|
+ subjectList: [{ text: '听从老师安排', value: 999 }],
|
|
|
columns: [],
|
|
|
pickerType: null, // 下拉类型
|
|
|
stu: {
|
|
|
- username: null, // 姓名
|
|
|
sex: 1, // 性别
|
|
|
phone: null, // 电话
|
|
|
- currentGrade: '', // 年级
|
|
|
- currentGradeNum: null, // 年级编号
|
|
|
- currentClass: '', // 班级
|
|
|
- currentClassNum: null, // 年级编号
|
|
|
+ learningSubjectName: null,
|
|
|
registerSubjectId: '', // 首选声部
|
|
|
registerSubjectNum: null, // 所在声部
|
|
|
standbyRegisterSubjectId: '', // 次选声部
|
|
|
+ adjust: 1,
|
|
|
standbyRegisterSubjectNum: '', // 次选声部
|
|
|
- instrumentsPrepareMode: 'GROUP_PURCHASE',
|
|
|
- learningSystemPrepareMode: 'GROUP_PURCHASE',
|
|
|
+ instrumentsPrepareMode: 'ONESELF',
|
|
|
+ learningSystemPrepareMode: 'ONESELF',
|
|
|
},
|
|
|
+ showImg: false,
|
|
|
+ instrumentPriceImg: '',
|
|
|
btnLoading: false,
|
|
|
checkPhone: true,
|
|
|
showPopup: false,
|
|
@@ -388,10 +372,12 @@
|
|
|
}
|
|
|
|
|
|
// 判断是否是微信,只能微信中打开
|
|
|
- if (!browser().weixin) {
|
|
|
- // this.showPopup = true
|
|
|
- // return
|
|
|
- } else {
|
|
|
+ // if (!browser().weixin) {
|
|
|
+ // this.showPopup = true
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // 判断是在微信中,并且没有openId
|
|
|
+ if (browser().weixin && !this.openId) {
|
|
|
//授权
|
|
|
const code = getUrlCode()
|
|
|
console.log(code)
|
|
@@ -411,13 +397,10 @@
|
|
|
var schoolDetail = await axios.post('/api-student/open/school/detail', {
|
|
|
orchestraId: this.orchestraId
|
|
|
})
|
|
|
- console.log(schoolDetail)
|
|
|
+ // console.log(schoolDetail)
|
|
|
if (schoolDetail.data.code === 200) {
|
|
|
var schoolSystem = schoolDetail.data.data.schoolSystem || 'sixYearSystem'
|
|
|
this.schoolId = schoolDetail.data.data.id
|
|
|
- if (schoolSystem === 'sixYearSystem') {
|
|
|
- this.currentGrade.push({ text: '六年级', value: 6 })
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
var subjects = await axios.post('/api-student/open/orchestraSubjectConfig/pageByOrchestraId', {
|
|
@@ -436,10 +419,9 @@
|
|
|
}
|
|
|
|
|
|
var orchestraDetail = await axios.get('/api-student/open/orchestra/detail/' + this.orchestraId)
|
|
|
- // console.log(orchestraDetail.data.code, 'orchestraDetail')
|
|
|
if (orchestraDetail.data.code === 200) {
|
|
|
this.orchestraName = orchestraDetail.data.data.name || ''
|
|
|
- // console.log(this.orchestraName, 'orchestraName')
|
|
|
+ this.instrumentPriceImg = orchestraDetail.data.data.instrumentPriceImg || ''
|
|
|
this.canSignUp = orchestraDetail.data.data.status
|
|
|
if (orchestraDetail.data.data.status !== 'PRE_REGISTER') {
|
|
|
vant.showToast('乐团预报名阶段已结束')
|
|
@@ -492,69 +474,6 @@
|
|
|
this.submitStatus = false
|
|
|
window.location.href = window.location.origin + '/orchestra-student/#/download'
|
|
|
},
|
|
|
- async checkchangePhone(val) {
|
|
|
- try {
|
|
|
- await this.$refs.form.validate('phone')
|
|
|
- this.checkPhone = false
|
|
|
- // 查询老数据
|
|
|
- let tempValues = {}
|
|
|
- this.setLoading(true)
|
|
|
- tempValues.orchestraId = this.orchestraId
|
|
|
- tempValues.phone = this.stu.phone
|
|
|
-
|
|
|
- // 先从预报名中取数据
|
|
|
- var preRegister = await axios.get('/api-student/open/orchestraPreRegister/detailByPhone', {
|
|
|
- params: {
|
|
|
- ...tempValues
|
|
|
- }
|
|
|
- })
|
|
|
- if (preRegister.data.code === 200 && preRegister.data.data) {
|
|
|
- var detail = preRegister.data.data
|
|
|
- var grade = this.currentGrade.find(item => item.value == detail.currentGrade)
|
|
|
- var cls = this.classList.find(item => item.value == detail.currentClass)
|
|
|
- var subjects = this.subjectList.find(item => item.value == detail.registerSubjectId)
|
|
|
- var subjects2 = this.subjectList.find(item => item.value == detail.standbyRegisterSubjectId)
|
|
|
- this.stu = {
|
|
|
- username: detail.username, // 姓名
|
|
|
- sex: detail.sex ? 1 : 0, // 性别
|
|
|
- phone: detail.phone, // 电话
|
|
|
- currentGrade: grade.text, // 年级
|
|
|
- currentGradeNum: detail.currentGrade, // 年级编号
|
|
|
- currentClass: cls.text, // 班级
|
|
|
- currentClassNum: detail.currentClass, // 年级编号
|
|
|
- registerSubjectId: subjects.text, //
|
|
|
- registerSubjectNum: detail.registerSubjectId, //
|
|
|
- standbyRegisterSubjectId: subjects2.text,
|
|
|
- standbyRegisterSubjectNum: detail.standbyRegisterSubjectId,
|
|
|
- instrumentsPrepareMode: detail.instrumentsPrepareMode,
|
|
|
- learningSystemPrepareMode: detail.learningSystemPrepareMode,
|
|
|
- }
|
|
|
- this.setLoading(false)
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- // 如果预报名中没有数据,则从启蒙报名中取数据
|
|
|
- var userDetail = await axios.get('/api-student/open/orchestraInitiationSurvey/detailByPhone', {
|
|
|
- params: {
|
|
|
- ...tempValues
|
|
|
- }
|
|
|
- })
|
|
|
-
|
|
|
- if (userDetail.data.code === 200 && userDetail.data.data) {
|
|
|
- var detail = userDetail.data.data
|
|
|
- var grade = this.currentGrade.find(item => item.value == detail.currentGrade)
|
|
|
- var cls = this.classList.find(item => item.value == detail.currentClass)
|
|
|
- this.stu.username = detail.username // 姓名
|
|
|
- this.stu.sex = detail.sex ? 1 : 0 // 性别
|
|
|
- this.stu.phone = detail.phone // 电话
|
|
|
- this.stu.currentGrade = grade.text // 年级
|
|
|
- this.stu.currentGradeNum = detail.currentGrade // 年级编号
|
|
|
- this.stu.currentClass = cls.text // 班级
|
|
|
- this.stu.currentClassNum = detail.currentClass // 年级编号
|
|
|
- }
|
|
|
- } catch { }
|
|
|
- this.setLoading(false)
|
|
|
- },
|
|
|
validator(val) {
|
|
|
// 校验函数返回 true 表示校验通过,false 表示不通过
|
|
|
return this.nameReg.test(val) && (val.length >= 2 && val.length <= 15);
|
|
@@ -579,9 +498,8 @@
|
|
|
var res = await axios.post('/api-student/open/orchestraPreRegister/save', {
|
|
|
orchestraId: this.orchestraId,
|
|
|
schoolId: this.schoolId,
|
|
|
+ openId: this.openId,
|
|
|
...stu,
|
|
|
- currentClass: stu.currentClassNum,
|
|
|
- currentGrade: stu.currentGradeNum,
|
|
|
registerSubjectId: stu.registerSubjectNum,
|
|
|
standbyRegisterSubjectId: stu.standbyRegisterSubjectNum,
|
|
|
code: this.code
|
|
@@ -610,49 +528,28 @@
|
|
|
vant.closeToast()
|
|
|
}
|
|
|
},
|
|
|
- pickerChange(type) {
|
|
|
- this.showPicker = true
|
|
|
- },
|
|
|
- pickerChange1(type) {
|
|
|
- this.classPicker = true
|
|
|
- },
|
|
|
pickerChange2(type) {
|
|
|
let tempId = this.stu.standbyRegisterSubjectNum
|
|
|
this.subjectList.forEach((item) => {
|
|
|
- if (item.value == tempId) {
|
|
|
+ if (item.value == tempId && tempId != 999) {
|
|
|
item.disabled = true
|
|
|
} else {
|
|
|
item.disabled = false
|
|
|
}
|
|
|
})
|
|
|
-
|
|
|
this.subjectPicker = true
|
|
|
-
|
|
|
},
|
|
|
pickerChange3() {
|
|
|
let tempId = this.stu.registerSubjectNum
|
|
|
this.subjectList.forEach((item) => {
|
|
|
- if (item.value == tempId) {
|
|
|
+ if (item.value == tempId && tempId != 999) {
|
|
|
item.disabled = true
|
|
|
} else {
|
|
|
item.disabled = false
|
|
|
}
|
|
|
})
|
|
|
-
|
|
|
this.subjectPicker2 = true
|
|
|
},
|
|
|
- onConfirm(options) {
|
|
|
- var stu = this.stu
|
|
|
- stu.currentGrade = options.selectedOptions[0].text
|
|
|
- stu.currentGradeNum = options.selectedOptions[0].value
|
|
|
- this.showPicker = false
|
|
|
- },
|
|
|
- onConfirmClass(options) {
|
|
|
- var stu = this.stu
|
|
|
- stu.currentClass = options.selectedOptions[0].text
|
|
|
- stu.currentClassNum = options.selectedOptions[0].value
|
|
|
- this.classPicker = false
|
|
|
- },
|
|
|
onConfirmSubject(options) {
|
|
|
var stu = this.stu
|
|
|
stu.registerSubjectId = options.selectedOptions[0].text
|