sync(theme-4): 同步 main 最新 API/Admin 与玩家端逻辑

从 main 同步站内信手动发送、媒体库选择、列表子路由重构等 API/Admin 改动;玩家端仅合并 ADMIN_CUSTOM 富文本、消息预览与充值截图压缩逻辑,保留 theme-4 样式。
This commit is contained in:
2026-06-22 14:12:40 +08:00
parent 5fbb1fd1f6
commit cffad00652
50 changed files with 4654 additions and 1186 deletions

View File

@@ -5,6 +5,7 @@ import { useI18n } from 'vue-i18n';
import { formatLocalMatchDateTime } from '@thebet365/shared';
import GoldSpinner from '../components/GoldSpinner.vue';
import ConfirmDialog from '../components/ConfirmDialog.vue';
import { sanitizeAnnouncementHtml } from '../utils/html';
import { formatMoney } from '../utils/localeDisplay';
import {
usePlayerMessages,
@@ -174,7 +175,12 @@ watch(messageId, () => {
</span>
<p v-if="message.createdAt" class="detail-date">{{ formatDate(message.createdAt) }}</p>
<h2 class="detail-title">{{ messageTitle(message) }}</h2>
<p class="detail-body">{{ messageBody(message) }}</p>
<div
v-if="message.type === 'ADMIN_CUSTOM'"
class="detail-body rich-body"
v-html="sanitizeAnnouncementHtml(message.body)"
/>
<p v-else class="detail-body">{{ messageBody(message) }}</p>
<div
v-if="message.type === 'DEPOSIT_REJECTED' && depositPayload?.rejectReason?.trim()"
@@ -323,6 +329,33 @@ watch(messageId, () => {
color: #d0d0d0;
}
.rich-body :deep(p) {
margin: 0 0 12px;
}
.rich-body :deep(p:last-child) {
margin-bottom: 0;
}
.rich-body :deep(img) {
display: block;
max-width: 100%;
height: auto;
margin: 12px 0;
border-radius: 8px;
}
.rich-body :deep(ul),
.rich-body :deep(ol) {
margin: 0 0 12px;
padding-left: 20px;
}
.rich-body :deep(a) {
color: var(--primary-light);
text-decoration: underline;
}
.reason-box {
margin-top: 18px;
padding: 14px;