9dc18f50 by 杨炀

大师课

1 parent c1726908
......@@ -47,6 +47,7 @@ export function newbilllist(query) {
params: query
})
}
export function vistorRegister(data) {
return request({
url: `/pcSimpleRegister`,
......@@ -68,3 +69,40 @@ export function upgradeTeam(data) {
data: data
})
}
export function submitMasterApply(data) {
return request({
url: `/league/courseUser`,
method: 'post',
data: data
})
}
export function masterClassList(query) {
return request({
url: `/league/courseItem/list`,
method: 'get',
params: query
})
}
export function getByCard(query) {
return request({
url: `/league/courseUser/getByCard`,
method: 'get',
params: query
})
}
export function getMasterApply(query) {
return request({
url: `/league/courseUser/getCourseByUser`,
method: 'get',
params: query
})
}
export function delByCard(card) {
return request({
url: `/league/courseUser/delByCard?card=${card}`,
method: 'delete'
})
}
......
......@@ -5,81 +5,121 @@
destroy-on-close
>
<div class="boxInvitation pd20">
<div class="text-center pd20" v-if="showR">
<img class="mauto" src="@/assets/dance/ok.png"/>
<!-- <h2 class="text-center">{{ language == 0 ? '申请已提交' : 'Submitted successfully' }}</h2>-->
<h4 class="text-center" v-if="language == 0">
我们已收到您的邀请函申请,并将尽快处理。请耐心等待。
</h4>
<h4 v-else>
Your invitation letter application has been received,<br/>
and we will process it as soon as possible.
<el-steps :active="activeStep" align-center class="mb20">
<el-step :title="language==0?'报名须知':'Notice'" />
<el-step :title="language==0?'填写信息':'Information'" />
<el-step :title="language==0?'选择课程':'Courses'" />
</el-steps>
<div v-if="activeStep==0">
<div class="mb60">
1.每班够开课标准后,将电话通知开课时间,请保持电话畅通。
<br/>
2.报名缴费成功后五日内,可申请全额退费;时间超出五日,申请退费则需缴纳总课程费用的20%(占用名额手续费);第二节课(含第二节)后不再接收办理退费事宜。(退费到账时间预计二十个工作日完成)
<br/>
3.我单位所有培训课程根据法定节假日正常休息,如遇不可抗力,课程顺延。
<br/>
4.课程所需书本教材、部分课程画笔颜料、舞蹈服装、跳绳等学习用品皆需学员自行准备。
<br/>
Please be patient while waiting.
</h4>
<el-button size="large" type="primary" @click="conti" round class="btn-lineG">
{{ language == 0 ? '继续提交' : 'Continue To Submit' }}
</el-button>
5.学员在首次开课前需填写免责协议书并交给所在班级的班主任。
</div>
<div class="text-center">
<el-button type="primary" class="btn-lineG" round @click="setActive(1)">下一步</el-button>
</div>
</div>
<div v-if="activeStep==1">
<el-form :model="form" :rules="rules" ref="iformRef" label-position="right" :label-width="language==0?'80px':'150px'">
<el-form-item :label="language==0?'姓名':'Name'" required prop="name">
<el-input v-model="form.name"/>
</el-form-item>
<el-form-item :label="language==0?'性别':'Gender'" required prop="gender">
<el-radio-group v-model="form.gender">
<el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio>
<el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item :label="language==0?'国籍':'Nationality'" required prop="nationality">
<el-select filterable v-model="form.nationality" style="width: 100%;">
<el-option v-for="item in countrys" :key="item.id" :label="language==0?item.name:item.enName"
:value="item.id"/>
</el-select>
</el-form-item>
<el-form-item :label="language==0?'出生日期':'Date of Birth'" required prop="birth">
<el-date-picker
v-model="form.birth"
style="width: 100%;" placeholder="YYYY-MM-DD"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item :label="language==0?'邮箱':'Email'" required prop="email">
<el-input v-model="form.email" type="email"/>
</el-form-item>
<el-form-item :label="language==0?'证件号':'ID No.'" required prop="passportNo">
<el-input v-model="form.passportNo" @blur="checkCard"/>
</el-form-item>
<el-form-item :label="language==0?'有效证件':'Passport Copy'" required prop="passportCopy">
<image-upload v-model="form.passportCopy" :limit="1" :is-show-tip="false"
:button-text="language==0?'上传':'Upload'"/>
</el-form-item>
<el-form-item :label="language==0?'抵达日期':'Date of Arrival'" required prop="arrival">
<el-date-picker
v-model="form.arrival" placeholder="YYYY-MM-DD"
style="width: 100%;"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item :label="language==0?'出发日期':'Date of Departure'" required prop="departure">
<el-date-picker
v-model="form.departure"
style="width: 100%;" placeholder="YYYY-MM-DD"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item :label="language==0?'备注':'Remark '">
<el-input type="textarea" v-model="form.remark" rows="3"/>
</el-form-item>
<div class="text-center">
<el-button size="large" @click="setActive(0)" round plain type="primary">{{ language == 0 ? '上一步' : 'PREV' }}</el-button>
<el-button type="primary" size="large" @click="checkApplyCourse(2)" round class="btn-lineG">
{{ language == 0 ? '下一步' : 'NEXT' }}
</el-button>
</div>
</el-form>
</div>
<div v-if="activeStep==2">
<div class="text-center pd20" v-if="showR">
<img class="mauto" src="@/assets/dance/ok.png"/>
<h2 class="text-center">{{ language == 0 ? '申请已提交' : 'Submitted successfully' }}</h2>
<h4 class="text-center" v-if="language == 0">
我们已收到您的申请,并将尽快处理。请耐心等待。
</h4>
<h4 v-else>
Your application has been received,<br/>
and we will process it as soon as possible.
<br/>
Please be patient while waiting.
</h4>
</div>
<div v-else>
<div class="tip text-danger mb20">*选择参加的课程(最少一项,最多两项)</div>
<el-checkbox-group size="large" v-model="form.courseId" @change="courseChange">
<div v-for="c in courseList" class="mb20">
<el-checkbox :value="c.id" border class="w100" :disabled="(form.courseId?.length>=2&&form.courseId.indexOf(c.id)==-1)||disChoose">{{language == 0 ?c.name:c.nameEn}}</el-checkbox>
</div>
</el-checkbox-group>
<el-form :model="form" :rules="rules" ref="iformRef" label-position="right" label-width="150px" v-else>
<el-form-item :label="language==0?'姓名':'Name'" required prop="name">
<el-input v-model="form.name"/>
</el-form-item>
<el-form-item :label="language==0?'性别':'Gender'" required prop="gender">
<el-radio-group v-model="form.gender">
<el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio>
<el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item :label="language==0?'国籍':'Nationality'" required prop="nationality">
<el-select filterable v-model="form.nationality" style="width: 100%;">
<el-option v-for="item in countrys" :key="item.id" :label="language==0?item.name:item.enName"
:value="item.id"/>
</el-select>
</el-form-item>
<el-form-item :label="language==0?'出生日期':'Date of Birth'" required prop="birth">
<el-date-picker
v-model="form.birth"
style="width: 100%;" placeholder="YYYY-MM-DD"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item :label="language==0?'邮箱':'Email'" required prop="email">
<el-input v-model="form.email" type="email"/>
</el-form-item>
<el-form-item :label="language==0?'护照号':'Passport No.'" required prop="passportNo">
<el-input v-model="form.passportNo"/>
</el-form-item>
<el-form-item :label="language==0?'有效证件':'Passport Copy'" required prop="passportCopy">
<image-upload v-model="form.passportCopy" :limit="1" :is-show-tip="false"
:button-text="language==0?'上传':'Upload'"/>
</el-form-item>
<el-form-item :label="language==0?'抵达日期':'Date of Arrival'" required prop="arrival">
<el-date-picker
v-model="form.arrival" placeholder="YYYY-MM-DD"
style="width: 100%;"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item :label="language==0?'出发日期':'Date of Departure'" required prop="departure">
<el-date-picker
v-model="form.departure"
style="width: 100%;" placeholder="YYYY-MM-DD"
type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item :label="language==0?'备注':'Remark '">
<el-input type="textarea" v-model="form.remark" rows="3"/>
</el-form-item>
<div class="text-center">
<el-button type="primary" size="large" @click="submit" round class="btn-lineG">
<el-button size="large" @click="setActive(1)" round plain type="primary">{{ language == 0 ? '上一步' : 'PREV' }}</el-button>
<el-button type="primary" v-if="!disChoose" size="large" @click="submit" round class="btn-lineG w200px">
{{ language == 0 ? '提交' : 'SUBMIT' }}
</el-button>
</div>
</el-form>
</div>
</div>
</div>
</el-dialog>
......@@ -92,6 +132,7 @@ import {nextTick} from "@vue/runtime-core";
import {ElMessage, ElMessageBox} from "element-plus";
import {addInvitation, countryList} from "@/apiPc/match";
import ImageUpload from "@/components/ImageUpload";
import {masterClassList, getByCard, submitMasterApply, getMasterApply, delByCard} from "@/apiPc/common";
const {proxy} = getCurrentInstance()
const language = useStorage('language', 0)
......@@ -100,8 +141,11 @@ const form = ref({
})
const show = ref(false)
const showR = ref(false)
const disChoose = ref(false)
const title = ref('')
const activeStep = ref(0)
const countrys = ref([])
const courseList = ref([])
const cptId = ref('')
const rules = ref(
{
......@@ -119,6 +163,7 @@ const open = (params) => {
show.value = true
title.value = params.title
cptId.value = params.cptId
getCourse()
}
defineExpose({open})
watch(show, (value) => {
......@@ -134,15 +179,48 @@ watch(show, (value) => {
// proxy.$refs['dialogRef'].clearValidate()
})
})
getCountryList()
function getCountryList() {
countryList().then(res => {
countrys.value = res.data
function getCourse() {
masterClassList({cptId:'1777256058082189313'}).then(res=>{
courseList.value = res.rows
})
}
function setActive(n) {
activeStep.value = n
}
function courseChange(e){
console.log('已选',e)
}
function checkApplyCourse(n) {
getMasterApply({card:form.value.passportNo}).then(res=>{
if(res.data?.length>0){
form.value.courseId = []
for(var n of res.data){
form.value.courseId.push(n.itemId)
}
ElMessageBox.confirm(
language.value == 0 ? '您已提交过信息,是否更新?' : 'You have submitted the information, do you want to update?',
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: language.value == 0 ? '是' : 'Confirm',
cancelButtonText: language.value == 0 ? '否' : 'Cancel',
type: 'warning'
}).then(()=>{
//删除原记录
delByCard(form.value.passportNo).then(res=>{
form.value.courseId = []
disChoose.value = false
to2()
})
}).catch(()=>{
disChoose.value = true
to2()
})
} else {
to2()
}
})
const submit = () => {
}
function to2() {
proxy.$refs.iformRef.validate(valid => {
if (form.value.email.indexOf('@') == -1) {
if (language.value == 0) {
......@@ -153,25 +231,58 @@ const submit = () => {
return
}
if (valid) {
ElMessageBox.confirm(
language.value == 0 ? '请确认信息正确并提交吗?' : 'Please confirm that the information is correct and submit it',
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(() => {
form.value.cptId = cptId.value
if (Array.isArray(form.value.passportCopy)) {
form.value.passportCopy = form.value.passportCopy[0].url
}
addInvitation(form.value).then((res) => {
ElMessage.success(language.value == 0 ?'提交成功':'Successfully!')
showR.value = true
})
})
setActive(2)
}
})
}
function checkCard() {
getByCard({card:form.value.passportNo}).then(res=>{
if(res.data){
form.value = res.data
}
})
}
getCountryList()
function getCountryList() {
countryList().then(res => {
countrys.value = res.data
})
}
const submit = () => {
if (form.value.courseId.length == 0) {
if (language.value == 0) {
ElMessage.warning('请至少选择一门课程')
} else {
ElMessage.warning('Please select at least one course')
}
return
}
ElMessageBox.confirm(
language.value == 0 ? '确认提交吗?' : 'Are you sure to submit?',
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(() => {
// form.value.cptId = cptId.value
if (Array.isArray(form.value.passportCopy)) {
form.value.passportCopy = form.value.passportCopy[0].url
}
// form.value.courseId = form.value.courseId.toString()
form.value.itemIds = form.value.courseId.toString()
delete form.value.courseId
submitMasterApply(form.value).then((res) => {
ElMessage.success(language.value == 0 ?'提交成功':'Successfully!')
showR.value = true
}).catch(()=>{
})
})
}
const conti = () => {
showR.value = false
form.value = {
......
<template>
<div>
<index-Ch v-if="language ==0"/>
<index-En v-else/>
<index-Ch v-if="language ==0" @pop="openMaster"/>
<index-En v-else @pop="openMaster"/>
<div v-if="showgg" class="fixed_gg">
<!--天气-->
<el-icon class="cclose" @click.stop="showgg=false"><circle-close /></el-icon>
......@@ -59,6 +59,8 @@
</div>
</el-dialog>
</div>
<dialog-master-class ref="masterClassRef"/>
</div>
</template>
......@@ -67,10 +69,12 @@
import IndexCh from '/src/viewsPc/index'
import IndexEn from '/src/viewsPc/index_en'
import WeatherIcon from '@/viewsPc/components/weatherIcon'
import DialogMasterClass from '@/viewsPc/components/masterClass'
import {useStorage} from "@vueuse/core/index";
import {ref} from "vue";
import {getWeather} from "@/apiPc/webSite";
import {getCurrentInstance} from "@vue/runtime-core";
const {proxy} = getCurrentInstance()
const showgg = ref(true)
const language = useStorage('language', 0)
......@@ -91,7 +95,14 @@ function init(){
const popWeather = () => {
weatherdialog.value = true
}
const openMaster = (params) => {
console.log(params)
var obj = {
title:'大师课申请',
cptId:params.cptId
}
proxy.$refs['masterClassRef'].open(obj)
}
</script>
<style scoped lang="scss">
......
......@@ -94,7 +94,7 @@
</el-icon>
</a>
<el-button>大师公益课报名</el-button>
<el-button class="zn-btn ml20" @click="popMaster">大师公益课报名</el-button>
</div>
</el-col>
<el-col :sm="24" :lg="14">
......@@ -361,7 +361,7 @@ import HomeQuick from '@/viewsPc/components/homeQuick'
import HomeCalendar from '@/viewsPc/components/homeCalendar'
import {ref, nextTick, onMounted, watch} from 'vue'
import {getCurrentInstance} from '@vue/runtime-core'
import {getHomePage, getNewsListById, getNewsList, getWeather} from '@/apiPc/webSite'
import {getHomePage, getNewsListById, getNewsList} from '@/apiPc/webSite'
import {useRouter} from 'vue-router'
import {rankList} from '@/assets/js/data'
import _ from 'lodash'
......@@ -377,14 +377,7 @@ const navigationPic = ref({
})
const router = useRouter()
const {proxy} = getCurrentInstance()
const bannerVideo = ref(null)
const isPlay = ref(false)
const canPrev = ref(false)
const canNext = ref(false)
const activeRankName = ref(0)
const weatherObj = ref({
forecast:[]
})
const emit = defineEmits(['pop'])
const time = ref(0)
const personList = ref([
{ name: 'Wolfgang Eliasch', pp: '拉丁舞裁判长 奥地利', src: '/img/1.png' },
......@@ -402,12 +395,10 @@ const news = ref([])
const notice = ref([])
const display = ref([])
const scores = ref([])
const nowscores = ref([])
const livelist = ref([])
const matchData = ref({})
const maList = ref([])
const loading = ref(false)
const weatherdialog = ref(false)
const picList = ref([])
onMounted(() => {
......@@ -493,9 +484,6 @@ const goMatch = (n) => {
path: `/match/list/${n.id}`
})
}
const popWeather = () => {
weatherdialog.value = true
}
const goGuide = () => {
router.push({
......@@ -505,6 +493,13 @@ const goGuide = () => {
}
})
}
const popMaster = () => {
var params = {
cptId:matchData.value.id
}
emit('pop',params)
}
</script>
<style scoped lang="scss">
......
......@@ -89,6 +89,10 @@
GUIDELINE
<el-icon><download /></el-icon>
</a>
<a @click="popMaster">
</a>
</div>
</el-col>
<el-col :sm="24" :lg="14">
......@@ -385,6 +389,7 @@ const navigationPic = ref({
})
const router = useRouter()
const { proxy } = getCurrentInstance()
const emit = defineEmits(['pop'])
const time = ref(0)
const personList = ref([
......@@ -498,6 +503,12 @@ const goGuide = () => {
}
})
}
const popMaster = () => {
var params = {
cptId:matchData.value.id
}
emit('pop',params)
}
</script>
<style scoped lang="scss">
......
......@@ -82,9 +82,9 @@ export default defineConfig(({ mode, command }) => {
rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '')
},
'/dev-api': {
// target: 'http://192.168.1.118:8081/',
target: 'http://192.168.1.118:8081/',
// target: 'https://jijin.wtwuxicenter.com/stage-api',
// target: 'https://jijin.wtwuxicenter.com/stage-api',
target: 'https://jijin.wtwuxicenter.com/stage-api',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api/, '')
}
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!