@@ -1,249 +1,118 @@
< template >
< template >
< div class = "home" >
< div class = "home" >
<!-- < div > { { list } } < / div > -- >
<!-- < div > { { list } } < / div > -- >
< div class = "header_top" >
<!-- 第一行 : 头像 + 昵称 , 无背景卡片 , 融入深蓝背景 -- >
< div style = "width:4.5rem" > < / div >
< div class = "page_header_user" >
< div @click = "playAudio()" > ROLL房 < / div >
< div class = "page_avatar_wrap" >
< div
< img :src = "loginAvatar" @error ="$event.target.src = defaultAvatar" alt class = "page_avatar_img" / >
@click ="
handleilltate();
playAudio();
"
>
玩法说明
< / div >
< / div >
< span class = "page_nickname" > { { ( USER _INFO && USER _INFO . nickName ) || '' } } < / span >
< div class = "page_logout_btn" @click ="handleLogout" > 退出 < / div >
< / div >
< / div >
<div class = "roll_status " >
<! - - 第二行 : ROLL房标题 + 玩法说明 - - >
< div
< div class = "page_title_row" >
@click ="
< div style = "width:60px" > < / div >
handleChange(0);
< div class = "page_title" > ROLL房 < / div >
playAudio();
< div class = "page_rule_btn" @click ="handleilltate(); playAudio();" > 玩法说明 < / div >
"
: class = "type == 0 ? 'active' : ''"
class = "status_btn center"
>
进行中
< / div >
< div
@click ="
handleChange(1);
playAudio();
"
: class = "type == 1 ? 'active' : ''"
class = "status_btn center"
>
已结束
< / div >
< div
@click ="
handlemy(2);
playAudio();
"
: class = "type == 2 ? 'active' : ''"
class = "status_btn center"
>
我参与的
< / div >
< / div >
< / div >
<div class = "roll_type_serch space_between" >
<! - - 第三行 : Tab栏 - - >
< div class = "roll_status" >
<!-- 官方 / 主播筛选已隐藏
< div @click ="handleChange(0); playAudio();" : class = "type == 0 ? 'active' : ''" class = "status_btn center" > 进行中 < / div >
< div class = "roll_type space_around" >
< div @click ="handleChange(1); playAudio();" : class = "type == 1 ? 'active' : ''" class = "status_btn center" > 已结束 < / div >
< div
<div @click ="handlemy(2); playAudio();" : class = "type == 2 ? 'active' : ''" class = "status_btn center" > 我参与的 < / div >
@click ="
handletype(0);
playAudio();
"
class = "type_btn center"
: class = "queryParams.rollType === 0 ? 'active' : ''"
>
官方
< / div >
< div
@click ="
handletype(1);
playAudio();
"
class = "type_btn center"
: class = "queryParams.rollType === 1 ? 'active' : ''"
>
主播
< / div >
< / div >
-- >
< div class = "roll_serch roll_serch_full" >
< input
type = "text"
v-model = "queryParams.rollName"
name
id
style = "serch"
placeholder = "请输入ROLL房名称"
/ >
< div @click ="handleserch"
class = "icon" > < / div >
< / div >
< / div >
< / div >
< div class = "roll_room_list" @scroll ="scroll" >
< div class = "roll_room_list" @scroll ="scroll" >
< div
< div class = "roll_room_grid" >
: class = "{
< div
'roll_room animate__animated finish': item.rollStatus == 1,
: class = "[
'roll_room animate__animated anchor':
'roll_room',
item.rollStatus ! = 1 && item.rollType == 1,
item.rollStatus = = 1 ? 'finish' : ( item.rollType == 1 ? 'anchor' : 'official')
'roll_room animate__animated official':
]"
item.rollStatus != 1 && item.rollType == 0,
v-for = "(item, index) in rolllist"
} "
:key = "index "
v-for = "(item, index) in rolllist"
>
:key = "index"
<!-- 标题行 -- >
@click ="
< div class = "room_card_header" >
handleGo(item.id);
< div class = "room_card_name" > { { item . rollName } } < / div >
playAudio();
< div class = "room_card_time" >
"
< span class = "time_icon" > & # 9201 ; < / span > { { item . endTime } }
>
< / div >
< div class = "room_type center" > { { item . rollTypeName } } < / div >
< / div >
< div class = "room_title left" >
<!-- 奖品图片区 : 第一行2个大格 , 第二行1个小格 + 剩余数 -- >
< div class = "room_card_weapons" >
< div class = "room_name left" > { { item . rollName } } < / div >
<!-- 第一行 : 前2个 -- >
< / div >
< div class = "weapons_row weapons_row_top" >
< div class = "room_weapon" >
< div
< div class = "room _weapon_back left" >
class = "card _weapon_item"
v-for = "(weapon, wi) in JSON.parse(item.ornamentsList).slice(0, 2)"
:key = "wi"
>
< div class = "card_price" >
< span class = "price_diamond" > & # 9830 ; < / span > { { weapon . price } }
< / div >
< img :src = "getPrizeImg(weapon)" alt / >
< / div >
< / div >
<!-- 第二行 : 第3个 + + N -- >
< div class = "weapons_row weapons_row_bot" v-if = "JSON.parse(item.ornamentsList).length > 2" >
< div class = "card_weapon_item card_weapon_item_sm" >
< div class = "card_price" >
< span class = "price_diamond" > & # 9830 ; < / span > { { JSON . parse ( item . ornamentsList ) [ 2 ] . price } }
< / div >
< img :src = "getPrizeImg(JSON.parse(item.ornamentsList)[2])" alt / >
< / div >
< div
class = "card_weapon_more"
v-if = "JSON.parse(item.ornamentsList).length > 3"
>
+ { { JSON . parse ( item . ornamentsList ) . length - 3 } }
< / div >
< / div >
< / div >
<!-- 底部信息行 -- >
< div class = "room_card_footer" >
< div class = "card_footer_info" >
< span class = "price_diamond" > & # 9830 ; < / span >
< span class = "total_price" > { { item . totalOrnamentsPrice } } < / span >
< span class = "people_icon" style = "margin-left:8px" > & # 128100 ; < / span >
< span > { { item . currentPeopleNum } } < / span >
< / div >
< / div >
<!-- 按钮区 -- >
< div class = "room_card_btns" >
< div
< div
class = "weapon_bg center "
v-if = "item.rollStatus === '1' "
v-for = "(weapon, weaponindex) in JSON.parse(item.ornamentsList) "
class = "card_btn_ended center "
:key = "weaponindex "
@click.stop ="handleGo(item.id); playAudio(); "
: style = "{
> 查看结果 < / div >
background: `url(${weapon.ornamentsLevelImg}) center no-repeat`,
< template v-if = "item.rollStatus === '0'" >
'background-size': '60px 60px',
< div
} "
class = "card_btn_join center "
>
@click.stop ="handleJoinDirect(item); playAudio();"
< img :src = "getPrizeImg(weapon)" alt width = "60px" / >
> 立即加入 < / div >
< / div >
< div
< / div >
class = "card_btn_view center"
< / div >
@click.stop ="handleGo(item.id); playAudio();"
< div class = "room_detial space_around" >
> 前往查看 < / div >
< div class = "detial_public center" >
< / template >
< svg
t = "1706769767743"
class = "icon"
viewBox = "0 0 1024 1024"
version = "1.1"
p -id = " 3482 "
>
< path
d = "M650.24 230.4H921.6c43.52 0 76.8 33.28 76.8 76.8s-33.28 76.8-76.8 76.8H102.4c-43.52 0-76.8-33.28-76.8-76.8s33.28-76.8 76.8-76.8h271.36l-102.4-58.88C235.52 151.04 222.72 102.4 243.2 66.56s69.12-48.64 104.96-28.16L512 133.12l163.84-94.72c35.84-20.48 84.48-7.68 104.96 28.16 20.48 35.84 7.68 84.48-28.16 104.96l-102.4 58.88zM153.6 435.2h716.8c43.52 0 76.8 33.28 76.8 76.8v409.6c0 43.52-33.28 76.8-76.8 76.8H153.6c-43.52 0-76.8-33.28-76.8-76.8V512c0-43.52 33.28-76.8 76.8-76.8z"
fill = "#3A97E4"
p -id = " 3483 "
/ >
< / svg >
{ { item . ornamentsNum } }
< / div >
< div class = "detial_public center" >
< svg
t = "1706770215849"
class = "icon"
viewBox = "0 0 1024 1024"
version = "1.1"
p -id = " 3627 "
>
< path
d = "M164.445091 330.984727c0-95.604364 79.080727-173.102545 176.64-173.102545 97.605818 0 176.686545 77.498182 176.686545 173.102545s-79.127273 173.102545-176.686545 173.102546-176.64-77.498182-176.64-173.102546zM407.272727 808.354909v-11.962182c0-88.250182 45.986909-165.794909 115.339637-211.502545a230.958545 230.958545 0 0 0-100.491637-23.086546H274.850909c-126.045091 0-228.212364 100.072727-228.212364 223.557819v14.42909c0 50.501818 102.167273 50.501818 228.212364 50.501819H415.650909a101.841455 101.841455 0 0 1-8.378182-41.937455z m313.623273-532.852364c-80.942545 0-146.618182 64.325818-146.618182 143.685819s65.675636 143.685818 146.618182 143.685818c80.989091 0 146.618182-64.325818 146.618182-143.685818s-65.582545-143.685818-146.618182-143.685819z m0 0c-80.942545 0-146.618182 64.325818-146.618182 143.685819s65.675636 143.685818 146.618182 143.685818c80.989091 0 146.618182-64.325818 146.618182-143.685818s-65.582545-143.685818-146.618182-143.685819z m-54.923636 335.313455c-104.634182 0-189.44 83.083636-189.44 185.576727v11.962182c0 41.890909 84.805818 41.890909 189.44 41.890909h122.228363c104.587636 0 189.346909-1.536 189.346909-41.890909v-11.962182c0-102.493091-84.759273-185.576727-189.346909-185.576727h-122.228363z m0 0"
fill = "#727477"
p -id = " 3628 "
/ >
< / svg >
{ { item . currentPeopleNum } } / { { item . peopleNum } }
< / div >
< div
class = "detial_public center"
style = "color: rgba(37, 244, 132, 1)"
>
< svg
t = "1706770289544"
class = "icon"
viewBox = "0 0 1024 1024"
version = "1.1"
xmlns = "http://www.w3.org/2000/svg"
p -id = " 3776 "
>
< path
d = "M955.733333 511.931733q0 10.922667-0.546133 21.777067-0.512 10.888533-1.604267 21.7088-1.024 10.8544-2.6624 21.640533-1.604267 10.752-3.720533 21.435734t-4.778667 21.265066q-2.628267 10.581333-5.802666 20.957867-3.140267 10.4448-6.826667 20.6848-3.652267 10.24-7.850667 20.343467-4.164267 10.0352-8.8064 19.899733-4.676267 9.8304-9.796266 19.456-5.12 9.591467-10.717867 18.944-5.632 9.3184-11.6736 18.397867-6.0416 9.045333-12.526933 17.783466-6.485333 8.772267-13.4144 17.169067-6.894933 8.430933-14.2336 16.4864-7.304533 8.0896-15.018667 15.7696-7.68 7.714133-15.7696 15.018667-8.055467 7.338667-16.4864 14.2336-8.430933 6.929067-17.169067 13.4144t-17.8176 12.526933q-9.045333 6.0416-18.397866 11.639467-9.3184 5.597867-18.944 10.752-9.591467 5.12-19.456 9.796266-9.8304 4.642133-19.899734 8.8064t-20.309333 7.850667q-10.24 3.652267-20.6848 6.826667-10.4448 3.1744-20.992 5.802666-10.581333 2.6624-21.265067 4.778667-10.683733 2.116267-21.469866 3.720533-10.752 1.604267-21.6064 2.6624-10.820267 1.058133-21.7088 1.604267t-21.777067 0.546133q-10.922667 0-21.777067-0.546133-10.888533-0.546133-21.7088-1.604267-10.8544-1.058133-21.640533-2.6624-10.752-1.604267-21.435733-3.754666-10.683733-2.082133-21.265067-4.744534-10.581333-2.628267-20.992-5.802666-10.410667-3.1744-20.6848-6.826667-10.24-3.6864-20.309333-7.850667-10.069333-4.164267-19.899734-8.8064-9.864533-4.676267-19.456-9.796266-9.6256-5.12-18.944-10.752-9.352533-5.597867-18.432-11.605334-9.045333-6.075733-17.783466-12.561066t-17.169067-13.4144q-8.430933-6.894933-16.4864-14.199467-8.0896-7.338667-15.7696-15.018667-7.714133-7.714133-15.018667-15.803733-7.338667-8.055467-14.2336-16.4864-6.929067-8.3968-13.4144-17.169067-6.485333-8.738133-12.526933-17.783466t-11.639467-18.432q-5.632-9.3184-10.752-18.909867-5.12-9.6256-9.796266-19.456-4.642133-9.864533-8.8064-19.899733-4.1984-10.069333-7.850667-20.343467-3.6864-10.24-6.826667-20.650667-3.1744-10.4448-5.802666-20.992-2.6624-10.581333-4.778667-21.265066-2.116267-10.683733-3.754667-21.435734-1.570133-10.786133-2.628266-21.640533-1.092267-10.820267-1.604267-21.7088Q68.266667 522.820267 68.266667 511.931733t0.546133-21.742933q0.512-10.922667 1.604267-21.742933 1.024-10.820267 2.6624-21.6064 1.604267-10.786133 3.720533-21.435734 2.116267-10.683733 4.778667-21.265066 2.628267-10.581333 5.802666-20.992 3.140267-10.410667 6.826667-20.6848 3.652267-10.24 7.850667-20.309334 4.164267-10.069333 8.8064-19.899733 4.676267-9.864533 9.796266-19.456 5.12-9.591467 10.752-18.944 5.597867-9.352533 11.605334-18.432 6.075733-9.0112 12.561066-17.749333 6.485333-8.772267 13.4144-17.2032 6.894933-8.3968 14.2336-16.4864 7.304533-8.055467 15.018667-15.7696 7.68-7.714133 15.7696-15.018667 8.055467-7.304533 16.4864-14.2336 8.430933-6.894933 17.169067-13.380267t17.8176-12.526933q9.045333-6.075733 18.397866-11.6736 9.3184-5.597867 18.944-10.717867 9.591467-5.12 19.456-9.796266 9.8304-4.642133 19.899734-8.840534 10.069333-4.164267 20.309333-7.850666 10.24-3.652267 20.6848-6.826667 10.4448-3.140267 20.992-5.802667 10.581333-2.628267 21.265067-4.778666 10.683733-2.082133 21.435733-3.6864 10.786133-1.604267 21.640533-2.6624 10.820267-1.092267 21.7088-1.604267Q501.111467 68.266667 512 68.266667q10.922667 0 21.777067 0.546133 10.888533 0.512 21.7088 1.604267 10.8544 1.024 21.6064 2.6624 10.786133 1.604267 21.504 3.720533 10.6496 2.116267 21.230933 4.778667 10.581333 2.628267 20.992 5.802666 10.410667 3.140267 20.6848 6.826667 10.24 3.652267 20.309333 7.850667 10.069333 4.164267 19.899734 8.8064 9.864533 4.642133 19.456 9.796266 9.6256 5.12 18.944 10.717867 9.352533 5.597867 18.432 11.6736 9.045333 6.0416 17.783466 12.526933t17.169067 13.380267q8.430933 6.929067 16.4864 14.2336 8.0896 7.304533 15.7696 15.018667 7.714133 7.714133 15.018667 15.7696 7.338667 8.0896 14.2336 16.4864 6.929067 8.430933 13.4144 17.169066 6.485333 8.772267 12.526933 17.8176t11.639467 18.397867q5.632 9.352533 10.752 18.944t9.796266 19.456q4.642133 9.8304 8.8064 19.899733 4.1984 10.069333 7.850667 20.309334 3.6864 10.24 6.826667 20.6848 3.1744 10.410667 5.802666 20.992 2.6624 10.581333 4.778667 21.265066 2.1504 10.6496 3.754667 21.435734 1.570133 10.786133 2.628266 21.6064 1.092267 10.8544 1.604267 21.7088 0.546133 10.922667 0.546133 21.777066z"
fill = "#3fa2c7"
fill -opacity = " 0.1 "
p -id = " 3777 "
/ >
< path
d = "M71.68 325.973333Q34.133333 414.72 34.133333 511.8976q0 97.211733 37.546667 186.026667 36.283733 85.742933 102.4 151.8592 66.1504 66.116267 151.893333 102.4 88.814933 37.546667 186.026667 37.546666 97.211733 0 186.026667-37.546666 85.742933-36.283733 151.893333-102.4 66.116267-66.116267 102.4-151.893334 37.546667-88.7808 37.546667-185.992533 0-97.1776-37.546667-185.992533-36.283733-85.742933-102.4-151.8592-66.1504-66.116267-151.893333-102.4Q609.211733 34.133333 512 34.133333q-97.211733 0-186.026667 37.546667-85.742933 36.283733-151.893333 102.4-66.116267 66.116267-102.4 151.893333z m62.907733 345.361067Q102.4 595.285333 102.4 511.931733q0-83.319467 32.187733-159.402666 31.061333-73.489067 87.790934-130.184534 56.695467-56.661333 130.184533-87.790933Q428.6464 102.4 512 102.4t159.402667 32.1536q73.5232 31.095467 130.218666 87.790933 56.7296 56.695467 87.790934 130.184534 32.187733 76.0832 32.187733 159.402666 0 83.3536-32.187733 159.402667-31.061333 73.489067-87.790934 130.184533-56.695467 56.7296-130.184533 87.790934-76.0832 32.187733-159.4368 32.187733t-159.402667-32.187733q-73.5232-31.061333-130.218666-87.790934-56.7296-56.661333-87.790934-130.184533z"
fill = "#3fa2c7"
p -id = " 3778 "
/ >
< path
d = "M584.2944 657.2032H785.066667l-37.7856-16.657067v-248.081066L785.066667 375.466667h-127.931734l-145.646933 145.3056L363.178667 375.466667H238.933333l36.078934 16.9984v248.081066L238.933333 657.2032h199.0656l-35.7376-16.657067v-93.252266l104.106667 138.171733h10.581333l102.741334-138.171733v92.910933l-35.396267 16.9984z"
fill = "#3fa2c7"
p -id = " 3779 "
/ >
< / svg >
{ { item . totalOrnamentsPrice } }
< / div >
< div
class = "roll_time"
v-if = "item.rollStatus === '0'"
style = "color: rgba(194, 61, 212, 1)"
>
{ { item . endTime } }
< / div >
< div
class = "roll_time"
v-if = "item.rollStatus === '1'"
style = "color: rgba(78, 78, 78, 1)"
>
{ { item . endTime } }
< / div >
< / div >
< div class = "room_btn_bg" >
<!-- && item . rollType === '0' " -->
<div v-if=" item . rollStatus === '1' " class=" center ">
<div class=" room _btn _yjs center ">
<!-- rollType -->
<div style=" position : absolute ; ">已结束</div>
</div>
</div>
<!-- && item.rollType === '0' -->
<div v-if=" item . rollStatus === '0' && item . rollType === '0' ">
<div class=" room _btn _yjs center ">
<div style=" position : absolute ; margin - left : 15 px ">查看房间</div>
</div>
</div>
<div v-if=" item . rollStatus === '0' && item . rollType === '1' ">
<div class=" room _btn _yjs center ">
<div style=" position : absolute ; margin - left : 60 px ">加入房间</div>
</div>
< / div >
< / div >
< / div >
< / div >
< / div >
< / div >
<div class=" center isnull">
< div class = " center isnull" > { { rolllength } } < / div >
{{ rolllength }}
<!-- <div class=" loader " v-if=" isloading ">
<div class=" orbe " style=" -- index : 0 "></div>
<div class=" orbe " style=" -- index : 1 "></div>
<div class=" orbe " style=" -- index : 2 "></div>
<div class=" orbe " style=" -- index : 3 "></div>
<div class=" orbe " style=" -- index : 4 "></div>
</div>-->
</div>
< / div >
< / div >
< / div >
< / div >
< / template >
< / template >
< script >
< script >
import { getRollList, getUserInfo } from " @ / api / index ";
import { getRollList, getUserInfo, logOut } from "@/api/index" ;
import { removeToken } from "@/api/cookie" ;
import { mapState } from 'vuex' ;
export default {
export default {
data ( ) {
data ( ) {
return {
return {
defaultAvatar : require ( '@/assets/images/default-header.png' ) ,
type : 0 ,
type : 0 ,
queryParams : {
queryParams : {
rollType : 0 ,
rollType : 0 ,
@@ -272,9 +141,43 @@ export default {
} ,
} ,
mounted ( ) {
mounted ( ) {
this . getlist ( ) ;
this . getlist ( ) ;
// 刷新时 Vuex USER_INFO 为空,主动拉取用户信息
if ( ! this . USER _INFO || ! this . USER _INFO . avatar ) {
getUserInfo ( ) . then ( ( res ) => {
if ( res && res . data && res . data . data ) {
this . $store . commit ( 'USER_INFO' , res . data . data ) ;
}
} ) . catch ( ( ) => { } ) ;
}
} ,
computed : {
... mapState ( [ 'USER_INFO' ] ) ,
loginAvatar ( ) {
const avatar = this . USER _INFO && this . USER _INFO . avatar ;
if ( ! avatar || ! avatar . trim ( ) ) return this . defaultAvatar ;
const baseUrl = 'http://95.40.65.4:8081' ;
const oldHost = 'http://154.12.94.229:8080' ;
const trimmed = avatar . trim ( ) ;
if ( trimmed . startsWith ( oldHost ) ) return baseUrl + trimmed . slice ( oldHost . length ) ;
if ( /^(http|https):\/\//i . test ( trimmed ) ) return trimmed ;
return baseUrl + trimmed ;
} ,
} ,
} ,
computed: {},
methods : {
methods : {
handleLogout ( ) {
this . playAudio ( ) ;
logOut ( ) . then ( ( res ) => {
if ( res && res . data && res . data . code == 200 ) {
removeToken ( ) ;
this . $store . commit ( 'USER_INFO' , '' ) ;
this . $router . push ( '/login' ) ;
}
} ) . catch ( ( ) => {
removeToken ( ) ;
this . $store . commit ( 'USER_INFO' , '' ) ;
this . $router . push ( '/login' ) ;
} ) ;
} ,
scroll ( e ) {
scroll ( e ) {
if (
if (
e . srcElement . scrollTop + e . srcElement . clientHeight >=
e . srcElement . scrollTop + e . srcElement . clientHeight >=
@@ -302,11 +205,14 @@ export default {
localStorage . setItem ( "rollid" , res ) ;
localStorage . setItem ( "rollid" , res ) ;
this . $router . push ( {
this . $router . push ( {
name : "rolldetial" ,
name : "rolldetial" ,
// query:{
// obj:JSON.stringify(item)
// }
} ) ;
} ) ;
} ,
} ,
handleJoinDirect ( item ) {
// 直接跳转到详情页并触发加入
localStorage . setItem ( "rollid" , item . id ) ;
localStorage . setItem ( "autoJoin" , "1" ) ;
this . $router . push ( { name : "rolldetial" } ) ;
} ,
handletype ( res ) {
handletype ( res ) {
this . queryParams . rollType = res ;
this . queryParams . rollType = res ;
this . queryParams . page = 1 ;
this . queryParams . page = 1 ;
@@ -376,6 +282,9 @@ export default {
< style lang = "scss" scoped >
< style lang = "scss" scoped >
. roll _type _serch {
. roll _type _serch {
width : 100 % ;
width : 100 % ;
padding : 0 12 px ;
margin - bottom : 8 px ;
box - sizing : border - box ;
}
}
. roll _type {
. roll _type {
width : 34 % ;
width : 34 % ;
@@ -385,46 +294,39 @@ export default {
color : rgba ( 114 , 116 , 119 , 1 ) ;
color : rgba ( 114 , 116 , 119 , 1 ) ;
@ media ( max - width : 550 px ) {
@ media ( max - width : 550 px ) {
height : 30 px ;
height : 30 px ;
font - size : 10 px ;
font - size : 10 px ;
}
}
. type _btn {
. type _btn {
width : 49 % ;
width : 49 % ;
height : 35 px ;
height : 35 px ;
// border-radius: 70px;
@ media ( max - width : 550 px ) {
@ media ( max - width : 550 px ) {
// border-radius: 50px;
height : 25 px ;
height : 25 px ;
}
}
}
}
. active {
. active {
color : rgba ( 255 , 255 , 255 , 1 ) ;
color : rgba ( 255 , 255 , 255 , 1 ) ;
background: url(" . . / . . / assets/ pinxiangBottom _text _bg. png ") no - repeat center
background: url ( "../../ assets/ pinxiangBottom_text_bg. png") no - repeat center center ;
center ;
background - size : cover ;
background - size : cover ;
}
}
}
}
. roll _serch {
. roll _serch {
width : 64 % ;
width : 100 % ;
height : 42 px ;
height : 42 px ;
padding : 0 2 % 0 5 % ;
padding : 0 1 2px ;
background : url ( '../../assets/roll_serch.png' ) no - repeat center center ;
background : rgba ( 255 , 255 , 255 , 0.08 ) ;
background - size : 100 % 100 % ;
border : 1 px solid rgba ( 255 , 255 , 255 , 0.15 ) ;
border - radius : 8 px ;
border - radius : 8 px ;
// border: 1px solid #40649e;
// border-radius: 70px 70px 70px 70px;
opacity : 1 ;
opacity : 1 ;
display : flex ;
display : flex ;
align - items : center ;
align - items : center ;
justify - content : space - between ;
justify - content : space - between ;
box - sizing : border - box ;
. icon {
. icon {
height : 100 % ;
height : 100 % ;
width : 50 px ;
width : 50 px ;
}
}
@ media ( max - width : 550 px ) {
@ media ( max - width : 550 px ) {
height : 30 px ;
height : 30 px ;
font - size : 11 px ;
font - size : 11 px ;
}
}
input {
input {
@@ -437,262 +339,271 @@ export default {
background - color : transparent ;
background - color : transparent ;
text - indent : 10 px ;
text - indent : 10 px ;
outline : none ;
outline : none ;
@ media ( max - width : 550 px ) {
@ media ( max - width : 550 px ) {
font - size : 11 px ;
font - size : 11 px ;
}
}
}
}
}
}
. roll _serch _full {
. roll _serch _full {
width : 96 % ! important ;
width : 100 % ! important ;
margin : 0 auto ;
margin : 0 ;
}
}
. roll _status {
. roll _status {
width : 100 % ;
width : 100 % ;
background : url ( '../../assets/roll_status.png' ) no - repeat center center ;
background : rgba ( 255 , 255 , 255 , 0.05 ) ;
background - size : 100 % 100 % ;
border - radius : 10 px ;
height : 52 px ;
height : 48 px ;
padding : 0 20 px ;
padding : 0 1 2px ;
display : flex ;
display : flex ;
margi n- bottom : 20 px ;
alig n- items : center ;
margin - bottom : 8 px ;
gap : 16 px ;
. status _btn {
. status _btn {
margin - top : 3 % ;
overflow : hidden ;
overflow : hidden ;
flex - wrap : nowrap ;
flex - wrap : nowrap ;
width : 20 % ;
height : 32 px ;
height : 35 px ;
padding : 0 14 px ;
margin - right : 2 % ;
opacity : 1 ;
opacity : 1 ;
font - size : 18 px ;
font - size : 15 px ;
color : # fff ;
color : rgba ( 255 , 255 , 255 , 0.75 ) ;
cursor : pointer ;
border - radius : 20 px ;
display : flex ;
align - items : center ;
justify - content : center ;
@ media ( max - width : 550 px ) {
@ media ( max - width : 550 px ) {
font - size : 13 px ;
font - size : 13 px ;
height : 25 px ;
height : 28 px ;
padding : 0 10 px ;
}
}
}
}
. active {
. active {
background : url ( '../../assets/status_btn_active.png' ) no - repeat center ;
background : transparent ;
background - size : 100 % 100 % ;
color : # f0a030 ;
colo r: # 3 a97e4 ;
borde r: 2 px solid # f0a030 ;
width : 80 px ;
font - weight : bold ;
height : 30 px ;
line - height : 30 px ;
text - align : center ;
}
}
}
}
. roll _room _list {
. roll _room _list {
width : 100 % ;
width : 100 % ;
height : 57 0px ;
height : calc ( 100 vh - 14 0px ) ;
overflow - y : auto ;
overflow - y : auto ;
// border: #c23dd4 1px solid;
padding : 0 12 px ;
& : : - webkit - scrollbar {
box - sizing : border - box ;
width : 2 px ;
& : : - webkit - scrollbar { width : 2 px ; }
}
& : : - webkit - scrollbar - thumb { background : # 3 fa2c7 ; border - radius : 5 px ; }
}
& : : - webkit - scrollbar - thumb {
. roll _room _grid {
background : # 3 fa2c7 ;
display : grid ;
border - radius : 5 px ;
grid - template - columns : 1 fr 1 fr ;
}
gap : 10 px ;
}
@ media ( max - width : 550 px ) {
. roll _room {
& : : - webkit - scrollbar {
border - radius : 12 px ;
width : 2 px ;
overflow : hidden ;
}
background : rgba ( 255 , 255 , 255 , 0.06 ) ;
}
border : 1 px solid rgba ( 255 , 255 , 255 , 0.10 ) ;
. finish {
display : flex ;
border : 2 px solid # 4 e4e4e ;
flex - direction : column ;
}
padding : 10 px 8 px 8 px ;
. anchor {
box - sizing : border - box ;
border : 2 px solid # 3 fa2c7 ;
transition : transform 0.2 s ;
}
& : hover { transform : translateY ( - 3 px ) ; }
. official {
& . finish { border - color : # 4 e4e4e ; opacity : 0.75 ; }
// border: 2px solid #c23dd4;
& . anchor { border - color : # 3 fa2c7 ; }
}
& . official { border - color : rgba ( 194 , 61 , 212 , 0.5 ) ; }
. roll _room {
}
width : 100 % ;
. room _card _header {
margin : 0 auto ;
margin - bottom : 6 px ;
height : 300 px ;
. room _card _name {
margin - top : 2 % ;
font - size : 13 px ;
box - sizing : border - box ;
font - weight : bold ;
color : # fff ;
white - space : nowrap ;
overflow : hidden ;
overflow : hidden ;
// border-radius: 15px;
text - overflow : ellipsis ;
position : relative ;
margin - bottom : 3 px ;
background : url ( '../../assets/roll-official-bg-DRp1UF5D.png' ) no - repeat top center ;
}
background - size : 100 % 100 % ;
. room _card _time {
transiti on: all 0.2 s linear ;
f ont - size : 10 px ;
& : hover {
color : rgba ( 200 , 180 , 255 , 0.8 ) ;
transform : translateY ( - 5 px ) ;
display : flex ;
align - items : center ;
gap : 3 px ;
. time _icon { font - size : 11 px ; }
}
}
. room _card _weapons {
display : grid ;
grid - template - columns : 1 fr 1 fr ;
gap : 4 px ;
margin - bottom : 6 px ;
. card _weapon _item {
background : rgba ( 255 , 255 , 255 , 0.06 ) ;
border - radius : 8 px ;
padding : 4 px ;
display : flex ;
flex - direction : column ;
align - items : center ;
min - height : 70 px ;
justify - content : center ;
. card _price {
font - size : 10 px ;
color : # f0c040 ;
margin - bottom : 3 px ;
. price _diamond { color : # f0c040 ; }
}
}
img {
@ media ( max - width : 550 px ) {
width : 52 px ;
height : 220 px ;
height : 38 px ;
object - fit : contain ;
}
}
}
}
. room _typ e{
. card _weapon _mor e {
position : absolute ;
background : rgba ( 255 , 255 , 255 , 0.06 ) ;
top : - 2 px ;
border - radius : 8 px ;
left : 50 % ;
display : flex ;
transform : translateX ( - 50 % ) ;
align - items : center ;
justify - content : center ;
font - size : 18 px ;
color : rgba ( 255 , 255 , 255 , 0.5 ) ;
min - height : 70 px ;
}
}
. room _weapon {
}
width : 70 % ;
. room _card _footer {
margin : 0 auto ;
margin - bottom : 8 px ;
margin - top : 3 % ;
. card _footer _info {
. room _weapon _back {
font - size : 11 px ;
width : 100 % ;
color : # f0c040 ;
height : 69 p x ;
display : fle x;
overflow : hidden ;
align - items : center ;
overflow - x : scroll ;
gap : 3 px ;
@ media ( max - width : 550 px ) {
. total _price { color : # f0c040 ; }
height : 41 px ;
. people _icon { color : # aaa ; }
}
. weapon _bg {
margin - right : 2 % ;
width : 60 px ;
height : 60 px ;
background : # 323436 ;
border - radius : 10 px 10 px 10 px 10 px ;
@ media ( max - width : 550 px ) {
width : 60 px ;
height : 60 px ;
}
img {
margin : 0 auto ;
@ media ( max - width : 550 px ) {
width : 35 px ;
height : 21 px ;
}
}
}
}
. room _weapon _back : : - webkit - scrollbar {
background : none ;
height : 5 px ;
}
. room _weapon _back : : - webkit - scrollbar - thumb {
border - radius : 5 px ;
background : # 323436 ;
}
}
}
. room _title {
}
padding : 0 2 % ;
. room _card _btns {
height : 70 p x;
display : fle x;
background : rgba ( 50 , 52 , 54 , 0.2 ) ;
gap : 6 px ;
margin - top : 30 px ;
margin - top : auto ;
@ media ( max - width : 550 px ) {
. card _btn _join {
height : 50 px ;
flex : 1 ;
}
height : 32 px ;
border - radius : 16 px ;
. room _type {
background : linear - gradient ( 90 deg , # f0a030 0 % , # e06010 100 % ) ;
width : 70 px ;
color : # fff ;
height : 35 px ;
font - size : 12 px ;
background : # 323436 ;
font - weight : bold ;
border - radius : 70 px ;
cursor : pointer ;
margin - right : 7 px ;
user - select : none ;
}
display : flex ;
align - items : center ;
. room _name {
justify - content : center ;
// width: 137px;
max - width : 200 px ;
@ media ( max - width : 550 px ) {
max - width : 250 px ;
}
overflow : hidden ;
text - overflow : ellipsis ;
white - space : nowrap ;
}
}
}
. room _btn _bg {
. card _btn _view {
position : absolute ;
flex : 1 ;
lef t: 50 % ;
heigh t: 32 px ;
bottom : 2 px ;
border - radius : 16 px ;
font - size : 21 px ;
background : rgba ( 255 , 255 , 255 , 0.1 ) ;
line - height : 70 px ;
border : 1 px solid rgba ( 255 , 255 , 255 , 0.25 ) ;
transf orm : translateX ( - 50 % ) ;
col or: # fff ;
@ media ( max - width : 550 px ) {
font - size : 12 px ;
font - size : 15 px ;
cursor : pointer ;
bottom : 2 px ;
user - select : none ;
}
display : flex ;
. room _btn _yjs {
align - items : center ;
position : relative ;
justify - content : center ;
width : 128 px ;
height : 48 px ;
background : url ( '../../assets/room_btn_yjs.png' ) no - repeat center center ;
background - size : contain ;
// bottom: 10px;
. icon {
width : 190 px ;
height : 70 px ;
@ media ( max - width : 550 px ) {
width : 185 px ;
height : 50 px ;
}
}
}
. room _btnn _yjs {
position : absolute ;
left : 50 % ;
top : 50 % ;
}
}
}
. room _detial {
. card _btn _ended {
margin - top : 3 % ;
flex : 1 ;
. roll _time {
height : 32 px ;
font - size : 13 px ;
border - radius : 16 px ;
@ media ( max - width : 550 px ) {
background : # 333 ;
font - size : 11 px ;
color : # 888 ;
}
font - size : 12 px ;
}
display : flex ;
. detial _public {
align - items : center ;
@ media ( max - width : 550 px ) {
justify - content : center ;
font - size : 10 px ;
}
svg {
margin - right : 5 px ;
}
. icon {
width : 20 px ;
height : 20 px ;
@ media ( max - width : 550 px ) {
width : 14 px ;
height : 14 px ;
}
}
}
}
}
}
}
. isnull {
. isnull {
width : 100 % ;
width : 100 % ;
height : 25 0px ;
height : 6 0px ;
font - size : 12 px ;
font - size : 12 px ;
color : # 878787 ;
color : # 878787 ;
display : flex ;
align - items : center ;
justify - content : center ;
}
}
. home {
. home {
width : 100 % ;
width : 100 % ;
margin : 0 auto ;
margin : 0 auto ;
height : 100 vh ;
height : 100 vh ;
// background: #0e1227c4;
padding : 0 ;
padding : 0 2 % ;
background : # 0 e1227 ;
}
}
. header _top {
/* 第一行:头像+昵称,融入深蓝背景 */
width : 100 % ;
. page _header _user {
height : 56 px ;
border - radius : 0 px 0 px 0 px 0 px ;
opacity : 1 ;
display : flex ;
display : flex ;
flex - direction : row ;
align - items : center ;
gap : 10 px ;
padding : 10 px 12 px 6 px ;
}
. page _logout _btn {
margin - left : auto ;
font - size : 12 px ;
color : rgba ( 255 , 255 , 255 , 0.6 ) ;
border : 1 px solid rgba ( 255 , 255 , 255 , 0.2 ) ;
border - radius : 12 px ;
padding : 3 px 10 px ;
cursor : pointer ;
flex - shrink : 0 ;
& : active { opacity : 0.7 ; }
}
. page _avatar _wrap {
width : 52 px ;
height : 52 px ;
border - radius : 50 % ;
overflow : hidden ;
border : 2 px solid rgba ( 255 , 255 , 255 , 0.25 ) ;
flex - shrink : 0 ;
. page _avatar _img {
width : 100 % ;
height : 100 % ;
object - fit : cover ;
}
}
. page _nickname {
font - size : 14 px ;
font - weight : bold ;
color : # fff ;
white - space : nowrap ;
overflow : hidden ;
text - overflow : ellipsis ;
}
/* 第二行: ROLL房标题 + 玩法说明 */
. page _title _row {
display : flex ;
flex - direction : row ;
align - items : center ;
align - items : center ;
justify - content : space - between ;
justify - content : space - between ;
div : first - child {
padding : 4 px 12 px 4 px ;
}
}
div : last - child {
. page _title {
color : # fff ;
font - size : 17 px ;
font - size : 12 px ;
font - weight : bold ;
text - decoration : underline ;
color : # fff ;
line - height : 1.5 ;
flex : 1 ;
}
text - align : center ;
}
. page _rule _btn {
color : # fff ;
font - size : 12 px ;
text - decoration : underline ;
cursor : pointer ;
flex - shrink : 0 ;
width : 60 px ;
text - align : right ;
}
}
< / style >
< / style >