feat: delete useless
This commit is contained in:
@@ -3,6 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"message-nest/pkg/table"
|
"message-nest/pkg/table"
|
||||||
|
"message-nest/pkg/util"
|
||||||
"message-nest/service/cron_service"
|
"message-nest/service/cron_service"
|
||||||
"message-nest/service/env_service"
|
"message-nest/service/env_service"
|
||||||
"net/http"
|
"net/http"
|
||||||
@@ -12,7 +13,6 @@ import (
|
|||||||
"message-nest/models"
|
"message-nest/models"
|
||||||
"message-nest/pkg/logging"
|
"message-nest/pkg/logging"
|
||||||
"message-nest/pkg/setting"
|
"message-nest/pkg/setting"
|
||||||
"message-nest/pkg/util"
|
|
||||||
"message-nest/routers"
|
"message-nest/routers"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@ type Auth struct {
|
|||||||
Password string `json:"password"`
|
Password string `json:"password"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CheckAuth checks if authentication information exists
|
// CheckAuth 检查用户信息
|
||||||
func CheckAuth(username, password string) (bool, error) {
|
func CheckAuth(username, password string) (bool, error) {
|
||||||
var auth Auth
|
var auth Auth
|
||||||
err := db.Select("id").Where(Auth{Username: username, Password: password}).First(&auth).Error
|
err := db.Select("id").Where(Auth{Username: username, Password: password}).First(&auth).Error
|
||||||
|
|||||||
@@ -2,35 +2,13 @@ package app
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/astaxie/beego/validation"
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/go-playground/validator/v10"
|
"github.com/go-playground/validator/v10"
|
||||||
"message-nest/pkg/e"
|
|
||||||
"message-nest/pkg/util"
|
"message-nest/pkg/util"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// BindAndValid binds and validates data
|
|
||||||
func BindAndValid(c *gin.Context, form interface{}) (int, int) {
|
|
||||||
err := c.Bind(form)
|
|
||||||
if err != nil {
|
|
||||||
return http.StatusBadRequest, e.INVALID_PARAMS
|
|
||||||
}
|
|
||||||
|
|
||||||
valid := validation.Validation{}
|
|
||||||
check, err := valid.Valid(form)
|
|
||||||
if err != nil {
|
|
||||||
return http.StatusInternalServerError, e.ERROR
|
|
||||||
}
|
|
||||||
if !check {
|
|
||||||
MarkErrors(valid.Errors)
|
|
||||||
return http.StatusBadRequest, e.INVALID_PARAMS
|
|
||||||
}
|
|
||||||
|
|
||||||
return http.StatusOK, e.SUCCESS
|
|
||||||
}
|
|
||||||
|
|
||||||
func CommonPlaygroundValid(obj interface{}) (int, string) {
|
func CommonPlaygroundValid(obj interface{}) (int, string) {
|
||||||
if err := util.CustomerValidate.Struct(obj); err != nil {
|
if err := util.CustomerValidate.Struct(obj); err != nil {
|
||||||
errs := err.(validator.ValidationErrors)
|
errs := err.(validator.ValidationErrors)
|
||||||
|
|||||||
@@ -2,20 +2,9 @@ package app
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/astaxie/beego/validation"
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
|
|
||||||
"message-nest/pkg/logging"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// MarkErrors logs error logs
|
|
||||||
func MarkErrors(errors []*validation.Error) {
|
|
||||||
for _, err := range errors {
|
|
||||||
logging.Logger.Error(err.Key, err.Message)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// 从请求中获取当前用户
|
// 从请求中获取当前用户
|
||||||
func GetCurrentUserName(c *gin.Context) string {
|
func GetCurrentUserName(c *gin.Context) string {
|
||||||
userName, ok := c.Get("currentUserName")
|
userName, ok := c.Get("currentUserName")
|
||||||
|
|||||||
@@ -3,8 +3,6 @@ package app
|
|||||||
import (
|
import (
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"message-nest/pkg/e"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type Gin struct {
|
type Gin struct {
|
||||||
@@ -17,16 +15,6 @@ type Response struct {
|
|||||||
Data interface{} `json:"data"`
|
Data interface{} `json:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Response setting gin.JSON
|
|
||||||
func (g *Gin) Response(httpCode, errCode int, data interface{}) {
|
|
||||||
g.C.JSON(httpCode, Response{
|
|
||||||
Code: errCode,
|
|
||||||
Msg: e.GetMsg(errCode),
|
|
||||||
Data: data,
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (g *Gin) CResponse(errCode int, Msg string, data interface{}) {
|
func (g *Gin) CResponse(errCode int, Msg string, data interface{}) {
|
||||||
g.C.JSON(http.StatusOK, Response{
|
g.C.JSON(http.StatusOK, Response{
|
||||||
Code: errCode,
|
Code: errCode,
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
package constant
|
package constant
|
||||||
|
|
||||||
var CleanLogsTaskId = "00000000-0000-0000-0000-000000000001"
|
const CleanLogsTaskId = "00000000-0000-0000-0000-000000000001"
|
||||||
var SiteSettingSectionName = "site_config"
|
const SiteSettingSectionName = "site_config"
|
||||||
|
|
||||||
//var SiteSettingTitleKeyName = "title"
|
//const SiteSettingTitleKeyName = "title"
|
||||||
//var SiteSettingSloganKeyName = "slogan"
|
//const SiteSettingSloganKeyName = "slogan"
|
||||||
//var SiteSettingLogoKeyName = "logo"
|
//const SiteSettingLogoKeyName = "logo"
|
||||||
|
|
||||||
// 站点信息默认值
|
// 站点信息默认值
|
||||||
var SiteSiteDefaultValueMap = map[string]string{
|
var SiteSiteDefaultValueMap = map[string]string{
|
||||||
@@ -15,9 +15,9 @@ var SiteSiteDefaultValueMap = map[string]string{
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 日志清理自定义
|
// 日志清理自定义
|
||||||
var LogsCleanSectionName = "log_config"
|
const LogsCleanSectionName = "log_config"
|
||||||
var LogsCleanCronKeyName = "cron"
|
const LogsCleanCronKeyName = "cron"
|
||||||
var LogsCleanKeepKeyName = "keep_num"
|
const LogsCleanKeepKeyName = "keep_num"
|
||||||
|
|
||||||
// 日志清理默认值
|
// 日志清理默认值
|
||||||
var LogsCleanDefaultValueMap = map[string]string{
|
var LogsCleanDefaultValueMap = map[string]string{
|
||||||
@@ -25,4 +25,4 @@ var LogsCleanDefaultValueMap = map[string]string{
|
|||||||
"keep_num": "1000",
|
"keep_num": "1000",
|
||||||
}
|
}
|
||||||
|
|
||||||
var AboutSectionName = "about"
|
const AboutSectionName = "about"
|
||||||
|
|||||||
@@ -2,8 +2,6 @@ package constant
|
|||||||
|
|
||||||
var LatestVersion = map[string]string{}
|
var LatestVersion = map[string]string{}
|
||||||
|
|
||||||
//var info map[string]string
|
|
||||||
|
|
||||||
var V1Version = "v1.0.0"
|
var V1Version = "v1.0.0"
|
||||||
var V1VersionDesc = `1. 支持邮件消息发送
|
var V1VersionDesc = `1. 支持邮件消息发送
|
||||||
2. 支持日志定时删除
|
2. 支持日志定时删除
|
||||||
|
|||||||
@@ -5,34 +5,9 @@ const (
|
|||||||
ERROR = 500
|
ERROR = 500
|
||||||
INVALID_PARAMS = 400
|
INVALID_PARAMS = 400
|
||||||
|
|
||||||
ERROR_EXIST_TAG = 10001
|
|
||||||
ERROR_EXIST_TAG_FAIL = 10002
|
|
||||||
ERROR_NOT_EXIST_TAG = 10003
|
|
||||||
ERROR_GET_TAGS_FAIL = 10004
|
|
||||||
ERROR_COUNT_TAG_FAIL = 10005
|
|
||||||
ERROR_ADD_TAG_FAIL = 10006
|
|
||||||
ERROR_EDIT_TAG_FAIL = 10007
|
|
||||||
ERROR_DELETE_TAG_FAIL = 10008
|
|
||||||
ERROR_EXPORT_TAG_FAIL = 10009
|
|
||||||
ERROR_IMPORT_TAG_FAIL = 10010
|
|
||||||
|
|
||||||
ERROR_NOT_EXIST_ARTICLE = 10011
|
|
||||||
ERROR_CHECK_EXIST_ARTICLE_FAIL = 10012
|
|
||||||
ERROR_ADD_ARTICLE_FAIL = 10013
|
|
||||||
ERROR_DELETE_ARTICLE_FAIL = 10014
|
|
||||||
ERROR_EDIT_ARTICLE_FAIL = 10015
|
|
||||||
ERROR_COUNT_ARTICLE_FAIL = 10016
|
|
||||||
ERROR_GET_ARTICLES_FAIL = 10017
|
|
||||||
ERROR_GET_ARTICLE_FAIL = 10018
|
|
||||||
ERROR_GEN_ARTICLE_POSTER_FAIL = 10019
|
|
||||||
|
|
||||||
ERROR_AUTH_CHECK_TOKEN_FAIL = 20001
|
ERROR_AUTH_CHECK_TOKEN_FAIL = 20001
|
||||||
ERROR_AUTH_CHECK_TOKEN_TIMEOUT = 20002
|
ERROR_AUTH_CHECK_TOKEN_TIMEOUT = 20002
|
||||||
ERROR_AUTH_TOKEN = 20003
|
ERROR_AUTH_TOKEN = 20003
|
||||||
ERROR_AUTH = 20004
|
ERROR_AUTH = 20004
|
||||||
ERROR_AUTH_NO_TOKEN = 20005
|
ERROR_AUTH_NO_TOKEN = 20005
|
||||||
|
|
||||||
ERROR_UPLOAD_SAVE_IMAGE_FAIL = 30001
|
|
||||||
ERROR_UPLOAD_CHECK_IMAGE_FAIL = 30002
|
|
||||||
ERROR_UPLOAD_CHECK_IMAGE_FORMAT = 30003
|
|
||||||
)
|
)
|
||||||
|
|||||||
+8
-30
@@ -1,36 +1,14 @@
|
|||||||
package e
|
package e
|
||||||
|
|
||||||
var MsgFlags = map[int]string{
|
var MsgFlags = map[int]string{
|
||||||
SUCCESS: "ok",
|
SUCCESS: "ok",
|
||||||
ERROR: "fail",
|
ERROR: "fail",
|
||||||
INVALID_PARAMS: "请求参数错误",
|
INVALID_PARAMS: "请求参数错误",
|
||||||
ERROR_EXIST_TAG: "已存在该标签名称",
|
ERROR_AUTH_CHECK_TOKEN_FAIL: "Token鉴权失败",
|
||||||
ERROR_EXIST_TAG_FAIL: "获取已存在标签失败",
|
ERROR_AUTH_CHECK_TOKEN_TIMEOUT: "Token已超时",
|
||||||
ERROR_NOT_EXIST_TAG: "该标签不存在",
|
ERROR_AUTH_TOKEN: "Token生成失败",
|
||||||
ERROR_GET_TAGS_FAIL: "获取所有标签失败",
|
ERROR_AUTH_NO_TOKEN: "Token缺失",
|
||||||
ERROR_COUNT_TAG_FAIL: "统计标签失败",
|
ERROR_AUTH: "Token错误",
|
||||||
ERROR_ADD_TAG_FAIL: "新增标签失败",
|
|
||||||
ERROR_EDIT_TAG_FAIL: "修改标签失败",
|
|
||||||
ERROR_DELETE_TAG_FAIL: "删除标签失败",
|
|
||||||
ERROR_EXPORT_TAG_FAIL: "导出标签失败",
|
|
||||||
ERROR_IMPORT_TAG_FAIL: "导入标签失败",
|
|
||||||
ERROR_NOT_EXIST_ARTICLE: "该文章不存在",
|
|
||||||
ERROR_ADD_ARTICLE_FAIL: "新增文章失败",
|
|
||||||
ERROR_DELETE_ARTICLE_FAIL: "删除文章失败",
|
|
||||||
ERROR_CHECK_EXIST_ARTICLE_FAIL: "检查文章是否存在失败",
|
|
||||||
ERROR_EDIT_ARTICLE_FAIL: "修改文章失败",
|
|
||||||
ERROR_COUNT_ARTICLE_FAIL: "统计文章失败",
|
|
||||||
ERROR_GET_ARTICLES_FAIL: "获取多个文章失败",
|
|
||||||
ERROR_GET_ARTICLE_FAIL: "获取单个文章失败",
|
|
||||||
ERROR_GEN_ARTICLE_POSTER_FAIL: "生成文章海报失败",
|
|
||||||
ERROR_AUTH_CHECK_TOKEN_FAIL: "Token鉴权失败",
|
|
||||||
ERROR_AUTH_CHECK_TOKEN_TIMEOUT: "Token已超时",
|
|
||||||
ERROR_AUTH_TOKEN: "Token生成失败",
|
|
||||||
ERROR_AUTH_NO_TOKEN: "Token缺失",
|
|
||||||
ERROR_AUTH: "Token错误",
|
|
||||||
ERROR_UPLOAD_SAVE_IMAGE_FAIL: "保存图片失败",
|
|
||||||
ERROR_UPLOAD_CHECK_IMAGE_FAIL: "检查图片失败",
|
|
||||||
ERROR_UPLOAD_CHECK_IMAGE_FORMAT: "校验图片错误,图片格式或大小有问题",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetMsg get error information based on Code
|
// GetMsg get error information based on Code
|
||||||
|
|||||||
@@ -9,26 +9,9 @@ import (
|
|||||||
|
|
||||||
type App struct {
|
type App struct {
|
||||||
JwtSecret string
|
JwtSecret string
|
||||||
PageSize int
|
|
||||||
PrefixUrl string
|
PrefixUrl string
|
||||||
|
|
||||||
RuntimeRootPath string
|
RuntimeRootPath string
|
||||||
|
|
||||||
ImageSavePath string
|
|
||||||
ImageMaxSize int
|
|
||||||
ImageAllowExts []string
|
|
||||||
|
|
||||||
ExportSavePath string
|
|
||||||
QrCodeSavePath string
|
|
||||||
FontSavePath string
|
|
||||||
|
|
||||||
LogSavePath string
|
|
||||||
LogSaveName string
|
|
||||||
LogFileExt string
|
|
||||||
TimeFormat string
|
|
||||||
|
|
||||||
//LogKeepNum int
|
|
||||||
//CleanTaskLogID string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var AppSetting = &App{}
|
var AppSetting = &App{}
|
||||||
@@ -53,16 +36,6 @@ type Database struct {
|
|||||||
|
|
||||||
var DatabaseSetting = &Database{}
|
var DatabaseSetting = &Database{}
|
||||||
|
|
||||||
type Redis struct {
|
|
||||||
Host string
|
|
||||||
Password string
|
|
||||||
MaxIdle int
|
|
||||||
MaxActive int
|
|
||||||
IdleTimeout time.Duration
|
|
||||||
}
|
|
||||||
|
|
||||||
var RedisSetting = &Redis{}
|
|
||||||
|
|
||||||
var cfg *ini.File
|
var cfg *ini.File
|
||||||
|
|
||||||
// Setup initialize the configuration instance
|
// Setup initialize the configuration instance
|
||||||
@@ -76,16 +49,9 @@ func Setup() {
|
|||||||
mapTo("app", AppSetting)
|
mapTo("app", AppSetting)
|
||||||
mapTo("server", ServerSetting)
|
mapTo("server", ServerSetting)
|
||||||
mapTo("database", DatabaseSetting)
|
mapTo("database", DatabaseSetting)
|
||||||
mapTo("redis", RedisSetting)
|
|
||||||
|
|
||||||
AppSetting.ImageMaxSize = AppSetting.ImageMaxSize * 1024 * 1024
|
|
||||||
ServerSetting.ReadTimeout = ServerSetting.ReadTimeout * time.Second
|
ServerSetting.ReadTimeout = ServerSetting.ReadTimeout * time.Second
|
||||||
ServerSetting.WriteTimeout = ServerSetting.WriteTimeout * time.Second
|
ServerSetting.WriteTimeout = ServerSetting.WriteTimeout * time.Second
|
||||||
RedisSetting.IdleTimeout = RedisSetting.IdleTimeout * time.Second
|
|
||||||
|
|
||||||
//// 默认值
|
|
||||||
//AppSetting.LogKeepNum = 1000
|
|
||||||
//AppSetting.CleanTaskLogID = "00000000-0000-0000-0000-000000000001"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// mapTo map section
|
// mapTo map section
|
||||||
|
|||||||
@@ -3,21 +3,8 @@ package util
|
|||||||
import (
|
import (
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/unknwon/com"
|
"github.com/unknwon/com"
|
||||||
|
|
||||||
"message-nest/pkg/setting"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetPage get page parameters
|
|
||||||
func GetPage(c *gin.Context) int {
|
|
||||||
result := 0
|
|
||||||
page := com.StrTo(c.Query("page")).MustInt()
|
|
||||||
if page > 0 {
|
|
||||||
result = (page - 1) * setting.AppSetting.PageSize
|
|
||||||
}
|
|
||||||
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetPageSize(c *gin.Context) (int, int) {
|
func GetPageSize(c *gin.Context) (int, int) {
|
||||||
result := 0
|
result := 0
|
||||||
page := com.StrTo(c.Query("page")).MustInt()
|
page := com.StrTo(c.Query("page")).MustInt()
|
||||||
|
|||||||
+17
-29
@@ -1,9 +1,9 @@
|
|||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/astaxie/beego/validation"
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
|
|
||||||
"message-nest/pkg/app"
|
"message-nest/pkg/app"
|
||||||
@@ -18,52 +18,40 @@ type auth struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type ReqAuth struct {
|
type ReqAuth struct {
|
||||||
Username string `json:"username"`
|
Username string `json:"username" validate:"required,max=36" label:"用户名"`
|
||||||
Password string `json:"passwd"`
|
Password string `json:"passwd" validate:"required,max=36" label:"密码"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetAuth(c *gin.Context) {
|
func GetAuth(c *gin.Context) {
|
||||||
appG := app.Gin{C: c}
|
var (
|
||||||
valid := validation.Validation{}
|
appG = app.Gin{C: c}
|
||||||
|
req ReqAuth
|
||||||
var user ReqAuth
|
)
|
||||||
err := c.ShouldBindJSON(&user)
|
add
|
||||||
if err != nil {
|
errCode, errMsg := app.BindJsonAndPlayValid(c, &req)
|
||||||
app.MarkErrors(valid.Errors)
|
if errCode != e.SUCCESS {
|
||||||
appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
|
appG.CResponse(errCode, errMsg, nil)
|
||||||
return
|
|
||||||
}
|
|
||||||
username := user.Username
|
|
||||||
password := user.Password
|
|
||||||
|
|
||||||
a := auth{Username: username, Password: password}
|
|
||||||
ok, _ := valid.Valid(&a)
|
|
||||||
|
|
||||||
if !ok {
|
|
||||||
app.MarkErrors(valid.Errors)
|
|
||||||
appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
authService := auth_service.Auth{Username: username, Password: password}
|
authService := auth_service.Auth{Username: req.Username, Password: req.Password}
|
||||||
isExist, err := authService.Check()
|
isExist, err := authService.Check()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
appG.Response(http.StatusInternalServerError, e.ERROR_AUTH_CHECK_TOKEN_FAIL, nil)
|
appG.CResponse(http.StatusInternalServerError, fmt.Sprintf("校验失败:%s", err), nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if !isExist {
|
if !isExist {
|
||||||
appG.Response(http.StatusUnauthorized, e.ERROR_AUTH, nil)
|
appG.CResponse(http.StatusUnauthorized, "账号或密码不正确!", nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
token, err := util.GenerateToken(username, password)
|
token, err := util.GenerateToken(req.Username, req.Password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
appG.Response(http.StatusInternalServerError, e.ERROR_AUTH_TOKEN, nil)
|
appG.CResponse(http.StatusInternalServerError, fmt.Sprintf("生成token失败:%s", err), nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
appG.Response(http.StatusOK, e.SUCCESS, map[string]string{
|
appG.CResponse(http.StatusOK, "登录成功!", map[string]string{
|
||||||
"token": token,
|
"token": token,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-2
@@ -53,7 +53,10 @@ request.interceptors.response.use(
|
|||||||
if (error.response && error.response.status === 401) {
|
if (error.response && error.response.status === 401) {
|
||||||
// 未授权,可能是登录状态过期,执行登出操作
|
// 未授权,可能是登录状态过期,执行登出操作
|
||||||
logout();
|
logout();
|
||||||
|
} else if (20000 <= error.response.status <= 29999) {
|
||||||
|
logout();
|
||||||
}
|
}
|
||||||
|
|
||||||
handleException(error);
|
handleException(error);
|
||||||
// return Promise.reject(error);
|
// return Promise.reject(error);
|
||||||
}
|
}
|
||||||
@@ -82,8 +85,9 @@ const handleException = (error) => {
|
|||||||
|
|
||||||
// 登出系统
|
// 登出系统
|
||||||
const logout = () => {
|
const logout = () => {
|
||||||
// 执行登出逻辑,清除本地存储的用户信息等
|
const pageState = usePageState();
|
||||||
console.log('User logged out');
|
pageState.setIsLogin(true);
|
||||||
|
localStorage.setItem(CONSTANT.STORE_TOKEN_NAME, "");
|
||||||
};
|
};
|
||||||
|
|
||||||
export { request, handleException, logout };
|
export { request, handleException, logout };
|
||||||
|
|||||||
@@ -42,8 +42,8 @@ export default {
|
|||||||
|
|
||||||
const pageState = usePageState();
|
const pageState = usePageState();
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
account: 'admin',
|
account: '',
|
||||||
passwd: '123456',
|
passwd: '',
|
||||||
});
|
});
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user