Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
T
tabulator-another-web
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
tabulator-another-web
Commits
534c062a
Commit
534c062a
authored
Jul 10, 2025
by
xiaoye
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更改交互
parent
67cab6fb
Pipeline
#38808
canceled with stages
in 1 minute and 40 seconds
Changes
5
Pipelines
1
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
146 additions
and
66 deletions
+146
-66
src/pages/drawer/creator.vue
src/pages/drawer/creator.vue
+8
-3
src/pages/drawer/setting.vue
src/pages/drawer/setting.vue
+87
-12
src/pages/tournament.vue
src/pages/tournament.vue
+41
-51
src/script/const.ts
src/script/const.ts
+6
-0
src/style/tournament.scss
src/style/tournament.scss
+4
-0
No files found.
src/pages/drawer/creator.vue
View file @
534c062a
...
@@ -128,9 +128,6 @@
...
@@ -128,9 +128,6 @@
rule
:
{
rule
:
{
select
:
''
,
select
:
''
,
settings
:
{
settings
:
{
winScore
:
3
,
drawScore
:
1
,
byeScore
:
3
,
hasThirdPlaceMatch
:
true
hasThirdPlaceMatch
:
true
}
as
ruleSettings
,
}
as
ruleSettings
,
range
:
[
range
:
[
...
@@ -181,6 +178,14 @@
...
@@ -181,6 +178,14 @@
if
(
n
>
0
&&
!
Number
.
isInteger
(
n
)
||
n
<=
0
)
if
(
n
>
0
&&
!
Number
.
isInteger
(
n
)
||
n
<=
0
)
throw
new
Error
(
'
出轮的人数必须是2的幂
'
);
throw
new
Error
(
'
出轮的人数必须是2的幂
'
);
}
}
if
(
create
.
visibility
.
select
=
'
Swiss
'
)
{
if
(
!
create
.
rule
.
settings
.
winScore
&&
create
.
rule
.
settings
.
winScore
==
undefined
)
throw
new
Error
(
'
请填写胜利分
'
);
if
(
!
create
.
rule
.
settings
.
drawScore
&&
create
.
rule
.
settings
.
drawScore
==
undefined
)
throw
new
Error
(
'
请填写平局分
'
);
if
(
!
create
.
rule
.
settings
.
byeScore
&&
create
.
rule
.
settings
.
byeScore
==
undefined
)
throw
new
Error
(
'
请填写轮空分
'
);
}
const
collaborators
=
create
.
collaborators
.
map
(
user
=>
user
.
id
);
const
collaborators
=
create
.
collaborators
.
map
(
user
=>
user
.
id
);
const
id
=
await
Tabulator
.
Tournament
.
Create
(
Mycard
.
token
,
{
const
id
=
await
Tabulator
.
Tournament
.
Create
(
Mycard
.
token
,
{
name
:
create
.
name
,
name
:
create
.
name
,
...
...
src/pages/drawer/setting.vue
View file @
534c062a
<
template
>
<
template
>
<uni-card
class =
'Setting'
v-if =
'tournament'
>
<uni-card
class =
'Setting'
v-if =
'tournament'
>
<uni-easyinput
type =
'text'
placeholder =
'比赛名称'
v-model =
'tournament.name'
:disabled =
'
tournament.
operatorChk()'
/>
<uni-easyinput
type =
'text'
placeholder =
'比赛名称'
v-model =
'tournament.name'
:disabled =
'
!
operatorChk()'
/>
<uni-easyinput
type =
'text'
placeholder =
'比赛描述'
v-model =
'tournament.description'
:disabled =
'
tournament.
operatorChk()'
/>
<uni-easyinput
type =
'text'
placeholder =
'比赛描述'
v-model =
'tournament.description'
:disabled =
'
!
operatorChk()'
/>
<uni-data-select
<uni-data-select
placeholder =
'可见性'
placeholder =
'可见性'
v-model =
'tournament.visibility.select'
v-model =
'tournament.visibility.select'
:localdata =
'tournament.visibility.range'
:localdata =
'tournament.visibility.range'
:disabled =
'
tournament.
operatorChk()'
:disabled =
'
!
operatorChk()'
></uni-data-select>
></uni-data-select>
<uni-data-select
<uni-data-select
placeholder =
'规则'
placeholder =
'规则'
v-model =
'tournament.rule.select'
v-model =
'tournament.rule.select'
:localdata =
'tournament.rule.range'
:localdata =
'tournament.rule.range'
:disabled =
"tournament.this?.status != 'Ready' ||
tournament.
operatorChk()"
:disabled =
"tournament.this?.status != 'Ready' ||
!
operatorChk()"
></uni-data-select>
></uni-data-select>
<view
v-show =
"tournament.rule.select == 'Swiss'"
>
<view
v-show =
"tournament.rule.select == 'Swiss'"
>
<uni-easyinput
type =
'number'
placeholder =
'轮数'
v-model =
'tournament.rule.settings.rounds'
:disabled =
"tournament.this?.status != 'Ready' ||
tournament.
operatorChk()"
/>
<uni-easyinput
type =
'number'
placeholder =
'轮数'
v-model =
'tournament.rule.settings.rounds'
:disabled =
"tournament.this?.status != 'Ready' ||
!
operatorChk()"
/>
<uni-easyinput
type =
'number'
placeholder =
'胜利分'
v-model =
'tournament.rule.settings.winScore'
:disabled =
"tournament.this?.status != 'Ready' ||
tournament.
operatorChk()"
/>
<uni-easyinput
type =
'number'
placeholder =
'胜利分'
v-model =
'tournament.rule.settings.winScore'
:disabled =
"tournament.this?.status != 'Ready' ||
!
operatorChk()"
/>
<uni-easyinput
type =
'number'
placeholder =
'平局分'
v-model =
'tournament.rule.settings.drawScore'
:disabled =
"tournament.this?.status != 'Ready' ||
tournament.
operatorChk()"
/>
<uni-easyinput
type =
'number'
placeholder =
'平局分'
v-model =
'tournament.rule.settings.drawScore'
:disabled =
"tournament.this?.status != 'Ready' ||
!
operatorChk()"
/>
<uni-easyinput
type =
'number'
placeholder =
'轮空分'
v-model =
'tournament.rule.settings.byeScore'
:disabled =
"tournament.this?.status != 'Ready' ||
tournament.
operatorChk()"
/>
<uni-easyinput
type =
'number'
placeholder =
'轮空分'
v-model =
'tournament.rule.settings.byeScore'
:disabled =
"tournament.this?.status != 'Ready' ||
!
operatorChk()"
/>
</view>
</view>
<view
v-show =
"tournament.rule.select == 'SingleElimination'"
>
<view
v-show =
"tournament.rule.select == 'SingleElimination'"
>
<checkbox-group
@
change =
'tournament.hasThirdPlaceMatch.select'
>
<checkbox-group
@
change =
'tournament.hasThirdPlaceMatch.select'
>
<label>
<label>
<checkbox
:checked =
'tournament.rule.settings.hasThirdPlaceMatch'
:disabled =
"tournament.this?.status != 'Ready' ||
tournament.
operatorChk()"
/>
季军赛
<checkbox
:checked =
'tournament.rule.settings.hasThirdPlaceMatch'
:disabled =
"tournament.this?.status != 'Ready' ||
!
operatorChk()"
/>
季军赛
</label>
</label>
</checkbox-group>
</checkbox-group>
</view>
</view>
<br>
<br>
<view
v-show =
'operatorChk()'
>
<view
class =
'button click'
@
click =
'emit.on()'
>
<span>
{{
`切换状态:${status.text.get(tournament.this.status)
}
`
}}
<
/span
>
<
uni
-
icons
type
=
'
circle-filled
'
:
color
=
'
status.color.get(tournament.this.status)
'
><
/uni-icons
>
<
/view
>
<
view
class
=
'
button click
'
@
click
=
'
emit.reset()
'
>
<
span
>
重置比赛
<
/span
>
<
uni
-
icons
type
=
'
loop
'
><
/uni-icons
>
<
/view
>
<
view
class
=
'
button click
'
@
click
=
'
emit.shuffle()
'
>
<
span
>
打乱选手
<
/span
>
<
uni
-
icons
type
=
'
auth
'
><
/uni-icons
>
<
/view
>
<
view
class
=
'
button click
'
@
click
=
'
emit.upload()
'
>
<
span
>
上传选手
<
/span
>
<
uni
-
icons
type
=
'
cloud-upload
'
><
/uni-icons
>
<
/view
>
<
view
class
=
'
button click
'
@
click
=
'
emit.empty()
'
>
<
span
>
清空选手
<
/span
>
<
uni
-
icons
type
=
'
spinner-cycle
'
color
=
'
red
'
><
/uni-icons
>
<
/view
>
<
view
class
=
'
button click
'
@
click
=
'
emit.del()
'
>
<
span
>
删除比赛
<
/span
>
<
uni
-
icons
type
=
'
trash
'
color
=
'
red
'
><
/uni-icons
>
<
/view
>
<
/view
>
<
br
>
<
uni
-
card
<
uni
-
card
id
=
'
collaborators
'
id
=
'
collaborators
'
title
=
'
协作者
'
title
=
'
协作者
'
...
@@ -49,7 +76,7 @@
...
@@ -49,7 +76,7 @@
<
/view
>
<
/view
>
<
/view
>
<
/view
>
<
/uni-list-chat
>
<
/uni-list-chat
>
<uni-list-item>
<
uni
-
list
-
item
v
-
show
=
'
operatorChk()
'
>
<
template
v
-
slot
:
header
>
<
template
v
-
slot
:
header
>
<
uni
-
forms
>
<
uni
-
forms
>
<
uni
-
forms
-
item
id
=
'
header
'
>
<
uni
-
forms
-
item
id
=
'
header
'
>
...
@@ -72,7 +99,7 @@
...
@@ -72,7 +99,7 @@
<
/uni-list
>
<
/uni-list
>
<
/uni-card
>
<
/uni-card
>
<
br
>
<
br
>
<uni-easyinput
v-show =
'
!tournament.
operatorChk()'
type =
'text'
placeholder =
'卡图图床(例:https://example.com/api/)'
v-model =
'tournament.pics'
/>
<
uni
-
easyinput
v
-
show
=
'
operatorChk()
'
type
=
'
text
'
placeholder
=
'
卡图图床(例:https://example.com/api/)
'
v
-
model
=
'
tournament.pics
'
/>
<
br
>
<
br
>
<
view
class
=
'
button
'
@
click
=
'
tournament.update()
'
>
<
view
class
=
'
button
'
@
click
=
'
tournament.update()
'
>
<
view
>
<
view
>
...
@@ -86,13 +113,52 @@
...
@@ -86,13 +113,52 @@
import
{
ref
,
reactive
,
onMounted
,
onUnmounted
,
onBeforeMount
,
watch
}
from
'
vue
'
;
import
{
ref
,
reactive
,
onMounted
,
onUnmounted
,
onBeforeMount
,
watch
}
from
'
vue
'
;
import
emitter
from
'
../../script/emitter.ts
'
;
import
emitter
from
'
../../script/emitter.ts
'
;
import
Const
from
'
../../script/const.ts
'
import
Const
from
'
../../script/const.ts
'
import
Mycard
from
'
../../script/mycard.ts
'
;
let
tournament
;
let
tournament
;
const
operatorChk
=
()
:
boolean
=>
{
return
Mycard
.
id
>=
0
&&
(
Mycard
.
id
==
tournament
.
this
?.
creator
||
(
tournament
.
this
?.
collaborators
.
includes
(
Mycard
.
id
)
??
false
));
}
const
init
=
(
t
)
:
void
=>
{
const
init
=
(
t
)
:
void
=>
{
tournament
=
t
;
tournament
=
t
;
}
;
}
;
const
status
=
{
text
:
new
Map
([
[
'
Ready
'
,
'
开始
'
],
[
'
Running
'
,
'
结束
'
],
[
'
Finished
'
,
'
已结束
'
]
])
as
Map
<
string
,
string
>
,
color
:
new
Map
([
[
'
Ready
'
,
'
rgb(84, 200, 17)
'
],
[
'
Running
'
,
'
red
'
],
[
'
Finished
'
,
'
darkgray
'
]
])
as
Map
<
string
,
string
>
,
}
const
emit
=
{
on
:
()
:
void
=>
{
emitter
.
emit
(
Const
.
tournamentOn
);
}
,
reset
:
()
:
void
=>
{
emitter
.
emit
(
Const
.
tournamentReset
);
}
,
shuffle
:
()
:
void
=>
{
emitter
.
emit
(
Const
.
tournamentShuffle
);
}
,
upload
:
()
:
void
=>
{
emitter
.
emit
(
Const
.
tournamentUpload
);
}
,
empty
:
()
:
void
=>
{
emitter
.
emit
(
Const
.
tournamentEmpty
);
}
,
del
:
()
:
void
=>
{
emitter
.
emit
(
Const
.
tournamentDel
);
}
}
;
onBeforeMount
(()
:
void
=>
{
onBeforeMount
(()
:
void
=>
{
emitter
.
on
(
Const
.
settingInit
,
init
)
emitter
.
on
(
Const
.
settingInit
,
init
)
}
);
}
);
...
@@ -100,3 +166,12 @@
...
@@ -100,3 +166,12 @@
emitter
.
off
(
Const
.
settingInit
,
init
)
emitter
.
off
(
Const
.
settingInit
,
init
)
}
);
}
);
<
/script
>
<
/script
>
<
style
lang
=
'
scss
'
scoped
>
.
button
{
display
:
flex
!
important
;
width
:
100
%
;
justify
-
content
:
center
!
important
;
font
-
size
:
16
px
;
gap
:
5
%
}
<
/style>
\ No newline at end of file
src/pages/tournament.vue
View file @
534c062a
This diff is collapsed.
Click to expand it.
src/script/const.ts
View file @
534c062a
...
@@ -12,6 +12,12 @@ class ConstData {
...
@@ -12,6 +12,12 @@ class ConstData {
showTournament
=
'
showTournament
'
;
showTournament
=
'
showTournament
'
;
updateRounds
=
'
updateRounds
'
;
updateRounds
=
'
updateRounds
'
;
newTournament
=
'
newTournament
'
;
newTournament
=
'
newTournament
'
;
tournamentOn
=
'
tournamentOn
'
;
tournamentReset
=
'
tournamentReset
'
;
tournamentShuffle
=
'
tournamentShuffle
'
;
tournamentUpload
=
'
tournamentUpload
'
;
tournamentEmpty
=
'
tournamentEmpty
'
;
tournamentDel
=
'
tournamentDel
'
;
ot
=
{
ot
=
{
CustomJpg
:
0
,
CustomJpg
:
0
,
CustomPng
:
1
,
CustomPng
:
1
,
...
...
src/style/tournament.scss
View file @
534c062a
...
@@ -25,6 +25,10 @@
...
@@ -25,6 +25,10 @@
}
}
}
}
#status
{
font-size
:
16px
;
}
#body
{
#body
{
width
:
80%
;
width
:
80%
;
min-width
:
208px
;
min-width
:
208px
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment