Browse Source

20241111修改

test
tangxinyuan 5 months ago
parent
commit
e5a36e452d
  1. 20
      code/vue/vue3/src/api/stafflogin.ts
  2. 122
      code/vue/vue3/src/tangxinyuan/stafflogin.vue
  3. 36
      code/vue/vue3/src/util/request.ts

20
code/vue/vue3/src/api/stafflogin.ts

@ -0,0 +1,20 @@
import request from "../util/request"
// 这个是使用方法封装的axios进行请求,并传递查询参数
// 登录的接口
export const login = (staffNo: string)=>{
return request({
url:'login',
method:'post',
params: {
staffNo: staffNo
} // 这里的 params 对象将被 axios 转换为查询字符串
})
}
// 登出的接口
export const logout =()=>{
return request({
url:'logout',
method:'get'
})
}

122
code/vue/vue3/src/tangxinyuan/stafflogin.vue

@ -0,0 +1,122 @@
<template>
<div class="page flex-center">
<div class="sign-box">
<el-form ref="formRef" :model="form" :rules="rules" label-width="86px">
<h3 class="title">{{ ('login') }}</h3>
<!-- 账号 -->
<el-form-item :label="('form.username')" prop="account">
<el-input v-model="form.account" :placeholder="('form.usernameHolder')" prefix-icon="user"></el-input>
</el-form-item>
<!-- 密码 -->
<el-form-item :label="('form.password')" prop="password">
<el-input v-model="form.password" type="password" :placeholder="('form.passwordHolder')"
prefix-icon="lock"></el-input>
</el-form-item>
<el-form-item label>
<el-button type="primary" class="w100p" :loading="loading" @click="doLogin">{{ ('login') }}</el-button>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script setup lang="ts">
//
import { login } from '@/api/stafflogin';
import { ref } from 'vue';
//
const formRef = ref()
//
const form = reactive({
account: 'admin',
password: 'admin'
})
const rules = computed(() => {
return {
account: [
{
required: true,
message: ('form.usernameHolder'),
trigger: ['change', 'blur'] //
},
{
pattern: /^[a-zA-Z][a-zA-Z0-9_-]{3,31}$/, // _- 3-31
message: ('form.usernameError'),
trigger: ['change', 'blur']
}
],
password: [
{
required: true,
min: 4,
message: ('form.passwordError'),
trigger: ['change', 'blur'] //
},
]
}
})
// loading
const loading = ref(false)
//
const doLogin = () => {
//
formRef.value.validate((valid) => {
console.log(valid);
if (valid) {
loading.value = true
// console.log(login(form));
login(form)
.then(res => {
// token
userStore.setToken(res.data.token)
//
userStore.staffNo()
// /
menuStore.setRouteLoaded(false)
//
router.push('/')
}).finally(() => {
loading.value = false
})
}
})
}
</script>
<style lang="scss">
.page {
height: 100%;
// background: url(@/assets/bg.jpg) no-repeat;
background-size: cover;
}
.sign-box {
width: 400px;
background: #fff;
padding: 30px 50px 20px 30px;
border-radius: 4px;
box-shadow: 0 0 10px #022c44;
}
.title {
text-align: center;
font-size: 20px;
line-height: 30px;
margin-top: 0;
margin-bottom: 10px;
color: #000;
}
</style>

36
code/vue/vue3/src/util/request.ts

@ -1,23 +1,29 @@
import axios from "axios"; import axios from 'axios'
import {config} from "@vue/test-utils"; import { config } from '@vue/test-utils'
const request =axios.create({ const request = axios.create({
baseURL:'http://106.55.243.24:12709', baseURL: 'http://106.55.243.24:12709',
timeout:60000, timeout: 60000,
}) })
//请求拦截器 //请求拦截器
request.interceptors.request.use(config =>{ request.interceptors.request.use(
return config config => {
},err =>{ return config
return Promise.reject(err) },
}) err => {
return Promise.reject(err)
},
)
//响应拦截器 //响应拦截器
request.interceptors.response.use(response =>{ request.interceptors.response.use(
return response.data response => {
},error => { return response.data
return Promise.reject(error) },
}) error => {
return Promise.reject(error)
},
)
export default request export default request

Loading…
Cancel
Save