fix(frontend): 修复用户表单密码框无法输入及编辑模式额度框不显示

- 密码框: masked 属性改为始终开启,避免聚焦时 DOM 重建导致焦点丢失
- 额度框: 编辑模式下 unlimited=false 时显示"按钱包余额限制"而非空白
This commit is contained in:
fawney19
2026-03-12 13:31:43 +08:00
parent fddfaecf5e
commit 66fec80e79

View File

@@ -83,16 +83,17 @@
:id="`pwd-${formNonce}`"
v-model="form.password"
type="text"
:masked="passwordFocused || form.password.length > 0"
masked
autocomplete="new-password"
disable-autofill
:name="`field-${formNonce}`"
:required="!isEditMode"
minlength="6"
:placeholder="isEditMode ? '留空保持原密码' : getPasswordPolicyPlaceholder(passwordPolicyLevel)"
:class="`h-10${!passwordFocused && form.password.length === 0 ? ' text-transparent' : ''}${passwordError ? ' border-destructive' : ''}`"
@focus="passwordFocused = true"
@blur="passwordFocused = form.password.length > 0"
:class="[
'h-10',
passwordError ? 'border-destructive' : '',
]"
/>
<p
v-if="passwordError"
@@ -272,9 +273,9 @@
@update:model-value="(v) => form.initial_gift_usd = parseNumberInput(v, { allowFloat: true, min: 0.01 })"
/>
<span
v-else-if="form.unlimited"
v-else
class="flex h-10 w-full items-center rounded-lg border bg-background px-3 text-sm text-muted-foreground opacity-60"
>无限制</span>
>{{ form.unlimited ? '无限制' : '按钱包余额限制' }}</span>
</div>
<Switch
v-model="form.unlimited"
@@ -366,7 +367,6 @@ const emit = defineEmits<{
const isOpen = computed(() => props.open)
const saving = ref(false)
const formNonce = ref(createFieldNonce())
const passwordFocused = ref(false)
const passwordPolicyLevel = ref<PasswordPolicyLevel>('weak')
// 选项数据
@@ -417,7 +417,6 @@ function createFieldNonce(): string {
function resetForm() {
formNonce.value = createFieldNonce()
passwordFocused.value = false
form.value = {
username: '',
password: '',
@@ -439,7 +438,6 @@ function resetForm() {
function loadUserData() {
if (!props.user) return
formNonce.value = createFieldNonce()
passwordFocused.value = false
// 创建数组副本,避免与 props 数据共享引用
form.value = {
username: props.user.username,