1005 lines
32 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="bd-center gradient-background-circles">
<!-- 顶部导航 -->
<GeneralHeader
:isHomePage="true"
:showLanguageList="true"
:title="t('bd_leader_center')"
color="black"
style="box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); z-index: 999"
/>
<!-- 主要内容 -->
<div
style="
padding: 16px;
position: relative;
z-index: 2;
display: flex;
flex-direction: column;
gap: 12px;
"
>
<!-- 用户信息卡片 -->
<div
style="
background-color: white;
padding: 16px;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
"
>
<!-- APP连接状态指示 -->
<div v-if="isInApp() && !appConnected" class="app-status connecting">
<div class="status-indicator"></div>
<span>{{ t('loading') }}...</span>
</div>
<!-- 用户信息 -->
<div style="display: flex; align-items: center; gap: 4px">
<div
style="
width: 40px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
"
>
<img
:src="userInfo.userAvatar || ''"
style="
display: block;
width: 100%;
aspect-ratio: 1/1;
object-fit: cover;
border-radius: 50%;
"
@error="defaultAvatarUrl"
/>
</div>
<div style="flex: 1; min-width: 0">
<h3
style="
margin: 0 0 4px 0;
font-weight: 600;
color: #333;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
"
>
{{ userInfo.userNickname || userInfo.name }}
</h3>
<p style="margin: 0; font-size: 0.9em; color: #666">
ID: {{ userInfo.id || userInfo.account }}
</p>
</div>
<div style="display: flex; align-items: center" @click="gotoPolicy">
<img src="../../assets/icon/info.png" alt="" style="display: block; width: 20px" />
</div>
</div>
<div
style="
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 10px;
"
@click="gotoIncome"
>
<span style="font-weight: 600; color: #1f2937">
{{ t('available_salaries') }} ${{ salaryInfo?.availableBalance || 0 }}
</span>
<img
src="../../assets/icon/arrow.png"
alt=""
style="display: block; width: 20px"
class="flipImg"
/>
</div>
</div>
<!-- 邀请按钮 -->
<div style="display: flex; flex-direction: column; gap: 8px">
<!-- 邀请成为Agency -->
<div
style="
background-color: white;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
padding: 16px;
cursor: pointer;
transition: all 0.2s;
border: 1px solid #e5e7eb;
"
@click="goToInviteAgency"
>
<div style="display: flex; justify-content: space-between; align-items: center">
<span style="font-weight: 600; color: #1f2937"> {{ t('invite_become_agent') }}</span>
<img
src="../../assets/icon/arrow.png"
alt=""
style="display: block; width: 20px"
class="flipImg"
/>
</div>
</div>
<!-- 邀请成为BD -->
<div
style="
background-color: white;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
padding: 16px;
cursor: pointer;
transition: all 0.2s;
border: 1px solid #e5e7eb;
"
@click="goToInviteBD"
>
<div style="display: flex; justify-content: space-between; align-items: center">
<span style="font-weight: 600; color: #1f2937">
{{ t('invite_user_to_become_bd') }}</span
>
<img
src="../../assets/icon/arrow.png"
alt=""
style="display: block; width: 20px"
class="flipImg"
/>
</div>
</div>
</div>
<!-- 标签页 -->
<div
style="
background-color: white;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
padding: 16px;
"
>
<!-- 标签按钮 -->
<div style="display: flex; position: relative; margin-bottom: 16px">
<button
v-for="tab in tabs"
:key="tab.id"
@click="switchTab(tab.id)"
:style="{
flex: 1,
padding: '8px 16px',
background: 'transparent',
border: 'none',
fontWeight: '600',
fontSize: '14px',
color: activeTab === tab.id ? '#8B5CF6' : 'rgba(0, 0, 0, 0.6)',
cursor: 'pointer',
transition: 'all 0.3s',
position: 'relative',
}"
>
{{ t(tab.langKey) }}
</button>
</div>
<!-- BD 标签内容 -->
<div v-if="activeTab === 1">
<div style="display: flex; justify-content: space-between; align-items: center">
<div style="font-weight: 600">{{ BDData.billTitle }}</div>
<img
src="../../assets/icon/records.png"
alt=""
style="display: block; width: 1.3em"
@click="records('bd')"
/>
</div>
<div
style="
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 12px;
"
>
<div style="font-size: 0.8em; font-weight: 600">
{{ t('team_recharge') }}: ${{ BDData.totalRecharge || 0 }}
</div>
<div style="font-size: 0.8em; font-weight: 600">
{{ t('total_team_salary') }}: ${{ BDData.totalSalary || 0 }}
</div>
</div>
<!-- 成员列表 -->
<div style="display: flex; flex-direction: column; gap: 12px">
<div
v-for="BDInfo in BDData.memberBillList"
style="
background-color: white;
padding: 16px;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
display: flex;
align-items: center;
justify-content: space-between;
"
>
<!-- 用户信息 -->
<div
style="
position: relative;
width: 2em;
display: flex;
align-items: center;
justify-content: center;
"
>
<img
:src="BDInfo.agentAvatar || ''"
alt=""
style="
display: block;
width: 100%;
aspect-ratio: 1/1;
border-radius: 50%;
object-fit: cover;
"
@error="defaultAvatarUrl"
/>
</div>
<div style="width: calc(60% - 62px); display: flex; flex-direction: column; gap: 4px">
<div
style="
font-weight: 700;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
"
>
{{ BDInfo.agentName }}
</div>
<div style="color: rgba(0, 0, 0, 0.4); font-size: 0.8em; font-weight: 500">
ID: {{ BDInfo.agentAccount }}
</div>
</div>
<div
style="
width: 40%;
display: flex;
flex-direction: column;
justify-content: space-around;
"
>
<div style="font-size: 0.8em; font-weight: 500">
{{ t('salary') }}: ${{ BDInfo.teamSalaryAmount }}
</div>
<div style="font-size: 0.8em; font-weight: 500">
{{ t('recharge') }}: ${{ BDInfo.teamRechargeAmount }}
</div>
<div style="font-size: 0.8em; font-weight: 500">
{{ t('host') }}:{{ BDInfo.teamMemberCount }}
</div>
</div>
</div>
</div>
</div>
<!-- BD Leader 标签内容 -->
<div v-if="activeTab === 2 && BDLeaderData.billTitle">
<div style="display: flex; justify-content: space-between; align-items: center">
<div style="font-weight: 600">{{ BDLeaderData.billTitle }}</div>
<img
src="../../assets/icon/records.png"
alt=""
style="display: block; width: 1.3em"
@click="records('bdLeader')"
/>
</div>
<div
style="
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 8px;
"
>
<div style="font-size: 0.8em; font-weight: 600">
{{ t('team_recharge') }}: ${{ BDLeaderData.totalRecharge }}
</div>
<div style="font-size: 0.8em; font-weight: 600">
{{ t('total_team_salary') }}: ${{ BDLeaderData.totalSalary }}
</div>
</div>
<!-- 团队成员列表 -->
<div style="display: flex; flex-direction: column; gap: 12px">
<div
v-for="BDInfo in BDLeaderData.memberBillList"
style="
background-color: white;
padding: 16px;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
display: flex;
align-items: center;
justify-content: space-between;
"
>
<!-- 用户信息 -->
<div
style="
position: relative;
width: 2em;
display: flex;
align-items: center;
justify-content: center;
"
>
<img
:src="BDInfo.agentAvatar || ''"
alt=""
style="
display: block;
width: 100%;
aspect-ratio: 1/1;
border-radius: 50%;
object-fit: cover;
"
@error="defaultAvatarUrl"
/>
</div>
<div style="width: calc(60% - 62px); display: flex; flex-direction: column; gap: 4px">
<div
style="
font-weight: 700;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
"
>
{{ BDInfo.agentName }}
</div>
<div style="color: rgba(0, 0, 0, 0.4); font-size: 0.8em; font-weight: 500">
ID: {{ BDInfo.agentAccount }}
</div>
</div>
<div
style="
width: 40%;
display: flex;
flex-direction: column;
justify-content: space-around;
"
>
<div style="font-size: 0.8em; font-weight: 500">
{{ t('team_salary') }}: ${{ BDInfo.teamSalaryAmount }}
</div>
<div style="font-size: 0.8em; font-weight: 500">
{{ t('agencies') }}: {{ BDInfo.teamMemberCount }}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 遮罩层 -->
<maskLayer :maskLayerShow="maskLayerShow" @click="closedPopup">
<div style="position: fixed; bottom: 0; width: 100%">
<!-- 历史收入 - 使用相同组件根据类型显示不同内容 -->
<div
v-if="showHistory"
style="
background: white;
border-radius: 16px 16px 0 0;
max-height: 80vh;
display: flex;
flex-direction: column;
gap: 10px;
padding: 20px;
"
class="overflow-y-auto"
@click.stop
>
<div style="display: flex; justify-content: center; align-items: center">
<div style="margin: 0; font-size: 18px; font-weight: 600; color: #333">
{{ currentHistoryType === 'bd' ? t('bd_salary') : t('bd_leader_history') }}
</div>
</div>
<!-- 总体信息 -->
<div
style="
box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.25);
border-radius: 8px;
padding: 12px;
margin: 0 4px;
"
>
<div>
<div style="display: grid; gap: 4px">
<div style="font-size: 0.9em; font-weight: 600">
{{ t('total_income') }}: ${{
currentHistoryType === 'bd' ? BDSalary.totalIncome : BDLeaderSalary.totalIncome
}}
</div>
<div style="font-size: 0.9em; font-weight: 600">
{{ t('previous_period_income') }}: ${{
currentHistoryType === 'bd'
? BDSalary.previousPeriodIncome
: BDLeaderSalary.previousPeriodIncome
}}
</div>
</div>
</div>
</div>
<!-- 历史薪资列表 -->
<div style="overflow-y: auto" class="salaryList">
<div style="display: flex; flex-direction: column; gap: 8px">
<!-- BD -->
<template v-if="currentHistoryType === 'bd'">
<historySalary
v-for="income in BDSalary.incomeDetails"
:type="income.statusText"
long="true"
@showMore="showReportDetail(income.billBelong)"
>
<!-- 进行中 -->
<template v-if="income.statusText == 'In Progress'" v-slot:content>
<div>{{ income.billTitle }}</div>
<div style="font-size: 0.9em">
{{ t('agency_number') }}: {{ income.agencyNumber || 0 }}
</div>
<div style="display: flex; justify-content: space-between">
<div style="font-size: 0.9em">
{{ t('team_salary') }}: ${{ income.teamSalaryAmount || 0 }}
</div>
<div style="font-size: 0.9em">
{{ t('bd_income_salary') }}: ${{ income.bdIncomeSalary || 0 }} ({{
income.bdRatioSalary || 0
}}%)
</div>
</div>
<div style="display: flex; justify-content: space-between">
<div style="font-size: 0.9em">
{{ t('team_top_up') }}: ${{ income.teamRechargeAmount }}
</div>
<div style="font-size: 0.9em">
{{ t('bd_income_top_up') }}: ${{ income.settlementSalary || 0 }} ({{
income.commissionRate || 0
}}%)
</div>
</div>
</template>
<!-- 已完成 -->
<template v-else v-slot:content>
<div>{{ income.billTitle }}</div>
<div style="font-size: 0.9em">
{{ t('agency_number') }}: {{ income.agencyNumber || 0 }}
</div>
<!-- 展示团队薪资高收入 -->
<div
v-if="income.hitPolicyType == 'TEAM_SALARY'"
style="display: flex; justify-content: space-between"
>
<!-- 团队薪资 -->
<div style="font-size: 0.9em">
{{ t('team_salary') }}: ${{ income.teamSalaryAmount || 0 }}
</div>
<!-- 薪资收益 -->
<div style="font-size: 0.9em">
{{ t('bd_income_salary') }}: ${{ income.settlementSalary || 0 }} ({{
income.commissionRate || 0
}}%)
</div>
</div>
<!-- 展示团队充值高支出 -->
<div
v-else-if="income.hitPolicyType == 'TEAM_RECHARGE'"
style="display: flex; justify-content: space-between"
>
<!-- 团队充值 -->
<div style="font-size: 0.9em">
{{ t('team_top_up') }}: ${{ income.teamRechargeAmount || 0 }}
</div>
<!-- 充值收益 -->
<div style="font-size: 0.9em">
{{ t('bd_income_top_up') }}: ${{ income.settlementSalary || 0 }} ({{
income.commissionRate || 0
}}%)
</div>
</div>
</template>
</historySalary>
</template>
<!-- BD Leader -->
<template v-else-if="currentHistoryType === 'bdLeader'">
<!-- 已完成的记录 -->
<historySalary
v-for="income in BDLeaderSalary.incomeDetails"
:type="income.statusText"
@showMore="showReportDetail(income.billBelong)"
>
<!-- 进行中 -->
<template v-if="income.statusText == 'In Progress'" v-slot:content>
<div>{{ income.billTitle }}</div>
<div style="display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px">
<div>{{ t('bd_number') }}: {{ income.bdNumber || 0 }}</div>
<!-- 团队收入 -->
<div>{{ t('team_salary') }}: ${{ income.teamSalaryAmount || 0 }}</div>
</div>
</template>
<!-- 已完成 -->
<template v-else v-slot:content>
<div>{{ income.billTitle }}</div>
<div>{{ t('num_teams') }}{{ income.bdNumber || 0 }}</div>
<!-- 团队收入 -->
<div>{{ t('team_recharge') }}: ${{ income.teamSalaryAmount || 0 }}</div>
</template>
</historySalary>
</template>
</div>
</div>
</div>
<!-- more -->
<div v-if="showMore">
<!-- BD -->
<div
v-if="currentHistoryType === 'bd'"
style="
background: white;
border-radius: 16px 16px 0 0;
max-height: 60vh;
display: flex;
flex-direction: column;
gap: 10px;
padding: 20px;
"
class="overflow-y-auto"
@click.stop
>
<div style="font-weight: 600">{{ SalaryMore.period }}</div>
<div style="font-size: 0.7em; font-weight: 600">
{{ t('team_recharge') }}: ${{ SalaryMore.teamTotalRecharge }},
{{ t('total_team_salary') }}: ${{ SalaryMore.teamTotalSalary }}
</div>
<div
v-for="member in SalaryMore.memberDetails"
style="
background-color: white;
padding: 16px;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
display: flex;
align-items: center;
justify-content: space-between;
"
>
<!-- 用户信息 -->
<div
style="
position: relative;
width: 2em;
display: flex;
align-items: center;
justify-content: center;
"
>
<img
:src="member.userAvatar || ''"
alt=""
style="
display: block;
width: 100%;
aspect-ratio: 1/1;
border-radius: 50%;
object-fit: cover;
"
@error="defaultAvatarUrl"
/>
</div>
<div style="width: calc(60% - 62px); display: flex; flex-direction: column; gap: 4px">
<div
style="
font-weight: 700;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
"
>
{{ member.userName }}
</div>
<div style="color: rgba(0, 0, 0, 0.4); font-size: 0.8em; font-weight: 500">
ID: {{ member.account }}
</div>
</div>
<div
style="
width: 40%;
display: flex;
flex-direction: column;
justify-content: space-around;
"
>
<div style="font-size: 0.8em; font-weight: 500">
{{ t('salary') }}: ${{ member.salary }}
</div>
<div style="font-size: 0.8em; font-weight: 500">
{{ t('recharge') }}: ${{ member.recharge }}
</div>
<div style="font-size: 0.8em; font-weight: 500">
{{ t('host') }}:{{ member.hostCount }}
</div>
</div>
</div>
</div>
<!-- BDleader -->
<div
v-if="currentHistoryType === 'bdLeader'"
style="
background: white;
border-radius: 16px 16px 0 0;
max-height: 60vh;
display: flex;
flex-direction: column;
gap: 10px;
padding: 20px;
"
class="overflow-y-auto"
@click.stop
>
<div style="font-weight: 600">{{ SalaryMore.period }}</div>
<div style="font-size: 0.7em; font-weight: 600">
{{ t('team_salary') }}: ${{ SalaryMore.teamSalary }}, {{ t('bd_number') }}:{{
SalaryMore.bdNumber
}}
</div>
<div
v-for="member in SalaryMore.memberDetails"
style="
background-color: white;
padding: 16px;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
display: flex;
align-items: center;
justify-content: space-between;
"
>
<!-- 用户信息 -->
<div
style="
position: relative;
width: 2em;
display: flex;
align-items: center;
justify-content: center;
"
>
<img
:src="member.bdUserAvatar || ''"
alt=""
style="
display: block;
width: 100%;
aspect-ratio: 1/1;
border-radius: 50%;
object-fit: cover;
"
@error="defaultAvatarUrl"
/>
</div>
<div style="width: calc(60% - 62px); display: flex; flex-direction: column; gap: 4px">
<div
style="
font-weight: 700;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
"
>
{{ member.bdUserName }}
</div>
<div style="color: rgba(0, 0, 0, 0.4); font-size: 0.8em; font-weight: 500">
ID: {{ member.account }}
</div>
</div>
<div
style="
width: 40%;
display: flex;
flex-direction: column;
justify-content: space-around;
"
>
<div style="font-size: 0.8em; font-weight: 500">
{{ t('salary') }}: ${{ member.salary }}
</div>
<div style="font-size: 0.8em; font-weight: 500">
{{ t('agencies') }}:{{ member.agencyCount }}
</div>
</div>
</div>
</div>
</div>
</div>
</maskLayer>
</div>
</template>
<script setup>
import { computed, onMounted, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import { setDocumentDirection } from '@/locales/i18n'
import { useRouter } from 'vue-router'
import { isInApp } from '@/utils/appBridge.js'
import { clearSelectedPayee } from '@/utils/payeeStore.js'
import { usePageInitializationWithConfig } from '@/utils/pageConfig.js'
import { useIdentityStore } from '@/stores/identity.js'
import { getBdMemberBillList, getBdHistory, getBdHistoryMore } from '@/api/bdCenter.js'
import { getBdLeaderHistory, getBdLeaderHistoryMore } from '@/api/bdLeaderCenter'
import { apiGetBankBalance } from '@/api/wallet.js'
import GeneralHeader from '@/components/GeneralHeader.vue'
import maskLayer from '@/components/MaskLayer.vue'
import historySalary from '@/components/historySalary.vue'
const { t, locale } = useI18n()
const router = useRouter()
const identityStore = useIdentityStore()
// 监听语言变化并设置文档方向
locale.value && setDocumentDirection(locale.value)
// 标签页数据
const tabs = ref([
{ id: 1, langKey: 'agency_list' },
{ id: 2, langKey: 'bd_list' },
])
const activeTab = ref(1)
const showHistory = ref(false)
const showMore = ref(false)
const currentHistoryType = ref('bd') // 'bd' 或 'bdLeader'
const BDData = ref({}) // BD成员账单列表
const BDLeaderData = ref({}) // BDLeader成员账单列表
const BDSalary = ref({}) // BD Salary
const BDLeaderSalary = ref({}) // BDLeader Salary
const salaryInfo = ref({}) //钱包信息
const SalaryMore = ref({}) // BD Salary More
// 遮罩层显示状态
const maskLayerShow = computed(() => {
return showHistory.value || showMore.value
})
const records = (historyType) => {
showHistory.value = true
currentHistoryType.value = historyType
}
// 切换标签页
const switchTab = (tabId) => {
activeTab.value = tabId
}
// 显示报告详情
const showReportDetail = async (billBelong) => {
if (currentHistoryType.value === 'bd') {
const resBdHistoryMore = await getBdHistoryMore(billBelong)
if (resBdHistoryMore.status && resBdHistoryMore.body) {
// 处理返回的数据
console.log('BD History More:', resBdHistoryMore.body)
SalaryMore.value = resBdHistoryMore.body || {}
}
} else if (currentHistoryType.value === 'bdLeader') {
const resBdLeaderHistoryMore = await getBdLeaderHistoryMore(billBelong)
if (resBdLeaderHistoryMore.status && resBdLeaderHistoryMore.body) {
// 处理返回的数据
console.log('BD History More:', resBdLeaderHistoryMore.body)
SalaryMore.value = resBdLeaderHistoryMore.body || {}
}
}
showHistory.value = false
showMore.value = true
}
// 关闭弹窗
const closedPopup = () => {
showHistory.value = false
showMore.value = false
SalaryMore.value = {}
}
// 默认头像处理
const defaultAvatarUrl = (e) => {
console.log('头像资源出错')
e.target.onerror = null //防止循环
e.target.src = new URL('/src/assets/images/WeeklyStar/defaultAvatar.png', import.meta.url).href
}
// 前往政策页
const gotoPolicy = () => {
router.push({
path: '/policy',
query: { from: 'BDLead' },
})
}
// 前往收入页面
const gotoIncome = () => {
router.push('/available-income')
}
// 前往邀请代理
const goToInviteAgency = () => {
router.push('/invite-agency')
}
// 前往邀请BD
const goToInviteBD = () => {
router.push('/invite-bd')
}
// 查询BD成员账单列表
const apiGetBdMemberBillList = async () => {
const res = await getBdMemberBillList('BD')
if (res.status && res.body) {
BDData.value = res.body || {}
}
}
// 查询BD成员账单列表
const apiGetBdLeaderMemberBillList = async () => {
const res = await getBdMemberBillList('BDLEADER')
if (res.status && res.body) {
BDLeaderData.value = res.body || {}
}
}
// 查询BD历史记录
const apiGetBdHistory = async () => {
const res = await getBdHistory()
if (res.status && res.body) {
BDSalary.value = res.body || {}
}
}
// 查询BD历史记录
const apiGetBdLeaderHistory = async () => {
const res = await getBdLeaderHistory()
if (res.status && res.body) {
BDLeaderSalary.value = res.body || {}
}
}
// 查询可用余额
const getBankBalance = async () => {
const res = await apiGetBankBalance('BD_SALARY')
if (res.status && res.body) {
salaryInfo.value = res.body || {}
}
}
const { appConnected, userInfo } = usePageInitializationWithConfig('BD_LEADER_CENTER', {
forceRefresh: true, // 强制刷新
needsTeamInfo: true,
needsBankBalance: false,
onDataLoaded: () => {},
})
// 初始化数据
const initData = () => {
apiGetBdMemberBillList() //BD成员账单
apiGetBdHistory() //BD历史记录
apiGetBdLeaderHistory() //BD Leader历史记录
apiGetBdLeaderMemberBillList() //BD Leader成员账单
getBankBalance() // 查询可用余额
}
onMounted(() => {
clearSelectedPayee()
initData() // 初始化数据
identityStore.setIdentity('BD_LEADER')
})
</script>
<style scoped>
/* 保持原有的样式不变 */
.bd-center {
max-height: 100vh;
overflow-y: auto;
font-family: -apple-system, BlinkMacSystemFont, sans-serif;
background-color: #ffffff;
background-image: url(../../assets/images/secondBg.png);
}
.bd-center::-webkit-scrollbar {
display: none;
}
.salaryList::-webkit-scrollbar {
display: none;
}
.overflow-y-auto {
overflow-y: auto;
}
.overflow-y-auto::-webkit-scrollbar {
display: none;
}
* {
color: rgba(0, 0, 0, 0.8);
font-family: 'SF Pro Text';
font-weight: 700;
}
.contentTime {
font-size: 1.1em;
}
.contentText {
font-size: 1em;
}
.moreBt {
font-size: 1em;
}
@media screen and (max-width: 360px) {
* {
font-size: 10px;
}
}
@media screen and (min-width: 360px) {
* {
font-size: 12px;
}
}
@media screen and (min-width: 768px) {
* {
font-size: 24px;
}
}
/* RTL支持 */
[dir='rtl'] .avatar {
margin-right: 0;
margin-left: 12px;
}
[dir='rtl'] .user-info {
text-align: right;
}
[dir='rtl'] .flipImg {
transform: scaleX(-1);
}
</style>