商品管理支持隐藏式类型/专区/商品(shenhezhuangtai=4)。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-21 22:12:33 +08:00
parent 57d7b53aa1
commit 578f534571
2 changed files with 39 additions and 11 deletions

View File

@@ -71,8 +71,10 @@
<el-select v-model="form.shenhezhuangtai" placeholder="请选择审核状态" popper-class="custom-select-dropdown"> <el-select v-model="form.shenhezhuangtai" placeholder="请选择审核状态" popper-class="custom-select-dropdown">
<el-option label="正常商品" :value="1" /> <el-option label="正常商品" :value="1" />
<el-option label="审核专用" :value="2" /> <el-option label="审核专用" :value="2" />
<el-option label="商家端" :value="3" />
<el-option label="隐藏式" :value="4" />
</el-select> </el-select>
<div class="form-tip">审核专用用于小程序骗审正常商品正常上架</div> <div class="form-tip">1点单正常 / 2审核专用 / 3商家端 / 4扫管事码后点单可见抢单池也可见</div>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@@ -84,6 +86,12 @@
<el-option-group label="正常类型"> <el-option-group label="正常类型">
<el-option v-for="type in normalTypes" :key="type.id" :label="type.jieshao" :value="type.id" /> <el-option v-for="type in normalTypes" :key="type.id" :label="type.jieshao" :value="type.id" />
</el-option-group> </el-option-group>
<el-option-group label="商家端类型" v-if="merchantTypes.length">
<el-option v-for="type in merchantTypes" :key="type.id" :label="`${type.jieshao} (商家端)`" :value="type.id" />
</el-option-group>
<el-option-group label="隐藏式类型" v-if="hiddenTypes.length">
<el-option v-for="type in hiddenTypes" :key="type.id" :label="`${type.jieshao} (隐藏式)`" :value="type.id" />
</el-option-group>
<el-option-group label="审核专用类型" v-if="showAuditTypes"> <el-option-group label="审核专用类型" v-if="showAuditTypes">
<el-option v-for="type in auditTypes" :key="type.id" :label="`${type.jieshao} (审核专用)`" :value="type.id" /> <el-option v-for="type in auditTypes" :key="type.id" :label="`${type.jieshao} (审核专用)`" :value="type.id" />
</el-option-group> </el-option-group>
@@ -99,6 +107,12 @@
<el-option-group label="正常专区" v-if="normalZones.length"> <el-option-group label="正常专区" v-if="normalZones.length">
<el-option v-for="zone in normalZones" :key="zone.id" :label="zone.mingzi" :value="zone.id" /> <el-option v-for="zone in normalZones" :key="zone.id" :label="zone.mingzi" :value="zone.id" />
</el-option-group> </el-option-group>
<el-option-group label="商家端专区" v-if="merchantZones.length">
<el-option v-for="zone in merchantZones" :key="zone.id" :label="`${zone.mingzi} (商家端)`" :value="zone.id" />
</el-option-group>
<el-option-group label="隐藏式专区" v-if="hiddenZones.length">
<el-option v-for="zone in hiddenZones" :key="zone.id" :label="`${zone.mingzi} (隐藏式)`" :value="zone.id" />
</el-option-group>
<el-option-group label="审核专用专区" v-if="auditZones.length && showAuditTypes"> <el-option-group label="审核专用专区" v-if="auditZones.length && showAuditTypes">
<el-option v-for="zone in auditZones" :key="zone.id" :label="`${zone.mingzi} (审核专用)`" :value="zone.id" /> <el-option v-for="zone in auditZones" :key="zone.id" :label="`${zone.mingzi} (审核专用)`" :value="zone.id" />
</el-option-group> </el-option-group>
@@ -301,12 +315,22 @@ const formRules = {
const showAuditTypes = ref(false) const showAuditTypes = ref(false)
const normalTypes = computed(() => typeList.value.filter(t => t.shenhezhuangtai !== 2)) const normalTypes = computed(() => typeList.value.filter(t => t.shenhezhuangtai === 1))
const merchantTypes = computed(() => typeList.value.filter(t => t.shenhezhuangtai === 3))
const hiddenTypes = computed(() => typeList.value.filter(t => t.shenhezhuangtai === 4))
const auditTypes = computed(() => typeList.value.filter(t => t.shenhezhuangtai === 2)) const auditTypes = computed(() => typeList.value.filter(t => t.shenhezhuangtai === 2))
const normalZones = computed(() => { const normalZones = computed(() => {
if (!form.leixing_id) return [] if (!form.leixing_id) return []
return zoneList.value.filter(z => z.leixing_id === form.leixing_id && z.shenhezhuangtai !== 2) return zoneList.value.filter(z => z.leixing_id === form.leixing_id && z.shenhezhuangtai === 1)
})
const merchantZones = computed(() => {
if (!form.leixing_id) return []
return zoneList.value.filter(z => z.leixing_id === form.leixing_id && z.shenhezhuangtai === 3)
})
const hiddenZones = computed(() => {
if (!form.leixing_id) return []
return zoneList.value.filter(z => z.leixing_id === form.leixing_id && z.shenhezhuangtai === 4)
}) })
const auditZones = computed(() => { const auditZones = computed(() => {
if (!form.leixing_id) return [] if (!form.leixing_id) return []

View File

@@ -95,8 +95,8 @@
<div class="zone-info"> <div class="zone-info">
<div class="zone-name">{{ zone.mingzi }}</div> <div class="zone-name">{{ zone.mingzi }}</div>
<div class="zone-meta"> <div class="zone-meta">
<el-tag size="small" :type="zone.shenhezhuangtai === 1 ? 'success' : 'warning'"> <el-tag size="small" :type="getShenheTagType(zone.shenhezhuangtai)">
{{ zone.shenhezhuangtai === 1 ? '正常' : '审核专用' }} {{ getShenheText(zone.shenhezhuangtai) }}
</el-tag> </el-tag>
</div> </div>
</div> </div>
@@ -161,6 +161,7 @@
<el-radio :label="1">点单端</el-radio> <el-radio :label="1">点单端</el-radio>
<el-radio :label="2">审核专用</el-radio> <el-radio :label="2">审核专用</el-radio>
<el-radio :label="3">商家端</el-radio> <el-radio :label="3">商家端</el-radio>
<el-radio :label="4">隐藏式</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="吃龙虾商品类型" prop="is_special_type"> <el-form-item label="吃龙虾商品类型" prop="is_special_type">
@@ -212,6 +213,8 @@
<el-radio-group v-model="zoneForm.shenhezhuangtai"> <el-radio-group v-model="zoneForm.shenhezhuangtai">
<el-radio :label="1">正常</el-radio> <el-radio :label="1">正常</el-radio>
<el-radio :label="2">审核专用</el-radio> <el-radio :label="2">审核专用</el-radio>
<el-radio :label="3">商家端</el-radio>
<el-radio :label="4">隐藏式</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-form> </el-form>
@@ -259,9 +262,9 @@ const rateMerchant = ref(0)
const formatRate = (val) => (val * 100).toFixed(2) + '%' const formatRate = (val) => (val * 100).toFixed(2) + '%'
/** 商品类型 shenhezhuangtai1点单端 2审核专用 3商家端 */ /** 商品类型/专区 shenhezhuangtai1点单端 2审核专用 3商家端 4隐藏式 */
const getShenheText = (val) => { const getShenheText = (val) => {
const map = { 1: '点单端', 2: '审核专用', 3: '商家端' } const map = { 1: '点单端', 2: '审核专用', 3: '商家端', 4: '隐藏式' }
return map[Number(val)] || '未知' return map[Number(val)] || '未知'
} }
const getShenheTagType = (val) => { const getShenheTagType = (val) => {
@@ -269,6 +272,7 @@ const getShenheTagType = (val) => {
if (code === 1) return 'success' if (code === 1) return 'success'
if (code === 2) return 'warning' if (code === 2) return 'warning'
if (code === 3) return 'primary' if (code === 3) return 'primary'
if (code === 4) return 'danger'
return 'info' return 'info'
} }
@@ -406,8 +410,8 @@ const submitType = async () => {
ElMessage.error('抢单要求类型或类型端无效') ElMessage.error('抢单要求类型或类型端无效')
return return
} }
if (![1, 2, 3].includes(typeForm.shenhezhuangtai)) { if (![1, 2, 3, 4].includes(typeForm.shenhezhuangtai)) {
ElMessage.error('类型端必须为 1(点单端)、2(审核专用)3(商家端)') ElMessage.error('类型端必须为 1(点单端)、2(审核专用)3(商家端) 或 4(隐藏式)')
return return
} }
try { await typeFormRef.value.validate() } catch { return } try { await typeFormRef.value.validate() } catch { return }
@@ -551,8 +555,8 @@ const resetZoneForm = () => {
} }
const submitZone = async () => { const submitZone = async () => {
zoneForm.shenhezhuangtai = parseInt(zoneForm.shenhezhuangtai, 10) zoneForm.shenhezhuangtai = parseInt(zoneForm.shenhezhuangtai, 10)
if (isNaN(zoneForm.shenhezhuangtai)) { if (isNaN(zoneForm.shenhezhuangtai) || ![1, 2, 3, 4].includes(zoneForm.shenhezhuangtai)) {
ElMessage.error('审核状态无效') ElMessage.error('审核状态无效须为1/2/3/4')
return return
} }
try { await zoneFormRef.value.validate() } catch { return } try { await zoneFormRef.value.validate() } catch { return }