删除深色模式的样式

This commit is contained in:
2026-03-20 16:40:58 +08:00
parent 1a45638f32
commit 52e44bd857
4 changed files with 231 additions and 232 deletions

View File

@@ -5,7 +5,7 @@
/* 自定义样式 */ /* 自定义样式 */
:root { :root {
--sidebar-width: 200px; --sidebar-width: 200px;
--color-bg-dark: #0f172a;
--color-bg-sidebar: #1e293b; --color-bg-sidebar: #1e293b;
--color-accent: #38bdf8; --color-accent: #38bdf8;
--color-text: #e2e8f0; --color-text: #e2e8f0;

View File

@@ -1,13 +1,13 @@
<template> <template>
<div class="h-full w-full overflow-y-auto bg-gray-50 p-6"> <div class="h-full w-full overflow-y-auto bg-gray-50 p-6">
<div class="bg-white dark:bg-slate-900 rounded-3xl shadow-sm border border-slate-100 dark:border-slate-800 p-6 h-full flex flex-col"> <div class="bg-white rounded-3xl shadow-sm border border-slate-100 p-6 h-full flex flex-col">
<!-- 顶部筛选区域 --> <!-- 顶部筛选区域 -->
<div class="mb-6 space-y-4"> <div class="mb-6 space-y-4">
<!-- 第一行主要筛选条件 --> <!-- 第一行主要筛选条件 -->
<div class="flex flex-wrap items-center justify-between gap-4"> <div class="flex flex-wrap items-center justify-between gap-4">
<div class="flex items-center flex-wrap gap-4"> <div class="flex items-center flex-wrap gap-4">
<el-checkbox v-model="queryFormData.isFilter" :label="$t('hostsList.filterPrivateUsers') || '过滤私密账号'" size="large" <el-checkbox v-model="queryFormData.isFilter" :label="$t('hostsList.filterPrivateUsers') || '过滤私密账号'"
class="!mr-0" /> size="large" class="!mr-0" />
<!-- Coins Input --> <!-- Coins Input -->
<div class="flex flex-col gap-1"> <div class="flex flex-col gap-1">
@@ -15,11 +15,11 @@
<span>💰</span> {{ $t('hostsList.coins') || '金币' }} <span>💰</span> {{ $t('hostsList.coins') || '金币' }}
</label> </label>
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<el-input v-model="queryFormData.coinMin" :placeholder="$t('hostsList.minCoins') || '最小'" style="width: 100px" <el-input v-model="queryFormData.coinMin" :placeholder="$t('hostsList.minCoins') || '最小'"
type="number" :disabled="streamdialogVisibletext || isRunnings" /> style="width: 100px" type="number" :disabled="streamdialogVisibletext || isRunnings" />
<span class="text-slate-300">/</span> <span class="text-slate-300">/</span>
<el-input v-model="queryFormData.coinMax" :placeholder="$t('hostsList.maxCoins') || '最大'" style="width: 100px" <el-input v-model="queryFormData.coinMax" :placeholder="$t('hostsList.maxCoins') || '最大'"
type="number" :disabled="streamdialogVisibletext || isRunnings" /> style="width: 100px" type="number" :disabled="streamdialogVisibletext || isRunnings" />
</div> </div>
</div> </div>
@@ -29,20 +29,22 @@
<span>📊</span> {{ $t('hostsList.level') || '等级' }} <span>📊</span> {{ $t('hostsList.level') || '等级' }}
</label> </label>
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<el-input v-model="queryFormData.levelMin" :placeholder="$t('hostsList.minLevel') || '最小'" style="width: 100px" <el-input v-model="queryFormData.levelMin" :placeholder="$t('hostsList.minLevel') || '最小'"
type="number" :disabled="streamdialogVisibletext || isRunnings" /> style="width: 100px" type="number" :disabled="streamdialogVisibletext || isRunnings" />
<span class="text-slate-300">/</span> <span class="text-slate-300">/</span>
<el-input v-model="queryFormData.levelMax" :placeholder="$t('hostsList.maxLevel') || '最大'" style="width: 100px" <el-input v-model="queryFormData.levelMax" :placeholder="$t('hostsList.maxLevel') || '最大'"
type="number" :disabled="streamdialogVisibletext || isRunnings" /> style="width: 100px" type="number" :disabled="streamdialogVisibletext || isRunnings" />
</div> </div>
</div> </div>
</div> </div>
<!-- Info Pill --> <!-- Info Pill -->
<div class="bg-white/60 border border-slate-200 rounded-full px-5 py-2 flex items-center gap-4 text-sm shadow-sm"> <div
class="bg-white/60 border border-slate-200 rounded-full px-5 py-2 flex items-center gap-4 text-sm shadow-sm">
<span class="font-medium text-slate-500">{{ $t('hostsList.runningTime') || '运行时间' }}:</span> <span class="font-medium text-slate-500">{{ $t('hostsList.runningTime') || '运行时间' }}:</span>
<span class="font-mono font-bold text-slate-700"> <span class="font-mono font-bold text-slate-700">
{{ String(hourstuo).padStart(2, '0') }}:{{ String(minutestuo).padStart(2, '0') }}:{{ String(secondstuo).padStart(2, '0') }} {{ String(hourstuo).padStart(2, '0') }}:{{ String(minutestuo).padStart(2, '0') }}:{{
String(secondstuo).padStart(2, '0') }}
</span> </span>
<div class="w-px h-4 bg-slate-200"></div> <div class="w-px h-4 bg-slate-200"></div>
<span class="font-medium text-slate-500">{{ $t('hostsList.total') || '总数' }}:</span> <span class="font-medium text-slate-500">{{ $t('hostsList.total') || '总数' }}:</span>
@@ -57,7 +59,8 @@
<el-button @click="streamdialogVisible = true" :disabled="isRunnings" type="primary" <el-button @click="streamdialogVisible = true" :disabled="isRunnings" type="primary"
class="!rounded-xl !font-semibold shadow-lg shadow-blue-500/20"> class="!rounded-xl !font-semibold shadow-lg shadow-blue-500/20">
<span class="mr-1">📍</span> <span class="mr-1">📍</span>
{{ streamdialogVisibletext ? ($t('hostsList.specifiedRooms') || '已指定') : ($t('hostsList.specifyRooms') || '指定直播间') }} {{ streamdialogVisibletext ? ($t('hostsList.specifiedRooms') || '已指定') : ($t('hostsList.specifyRooms') ||
'指定直播间') }}
</el-button> </el-button>
<el-button v-show="!isRunnings" type="success" @click="getBigBrother" <el-button v-show="!isRunnings" type="success" @click="getBigBrother"
@@ -77,11 +80,13 @@
<!-- 第二行搜索和操作 --> <!-- 第二行搜索和操作 -->
<div class="flex flex-wrap items-center justify-between gap-4"> <div class="flex flex-wrap items-center justify-between gap-4">
<div class="flex items-center gap-4"> <div class="flex items-center gap-4">
<el-select v-model="searchForm.region" filterable :placeholder="$t('hostsList.selectCountry') || '选择国家'" style="width: 160px"> <el-select v-model="searchForm.region" filterable :placeholder="$t('hostsList.selectCountry') || '选择国家'"
style="width: 160px">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
<el-input v-model="searchForm.displayId" :placeholder="$t('hostsList.bigBrotherId') || '大哥ID'" style="width: 180px" clearable> <el-input v-model="searchForm.displayId" :placeholder="$t('hostsList.bigBrotherId') || '大哥ID'"
style="width: 180px" clearable>
<template #prefix> <template #prefix>
<span class="font-semibold text-slate-400">@</span> <span class="font-semibold text-slate-400">@</span>
</template> </template>
@@ -120,7 +125,8 @@
<button @click="refreshCountry" :disabled="isRefreshingCountry" <button @click="refreshCountry" :disabled="isRefreshingCountry"
class="p-1 rounded-md hover:bg-slate-200 transition-colors disabled:opacity-50 disabled:cursor-not-allowed" class="p-1 rounded-md hover:bg-slate-200 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"
:title="$t('hostsList.refreshCountry') || '刷新国家'"> :title="$t('hostsList.refreshCountry') || '刷新国家'">
<span class="material-icons-round text-slate-500 text-base" :class="{ 'animate-spin': isRefreshingCountry }">refresh</span> <span class="material-icons-round text-slate-500 text-base"
:class="{ 'animate-spin': isRefreshingCountry }">refresh</span>
</button> </button>
</div> </div>
</div> </div>
@@ -132,7 +138,8 @@
@cell-dblclick="handleCellDbClick" @selection-change="handleSelectionChange"> @cell-dblclick="handleCellDbClick" @selection-change="handleSelectionChange">
<el-table-column fixed prop="displayId" :label="$t('hostsList.id') || 'ID'" min-width="120"> <el-table-column fixed prop="displayId" :label="$t('hostsList.id') || 'ID'" min-width="120">
<template #default="scope"> <template #default="scope">
<div class="text-primary font-semibold cursor-pointer hover:underline" @click="openHTML(scope.row.displayId)"> <div class="text-primary font-semibold cursor-pointer hover:underline"
@click="openHTML(scope.row.displayId)">
{{ scope.row.displayId }} {{ scope.row.displayId }}
</div> </div>
</template> </template>
@@ -140,7 +147,8 @@
<el-table-column prop="hostDisplayId" :label="$t('hostsList.hostId') || '主播ID'" min-width="120"> <el-table-column prop="hostDisplayId" :label="$t('hostsList.hostId') || '主播ID'" min-width="120">
<template #default="scope"> <template #default="scope">
<div class="text-primary font-semibold cursor-pointer hover:underline" @click.ctrl.exact="handleLongPress(scope.row.hostDisplayId)"> <div class="text-primary font-semibold cursor-pointer hover:underline"
@click.ctrl.exact="handleLongPress(scope.row.hostDisplayId)">
{{ scope.row.hostDisplayId }} {{ scope.row.hostDisplayId }}
</div> </div>
</template> </template>
@@ -175,9 +183,11 @@
<div v-for="(field, index) in fields" :key="index" class="grid grid-cols-12 gap-4 items-center"> <div v-for="(field, index) in fields" :key="index" class="grid grid-cols-12 gap-4 items-center">
<div class="col-span-3 text-right text-gray-600">{{ field.label }}</div> <div class="col-span-3 text-right text-gray-600">{{ field.label }}</div>
<div class="col-span-9 flex gap-2 items-center"> <div class="col-span-9 flex gap-2 items-center">
<el-input type="number" v-model.number="searchForm[field.minModel]" :placeholder="$t('hostsList.minValue') || '最小值'" /> <el-input type="number" v-model.number="searchForm[field.minModel]"
:placeholder="$t('hostsList.minValue') || '最小值'" />
<span>-</span> <span>-</span>
<el-input type="number" v-model.number="searchForm[field.maxModel]" :placeholder="$t('hostsList.maxValue') || '最大值'" /> <el-input type="number" v-model.number="searchForm[field.maxModel]"
:placeholder="$t('hostsList.maxValue') || '最大值'" />
</div> </div>
</div> </div>

View File

@@ -1,7 +1,7 @@
<template> <template>
<div class="bg-white dark:bg-slate-50 rounded-3xl shadow-2xl flex flex-col overflow-hidden h-full"> <div class="bg-white rounded-3xl shadow-2xl flex flex-col overflow-hidden h-full">
<!-- Header --> <!-- Header -->
<header class="px-8 py-6 border-b border-slate-100 dark:border-slate-200/60 bg-white"> <header class="px-8 py-6 border-b border-slate-100 bg-white">
<div class="flex flex-wrap items-center gap-4"> <div class="flex flex-wrap items-center gap-4">
<div class="relative flex-1 min-w-[200px]"> <div class="relative flex-1 min-w-[200px]">
<select v-model="searchForm.country" <select v-model="searchForm.country"
@@ -101,23 +101,21 @@
<!-- Invitation Type --> <!-- Invitation Type -->
<td class="py-4 px-2 border-b border-slate-50 group-last:border-none"> <td class="py-4 px-2 border-b border-slate-50 group-last:border-none">
<span class="px-3 py-1 text-[10px] font-bold uppercase rounded-full" <span class="px-3 py-1 text-[10px] font-bold uppercase rounded-full" :class="{
:class="{
'bg-green-50 text-green-600': row.invitationType == 1, 'bg-green-50 text-green-600': row.invitationType == 1,
'bg-amber-50 text-amber-600': row.invitationType == 2, 'bg-amber-50 text-amber-600': row.invitationType == 2,
'bg-blue-50 text-blue-600': row.invitationType == 3 'bg-blue-50 text-blue-600': row.invitationType == 3
}"> }">
{{ row.invitationType == 1 ? $t('hostList.invitationType1') : row.invitationType == 2 ? $t('hostList.invitationType2') : $t('hostList.invitationType3') }} {{ row.invitationType == 1 ? $t('hostList.invitationType1') : row.invitationType == 2 ?
$t('hostList.invitationType2') : $t('hostList.invitationType3') }}
</span> </span>
</td> </td>
<!-- Data Buttons --> <!-- Data Buttons -->
<td class="py-4 px-2 border-b border-slate-50 group-last:border-none"> <td class="py-4 px-2 border-b border-slate-50 group-last:border-none">
<div class="flex gap-2"> <div class="flex gap-2">
<button <button @click="getliveHost(row.hostId)"
@click="getliveHost(row.hostId)" class="px-3 py-1.5 bg-blue-50 text-blue-600 hover:bg-blue-600 hover:text-white rounded-lg text-xs font-medium transition-all">
class="px-3 py-1.5 bg-blue-50 text-blue-600 hover:bg-blue-600 hover:text-white rounded-lg text-xs font-medium transition-all"
>
{{ $t('hostList.viewSessions') }} {{ $t('hostList.viewSessions') }}
</button> </button>
</div> </div>
@@ -174,8 +172,7 @@
</div> </div>
<!-- Footer / Pagination --> <!-- Footer / Pagination -->
<footer <footer class="px-8 py-6 border-t border-slate-100 bg-white flex flex-wrap items-center justify-between gap-4">
class="px-8 py-6 border-t border-slate-100 dark:border-slate-200/60 bg-white flex flex-wrap items-center justify-between gap-4">
<div class="flex items-center gap-4"> <div class="flex items-center gap-4">
<div class="relative"> <div class="relative">
<select v-model="pageSize" @change="handleSizeChange" <select v-model="pageSize" @change="handleSizeChange"

View File

@@ -4,33 +4,30 @@
<div class="grid grid-cols-1 lg:grid-cols-12 gap-4 mb-4"> <div class="grid grid-cols-1 lg:grid-cols-12 gap-4 mb-4">
<!-- Stat Cards --> <!-- Stat Cards -->
<!-- 总数量 (较小) --> <!-- 总数量 (较小) -->
<div <div class="lg:col-span-2 bg-white p-4 rounded-xl shadow-sm border border-slate-100">
class="lg:col-span-2 bg-white dark:bg-slate-900 p-4 rounded-xl shadow-sm border border-slate-100 dark:border-slate-800">
<div class="flex items-center justify-between mb-1"> <div class="flex items-center justify-between mb-1">
<span class="text-xs font-medium text-slate-500">{{ $t('workbenches.totalnumber') }}</span> <span class="text-xs font-medium text-slate-500">{{ $t('workbenches.totalnumber') }}</span>
<span class="material-icons-round text-primary/40 text-lg">analytics</span> <span class="material-icons-round text-primary/40 text-lg">analytics</span>
</div> </div>
<div class="text-xl font-bold text-slate-900 dark:text-white">{{ hostData.totalCount }}</div> <div class="text-xl font-bold text-slate-900">{{ hostData.totalCount }}</div>
</div> </div>
<!-- 新建主播 (较小) --> <!-- 新建主播 (较小) -->
<div <div class="lg:col-span-2 bg-white p-4 rounded-xl shadow-sm border border-slate-100">
class="lg:col-span-2 bg-white dark:bg-slate-900 p-4 rounded-xl shadow-sm border border-slate-100 dark:border-slate-800">
<div class="flex items-center justify-between mb-1"> <div class="flex items-center justify-between mb-1">
<span class="text-xs font-medium text-slate-500">{{ $t('workbenches.createHost') }}</span> <span class="text-xs font-medium text-slate-500">{{ $t('workbenches.createHost') }}</span>
<span class="material-icons-round text-secondary/40 text-lg">person_add</span> <span class="material-icons-round text-secondary/40 text-lg">person_add</span>
</div> </div>
<div class="text-xl font-bold text-slate-900 dark:text-white">{{ hostData.validAnchorsCount }}</div> <div class="text-xl font-bold text-slate-900">{{ hostData.validAnchorsCount }}</div>
</div> </div>
<!-- 查询 (较小) --> <!-- 查询 (较小) -->
<div <div class="lg:col-span-2 bg-white p-4 rounded-xl shadow-sm border border-slate-100">
class="lg:col-span-2 bg-white dark:bg-slate-900 p-4 rounded-xl shadow-sm border border-slate-100 dark:border-slate-800">
<div class="flex items-center justify-between mb-1"> <div class="flex items-center justify-between mb-1">
<span class="text-xs font-medium text-slate-500">{{ $t('workbenches.query') }}</span> <span class="text-xs font-medium text-slate-500">{{ $t('workbenches.query') }}</span>
<span class="material-icons-round text-amber-400/60 text-lg">search</span> <span class="material-icons-round text-amber-400/60 text-lg">search</span>
</div> </div>
<div class="text-xl font-bold text-slate-900 dark:text-white">{{ hostData.checkedDataCount }}</div> <div class="text-xl font-bold text-slate-900">{{ hostData.checkedDataCount }}</div>
</div> </div>
<!-- 邀请 (较大突出显示) --> <!-- 邀请 (较大突出显示) -->
@@ -48,7 +45,7 @@
<!-- 运行时间 (较大) --> <!-- 运行时间 (较大) -->
<div <div
class="lg:col-span-3 bg-white dark:bg-slate-900 p-5 rounded-xl shadow-sm border border-slate-100 dark:border-slate-800 flex flex-col justify-center"> class="lg:col-span-3 bg-white p-5 rounded-xl shadow-sm border border-slate-100 flex flex-col justify-center">
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<div> <div>
<span class="text-xs font-semibold text-slate-400 uppercase tracking-wider block mb-1">{{ <span class="text-xs font-semibold text-slate-400 uppercase tracking-wider block mb-1">{{
@@ -68,13 +65,12 @@
<!-- Guild Accounts --> <!-- Guild Accounts -->
<div class="grid grid-cols-1 md:grid-cols-2 gap-4 mb-4"> <div class="grid grid-cols-1 md:grid-cols-2 gap-4 mb-4">
<div v-for="(item, index) in 2" :key="index" <div v-for="(item, index) in 2" :key="index" class="bg-white border border-slate-100 p-5 rounded-xl shadow-sm">
class="bg-white border border-slate-100 p-5 rounded-xl shadow-sm">
<div class="flex justify-between items-center mb-6"> <div class="flex justify-between items-center mb-6">
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<span class="w-4 h-4 rounded-full" <span class="w-4 h-4 rounded-full"
:class="tkData[index].code == 1 ? 'bg-emerald-500' : 'bg-red-500'"></span> :class="tkData[index].code == 1 ? 'bg-emerald-500' : 'bg-red-500'"></span>
<h3 class="font-bold text-slate-800 dark:text-white">{{ $t('workbenches.guildAccount') }} {{ index === 0 <h3 class="font-bold text-slate-800">{{ $t('workbenches.guildAccount') }} {{ index === 0
? 'A' ? 'A'
: 'B' }}</h3> : 'B' }}</h3>
</div> </div>
@@ -97,7 +93,7 @@
</div> </div>
</div> </div>
<button @click="loginTK(index)" :disabled="!(tkData[index].code == 0 && !isLogin[index])" <button @click="loginTK(index)" :disabled="!(tkData[index].code == 0 && !isLogin[index])"
class="w-full bg-slate-900 dark:bg-slate-700 hover:bg-black text-white py-2.5 rounded-lg font-medium transition-all disabled:opacity-50 disabled:cursor-not-allowed"> class="w-full bg-slate-900 hover:bg-black text-white py-2.5 rounded-lg font-medium transition-all disabled:opacity-50 disabled:cursor-not-allowed">
{{ $t('workbenches.loginBackend') }} {{ $t('workbenches.loginBackend') }}
</button> </button>
</div> </div>
@@ -105,34 +101,34 @@
</div> </div>
<!-- Configuration Panel --> <!-- Configuration Panel -->
<div <div class="bg-white rounded-2xl shadow-sm border border-slate-100 overflow-hidden">
class="bg-white dark:bg-slate-900 rounded-2xl shadow-sm border border-slate-100 dark:border-slate-800 overflow-hidden"> <div class="p-6 border-b border-slate-100 flex justify-between items-center">
<div class="p-6 border-b border-slate-100 dark:border-slate-800 flex justify-between items-center">
<div class="flex items-center gap-3"> <div class="flex items-center gap-3">
<div class="w-8 h-8 bg-slate-100 dark:bg-slate-800 rounded-lg flex items-center justify-center"> <div class="w-8 h-8 bg-slate-100 rounded-lg flex items-center justify-center">
<span class="material-icons-round text-slate-600 dark:text-slate-400 text-lg">settings</span> <span class="material-icons-round text-slate-600 text-lg">settings</span>
</div> </div>
<h2 class="font-bold text-slate-800 dark:text-white">{{ $t('workbenchesSetup.workbenches') }}</h2> <h2 class="font-bold text-slate-800">{{ $t('workbenchesSetup.workbenches') }}</h2>
</div> </div>
<div class="flex items-center gap-4 text-sm"> <div class="flex items-center gap-4 text-sm">
<div class="flex items-center gap-2 text-slate-500"> <div class="flex items-center gap-2 text-slate-500">
<span>{{ $t('workbenchesSetup.network') }}:</span> <span>{{ $t('workbenchesSetup.network') }}:</span>
<span class="text-blue-600 font-bold">{{ locale == 'zh' ? countryData : countryDataEN }}</span> <span class="text-blue-600 font-bold">{{ locale == 'zh' ? countryData : countryDataEN }}</span>
<button @click="editCountry" :disabled="isRefreshingCountry" <button @click="editCountry" :disabled="isRefreshingCountry"
class="ml-1 p-1 rounded-md hover:bg-slate-100 dark:hover:bg-slate-800 transition-colors disabled:opacity-50 disabled:cursor-not-allowed" class="ml-1 p-1 rounded-md hover:bg-slate-100 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"
:title="$t('workbenchesSetup.editCountry') || '编辑国家'"> :title="$t('workbenchesSetup.editCountry') || '编辑国家'">
<span class="material-icons-round text-slate-500 text-base">edit</span> <span class="material-icons-round text-slate-500 text-base">edit</span>
</button> </button>
<button @click="refreshCountryFn" :disabled="isRefreshingCountry" <button @click="refreshCountryFn" :disabled="isRefreshingCountry"
class="p-1 rounded-md hover:bg-slate-100 dark:hover:bg-slate-800 transition-colors disabled:opacity-50 disabled:cursor-not-allowed" class="p-1 rounded-md hover:bg-slate-100 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"
:title="$t('workbenchesSetup.refreshCountry') || '刷新国家'"> :title="$t('workbenchesSetup.refreshCountry') || '刷新国家'">
<span class="material-icons-round text-slate-500 text-base" :class="{ 'animate-spin': isRefreshingCountry }">refresh</span> <span class="material-icons-round text-slate-500 text-base"
:class="{ 'animate-spin': isRefreshingCountry }">refresh</span>
</button> </button>
</div> </div>
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<span class="text-slate-500">指定国家:</span> <span class="text-slate-500">指定国家:</span>
<select v-model="country_info" <select v-model="country_info"
class="bg-slate-50 dark:bg-slate-800 border-none rounded-lg text-xs font-medium focus:ring-0"> class="bg-slate-50 border-none rounded-lg text-xs font-medium focus:ring-0">
<option value="全部">全部</option> <option value="全部">全部</option>
<option v-for="(item, index) in country_Lst" :key="index" :value="item">{{ item }}</option> <option v-for="(item, index) in country_Lst" :key="index" :value="item">{{ item }}</option>
</select> </select>
@@ -143,25 +139,25 @@
<div class="grid grid-cols-1 lg:grid-cols-4 gap-6 mb-6"> <div class="grid grid-cols-1 lg:grid-cols-4 gap-6 mb-6">
<!-- Coins --> <!-- Coins -->
<div> <div>
<h4 class="text-sm font-bold text-slate-800 dark:text-white mb-4 flex items-center gap-2"> <h4 class="text-sm font-bold text-slate-800 mb-4 flex items-center gap-2">
<span class="w-1 h-4 bg-blue-600 rounded-full"></span> <span class="w-1 h-4 bg-blue-600 rounded-full"></span>
{{ $t('workbenchesSetup.setCoinsNum') }} {{ $t('workbenchesSetup.setCoinsNum') }}
</h4> </h4>
<div class="space-y-3"> <div class="space-y-3">
<div class="flex shadow-sm rounded-lg overflow-hidden border border-slate-200 dark:border-slate-700"> <div class="flex shadow-sm rounded-lg overflow-hidden border border-slate-200">
<span <span
class="bg-slate-50 dark:bg-slate-800 px-3 py-2 text-xs font-medium text-slate-500 w-28 flex items-center border-r border-slate-200 dark:border-slate-700">{{ class="bg-slate-50 px-3 py-2 text-xs font-medium text-slate-500 w-28 flex items-center border-r border-slate-200">{{
$t('workbenchesSetup.minCoinsNum') }}</span> $t('workbenchesSetup.minCoinsNum') }}</span>
<input <input
class="flex-1 px-4 py-2 text-sm bg-white dark:bg-slate-900 border-none outline-none focus:ring-0 disabled:bg-slate-100" class="flex-1 px-4 py-2 text-sm bg-white border-none outline-none focus:ring-0 disabled:bg-slate-100"
type="number" v-model="pyData.gold.min" :disabled="!pyData.isStart" /> type="number" v-model="pyData.gold.min" :disabled="!pyData.isStart" />
</div> </div>
<div class="flex shadow-sm rounded-lg overflow-hidden border border-slate-200 dark:border-slate-700"> <div class="flex shadow-sm rounded-lg overflow-hidden border border-slate-200">
<span <span
class="bg-slate-50 dark:bg-slate-800 px-3 py-2 text-xs font-medium text-slate-500 w-28 flex items-center border-r border-slate-200 dark:border-slate-700">{{ class="bg-slate-50 px-3 py-2 text-xs font-medium text-slate-500 w-28 flex items-center border-r border-slate-200">{{
$t('workbenchesSetup.maxCoinsNum') }}</span> $t('workbenchesSetup.maxCoinsNum') }}</span>
<input <input
class="flex-1 px-4 py-2 text-sm bg-white dark:bg-slate-900 border-none outline-none focus:ring-0 disabled:bg-slate-100" class="flex-1 px-4 py-2 text-sm bg-white border-none outline-none focus:ring-0 disabled:bg-slate-100"
type="number" v-model="pyData.gold.max" :disabled="!pyData.isStart" /> type="number" v-model="pyData.gold.max" :disabled="!pyData.isStart" />
</div> </div>
</div> </div>
@@ -169,25 +165,25 @@
<!-- Fans --> <!-- Fans -->
<div> <div>
<h4 class="text-sm font-bold text-slate-800 dark:text-white mb-4 flex items-center gap-2"> <h4 class="text-sm font-bold text-slate-800 mb-4 flex items-center gap-2">
<span class="w-1 h-4 bg-secondary rounded-full"></span> <span class="w-1 h-4 bg-secondary rounded-full"></span>
{{ $t('workbenchesSetup.setFansNum') }} {{ $t('workbenchesSetup.setFansNum') }}
</h4> </h4>
<div class="space-y-3"> <div class="space-y-3">
<div class="flex shadow-sm rounded-lg overflow-hidden border border-slate-200 dark:border-slate-700"> <div class="flex shadow-sm rounded-lg overflow-hidden border border-slate-200">
<span <span
class="bg-slate-50 dark:bg-slate-800 px-3 py-2 text-xs font-medium text-slate-500 w-28 flex items-center border-r border-slate-200 dark:border-slate-700">{{ class="bg-slate-50 px-3 py-2 text-xs font-medium text-slate-500 w-28 flex items-center border-r border-slate-200">{{
$t('workbenchesSetup.minFansNum') }}</span> $t('workbenchesSetup.minFansNum') }}</span>
<input <input
class="flex-1 px-4 py-2 text-sm bg-white dark:bg-slate-900 border-none outline-none focus:ring-0 disabled:bg-slate-100" class="flex-1 px-4 py-2 text-sm bg-white border-none outline-none focus:ring-0 disabled:bg-slate-100"
type="number" v-model="pyData.fans.min" :disabled="!pyData.isStart" /> type="number" v-model="pyData.fans.min" :disabled="!pyData.isStart" />
</div> </div>
<div class="flex shadow-sm rounded-lg overflow-hidden border border-slate-200 dark:border-slate-700"> <div class="flex shadow-sm rounded-lg overflow-hidden border border-slate-200">
<span <span
class="bg-slate-50 dark:bg-slate-800 px-3 py-2 text-xs font-medium text-slate-500 w-28 flex items-center border-r border-slate-200 dark:border-slate-700">{{ class="bg-slate-50 px-3 py-2 text-xs font-medium text-slate-500 w-28 flex items-center border-r border-slate-200">{{
$t('workbenchesSetup.maxFansNum') }}</span> $t('workbenchesSetup.maxFansNum') }}</span>
<input <input
class="flex-1 px-4 py-2 text-sm bg-white dark:bg-slate-900 border-none outline-none focus:ring-0 disabled:bg-slate-100" class="flex-1 px-4 py-2 text-sm bg-white border-none outline-none focus:ring-0 disabled:bg-slate-100"
type="number" v-model="pyData.fans.max" :disabled="!pyData.isStart" /> type="number" v-model="pyData.fans.max" :disabled="!pyData.isStart" />
</div> </div>
</div> </div>
@@ -195,25 +191,25 @@
<!-- Frequency --> <!-- Frequency -->
<div> <div>
<h4 class="text-sm font-bold text-slate-800 dark:text-white mb-4 flex items-center gap-2"> <h4 class="text-sm font-bold text-slate-800 mb-4 flex items-center gap-2">
<span class="w-1 h-4 bg-emerald-500 rounded-full"></span> <span class="w-1 h-4 bg-emerald-500 rounded-full"></span>
{{ $t('workbenchesSetup.setQuery') }} {{ $t('workbenchesSetup.setQuery') }}
</h4> </h4>
<div class="space-y-3"> <div class="space-y-3">
<div class="flex shadow-sm rounded-lg overflow-hidden border border-slate-200 dark:border-slate-700"> <div class="flex shadow-sm rounded-lg overflow-hidden border border-slate-200">
<input <input
class="flex-1 px-4 py-2 text-sm bg-white dark:bg-slate-900 border-none outline-none focus:ring-0 disabled:bg-slate-100" class="flex-1 px-4 py-2 text-sm bg-white border-none outline-none focus:ring-0 disabled:bg-slate-100"
type="number" v-model="pyData.frequency.hour" :disabled="!pyData.isStart" /> type="number" v-model="pyData.frequency.hour" :disabled="!pyData.isStart" />
<span <span
class="bg-slate-100 dark:bg-slate-800 px-3 py-2 text-xs font-medium text-slate-500 w-24 flex items-center justify-center border-l border-slate-200 dark:border-slate-700">{{ class="bg-slate-100 px-3 py-2 text-xs font-medium text-slate-500 w-24 flex items-center justify-center border-l border-slate-200">{{
$t('workbenchesSetup.hour') }}</span> $t('workbenchesSetup.hour') }}</span>
</div> </div>
<div class="flex shadow-sm rounded-lg overflow-hidden border border-slate-200 dark:border-slate-700"> <div class="flex shadow-sm rounded-lg overflow-hidden border border-slate-200">
<input <input
class="flex-1 px-4 py-2 text-sm bg-white dark:bg-slate-900 border-none outline-none focus:ring-0 disabled:bg-slate-100" class="flex-1 px-4 py-2 text-sm bg-white border-none outline-none focus:ring-0 disabled:bg-slate-100"
type="number" v-model="pyData.frequency.day" :disabled="!pyData.isStart" /> type="number" v-model="pyData.frequency.day" :disabled="!pyData.isStart" />
<span <span
class="bg-slate-100 dark:bg-slate-800 px-3 py-2 text-xs font-medium text-slate-500 w-24 flex items-center justify-center border-l border-slate-200 dark:border-slate-700">{{ class="bg-slate-100 px-3 py-2 text-xs font-medium text-slate-500 w-24 flex items-center justify-center border-l border-slate-200">{{
$t('workbenchesSetup.hour24') }}</span> $t('workbenchesSetup.hour24') }}</span>
</div> </div>
</div> </div>
@@ -221,7 +217,7 @@
<!-- Quantity Limit --> <!-- Quantity Limit -->
<div> <div>
<h4 class="text-sm font-bold text-slate-800 dark:text-white mb-4 flex items-center gap-2"> <h4 class="text-sm font-bold text-slate-800 mb-4 flex items-center gap-2">
<span class="w-1 h-4 bg-orange-400 rounded-full"></span> <span class="w-1 h-4 bg-orange-400 rounded-full"></span>
{{ $t('workbenchesSetup.setNum') }} {{ $t('workbenchesSetup.setNum') }}
<span class="text-[10px] text-slate-400 font-normal ml-1">({{ $t('workbenchesSetup.prompt') }})</span> <span class="text-[10px] text-slate-400 font-normal ml-1">({{ $t('workbenchesSetup.prompt') }})</span>
@@ -242,10 +238,10 @@
<div v-if="isLimit" <div v-if="isLimit"
class="flex shadow-sm rounded-lg overflow-hidden border border-slate-200 dark:border-slate-700"> class="flex shadow-sm rounded-lg overflow-hidden border border-slate-200 dark:border-slate-700">
<input <input
class="flex-1 px-4 py-2 text-sm bg-white dark:bg-slate-900 border-none outline-none focus:ring-0 disabled:bg-slate-100" class="flex-1 px-4 py-2 text-sm bg-white border-none outline-none focus:ring-0 disabled:bg-slate-100"
type="number" v-model="hostNum" :disabled="!pyData.isStart" /> type="number" v-model="hostNum" :disabled="!pyData.isStart" />
<span <span
class="bg-slate-100 dark:bg-slate-800 px-3 py-2 text-xs font-medium text-slate-500 w-16 flex items-center justify-center border-l border-slate-200 dark:border-slate-700">{{ class="bg-slate-100 px-3 py-2 text-xs font-medium text-slate-500 w-16 flex items-center justify-center border-l border-slate-200">{{
$t('workbenchesSetup.num') }}</span> $t('workbenchesSetup.num') }}</span>
</div> </div>
</div> </div>
@@ -253,39 +249,35 @@
</div> </div>
<div <div class="flex flex-col lg:flex-row items-center justify-between gap-6 pt-4 border-t border-slate-100">
class="flex flex-col lg:flex-row items-center justify-between gap-6 pt-4 border-t border-slate-100 dark:border-slate-800">
<div class="flex items-center gap-6"> <div class="flex items-center gap-6">
<div class="flex items-center gap-2 cursor-pointer group" @click="toggleFilter('filterGame')"> <div class="flex items-center gap-2 cursor-pointer group" @click="toggleFilter('filterGame')">
<span class="w-4 h-4 rounded border-2 flex items-center justify-center transition-all" <span class="w-4 h-4 rounded border-2 flex items-center justify-center transition-all"
:class="pyData.filterGame ? 'bg-blue-600 border-blue-600' : 'bg-white border-slate-300'"> :class="pyData.filterGame ? 'bg-blue-600 border-blue-600' : 'bg-white border-slate-300'">
<span v-if="pyData.filterGame" class="material-icons-round text-white text-xs">check</span> <span v-if="pyData.filterGame" class="material-icons-round text-white text-xs">check</span>
</span> </span>
<span <span class="text-sm text-slate-600 group-hover:text-blue-600 transition-colors">过滤游戏主播</span>
class="text-sm text-slate-600 dark:text-slate-400 group-hover:text-blue-600 transition-colors">过滤游戏主播</span>
</div> </div>
<div class="flex items-center gap-2 cursor-pointer group" @click="toggleFilter('filterSelling')"> <div class="flex items-center gap-2 cursor-pointer group" @click="toggleFilter('filterSelling')">
<span class="w-4 h-4 rounded border-2 flex items-center justify-center transition-all" <span class="w-4 h-4 rounded border-2 flex items-center justify-center transition-all"
:class="pyData.filterSelling ? 'bg-blue-600 border-blue-600' : 'bg-white border-slate-300'"> :class="pyData.filterSelling ? 'bg-blue-600 border-blue-600' : 'bg-white border-slate-300'">
<span v-if="pyData.filterSelling" class="material-icons-round text-white text-xs">check</span> <span v-if="pyData.filterSelling" class="material-icons-round text-white text-xs">check</span>
</span> </span>
<span <span class="text-sm text-slate-600 group-hover:text-blue-600 transition-colors">过滤带货主播</span>
class="text-sm text-slate-600 dark:text-slate-400 group-hover:text-blue-600 transition-colors">过滤带货主播</span>
</div> </div>
<div class="flex items-center gap-2 cursor-pointer group" @click="toggleFilter('rankingList')"> <div class="flex items-center gap-2 cursor-pointer group" @click="toggleFilter('rankingList')">
<span class="w-4 h-4 rounded border-2 flex items-center justify-center transition-all" <span class="w-4 h-4 rounded border-2 flex items-center justify-center transition-all"
:class="pyData.rankingList ? 'bg-blue-600 border-blue-600' : 'bg-white border-slate-300'"> :class="pyData.rankingList ? 'bg-blue-600 border-blue-600' : 'bg-white border-slate-300'">
<span v-if="pyData.rankingList" class="material-icons-round text-white text-xs">check</span> <span v-if="pyData.rankingList" class="material-icons-round text-white text-xs">check</span>
</span> </span>
<span <span class="text-sm text-slate-600 group-hover:text-blue-600 transition-colors">过滤排行榜单</span>
class="text-sm text-slate-600 dark:text-slate-400 group-hover:text-blue-600 transition-colors">过滤排行榜单</span>
</div> </div>
</div> </div>
</div> </div>
<div class="mt-6 text-center"> <div class="mt-6 text-center">
<button v-if="pyData.isStart" @click="submit" <button v-if="pyData.isStart" @click="submit"
class="bg-slate-900 dark:bg-blue-600 hover:scale-[1.02] active:scale-[0.98] text-white px-10 py-3 rounded-xl font-bold text-lg shadow-xl shadow-slate-900/10 dark:shadow-blue-600/20 transition-all flex items-center gap-2 mx-auto"> class="bg-slate-900 hover:scale-[1.02] active:scale-[0.98] text-white px-10 py-3 rounded-xl font-bold text-lg shadow-xl shadow-slate-900/10 transition-all flex items-center gap-2 mx-auto">
<span class="material-icons-round">bolt</span> <span class="material-icons-round">bolt</span>
{{ $t('workbenchesSetup.start') }} {{ $t('workbenchesSetup.start') }}
</button> </button>
@@ -294,7 +286,7 @@
<span class="material-icons-round">stop</span> <span class="material-icons-round">stop</span>
{{ $t('workbenchesSetup.stop') }} {{ $t('workbenchesSetup.stop') }}
</button> </button>
<p class="mt-4 text-xs font-medium text-emerald-600 dark:text-emerald-400"> <p class="mt-4 text-xs font-medium text-emerald-600">
到期时间: {{ timestampToTime(expiredTime) }} 到期时间: {{ timestampToTime(expiredTime) }}
</p> </p>
</div> </div>