feat(seller): 微信区上号方式与账号密码互斥,自动固定为扫码

This commit is contained in:
yml2213
2026-08-15 10:47:06 +08:00
parent fbd59ed19f
commit aef36dc4f5
3 changed files with 41 additions and 6 deletions
@@ -89,6 +89,29 @@ export function usePublishForm(options: UsePublishFormOptions) {
screenshotFiles, screenshotFiles,
selectedSkins, selectedSkins,
}) })
// ========== 上号方式互斥 ==========
// 微信区账号只能扫码登录:选择微信区后,「账号密码」不可选,默认固定为「扫码」。
const scanOnlyServers = ['微信']
const scanLoginMethod = '扫码'
const passwordLoginMethod = '账号密码'
const isScanOnlyServer = computed(() => scanOnlyServers.includes(form.server_region))
const effectiveLoginMethodOptions = computed(() => {
if (!isScanOnlyServer.value) return pricing.loginMethodOptions.value
return pricing.loginMethodOptions.value.filter(option => option !== passwordLoginMethod)
})
watch(
() => form.server_region,
server => {
if (!scanOnlyServers.includes(server)) return
if (form.login_method !== scanLoginMethod) {
form.login_method = scanLoginMethod
}
}
)
const uploadedScreenshotCount = computed( const uploadedScreenshotCount = computed(
() => pricing.screenshotSlots.value.filter(item => getScreenshotCount(item.key) > 0).length () => pricing.screenshotSlots.value.filter(item => getScreenshotCount(item.key) > 0).length
) )
@@ -885,6 +908,8 @@ export function usePublishForm(options: UsePublishFormOptions) {
passwordAndDeviceConfirmed, passwordAndDeviceConfirmed,
canPublishAfterAgreements, canPublishAfterAgreements,
showBanRecordRiskHint, showBanRecordRiskHint,
isScanOnlyServer,
effectiveLoginMethodOptions,
fileInput, fileInput,
activeUploadKey, activeUploadKey,
form, form,
@@ -38,7 +38,8 @@ const {
rankOptions, rankOptions,
insuranceOptions, insuranceOptions,
levelOptions, levelOptions,
loginMethodOptions, effectiveLoginMethodOptions,
isScanOnlyServer,
regionOptions, regionOptions,
banRecordOptions, banRecordOptions,
skinGroups, skinGroups,
@@ -383,7 +384,7 @@ const screenshotGuides: Record<string, string> = {
<template #input> <template #input>
<div class="radio-group"> <div class="radio-group">
<button <button
v-for="opt in loginMethodOptions" v-for="opt in effectiveLoginMethodOptions"
:key="opt" :key="opt"
type="button" type="button"
class="radio-btn" class="radio-btn"
@@ -396,7 +397,11 @@ const screenshotGuides: Record<string, string> = {
</template> </template>
</van-field> </van-field>
<p class="field-hint"> <p class="field-hint">
优先推荐账密登录出售速度约为扫码的数倍两种方式安全性一致账密登录更便捷请自行衡量 {{
isScanOnlyServer
? '微信账号仅支持扫码登录,上号方式固定为扫码。'
: '优先推荐【账密登录】,出售速度约为扫码的数倍,两种方式安全性一致,账密登录更便捷,请自行衡量'
}}
</p> </p>
<van-field label="解锁赛伊德" required class="publish-field"> <van-field label="解锁赛伊德" required class="publish-field">
@@ -43,7 +43,8 @@ const {
rankOptions, rankOptions,
insuranceOptions, insuranceOptions,
levelOptions, levelOptions,
loginMethodOptions, effectiveLoginMethodOptions,
isScanOnlyServer,
regionOptions, regionOptions,
banRecordOptions, banRecordOptions,
skinGroups, skinGroups,
@@ -322,12 +323,16 @@ function selectDailyLoss(value: string | number) {
<div class="field-row login-method-row"> <div class="field-row login-method-row">
<label>上号方式</label> <label>上号方式</label>
<OptionChips <OptionChips
:options="loginMethodOptions" :options="effectiveLoginMethodOptions"
:model-value="form.login_method" :model-value="form.login_method"
@select="form.login_method = String($event)" @select="form.login_method = String($event)"
/> />
<p class="field-hint"> <p class="field-hint">
优先推荐账密登录出售速度通常更快请结合账号安全情况自行选择 {{
isScanOnlyServer
? '微信账号仅支持扫码登录,上号方式固定为扫码。'
: '优先推荐账密登录,出售速度通常更快;请结合账号安全情况自行选择。'
}}
</p> </p>
</div> </div>