fix: 后台图标页展示点单端服务图标与关注快手

按俱乐部独立配置;补「点单端我的」分区,打手区增加关注快手入口。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-21 04:06:34 +08:00
parent 7c51b1f38b
commit 87121ffebc

View File

@@ -9,11 +9,33 @@
<ClubScopeHint />
<h2>小程序图标与频道</h2>
<p class="hint">
图标固定文件名存于 COS<code>beijing/tubiao/chengxutubiao/</code>
频道图片存于 <code>beijing/pindao/</code>
推广海报背景存于 <code>beijing/haibao/</code>各俱乐部独立配置
图标<strong>当前顶部所选俱乐部</strong>独立配置 club_miniapp_icon
请先切到具体俱乐部再上传集团汇总模式下不可改
文件存于 COS<code>beijing/tubiao/chengxutubiao/</code>
频道 <code>beijing/pindao/</code>海报背景 <code>beijing/haibao/</code>
</p>
<el-card class="section-card" shadow="never">
<template #header><strong>点单端我的服务图标</strong></template>
<p class="hint">在线客服邀请好友我推荐的人须分开配置避免共用同一张图</p>
<div class="icon-grid">
<div v-for="item in cuserMineIcons" :key="item.icon_key" class="icon-cell">
<div class="icon-label">{{ item.label }}</div>
<div class="icon-key">{{ item.icon_key }}</div>
<el-image :src="fullUrl(item.image_path)" fit="contain" class="icon-preview" />
<el-upload
action="#"
:auto-upload="false"
:show-file-list="false"
:on-change="(f) => uploadIcon(f, item.icon_key)"
accept="image/jpeg,image/png,image/jpg,image/webp"
>
<el-button size="small" type="primary" :loading="uploadingKey === item.icon_key">更换</el-button>
</el-upload>
</div>
</div>
</el-card>
<el-card class="section-card" shadow="never">
<template #header><strong>推广海报背景(按俱乐部)</strong></template>
<p class="hint">管事 / 组长 / 点单端推荐官海报合成底图,按当前俱乐部独立配置;点单端请单独上传,勿与管事共用。</p>
@@ -207,15 +229,22 @@ const REQUIRED_PERMISSION = '8080a'
const hasPermission = ref(true)
const icons = ref([])
const POSTER_KEYS = new Set(['guanshi_poster_bg', 'zuzhang_poster_bg', 'cuser_poster_bg'])
const CUSER_MINE_KEYS = new Set([
'cuser_mine_kefu',
'cuser_mine_invite',
'cuser_mine_invitees',
])
const COMMON_KEYS = new Set(['mine_pindao', 'icon_refresh'])
const FIGHTER_BANNER_KEYS = new Set(['fighter_recharge_member', 'fighter_recharge_deposit'])
const FIGHTER_MINE_PAGE_KEYS = new Set([
'fighter_order_pending', 'fighter_order_settling', 'fighter_order_done', 'fighter_order_closed',
'fighter_trade_commission', 'fighter_trade_withdraw', 'fighter_trade_settle', 'fighter_trade_deduct', 'fighter_trade_recharge',
'fighter_invite_subordinate', 'fighter_invite_poster', 'fighter_invite_code',
'fighter_kuaishou_cash', 'fighter_mine_copy', 'fighter_mine_edit', 'fighter_mine_qiepian', 'fighter_mine_penalty_tip',
'fighter_kuaishou_cash', 'fighter_follow_kuaishou',
'fighter_mine_copy', 'fighter_mine_edit', 'fighter_mine_qiepian', 'fighter_mine_penalty_tip',
])
const posterIcons = computed(() => icons.value.filter((i) => POSTER_KEYS.has(i.icon_key)))
const cuserMineIcons = computed(() => icons.value.filter((i) => CUSER_MINE_KEYS.has(i.icon_key)))
const merchantIcons = computed(() => icons.value.filter((i) => i.icon_key.startsWith('merchant_')))
const fighterBannerIcons = computed(() => icons.value.filter((i) => FIGHTER_BANNER_KEYS.has(i.icon_key)))
const fighterMinePageIcons = computed(() => icons.value.filter((i) => FIGHTER_MINE_PAGE_KEYS.has(i.icon_key)))