|
1 | 1 | <template>
|
2 | 2 | <bottom-sheet-layer title="クラス一覧" title-en="CLASS LIST" fullscreen>
|
3 | 3 | <template v-slot:LayerContents>
|
4 |
| - <v-list> |
5 |
| - <v-radio-group v-model="selectedItem"> |
| 4 | + <h1 v-if="!items || items.length < 1"> |
| 5 | + 編集可能なクラスがありません。クラスの登録を行ってください |
| 6 | + </h1> |
| 7 | + <v-list v-else> |
| 8 | + <v-radio-group v-model="selectedClassId"> |
6 | 9 | <v-list-item
|
7 | 10 | v-for="(item, index) in items"
|
8 | 11 | :key="index"
|
9 | 12 | class="ClassList-Item"
|
10 | 13 | >
|
11 |
| - <v-radio :value="item.num"> |
| 14 | + <v-radio :value="item.classId"> |
12 | 15 | <template v-slot:label>
|
13 |
| - <span class="ClassList-Label">{{ item.name }}</span> |
| 16 | + <span class="ClassList-Label"> |
| 17 | + {{ item.schoolName }} {{ item.className }} |
| 18 | + </span> |
14 | 19 | </template>
|
15 | 20 | </v-radio>
|
16 | 21 | </v-list-item>
|
|
22 | 27 | theme="primary"
|
23 | 28 | text="選択クラスでログインする"
|
24 | 29 | class="ClassList-Button"
|
| 30 | + :is-loading="loading" |
| 31 | + @click="doSelectClassLogin" |
| 32 | + /> |
| 33 | + <action-button |
| 34 | + text="クラスを登録する" |
| 35 | + theme="secondary" |
| 36 | + @click="$router.push('/user/registerClass')" |
25 | 37 | />
|
26 |
| - <action-button theme="secondary" text="クラスを登録する" /> |
27 | 38 | </template>
|
28 | 39 | </bottom-sheet-layer>
|
29 | 40 | </template>
|
|
32 | 43 | import Vue from 'vue'
|
33 | 44 | import BottomSheetLayer from '@/components/BottomSheetLayer.vue'
|
34 | 45 | import ActionButton from '@/components/ActionButton.vue'
|
| 46 | +import { vxm } from '@/store' |
35 | 47 |
|
36 | 48 | type DataType = {
|
37 | 49 | items: Object[]
|
38 |
| - selectedItem: number |
| 50 | + selectedClassId: string |
| 51 | + loading: boolean |
39 | 52 | }
|
40 | 53 |
|
41 | 54 | export default Vue.extend({
|
42 | 55 | components: { BottomSheetLayer, ActionButton },
|
43 | 56 | layout: 'background',
|
| 57 | + middleware: 'authenticated', |
44 | 58 | data(): DataType {
|
45 | 59 | return {
|
46 |
| - items: [ |
47 |
| - { name: 'ほげほげ学校1年2組', num: 1 }, |
48 |
| - { name: 'ほげほげ学校1年2組', num: 2 }, |
49 |
| - { name: 'ほげほげ学校1年2組', num: 3 }, |
50 |
| - { name: 'ほげほげ学校1年2組', num: 4 }, |
51 |
| - { name: 'ほげほげ学校1年2組', num: 5 }, |
52 |
| - { name: 'ほげほげ学校1年2組', num: 6 }, |
53 |
| - { name: 'ほげほげ学校1年2組', num: 7 }, |
54 |
| - { name: 'ほげほげ学校1年2組', num: 8 }, |
55 |
| - { name: 'ほげほげ学校1年2組', num: 9 } |
56 |
| - ], |
57 |
| - selectedItem: 1 |
| 60 | + items: vxm.user.allowAccess, |
| 61 | + selectedClassId: '', |
| 62 | + loading: false |
| 63 | + } |
| 64 | + }, |
| 65 | + methods: { |
| 66 | + async doSelectClassLogin() { |
| 67 | + this.loading = true |
| 68 | + try { |
| 69 | + await vxm.classData.loadClassData(this.selectedClassId) |
| 70 | + await this.$router.push('/edit') |
| 71 | + } catch { |
| 72 | + this.loading = false |
| 73 | + } |
58 | 74 | }
|
59 | 75 | }
|
60 | 76 | })
|
|
0 commit comments