feat: 后台增加点单端海报位与只看审核开关

小程序资源页展示 cuser_poster_bg;店铺商品页增加只看审核商品开关。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-21 02:37:32 +08:00
parent 6e7e775c55
commit e6f6447c30
2 changed files with 51 additions and 8 deletions

View File

@@ -16,7 +16,7 @@
<el-card class="section-card" shadow="never">
<template #header><strong>推广海报背景按俱乐部</strong></template>
<p class="hint">管事/组长海报合成时的底图小程序进入海报页自动拉取</p>
<p class="hint">管事 / 组长 / 点单端海报合成时的底图按当前俱乐部独立配置小程序进入海报页自动拉取</p>
<div class="icon-grid">
<div v-for="item in posterIcons" :key="item.icon_key" class="icon-cell">
<div class="icon-label">{{ item.label }}</div>
@@ -206,7 +206,7 @@ const username = ref(localStorage.getItem('username') || '')
const REQUIRED_PERMISSION = '8080a'
const hasPermission = ref(true)
const icons = ref([])
const POSTER_KEYS = new Set(['guanshi_poster_bg', 'zuzhang_poster_bg'])
const POSTER_KEYS = new Set(['guanshi_poster_bg', 'zuzhang_poster_bg', 'cuser_poster_bg'])
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([

View File

@@ -12,6 +12,16 @@
/>
<span class="switch-desc">开启后商家发布的商品需审核才能上架</span>
</div>
<div class="switch-bar" style="margin-top:12px">
<span class="switch-label">只看审核商品</span>
<el-switch
v-model="zhiKanShenhe"
active-text="开启"
inactive-text="关闭"
:before-change="beforeSwitchZhiKan"
/>
<span class="switch-desc">开启后未绑店且未注册打手/商家等身份只看审核专用商品关闭后未绑店一律看正常商品绑店仍看店铺商品</span>
</div>
</el-card>
<!-- 第一区域公共商品类型横排 -->
@@ -213,6 +223,7 @@ import ShopProductList from './components/ShopProductList.vue'
// ========== 审核模式 ==========
const auditMode = ref(false)
const zhiKanShenhe = ref(true)
// 开关前置确认
const beforeSwitchAudit = () => {
@@ -223,15 +234,11 @@ const beforeSwitchAudit = () => {
{ confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }
)
.then(() => {
// 用户确认,先保持开关状态(由 v-model 控制),然后发送请求
// 这里不能直接用 resolve(true),因为需要等待异步请求完成才能决定是否允许切换
// 使用 before-change 的标准流程:先发请求,成功则 resolve(true),失败 reject
handleSwitchAudit()
.then(() => resolve(true))
.catch(() => resolve(false)) // 失败时阻止切换
.catch(() => resolve(false))
})
.catch(() => {
// 取消操作,阻止切换
resolve(false)
})
})
@@ -247,7 +254,42 @@ const handleSwitchAudit = async () => {
})
if (res.code === 0) {
ElMessage.success('审核模式已更新')
// 请求成功后 v-model 会自动切换到 targetValue因为 before-change 返回 true 时执行切换
} else {
ElMessage.error(res.msg || '更新失败')
throw new Error('更新失败')
}
} catch (e) {
ElMessage.error('请求失败,未修改')
throw e
}
}
const beforeSwitchZhiKan = () => {
return new Promise((resolve) => {
ElMessageBox.confirm(
`确定要${zhiKanShenhe.value ? '关闭' : '开启'}「只看审核商品」吗?`,
'提示',
{ confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }
)
.then(() => {
handleSwitchZhiKan()
.then(() => resolve(true))
.catch(() => resolve(false))
})
.catch(() => resolve(false))
})
}
const handleSwitchZhiKan = async () => {
const targetValue = !zhiKanShenhe.value
try {
const res = await request.post('/houtai/htxgdpsplx', {
action: 'update_zhi_kan_shenhe',
username: localStorage.getItem('username') || '',
zhi_kan_shenhe: targetValue
})
if (res.code === 0) {
ElMessage.success('只看审核开关已更新')
} else {
ElMessage.error(res.msg || '更新失败')
throw new Error('更新失败')
@@ -282,6 +324,7 @@ const loadPublicTypes = async () => {
// 数据结构:{ code:0, data:{ public_types:[], kaiqi_shenhe: bool } }
publicTypes.value = res.data.public_types || []
auditMode.value = res.data.kaiqi_shenhe || false
zhiKanShenhe.value = res.data.zhi_kan_shenhe !== false
} else if (res.code === 403) {
publicTypes.value = []
ElMessage.error('无访问权限,页面已锁定')