panhui 3 жил өмнө
parent
commit
ff74f18188

BIN
src/assets/img_default_photo.png


+ 1 - 1
src/mixins/phone.js

@@ -105,7 +105,7 @@ export default {
                     return Promise.reject();
                 })
                 .then(res => {
-                    localStorage.setItem('nineToken', res);
+                    localStorage.setItem('dianjinToken', res);
                     return this.$store.dispatch('getUserInfo');
                 });
         }

+ 1 - 1
src/plugins/http.js

@@ -9,7 +9,7 @@ const axiosInstance = axios.create({
 axiosInstance.interceptors.request.use(
     function (config) {
         config.headers = config.headers || {};
-        let token = localStorage.getItem('nineToken');
+        let token = localStorage.getItem('dianjinToken');
         if (token) {
             config.headers['Authorization'] = 'Bearer ' + token;
         }

+ 8 - 2
src/views/Mine.vue

@@ -5,7 +5,13 @@
         </div>
         <div :style="{ paddingTop: safeTopNum ? `calc(${safeTopNum}px + 32px)` : '64px' }">
             <div class="user-info" v-if="isLogin" @click="$router.push('/setting')">
-                <van-image width="58" height="58" radius="4" :src="userInfo.avatar" fit="cover" />
+                <van-image
+                    width="58"
+                    height="58"
+                    radius="4"
+                    :src="userInfo.avatar || require('@assets/img_default_photo.png')"
+                    fit="cover"
+                />
                 <div class="user-text">
                     <div class="text1">
                         <div class="name">{{ userInfo.nickname }}</div>
@@ -14,7 +20,7 @@
                             <span>未实名认证</span>
                         </div>
                     </div>
-                    <div class="text2">ID:{{ userInfo.memberId }}</div>
+                    <div class="text2">ID:{{ userInfo.id }}</div>
                 </div>
                 <img src="@assets/icon_inter.png" class="icon" alt="" />
             </div>

+ 132 - 26
src/views/RoomCreate.vue

@@ -15,14 +15,27 @@
             </van-cell-group>
             <van-cell-group :border="false">
                 <van-field
-                    v-model="form.map"
+                    v-model="form.mode"
+                    is-link
+                    readonly
+                    :border="false"
+                    name="对战模式"
+                    label="对战模式"
+                    placeholder="点击选择对战模式"
+                    @click="picker('modeId')"
+                >
+                </van-field>
+            </van-cell-group>
+            <van-cell-group :border="false">
+                <van-field
+                    v-model="form.gameMap"
                     is-link
                     readonly
                     :border="false"
                     name="赛事地图"
                     label="赛事地图"
                     placeholder="点击选择赛事地图"
-                    @click="showPicker = true"
+                    @click="picker('gameMapId')"
                 />
                 <van-field :border="false" name="是否使用密码" label="是否使用密码">
                     <template #input>
@@ -32,12 +45,21 @@
                         </van-radio-group>
                     </template>
                 </van-field>
+                <van-field
+                    v-model="form.psd"
+                    is-link
+                    :border="false"
+                    v-if="form.password"
+                    name="房间密码"
+                    label="房间密码"
+                    placeholder="请输入房间密码"
+                />
             </van-cell-group>
 
             <van-cell-group :border="false">
                 <van-cell title="填写游戏地址" :border="false" is-link value="查看建房说明" />
                 <van-field
-                    v-model="form.message"
+                    v-model="form.url"
                     name="游戏地址"
                     rows="4"
                     autosize
@@ -58,9 +80,17 @@
         </van-form>
         <van-overlay :show="showPicker" @click="showPicker = false">
             <div class="picker" @click.stop>
-                <div class="picker-title">选择赛事地图</div>
-                <div class="selects">
-                    <div class="select" v-for="(item, index) in mapOptions" :key="index">{{ item.label }}</div>
+                <div class="picker-title">{{ pickerTitle }}</div>
+                <div class="selects" :class="{ selectOnly: pickerOptions.length === 1 }">
+                    <div
+                        class="select"
+                        :class="{ prim: pickerValue === item.value }"
+                        v-for="(item, index) in pickerOptions"
+                        :key="index"
+                        @click="choosePicker(item.value)"
+                    >
+                        {{ item.label }}
+                    </div>
                 </div>
             </div>
         </van-overlay>
@@ -75,31 +105,100 @@ export default {
                 type: 'QQ',
                 usedPsd: false,
                 map: '王者荣耀',
-                message: ''
+                message: '',
+                modeId: '',
+                mode: '',
+                gameMapId: '',
+                gameMap: '',
+                password: ''
             },
             showPicker: false,
-            mapOptions: [
-                {
-                    label: '王者峡谷',
-                    value: '王者峡谷'
-                },
-                {
-                    label: '长平攻防战',
-                    value: '长平攻防战'
-                },
-                {
-                    label: '梦境大乱斗',
-                    value: '梦境大乱斗'
-                },
-                {
-                    label: '无限乱斗',
-                    value: '无限乱斗'
-                }
-            ]
+            pickerType: 'modeId',
+            modeIdOptions: [],
+            gameMapIdOptions: []
         };
     },
+    computed: {
+        pickerOptions() {
+            if (this.pickerType === 'modeId') {
+                return [...this.modeIdOptions];
+            }
+            if (this.pickerType === 'gameMapId') {
+                return [...this.gameMapIdOptions];
+            }
+            return [];
+        },
+        pickerValue() {
+            if (this.pickerType === 'gameMapId') {
+                return Number(this.form.gameMapId || 0);
+            }
+            return Number(this.form.modeId || 0);
+        },
+        pickerTitle() {
+            if (this.pickerType === 'gameMapId') {
+                return '选择赛事地图';
+            }
+            return '选择对战模式';
+        }
+    },
+    mounted() {
+        this.$http
+            .post('/gameMode/all', { size: 1000, query: { del: false } }, { body: 'json' })
+            .then(res => {
+                this.modeIdOptions = res.content.map(item => {
+                    return {
+                        label: item.name,
+                        value: item.id
+                    };
+                });
+            })
+            .catch(e => {
+                console.log(e);
+                this.$toast(e.error);
+            });
+    },
     methods: {
-        submit() {}
+        submit() {},
+        picker(type = 'modeId') {
+            if (type === 'gameMapId') {
+                if (!this.form.modeId) {
+                    this.$toast('请选择对战模式');
+                    return;
+                }
+            }
+            this.pickerType = type;
+            this.showPicker = true;
+        },
+        getMap() {
+            this.$http
+                .post('/gameMap/all', { size: 1000, query: { del: false, modeId: this.form.modeId } }, { body: 'json' })
+                .then(res => {
+                    this.gameMapIdOptions = res.content.map(item => {
+                        return {
+                            label: item.name,
+                            value: item.id
+                        };
+                    });
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.$toast(e.error);
+                });
+        },
+        choosePicker(id) {
+            if (this.pickerType == 'modeId') {
+                this.form.modeId = id;
+                this.form.mode = this.getLabelName(this.form.modeId, this.modeIdOptions);
+                this.form.gameMapId = '';
+                this.form.gameMap = '';
+                this.getMap();
+            }
+            if (this.pickerType == 'gameMapId') {
+                this.form.gameMapId = id;
+                this.form.gameMap = this.getLabelName(this.form.gameMapId, this.gameMapIdOptions);
+            }
+            this.showPicker = false;
+        }
     }
 };
 </script>
@@ -166,6 +265,13 @@ export default {
             text-align: center;
             line-height: 32px;
             border-radius: 4px;
+            &.prim {
+                background: linear-gradient(225deg, #f6abf0 0%, #10f7ee 100%);
+                color: #1a1c2b;
+            }
+        }
+        &.selectOnly {
+            justify-content: center;
         }
     }
 }

+ 4 - 4
src/views/account/Login.vue

@@ -47,7 +47,7 @@
             <div class="button">
                 <!-- <van-button plain class="forget" v-if="$store.state.review" @click="getSim"> 获取手机号码 </van-button> -->
 
-                <van-button block native-type="submit" type="primary" class="sure">登</van-button>
+                <van-button block native-type="submit" type="primary" class="sure">登</van-button>
                 <van-button class="del" block type="primary" plain @click="$router.replace('/register')"
                     >暂无账号,立即注册</van-button
                 >
@@ -109,7 +109,7 @@
           忘记密码?
         </van-button> -->
 
-                <van-button block native-type="submit" type="primary" class="sure">登</van-button>
+                <van-button block native-type="submit" type="primary" class="sure">登</van-button>
                 <van-button class="del" block type="primary" plain @click="$router.replace('/register')"
                     >暂无账号,立即注册</van-button
                 >
@@ -147,7 +147,7 @@ export default {
                     this.$http
                         .post('/auth/oneKeyLogin', { token: res.token, umengKey: res.umengKey })
                         .then(res => {
-                            localStorage.setItem('nineToken', res);
+                            localStorage.setItem('dianjinToken', res);
                             this.$store.dispatch('getUserInfo');
                             this.finish();
                         })
@@ -201,7 +201,7 @@ export default {
                         return Promise.reject();
                     })
                     .then(res => {
-                        localStorage.setItem('nineToken', res);
+                        localStorage.setItem('dianjinToken', res);
                         return this.$store.dispatch('getUserInfo');
                     });
             }

+ 4 - 4
src/views/account/Register.vue

@@ -10,7 +10,7 @@
                 type="tel"
                 name="手机号码"
                 placeholder="请输入手机号码"
-                v-model="form.phone"
+                v-model="form.username"
                 :maxlength="11"
                 :rules="[
                     { required: true, message: '请输入手机号码' },
@@ -140,7 +140,7 @@ export default {
         return {
             active: 'phone',
             form: {
-                phone: '',
+                username: '',
                 password: '',
                 password2: '',
                 code: '',
@@ -178,9 +178,9 @@ export default {
                 forbidClick: true
             });
             this.$http
-                .post('/auth/phoneRegister', this.form)
+                .post('/user/register', this.form)
                 .then(res => {
-                    localStorage.setItem('nineToken', res);
+                    localStorage.setItem('dianjinToken', res);
                     return this.$store.dispatch('getUserInfo');
                 })
                 .then(() => {

+ 1 - 1
src/views/account/Security.vue

@@ -22,7 +22,7 @@ export default {
                     message: '确认要退出登录吗?'
                 })
                 .then(() => {
-                    localStorage.removeItem('nineToken');
+                    localStorage.removeItem('dianjinToken');
                     this.$router.go(-1);
                 });
         },

+ 1 - 1
src/views/account/Setting.vue

@@ -7,7 +7,7 @@
                         radius="4"
                         width="38"
                         height="38"
-                        :src="userInfo.avatar || require('@assets/svgs/img_default_photo.svg')"
+                        :src="userInfo.avatar || require('@assets/img_default_photo.png')"
                         fit="cover"
                     />