shinnosuke
2026-08-19 ac44d2c693c433ed230652ed3f1f6516042309c5
talent-card-admin/src/views/MerchantCreateView.vue
@@ -66,6 +66,7 @@
const rightsSaving = ref(false)
const accountChecking = ref(false)
const accountTaken = ref(false)
const merchantHasLoginAccount = ref(false)
const imageInputRef = ref<HTMLInputElement>()
const imageUploading = ref(false)
const imageUploadTarget = ref<'merchant' | 'productCover' | 'productImage' | 'approvalWindow'>('merchant')
@@ -118,7 +119,7 @@
  || isApprovalMerchant.value
  || merchantAppLoginOptionalTypes.includes(normalizedMerchantType.value)
))
const requiresMerchantOperator = computed(() => !isEditMode.value && (
const requiresMerchantOperator = computed(() => (!isEditMode.value || !merchantHasLoginAccount.value) && (
  normalizedMerchantType.value === '景区服务'
  || (supportsMerchantAppLogin.value && Number(form.canLoginMerchantApp) === 1)
))
@@ -2079,8 +2080,8 @@
      longitude: Number(form.longitude || 0) || undefined,
      latitude: Number(form.latitude || 0) || undefined,
      canLoginMerchantApp: requiresMerchantOperator.value ? 1 : Number(form.canLoginMerchantApp ?? 1),
      loginAccount: !isEditMode.value ? accountForm.loginAccount : undefined,
      loginPassword: !isEditMode.value || updatingMerchantPassword ? accountForm.loginPassword : undefined,
      loginAccount: !isEditMode.value || !merchantHasLoginAccount.value ? accountForm.loginAccount : undefined,
      loginPassword: !isEditMode.value || updatingMerchantPassword || !merchantHasLoginAccount.value ? accountForm.loginPassword : undefined,
      groupBuyingEnabled: form.groupBuyingEnabled,
      usageInstructions: isParkingMerchant.value
         ? JSON.stringify(parkingAddresses.value)
@@ -2168,6 +2169,7 @@
         form.canLoginMerchantApp = Number(merchant.canLoginMerchantApp ?? 1)
         form.recommend = Number(merchant.isRecommend ?? 0)
         accountForm.loginAccount = merchant.loginAccount || ''
         merchantHasLoginAccount.value = Boolean(String(merchant.loginAccount || '').trim())
      if (isParkingMerchant.value) {
        parkingAddresses.value = parseJsonValue<ParkingAddress[]>(merchant.usageInstructions, [])
      } else if (isChildcareMerchant.value) {
@@ -2328,7 +2330,7 @@
            <el-switch v-model="form.canLoginMerchantApp" :active-value="1" :inactive-value="0" />
          </el-form-item>
          <el-form-item label="登录账号" prop="loginAccount" :required="requiresMerchantOperator" :error="accountTaken ? '登录账号已存在,请更换' : ''">
            <el-input v-model="accountForm.loginAccount" maxlength="32" :disabled="isEditMode" :placeholder="isEditMode ? '未配置登录账号' : '仅支持英文和数字'" @input="normalizeLoginAccount" @blur="checkLoginAccountAvailable" />
            <el-input v-model="accountForm.loginAccount" maxlength="32" :disabled="isEditMode && merchantHasLoginAccount" :placeholder="isEditMode && !merchantHasLoginAccount ? '请输入登录账号' : (isEditMode ? '已配置登录账号' : '仅支持英文和数字')" @input="normalizeLoginAccount" @blur="checkLoginAccountAvailable" />
          </el-form-item>
          <el-form-item label="登录密码" prop="loginPassword" :required="requiresMerchantOperator || (isEditMode && Boolean(accountForm.loginPassword))">
            <el-input v-model="accountForm.loginPassword" type="password" show-password :placeholder="isEditMode ? '留空则不修改,6至64位' : ''" />