Files
bj_power/bj_power_wms/frontend/src/pages/Login.vue
T
SunYF 2544c6141d refactor: 合并原库房客户端到主WMS服务,退役8891端口
1.  将bj_power_wms_client的前端代码、配置及网关逻辑全部迁移到bj_power_wms主项目
2.  删除原库房客户端相关的所有文件与配置
3.  更新README与部署文档,说明合并后的服务架构
4.  新增Web配置项支持自动打开浏览器开关,统一服务端口为8890
2026-09-07 15:55:30 +08:00

74 lines
2.5 KiB
Vue

<script setup>
import { reactive, ref } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { ElMessage } from 'element-plus'
import request from '../utils/request'
import { setSession } from '../utils/auth'
const router = useRouter()
const route = useRoute()
const formRef = ref()
const loading = ref(false)
const form = reactive({ username: '', password: '' })
const rules = {
username: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
password: [{ required: true, message: '请输入密码', trigger: 'blur' }]
}
async function onSubmit() {
await formRef.value.validate()
loading.value = true
try {
// /api 前缀由网关代理到 WMS 的 /api/auth/login
const data = await request.post('/auth/login', { username: form.username, password: form.password })
if (!data?.token) throw new Error('登录响应缺少 token')
setSession(data.token, data.user || {})
ElMessage.success('登录成功')
const redirect = route.query.redirect
router.push(redirect && typeof redirect === 'string' ? redirect : '/')
// 弱密码(纯数字)允许登录,仅提示尽快修改
if (data.weakPassword) {
ElMessage.warning({
message: '当前密码为纯数字,安全性较低,建议尽快修改密码',
duration: 8000,
showClose: true
})
}
} finally {
loading.value = false
}
}
</script>
<template>
<div class="login-page">
<el-card class="card">
<div class="head">
<h2>WMS库房管理</h2>
<p>请使用 WMS 账号登录</p>
</div>
<el-form ref="formRef" :model="form" :rules="rules" label-position="top" @keyup.enter="onSubmit">
<el-form-item label="用户名" prop="username">
<el-input v-model="form.username" placeholder="用户名" autofocus />
</el-form-item>
<el-form-item label="密码" prop="password">
<el-input v-model="form.password" type="password" show-password placeholder="密码" />
</el-form-item>
<el-button type="primary" class="btn" :loading="loading" @click="onSubmit"> </el-button>
</el-form>
</el-card>
</div>
</template>
<style scoped>
.login-page {
height: 100vh; display: flex; align-items: center; justify-content: center;
background: linear-gradient(135deg, #1c3faa 0%, #0a1330 100%);
}
.card { width: 380px; }
.head { text-align: center; margin-bottom: 14px; }
.head h2 { margin: 0 0 6px; }
.head p { margin: 0; color: #909399; font-size: 13px; }
.btn { width: 100%; margin-top: 4px; }
</style>