商品管理支持隐藏式类型/专区/商品(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-option label="正常商品" :value="1" />
<el-option label="审核专用" :value="2" />
<el-option label="商家端" :value="3" />
<el-option label="隐藏式" :value="4" />
</el-select>
<div class="form-tip">审核专用用于小程序骗审正常商品正常上架</div>
<div class="form-tip">1点单正常 / 2审核专用 / 3商家端 / 4扫管事码后点单可见抢单池也可见</div>
</el-form-item>
</el-col>
</el-row>
@@ -84,6 +86,12 @@
<el-option-group label="正常类型">
<el-option v-for="type in normalTypes" :key="type.id" :label="type.jieshao" :value="type.id" />
</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 v-for="type in auditTypes" :key="type.id" :label="`${type.jieshao} (审核专用)`" :value="type.id" />
</el-option-group>
@@ -99,6 +107,12 @@
<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-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 v-for="zone in auditZones" :key="zone.id" :label="`${zone.mingzi} (审核专用)`" :value="zone.id" />
</el-option-group>
@@ -301,12 +315,22 @@ const formRules = {
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 normalZones = computed(() => {
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(() => {
if (!form.leixing_id) return []

View File

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