<template>
|
<view class="content">
|
<view class="logo">
|
<up-avatar :src="userStore.userinfo.avatarurl" size="120"></up-avatar>
|
</view>
|
<view class="school">
|
<u-button size="large" :plain="true" type="primary" @click="schoolShow = true" shape="circle">
|
{{ school ? school.name : "请选择学校" }}
|
</u-button>
|
<u-picker :show="schoolShow" :columns="schoolColumns" @confirm="schoolChange" @cancel="schoolShow = false">
|
</u-picker>
|
</view>
|
<view class="college">
|
<u-button size="large" :plain="true" type="primary" @click="collegeShow = true" shape="circle">
|
{{ college ? college.name : "请选择学院" }}
|
</u-button>
|
<u-picker :show="collegeShow" :columns="collegeColumns" @confirm="collegeChange" @cancel="collegeShow = false">
|
</u-picker>
|
</view>
|
<view class="major">
|
<u-button size="large" :plain="true" type="primary" @click="majorShow = true" shape="circle">
|
{{ major ? major.name : "请选择专业" }}
|
</u-button>
|
<u-picker :show="majorShow" :columns="majorColumns" @confirm="majorChange" @cancel="majorShow = false">
|
</u-picker>
|
</view>
|
<view class="submit">
|
<u-button size="large" type="primary" shape="circle" @click="submit">注册</u-button>
|
</view>
|
<u-popup :show="emptyShow" @close="emptyShow = false">
|
<u-empty text="所谓伊人,在水一方" mode="list"></u-empty>
|
</u-popup>
|
</view>
|
</template>
|
|
<script>
|
import { ref, reactive, toRefs, onMounted, getCurrentInstance } from "vue";
|
import { useBasicInfoStore } from "../../store/basicInfo"
|
import {
|
GetOrganizationMasters,
|
GetOrganizationDepartments,
|
GetOrganizationMajors,
|
SetVIPOrganization
|
} from '../../apis/api'
|
|
export default {
|
setup() {
|
const userStore = useBasicInfoStore()
|
const { proxy } = getCurrentInstance();
|
const state = reactive({
|
schoolShow: false,
|
schools: [],
|
schoolColumns: [],
|
school: userStore.school,
|
|
collegeShow: false,
|
colleges: [],
|
collegeColumns: [],
|
college: userStore.college,
|
|
majorShow: false,
|
majors: [],
|
majorColumns: [],
|
major: userStore.major,
|
|
emptyShow:false,
|
})
|
|
onMounted(() => {
|
Init();
|
});
|
|
const Init = () => {
|
if (!userStore.$state.hasLogin) {
|
uni.navigateTo({
|
url: '/pages/security/login' // 目标页面路径
|
});
|
} else {
|
loadSchool();
|
}
|
//loadSchool();
|
if (!userStore.school ) {
|
state.school=null
|
}
|
if (!userStore.college ) {
|
state.college=null
|
}
|
if (!userStore.major ) {
|
state.major=null
|
}
|
};
|
|
const loadSchool = () => {
|
state.schools = [];
|
state.schoolColumns = [];
|
|
let condition = {};
|
GetOrganizationMasters(condition).then(resp => {
|
if (resp.data) {
|
state.schools = resp.data;
|
|
let sArray = [];
|
resp.data.map(e => {
|
sArray.push(e.name);
|
});
|
|
state.schoolColumns.push(sArray);
|
}
|
}).catch(err => {
|
console.error(err);
|
});
|
}
|
|
const schoolChange = (e) => {
|
let target = e.value[0];
|
state.college=null
|
state.major=null
|
if (state.school == null || state.school.name !== target) {
|
state.school = state.schools.filter(e => e.name === target).shift();
|
|
state.schoolShow = false
|
} else {
|
state.schoolShow = false
|
}
|
|
loadCollege(state.school.id);
|
}
|
|
const loadCollege = (organizationid) => {
|
state.colleges = [];
|
state.collegeColumns = [];
|
state.major=null
|
let condition = { organizationid: organizationid };
|
GetOrganizationDepartments(condition).then(resp => {
|
if (resp.data) {
|
state.colleges = resp.data;
|
|
let sArray = [];
|
resp.data.map(e => {
|
sArray.push(e.name);
|
});
|
|
state.collegeColumns.push(sArray);
|
}
|
}).catch(err => {
|
console.error(err);
|
});
|
}
|
|
const collegeChange = (e) => {
|
let target = e.value[0];
|
|
if (state.college == null || state.college.name !== target) {
|
state.college = state.colleges.filter(e => e.name === target).shift();
|
|
state.collegeShow = false
|
} else {
|
state.collegeShow = false
|
}
|
|
loadMajor(state.school.id, state.college.id);
|
}
|
|
const loadMajor = (organizationid, departmentid) => {
|
state.majors = [];
|
state.majorColumns = [];
|
|
let condition = { organizationid: organizationid, departmentid: departmentid };
|
GetOrganizationMajors(condition).then(resp => {
|
if (resp) {
|
state.majors = resp.data;
|
|
let sArray = [];
|
resp.data.map(e => {
|
sArray.push(e.name);
|
});
|
|
state.majorColumns.push(sArray);
|
}
|
}).catch(err => {
|
console.error(err);
|
});
|
}
|
|
const majorChange = (e) => {
|
let target = e.value[0];
|
|
if (state.major == null || state.major.name !== target) {
|
state.major = state.majors.filter(e => e.name === target).shift();
|
|
state.majorShow = false
|
} else {
|
state.majorShow = false
|
}
|
}
|
|
const submit = () => {
|
if (!state.school) {
|
return;
|
}
|
if (!state.college) {
|
return;
|
}
|
if (!state.major) {
|
return;
|
}
|
|
userStore.school = state.school;
|
userStore.college = state.college;
|
userStore.major = state.major;
|
|
let model = {
|
masterid: userStore.userinfo.id,
|
mastercode: userStore.userinfo.idcard,
|
mastername: userStore.userinfo.name,
|
organizationid: state.school.id,
|
organizationname: state.school.name,
|
organizationcode: state.school.code,
|
departmentid: state.college.id,
|
departmentname: state.college.name,
|
departmentcode: state.college.code,
|
majorid: state.major.id,
|
majorname: state.major.name,
|
majorcode: state.major.code,
|
};
|
if (userStore.userinfo.id) {
|
SetVIPOrganization(model).then(resp => {
|
if (resp.data && resp.code === 200) {
|
userStore.grade = null;
|
userStore.subject = null;
|
uni.switchTab({
|
url: '/pages/question/list' // 目标页面路径
|
});
|
}
|
}).catch(err => {
|
console.error(err);
|
});
|
}
|
}
|
|
return { ...toRefs(state), userStore, schoolChange, collegeChange, majorChange, submit }
|
}
|
}
|
</script>
|
|
<style scoped lang="scss">
|
.center {
|
display: flex;
|
flex-direction: column;
|
align-items: center;
|
justify-content: center;
|
}
|
|
.content {
|
@extend .center;
|
background-color: #f5efd9;
|
height: 100vh;
|
}
|
|
.logo {
|
@extend .center;
|
height: 30vh;
|
}
|
|
.school {
|
@extend .center;
|
width: 80%;
|
height: 10vh;
|
}
|
|
.college {
|
@extend .center;
|
width: 80%;
|
height: 10vh;
|
}
|
|
.major {
|
@extend .center;
|
width: 80%;
|
height: 10vh;
|
}
|
|
.submit {
|
@extend .center;
|
width: 80%;
|
height: 20vh;
|
}
|
</style>
|