fix(mobile): 修复登录页面始终显示医院选择
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
<div class="login-page">
|
||||
<div class="login-header">
|
||||
<div class="logo">🏥</div>
|
||||
<h1>HealthLink 移动护理</h1>
|
||||
<h1>{{ currentTenantName || 'HealthLink 移动护理' }}</h1>
|
||||
<p>医院信息管理系统</p>
|
||||
</div>
|
||||
<div class="login-form">
|
||||
@@ -10,10 +10,11 @@
|
||||
<label>用户名</label>
|
||||
<input v-model="form.username" type="text" placeholder="请输入用户名" class="input" @blur="loadTenants" />
|
||||
</div>
|
||||
<div class="form-item" v-if="tenants.length > 0">
|
||||
<label>租户</label>
|
||||
<select v-model="form.tenantId" class="input">
|
||||
<option v-for="t in tenants" :key="t.id" :value="t.id">{{ t.tenantName }}</option>
|
||||
<div class="form-item">
|
||||
<label>医院/租户</label>
|
||||
<select v-model="form.tenantId" class="input" @change="onTenantChange">
|
||||
<option value="">请选择医院</option>
|
||||
<option v-for="t in tenantOptions" :key="t.value" :value="t.value">{{ t.label }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
@@ -25,6 +26,9 @@
|
||||
</button>
|
||||
<div v-if="errorMsg" class="error-msg">{{ errorMsg }}</div>
|
||||
</div>
|
||||
<div class="login-footer">
|
||||
<span>{{ currentTenantName || 'HealthLink' }} v1.0</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -37,24 +41,35 @@ import { authApi } from '../api'
|
||||
const router = useRouter()
|
||||
const loading = ref(false)
|
||||
const errorMsg = ref('')
|
||||
const tenants = ref([])
|
||||
const form = ref({ username: '', password: '', tenantId: null })
|
||||
const tenantOptions = ref([])
|
||||
const currentTenantName = ref('')
|
||||
const form = ref({ username: '', password: '', tenantId: '' })
|
||||
|
||||
const loadTenants = async () => {
|
||||
if (!form.value.username) return
|
||||
try {
|
||||
const res = await authApi.getTenants(form.value.username)
|
||||
if (res.code === 200 && res.data) {
|
||||
tenants.value = res.data
|
||||
if (res.data.length === 1) form.value.tenantId = res.data[0].id
|
||||
tenantOptions.value = res.data.map(item => ({
|
||||
label: item.tenantName,
|
||||
value: item.id
|
||||
}))
|
||||
if (tenantOptions.value.length === 1) {
|
||||
form.value.tenantId = tenantOptions.value[0].value
|
||||
currentTenantName.value = tenantOptions.value[0].label
|
||||
}
|
||||
}
|
||||
} catch (e) { console.error(e) }
|
||||
}
|
||||
|
||||
const onTenantChange = () => {
|
||||
const selected = tenantOptions.value.find(t => t.value === form.value.tenantId)
|
||||
currentTenantName.value = selected ? selected.label : ''
|
||||
}
|
||||
|
||||
const handleLogin = async () => {
|
||||
if (!form.value.username) { errorMsg.value = '请输入用户名'; return }
|
||||
if (!form.value.password) { errorMsg.value = '请输入密码'; return }
|
||||
if (!form.value.tenantId && tenants.value.length > 0) { errorMsg.value = '请选择租户'; return }
|
||||
|
||||
loading.value = true
|
||||
errorMsg.value = ''
|
||||
@@ -85,7 +100,7 @@ const handleLogin = async () => {
|
||||
.login-page { min-height: 100vh; background: linear-gradient(135deg, #1890ff 0%, #096dd9 100%); display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 20px; }
|
||||
.login-header { text-align: center; color: #fff; margin-bottom: 40px; }
|
||||
.logo { font-size: 60px; margin-bottom: 12px; }
|
||||
.login-header h1 { font-size: 24px; margin: 0; }
|
||||
.login-header h1 { font-size: 22px; margin: 0; }
|
||||
.login-header p { font-size: 14px; opacity: 0.8; margin-top: 8px; }
|
||||
.login-form { background: #fff; border-radius: 12px; padding: 24px; width: 100%; max-width: 360px; box-shadow: 0 4px 20px rgba(0,0,0,0.15); }
|
||||
.form-item { margin-bottom: 16px; }
|
||||
@@ -96,4 +111,5 @@ select.input { appearance: none; background: #fff url("data:image/svg+xml,%3Csvg
|
||||
.login-btn { width: 100%; padding: 14px; background: #1890ff; color: #fff; border: none; border-radius: 8px; font-size: 18px; font-weight: 600; cursor: pointer; }
|
||||
.login-btn:disabled { background: #91d5ff; }
|
||||
.error-msg { color: #f5222d; text-align: center; margin-top: 12px; font-size: 14px; }
|
||||
.login-footer { margin-top: 20px; color: rgba(255,255,255,0.6); font-size: 12px; }
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user