|
|
@@ -22,15 +22,61 @@
|
|
|
<div class="tab">{{ getLabelName(info.requireTicket, requireTicketOptions) }}</div>
|
|
|
<div class="tab">{{ gameMap.name }}</div>
|
|
|
</div>
|
|
|
+
|
|
|
+ <div class="player-content">
|
|
|
+ <div class="players">
|
|
|
+ <div class="player-item">
|
|
|
+ <div class="title">主队</div>
|
|
|
+ <div class="list1" v-if="info.maxPlayerNum === 2">
|
|
|
+ <van-image
|
|
|
+ width="58"
|
|
|
+ height="58"
|
|
|
+ radius="4"
|
|
|
+ :src="host.avatar || require('@assets/img_default_photo.png')"
|
|
|
+ fit="cover"
|
|
|
+ />
|
|
|
+ <div class="name">{{ host.nickname }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="list" v-else></div>
|
|
|
+ </div>
|
|
|
+ <div class="player-item">
|
|
|
+ <div class="title">客队</div>
|
|
|
+ <div class="list1 not" v-if="info.maxPlayerNum === 2">
|
|
|
+ <van-image
|
|
|
+ width="58"
|
|
|
+ height="58"
|
|
|
+ radius="4"
|
|
|
+ :src="require('@assets/png-pipeizhong.png')"
|
|
|
+ fit="cover"
|
|
|
+ />
|
|
|
+ <div class="name">匹配中…</div>
|
|
|
+ </div>
|
|
|
+ <div class="list" v-else></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="bg-icon">
|
|
|
+
|
|
|
+ <img src="@assets/png-1v1-bg.png" class="img1" alt="" />
|
|
|
+ <img src="@assets/png-vs.png" alt="" class="img2" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="help">
|
|
|
+ <div class="help-btn" @click="$refs.description.init()">
|
|
|
+ <img src="@assets/png-shuoming.png" alt="" />
|
|
|
+ <span>说明</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="bottom">
|
|
|
- <div class="btn">
|
|
|
+ <div class="btn" @click="changeUrl">
|
|
|
<img src="@assets/png-xiugaidizhi.png" alt="" />
|
|
|
<span>修改地址</span>
|
|
|
</div>
|
|
|
- <div class="btn">
|
|
|
+ <div class="btn" @click="$router.push('/exceptionLogAdd?roomId=' + roomId)">
|
|
|
<img src="@assets/png-yicangshenbao.png" alt="" />
|
|
|
<span>异常申报</span>
|
|
|
</div>
|
|
|
@@ -39,13 +85,19 @@
|
|
|
<span>取消赛事</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <change-url></change-url>
|
|
|
+ <change-url ref="url" :roomId="roomId"></change-url>
|
|
|
+ <join-room ref="join" :roomInfo="info" @update="getInfo"></join-room>
|
|
|
+ <description ref="description"></description>
|
|
|
+ <failed ref="failed"></failed>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import room from '../mixins/room.js';
|
|
|
import changeUrl from '../components/room/changeUrl.vue';
|
|
|
+import joinRoom from '../components/room/joinRoom.vue';
|
|
|
+import description from '../components/room/description.vue';
|
|
|
+import failed from '../components/room/failed.vue';
|
|
|
export default {
|
|
|
data() {
|
|
|
return {
|
|
|
@@ -65,7 +117,7 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
mixins: [room],
|
|
|
- components: { changeUrl },
|
|
|
+ components: { changeUrl, joinRoom, description, failed },
|
|
|
mounted() {
|
|
|
if (this.$route.query.id) {
|
|
|
this.roomId = this.$route.query.id;
|
|
|
@@ -74,9 +126,18 @@ export default {
|
|
|
},
|
|
|
methods: {
|
|
|
getInfo() {
|
|
|
+ this.$toast.loading({
|
|
|
+ message: '加载中...',
|
|
|
+ forbidClick: true
|
|
|
+ });
|
|
|
this.$http.get('/room/detail/' + this.roomId).then(res => {
|
|
|
+ this.$toast.clear();
|
|
|
this.info = res;
|
|
|
+ // this.$refs.join.init();
|
|
|
});
|
|
|
+ },
|
|
|
+ changeUrl() {
|
|
|
+ this.$refs.url.init(this.info.url);
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
@@ -106,6 +167,10 @@ export default {
|
|
|
position: fixed;
|
|
|
z-index: 20;
|
|
|
}
|
|
|
+ .help {
|
|
|
+ position: fixed;
|
|
|
+ z-index: 20;
|
|
|
+ }
|
|
|
}
|
|
|
.bg {
|
|
|
position: absolute;
|
|
|
@@ -145,6 +210,7 @@ export default {
|
|
|
background: linear-gradient(180deg, #541ec1, #1e0470);
|
|
|
min-height: calc(var(--app-height) - 100px);
|
|
|
border-radius: 10px;
|
|
|
+ .flex-col();
|
|
|
.content-top {
|
|
|
padding: 8px 0;
|
|
|
.flex-col();
|
|
|
@@ -169,10 +235,16 @@ export default {
|
|
|
@colorList: #ff988c, #c787ff, #ff87c3, #9587ff;
|
|
|
|
|
|
.content-box {
|
|
|
+ .flex-col();
|
|
|
+ position: relative;
|
|
|
padding: 16px;
|
|
|
+ flex-grow: 1;
|
|
|
+ background: linear-gradient(180deg, #6310b0 0%, #09005c 100%);
|
|
|
.tabs {
|
|
|
.flex();
|
|
|
justify-content: center;
|
|
|
+ padding-bottom: 14px;
|
|
|
+ flex-shrink: 0;
|
|
|
|
|
|
.tab {
|
|
|
height: 18px;
|
|
|
@@ -193,8 +265,76 @@ export default {
|
|
|
margin-left: 12px;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ .bg-icon {
|
|
|
+ position: absolute;
|
|
|
+ left: 0;
|
|
|
+ right: 0;
|
|
|
+ top: 130px;
|
|
|
+ z-index: 1;
|
|
|
+ .img1 {
|
|
|
+ width: 100%;
|
|
|
+ display: block;
|
|
|
+ }
|
|
|
+ .img2 {
|
|
|
+ width: 74px;
|
|
|
+ display: block;
|
|
|
+ position: absolute;
|
|
|
+ top: 0;
|
|
|
+ left: 50%;
|
|
|
+ transform: translateX(-50%);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.player-content {
|
|
|
+ flex-grow: 1;
|
|
|
+ border-radius: 8px;
|
|
|
+ position: relative;
|
|
|
+ padding: 16px;
|
|
|
+ &::after {
|
|
|
+ content: '';
|
|
|
+ position: absolute;
|
|
|
+ background: linear-gradient(180deg, #6310b0 0%, #09005c 100%);
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ right: 0;
|
|
|
+ bottom: 0;
|
|
|
+ border-radius: 8px;
|
|
|
+ z-index: 0;
|
|
|
+ }
|
|
|
}
|
|
|
+.players {
|
|
|
+ .flex();
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: stretch;
|
|
|
+ position: relative;
|
|
|
+ z-index: 2;
|
|
|
+ .player-item {
|
|
|
+ width: 110px;
|
|
|
+ .title {
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #ffffff;
|
|
|
+ line-height: 18px;
|
|
|
+ text-align: center;
|
|
|
+ padding: 4px 0 16px;
|
|
|
+ }
|
|
|
|
|
|
+ .list1 {
|
|
|
+ .flex-col();
|
|
|
+ align-items: center;
|
|
|
+ padding: 4px 0;
|
|
|
+ .name {
|
|
|
+ margin-top: 6px;
|
|
|
+ }
|
|
|
+ &.not {
|
|
|
+ .name {
|
|
|
+ color: rgba(255, 255, 255, 0.6);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
.bottom {
|
|
|
background-color: #0e0042;
|
|
|
bottom: 0;
|
|
|
@@ -221,4 +361,32 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+.help {
|
|
|
+ position: fixed;
|
|
|
+ right: 10px;
|
|
|
+ bottom: 30vh;
|
|
|
+ .flex-col();
|
|
|
+ .help-btn {
|
|
|
+ width: 44px;
|
|
|
+ height: 44px;
|
|
|
+ background: #0e0042;
|
|
|
+ box-shadow: 0px 2px 6px 0px #421292;
|
|
|
+ border-radius: 44px;
|
|
|
+ .flex-col();
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ img {
|
|
|
+ width: 24px;
|
|
|
+ height: 24px;
|
|
|
+ }
|
|
|
+ span {
|
|
|
+ font-size: 10px;
|
|
|
+ font-family: PingFangSC-Medium, PingFang SC;
|
|
|
+ font-weight: 500;
|
|
|
+ color: rgba(255, 255, 255, 0.6);
|
|
|
+ line-height: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|