Browse Source

选择院系

pull/19/head
zyronon 4 years ago
parent
commit
8ccb36f796
  1. 1
      src/App.vue
  2. 18
      src/pages/me/userinfo/AddSchool.vue
  3. 88
      src/pages/me/userinfo/ChooseDepartment.vue
  4. 13
      src/pages/me/userinfo/ChooseSchool.vue
  5. 58
      src/pages/me/userinfo/DeclareSchool.vue
  6. 2
      src/router/index.js
  7. 11
      src/utils/global-methods.js

1
src/App.vue

@ -27,6 +27,7 @@ export default {
'/video-detail', '/video-detail',
'/add-school', '/add-school',
'/choose-school', '/choose-school',
'/choose-department',
'/declare-school', '/declare-school',
]; ];
const toDepth = routeDeep.indexOf(to.path) const toDepth = routeDeep.indexOf(to.path)

18
src/pages/me/userinfo/AddSchool.vue

@ -18,10 +18,10 @@
<img src="../../../assets/img/icon/back.png" alt=""> <img src="../../../assets/img/icon/back.png" alt="">
</div> </div>
</div> </div>
<div class="row" @click="$nav('/edit-userinfo-item',{type:1})"> <div class="row" @click="checkGo('/choose-department')">
<div class="left">院系</div> <div class="left">院系</div>
<div class="right"> <div class="right">
<span>{{ isEmpty(school.department) }}</span> <span>{{ isEmpty(localSchool.department) }}</span>
<img src="../../../assets/img/icon/back.png" alt=""> <img src="../../../assets/img/icon/back.png" alt="">
</div> </div>
</div> </div>
@ -64,11 +64,11 @@ export default {
} }
}, },
created() { created() {
let val = localStorage.getItem('changeSchool') let school = localStorage.getItem('changeSchool')
if (val) { let department = localStorage.getItem('changeDepartment')
this.localSchool.name = val if (school) this.localSchool.name = school
localStorage.clear() if (department) this.localSchool.department = department
} localStorage.clear()
}, },
computed: { computed: {
isChanged() { isChanged() {
@ -92,6 +92,10 @@ export default {
isEmpty(val) { isEmpty(val) {
if (val) return val if (val) return val
return '点击设置' return '点击设置'
},
checkGo(path) {
if (!this.localSchool.name) return this.$notice('请先选择学校 ')
this.$nav(path)
} }
} }
} }

88
src/pages/me/userinfo/ChooseDepartment.vue

@ -0,0 +1,88 @@
<template>
<div class="choose-school">
<BaseHeader>
<template v-slot:center>
<span class="f16">选择院系</span>
</template>
<template v-slot:right>
<span class="f14" @click="$nav('/declare-school',{type:2})">没有找到?</span>
</template>
</BaseHeader>
<div class="content">
<div class="nearby">
<div class="item"
v-for="item in departments"
@click="setDepartment(item)"
>{{ item }}
</div>
</div>
</div>
</div>
</template>
<script>
import {mapState} from 'vuex'
import Search from '../../../components/Search'
import {inject} from "vue";
export default {
name: "ChooseSchool",
components: {
Search
},
data() {
return {
departments: [],
schoolName: '',
}
},
computed: {},
created() {
for (let i = 0; i < 5; i++) {
this.departments.push('院系' + i)
}
},
methods: {
setDepartment(val) {
localStorage.setItem('changeDepartment', val)
this.$back()
},
}
}
</script>
<style scoped lang="scss">
@import "../../../assets/scss/index";
.choose-school {
position: fixed;
left: 0;
right: 0;
bottom: 0;
top: 0;
color: white;
overflow: auto;
.content {
padding-top: 6rem;
.item {
padding: 0 2rem;
font-size: 1.4rem;
height: 5rem;
display: flex;
justify-content: space-between;
align-items: center;
transition: all .1s;
background: $main-bg;
&:active {
background: $active-main-bg;
color: $second-text-color;
}
}
}
}
</style>

13
src/pages/me/userinfo/ChooseSchool.vue

@ -5,7 +5,7 @@
<span class="f16">添加学校</span> <span class="f16">添加学校</span>
</template> </template>
<template v-slot:right> <template v-slot:right>
<span class="f14" @click="$nav('/declare-school')">没有找到?</span> <span class="f14" @click="$nav('/declare-school',{type:1})">没有找到?</span>
</template> </template>
<template v-slot:bottom> <template v-slot:bottom>
<div class="search-ctn"> <div class="search-ctn">
@ -49,7 +49,7 @@
<img src="../../../assets/img/icon/head-image.jpeg" alt=""> <img src="../../../assets/img/icon/head-image.jpeg" alt="">
<div class="title">搜索结果为空</div> <div class="title">搜索结果为空</div>
<div class="sub-title">没有搜索到相关的内容</div> <div class="sub-title">没有搜索到相关的内容</div>
<div class="btn">没有学校信息去申报</div> <div class="btn" @click="$nav('/declare-school')">没有学校信息去申报</div>
</div> </div>
</div> </div>
</div> </div>
@ -57,9 +57,7 @@
</template> </template>
<script> <script>
import {mapState} from 'vuex'
import Search from '../../../components/Search' import Search from '../../../components/Search'
import {inject} from "vue";
export default { export default {
name: "ChooseSchool", name: "ChooseSchool",
@ -73,15 +71,8 @@ export default {
schools: [], schools: [],
searchSchools: [], searchSchools: [],
schoolName: '', schoolName: '',
mitt: inject('mitt')
} }
}, },
computed: {
...mapState({
userinfo: 'userinfo',
school: state => state.userinfo.school,
})
},
created() { created() {
for (let i = 0; i < 20; i++) { for (let i = 0; i < 20; i++) {
this.nearby.push('附件大学' + i) this.nearby.push('附件大学' + i)

58
src/pages/me/userinfo/DeclareSchool.vue

@ -10,10 +10,17 @@
<div class="label">学校全称</div> <div class="label">学校全称</div>
<input type="text" placeholder="请输入学校全称(必填)" v-model="form.name"> <input type="text" placeholder="请输入学校全称(必填)" v-model="form.name">
</div> </div>
<div class="row"> <div class="row" v-if="type === 1">
<div class="label">所在城市</div> <div class="label">所在城市</div>
<input type="text" placeholder="请输入学校所在城市(必填)" v-model="form.location"> <input type="text" placeholder="请输入学校所在城市(必填)" v-model="form.location">
</div> </div>
<div class="department-row" v-if="type === 2">
<div class="label">信息问题</div>
<div class="right">
<span>点击选择(必选)</span>
<img src="../../../assets/img/icon/back.png" alt="">
</div>
</div>
<div class="notice">感谢你的反馈我们将尽快核对信息</div> <div class="notice">感谢你的反馈我们将尽快核对信息</div>
<div class="btn" @click="submit">提交</div> <div class="btn" @click="submit">提交</div>
</div> </div>
@ -21,32 +28,31 @@
</template> </template>
<script> <script>
//TODO 
export default { export default {
name: "DeclareSchool", name: "DeclareSchool",
data() { data() {
return { return {
form: { form: {
name: '', name: '',
location: '' location: '',
} departmentInfoType: ''
},
type: 1
} }
}, },
created() {
this.type = Number(this.$route.query.type)
},
methods: { methods: {
submit() { submit() {
if (!this.form.name) return this.$notice('请输入学校全称') if (!this.form.name) return this.$notice('请输入学校全称')
if (!this.form.location) return this.$notice('请输入学校所在城市') if (this.type === 1 && !this.form.location) return this.$notice('请输入学校所在城市')
if (this.type === 2 && !this.form.departmentInfoType) return this.$notice('请选择信息问题')
this.$notice('申报成功') this.$notice('申报成功')
setTimeout(this.$back, 1000) setTimeout(this.$back, 1000)
}, },
$notice(val) {
let div = document.createElement('div')
div.classList.add('global-notice')
div.textContent = val
document.body.append(div)
setTimeout(() => {
document.body.removeChild(div)
}, 1000)
}
} }
} }
</script> </script>
@ -88,6 +94,32 @@ export default {
} }
} }
.department-row {
display: flex;
align-items: center;
justify-content: space-between;
.label {
color: white;
font-size: 1.6rem;
margin-right: 3rem;
}
.right {
padding: 1.2rem 0;
display: flex;
align-items: center;
color: $second-text-color;
img {
margin-left: 5px;
width: 1.2rem;
}
}
}
.notice { .notice {
margin-top: 2rem; margin-top: 2rem;
color: $second-text-color; color: $second-text-color;

2
src/router/index.js

@ -15,6 +15,7 @@ import EditUserInfoItem from "../pages/me/userinfo/EditUserInfoItem";
import AddSchool from "../pages/me/userinfo/AddSchool"; import AddSchool from "../pages/me/userinfo/AddSchool";
import ChooseSchool from "../pages/me/userinfo/ChooseSchool"; import ChooseSchool from "../pages/me/userinfo/ChooseSchool";
import DeclareSchool from "../pages/me/userinfo/DeclareSchool"; import DeclareSchool from "../pages/me/userinfo/DeclareSchool";
import ChooseDepartment from "../pages/me/userinfo/ChooseDepartment";
const routes = [ const routes = [
// {path: '', component: Music}, // {path: '', component: Music},
@ -34,6 +35,7 @@ const routes = [
{path: '/add-school', component: AddSchool}, {path: '/add-school', component: AddSchool},
{path: '/choose-school', component: ChooseSchool}, {path: '/choose-school', component: ChooseSchool},
{path: '/declare-school', component: DeclareSchool}, {path: '/declare-school', component: DeclareSchool},
{path: '/choose-department', component: ChooseDepartment},
] ]
export default VueRouter.createRouter({ export default VueRouter.createRouter({

11
src/utils/global-methods.js

@ -1,5 +1,14 @@
export default { export default {
$back(){ $notice(val) {
let div = document.createElement('div')
div.classList.add('global-notice')
div.textContent = val
document.body.append(div)
setTimeout(() => {
document.body.removeChild(div)
}, 1000)
},
$back() {
window.history.back() window.history.back()
}, },
$stopPropagation(e) { $stopPropagation(e) {

Loading…
Cancel
Save