feat():租户模式
parent
4a2af4c56b
commit
4136464a03
|
@ -1,5 +1,6 @@
|
||||||
package com.muyu.config;
|
package com.muyu.config;
|
||||||
|
|
||||||
|
import com.muyu.system.exception.BasicException;
|
||||||
import com.muyu.web.common.Result;
|
import com.muyu.web.common.Result;
|
||||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||||
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||||
|
@ -23,4 +24,13 @@ public class ExceptionAdvice {
|
||||||
public Result<String> runtimeExceptionHandler(RuntimeException runtimeException){
|
public Result<String> runtimeExceptionHandler(RuntimeException runtimeException){
|
||||||
return Result.error(runtimeException.getMessage());
|
return Result.error(runtimeException.getMessage());
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 运行时异常拦截
|
||||||
|
* @param basicException 运行时异常
|
||||||
|
* @return 公共返回结果
|
||||||
|
*/
|
||||||
|
@ExceptionHandler(value = BasicException.class)
|
||||||
|
public Result<String> runtimeExceptionHandler(BasicException basicException){
|
||||||
|
return Result.error(basicException.getCode(), basicException.getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,15 @@
|
||||||
package com.muyu.config;
|
package com.muyu.config;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
||||||
|
import com.muyu.system.handle.SystemHandler;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.ibatis.reflection.MetaObject;
|
import org.apache.ibatis.reflection.MetaObject;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 填充公共字段
|
* 填充公共字段
|
||||||
|
@ -16,9 +20,18 @@ import java.util.Date;
|
||||||
public class MyMetaObjectHandler implements MetaObjectHandler {
|
public class MyMetaObjectHandler implements MetaObjectHandler {
|
||||||
@Override
|
@Override
|
||||||
public void insertFill(MetaObject metaObject) {
|
public void insertFill(MetaObject metaObject) {
|
||||||
|
String[] setterNames = metaObject.getSetterNames();
|
||||||
|
Set<String> setterNamesSet = Arrays.stream(setterNames).collect(Collectors.toSet());
|
||||||
|
if (setterNamesSet.contains("tenantId")){
|
||||||
|
this.setFieldValByName("tenantId", SystemHandler.getTenantId(),metaObject);
|
||||||
|
}
|
||||||
|
if (setterNamesSet.contains("createTime")){
|
||||||
this.setFieldValByName("createTime", new Date(), metaObject);
|
this.setFieldValByName("createTime", new Date(), metaObject);
|
||||||
|
}
|
||||||
|
if (setterNamesSet.contains("updateTime")){
|
||||||
this.setFieldValByName("updateTime", new Date(), metaObject);
|
this.setFieldValByName("updateTime", new Date(), metaObject);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateFill(MetaObject metaObject) {
|
public void updateFill(MetaObject metaObject) {
|
||||||
|
|
|
@ -4,6 +4,7 @@ import com.github.benmanes.caffeine.cache.Cache;
|
||||||
import com.muyu.system.constants.TokenConstants;
|
import com.muyu.system.constants.TokenConstants;
|
||||||
import com.muyu.system.context.SystemUserContext;
|
import com.muyu.system.context.SystemUserContext;
|
||||||
import com.muyu.system.domain.LoginUserInfo;
|
import com.muyu.system.domain.LoginUserInfo;
|
||||||
|
import com.muyu.system.exception.BasicException;
|
||||||
import com.muyu.utils.JwtUtils;
|
import com.muyu.utils.JwtUtils;
|
||||||
import io.jsonwebtoken.Claims;
|
import io.jsonwebtoken.Claims;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
@ -38,13 +39,13 @@ public class LoginInterceptor implements HandlerInterceptor {
|
||||||
// 判断当前请求是否需要被拦截
|
// 判断当前请求是否需要被拦截
|
||||||
String token = request.getHeader(TokenConstants.AUTHENTICATION);
|
String token = request.getHeader(TokenConstants.AUTHENTICATION);
|
||||||
if (StringUtils.isEmpty(token)){
|
if (StringUtils.isEmpty(token)){
|
||||||
throw new RuntimeException("未授权请求,请重新授权");
|
throw new BasicException(501,"未授权请求,请重新授权");
|
||||||
}
|
}
|
||||||
Claims claims = JwtUtils.parseToken(token);
|
Claims claims = JwtUtils.parseToken(token);
|
||||||
String userKey = JwtUtils.getUserKey(claims);
|
String userKey = JwtUtils.getUserKey(claims);
|
||||||
LoginUserInfo loginUserInfo = loginUserInfoCache.getIfPresent(userKey);
|
LoginUserInfo loginUserInfo = loginUserInfoCache.getIfPresent(userKey);
|
||||||
if (loginUserInfo == null){
|
if (loginUserInfo == null){
|
||||||
throw new RuntimeException("用户授权过期,请重新登录");
|
throw new BasicException(502,"用户授权过期,请重新登录");
|
||||||
}
|
}
|
||||||
SystemUserContext.set(loginUserInfo);
|
SystemUserContext.set(loginUserInfo);
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
package com.muyu.config.tenant;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
|
||||||
|
import com.muyu.system.handle.SystemHandler;
|
||||||
|
import com.muyu.web.utils.Convert;
|
||||||
|
import net.sf.jsqlparser.expression.Expression;
|
||||||
|
import net.sf.jsqlparser.expression.StringValue;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class CustomTenantHandler implements TenantLineHandler {
|
||||||
|
|
||||||
|
private static final ThreadLocal<Boolean> ignoreTableThreadLocal = new ThreadLocal<>();
|
||||||
|
|
||||||
|
public void ignore(){
|
||||||
|
ignoreTableThreadLocal.set(true);
|
||||||
|
}
|
||||||
|
public void remove(){
|
||||||
|
ignoreTableThreadLocal.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final Set<String> ignoreTableSet = new HashSet<String>(){{
|
||||||
|
add("user_info");
|
||||||
|
}};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Expression getTenantId() {
|
||||||
|
// 假设有一个租户上下文,能够从中获取当前用户的租户
|
||||||
|
String tenantId = SystemHandler.getTenantId();
|
||||||
|
// 返回租户ID的表达式,LongValue 是 JSQLParser 中表示 bigint 类型的 class
|
||||||
|
return new StringValue(tenantId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTenantIdColumn() {
|
||||||
|
return "tenant_id";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean ignoreTable(String tableName) {
|
||||||
|
// 根据需要返回是否忽略该表
|
||||||
|
return Convert.toBool(ignoreTableThreadLocal.get(), Boolean.FALSE) || ignoreTableSet.contains(tableName);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
package com.muyu.system.exception;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: DongZeLiang
|
||||||
|
* @date: 2024/9/13
|
||||||
|
* @Description: 公共异常
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class BasicException extends RuntimeException{
|
||||||
|
|
||||||
|
private final int code;
|
||||||
|
|
||||||
|
private final String msg;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the detail message string of this throwable.
|
||||||
|
*
|
||||||
|
* @return the detail message string of this {@code Throwable} instance
|
||||||
|
* (which may be {@code null}).
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getMessage () {
|
||||||
|
return this.msg;
|
||||||
|
}
|
||||||
|
}
|
|
@ -58,4 +58,12 @@ public class SystemHandler {
|
||||||
public static String getLoadReqUrl(){
|
public static String getLoadReqUrl(){
|
||||||
return getServerConfig().getLoadReqUrl();
|
return getServerConfig().getLoadReqUrl();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取租户ID
|
||||||
|
* @return 租户ID
|
||||||
|
*/
|
||||||
|
public static String getTenantId () {
|
||||||
|
return getUserInfo().getTenantId();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
package com.muyu.utils;
|
package com.muyu.utils;
|
||||||
|
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.Contract;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
import java.security.SecureRandom;
|
import java.security.SecureRandom;
|
||||||
|
@ -13,6 +17,7 @@ import java.util.concurrent.ThreadLocalRandom;
|
||||||
* @author muyu
|
* @author muyu
|
||||||
*/
|
*/
|
||||||
public final class UUID implements java.io.Serializable, Comparable<UUID> {
|
public final class UUID implements java.io.Serializable, Comparable<UUID> {
|
||||||
|
@Serial
|
||||||
private static final long serialVersionUID = -1185015143654744140L;
|
private static final long serialVersionUID = -1185015143654744140L;
|
||||||
/**
|
/**
|
||||||
* 此UUID的最高64有效位
|
* 此UUID的最高64有效位
|
||||||
|
@ -28,7 +33,7 @@ public final class UUID implements java.io.Serializable, Comparable<UUID> {
|
||||||
*
|
*
|
||||||
* @param data 数据
|
* @param data 数据
|
||||||
*/
|
*/
|
||||||
private UUID (byte[] data) {
|
private UUID (@NotNull byte[] data) {
|
||||||
long msb = 0;
|
long msb = 0;
|
||||||
long lsb = 0;
|
long lsb = 0;
|
||||||
assert data.length == 16 : "data must be 16 bytes in length";
|
assert data.length == 16 : "data must be 16 bytes in length";
|
||||||
|
@ -58,6 +63,8 @@ public final class UUID implements java.io.Serializable, Comparable<UUID> {
|
||||||
*
|
*
|
||||||
* @return 随机生成的 {@code UUID}
|
* @return 随机生成的 {@code UUID}
|
||||||
*/
|
*/
|
||||||
|
@NotNull
|
||||||
|
@Contract(" -> new")
|
||||||
public static UUID fastUUID () {
|
public static UUID fastUUID () {
|
||||||
return randomUUID(false);
|
return randomUUID(false);
|
||||||
}
|
}
|
||||||
|
@ -67,6 +74,8 @@ public final class UUID implements java.io.Serializable, Comparable<UUID> {
|
||||||
*
|
*
|
||||||
* @return 随机生成的 {@code UUID}
|
* @return 随机生成的 {@code UUID}
|
||||||
*/
|
*/
|
||||||
|
@NotNull
|
||||||
|
@Contract(" -> new")
|
||||||
public static UUID randomUUID () {
|
public static UUID randomUUID () {
|
||||||
return randomUUID(true);
|
return randomUUID(true);
|
||||||
}
|
}
|
||||||
|
@ -78,6 +87,8 @@ public final class UUID implements java.io.Serializable, Comparable<UUID> {
|
||||||
*
|
*
|
||||||
* @return 随机生成的 {@code UUID}
|
* @return 随机生成的 {@code UUID}
|
||||||
*/
|
*/
|
||||||
|
@NotNull
|
||||||
|
@Contract("_ -> new")
|
||||||
public static UUID randomUUID (boolean isSecure) {
|
public static UUID randomUUID (boolean isSecure) {
|
||||||
final Random ng = isSecure ? Holder.numberGenerator : getRandom();
|
final Random ng = isSecure ? Holder.numberGenerator : getRandom();
|
||||||
|
|
||||||
|
@ -97,6 +108,8 @@ public final class UUID implements java.io.Serializable, Comparable<UUID> {
|
||||||
*
|
*
|
||||||
* @return 根据指定数组生成的 {@code UUID}
|
* @return 根据指定数组生成的 {@code UUID}
|
||||||
*/
|
*/
|
||||||
|
@NotNull
|
||||||
|
@Contract("_ -> new")
|
||||||
public static UUID nameUUIDFromBytes (byte[] name) {
|
public static UUID nameUUIDFromBytes (byte[] name) {
|
||||||
MessageDigest md;
|
MessageDigest md;
|
||||||
try {
|
try {
|
||||||
|
@ -121,6 +134,8 @@ public final class UUID implements java.io.Serializable, Comparable<UUID> {
|
||||||
*
|
*
|
||||||
* @throws IllegalArgumentException 如果 name 与 {@link #toString} 中描述的字符串表示形式不符抛出此异常
|
* @throws IllegalArgumentException 如果 name 与 {@link #toString} 中描述的字符串表示形式不符抛出此异常
|
||||||
*/
|
*/
|
||||||
|
@NotNull
|
||||||
|
@Contract("_ -> new")
|
||||||
public static UUID fromString (String name) {
|
public static UUID fromString (String name) {
|
||||||
String[] components = name.split("-");
|
String[] components = name.split("-");
|
||||||
if (components.length != 5) {
|
if (components.length != 5) {
|
||||||
|
@ -151,6 +166,7 @@ public final class UUID implements java.io.Serializable, Comparable<UUID> {
|
||||||
*
|
*
|
||||||
* @return 值
|
* @return 值
|
||||||
*/
|
*/
|
||||||
|
@NotNull
|
||||||
private static String digits (long val, int digits) {
|
private static String digits (long val, int digits) {
|
||||||
long hi = 1L << (digits * 4);
|
long hi = 1L << (digits * 4);
|
||||||
return Long.toHexString(hi | (val & (hi - 1))).substring(1);
|
return Long.toHexString(hi | (val & (hi - 1))).substring(1);
|
||||||
|
@ -161,6 +177,7 @@ public final class UUID implements java.io.Serializable, Comparable<UUID> {
|
||||||
*
|
*
|
||||||
* @return {@link SecureRandom}
|
* @return {@link SecureRandom}
|
||||||
*/
|
*/
|
||||||
|
@NotNull
|
||||||
public static SecureRandom getSecureRandom () {
|
public static SecureRandom getSecureRandom () {
|
||||||
try {
|
try {
|
||||||
return SecureRandom.getInstance("SHA1PRNG");
|
return SecureRandom.getInstance("SHA1PRNG");
|
||||||
|
@ -318,6 +335,7 @@ public final class UUID implements java.io.Serializable, Comparable<UUID> {
|
||||||
*
|
*
|
||||||
* @see #toString(boolean)
|
* @see #toString(boolean)
|
||||||
*/
|
*/
|
||||||
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public String toString () {
|
public String toString () {
|
||||||
return toString(false);
|
return toString(false);
|
||||||
|
@ -348,11 +366,12 @@ public final class UUID implements java.io.Serializable, Comparable<UUID> {
|
||||||
*
|
*
|
||||||
* @return 此{@code UUID} 的字符串表现形式
|
* @return 此{@code UUID} 的字符串表现形式
|
||||||
*/
|
*/
|
||||||
|
@NotNull
|
||||||
public String toString (boolean isSimple) {
|
public String toString (boolean isSimple) {
|
||||||
final StringBuilder builder = new StringBuilder(isSimple ? 32 : 36);
|
final StringBuilder builder = new StringBuilder(isSimple ? 32 : 36);
|
||||||
// time_low
|
// time_low
|
||||||
builder.append(digits(mostSigBits >> 32, 8));
|
builder.append(digits(mostSigBits >> 32, 8));
|
||||||
if (false == isSimple) {
|
if (!isSimple) {
|
||||||
builder.append('-');
|
builder.append('-');
|
||||||
}
|
}
|
||||||
// time_mid
|
// time_mid
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.muyu.web.domain;
|
package com.muyu.web.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
@ -19,7 +20,7 @@ import java.util.Date;
|
||||||
@Builder
|
@Builder
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@TableName("route_info")
|
@TableName("position_route_info")
|
||||||
public class PositionRouteInfo {
|
public class PositionRouteInfo {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -28,6 +29,12 @@ public class PositionRouteInfo {
|
||||||
@TableId("id")
|
@TableId("id")
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 租户ID
|
||||||
|
*/
|
||||||
|
@TableField(value = "tenant_id", fill = FieldFill.INSERT)
|
||||||
|
private String tenantId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 名称
|
* 名称
|
||||||
*/
|
*/
|
||||||
|
@ -37,12 +44,12 @@ public class PositionRouteInfo {
|
||||||
/**
|
/**
|
||||||
* 数据
|
* 数据
|
||||||
*/
|
*/
|
||||||
@TableField(value = "data")
|
@TableField(value = "route_data")
|
||||||
private String routeData;
|
private String routeData;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
@TableField(value = "create_time")
|
@TableField(value = "create_time", fill = FieldFill.INSERT)
|
||||||
private Date createTime;
|
private Date createTime;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
package com.muyu.web.domain;
|
package com.muyu.web.domain;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
|
||||||
import com.muyu.web.domain.model.ServerConfigModel;
|
import com.muyu.web.domain.model.ServerConfigModel;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
|
@ -36,6 +34,7 @@ public class ServerConfig {
|
||||||
/**
|
/**
|
||||||
* 租户ID
|
* 租户ID
|
||||||
*/
|
*/
|
||||||
|
@TableField(value = "tenant_id", fill = FieldFill.INSERT)
|
||||||
private String tenantId;
|
private String tenantId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
package com.muyu.web.domain;
|
package com.muyu.web.domain;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
|
||||||
import com.muyu.web.utils.VehicleUtils;
|
|
||||||
import com.muyu.vehicle.VehicleInstance;
|
import com.muyu.vehicle.VehicleInstance;
|
||||||
import com.muyu.vehicle.model.VehicleData;
|
import com.muyu.vehicle.model.VehicleData;
|
||||||
|
import com.muyu.web.utils.VehicleUtils;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
@ -27,11 +25,24 @@ import java.util.Date;
|
||||||
@TableName("vehicle_info")
|
@TableName("vehicle_info")
|
||||||
public class VehicleInfo {
|
public class VehicleInfo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键
|
||||||
|
*/
|
||||||
|
@TableId(
|
||||||
|
value = "id",
|
||||||
|
type = IdType.AUTO
|
||||||
|
)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* VIN
|
* VIN
|
||||||
*/
|
*/
|
||||||
@TableId(value = "vin")
|
|
||||||
private String vin;
|
private String vin;
|
||||||
|
/**
|
||||||
|
* VIN
|
||||||
|
*/
|
||||||
|
@TableField(value = "tenant_id", fill = FieldFill.INSERT)
|
||||||
|
private String tenantId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 电池剩余电量
|
* 电池剩余电量
|
||||||
|
@ -54,7 +65,7 @@ public class VehicleInfo {
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
@TableField("create_time")
|
@TableField(value = "create_time", fill = FieldFill.INSERT)
|
||||||
private Date createTime;
|
private Date createTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
@supports(-webkit-mask:none) and (not (cater-color:#fff)){.login-container .el-input input{color:#fff}}.login-container .el-input{display:inline-block;height:47px;width:85%}.login-container .el-input input{background:transparent;border:0;-webkit-appearance:none;border-radius:0;padding:12px 5px 12px 15px;color:#fff;height:47px;caret-color:#fff}.login-container .el-input input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #283443 inset!important;box-shadow:inset 0 0 0 1000px #283443!important;-webkit-text-fill-color:#fff!important}.login-container .el-form-item{border:1px solid hsla(0,0%,100%,.1);background:rgba(0,0,0,.1);border-radius:5px;color:#454545}.login-container[data-v-30d4a998]{min-height:100%;width:100%;background-color:#2d3a4b;overflow:hidden}.login-container .login-form[data-v-30d4a998]{position:relative;width:520px;max-width:100%;padding:160px 35px 0;margin:0 auto;overflow:hidden}.login-container .tips[data-v-30d4a998]{font-size:14px;color:#fff;margin-bottom:10px}.login-container .tips span[data-v-30d4a998]:first-of-type{margin-right:16px}.login-container .svg-container[data-v-30d4a998]{padding:6px 5px 6px 15px;color:#889aa4;vertical-align:middle;width:30px;display:inline-block}.login-container .title-container[data-v-30d4a998]{position:relative}.login-container .title-container .title[data-v-30d4a998]{font-size:26px;color:#eee;margin:0 auto 40px auto;text-align:center;font-weight:700}.login-container .show-pwd[data-v-30d4a998]{position:absolute;right:10px;top:7px;font-size:16px;color:#889aa4;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
|
@supports(-webkit-mask:none) and (not (cater-color:#fff)){.login-container .el-input input{color:#fff}}.login-container .el-input{display:inline-block;height:47px;width:85%}.login-container .el-input input{background:transparent;border:0;-webkit-appearance:none;border-radius:0;padding:12px 5px 12px 15px;color:#fff;height:47px;caret-color:#fff}.login-container .el-input input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #283443 inset!important;box-shadow:inset 0 0 0 1000px #283443!important;-webkit-text-fill-color:#fff!important}.login-container .el-form-item{border:1px solid hsla(0,0%,100%,.1);background:rgba(0,0,0,.1);border-radius:5px;color:#454545}.login-container[data-v-5f7d9308]{min-height:100%;width:100%;background-color:#2d3a4b;overflow:hidden}.login-container .login-form[data-v-5f7d9308]{position:relative;width:520px;max-width:100%;padding:160px 35px 0;margin:0 auto;overflow:hidden}.login-container .tips[data-v-5f7d9308]{font-size:14px;color:#fff;margin-bottom:10px}.login-container .tips span[data-v-5f7d9308]:first-of-type{margin-right:16px}.login-container .svg-container[data-v-5f7d9308]{padding:6px 5px 6px 15px;color:#889aa4;vertical-align:middle;width:30px;display:inline-block}.login-container .title-container[data-v-5f7d9308]{position:relative}.login-container .title-container .title[data-v-5f7d9308]{font-size:26px;color:#eee;margin:0 auto 40px auto;text-align:center;font-weight:700}.login-container .show-pwd[data-v-5f7d9308]{position:absolute;right:10px;top:7px;font-size:16px;color:#889aa4;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
|
|
@ -0,0 +1 @@
|
||||||
|
.app-container[data-v-3ff4666e]{padding:10px 5px 0 10px;background-color:#f4f4f5}.el-row[data-v-3ff4666e]{&:last-child{margin-bottom:0}}.bg-purple[data-v-3ff4666e]{background:#f4f4f5}.grid-content[data-v-3ff4666e]{border-radius:4px;overflow-x:hidden;overflow-y:auto}.grid-content[data-v-3ff4666e]::-webkit-scrollbar{width:4px}.grid-content[data-v-3ff4666e]::-webkit-scrollbar-thumb{border-radius:10px;background:rgba(0,0,0,.2)}.grid-content[data-v-3ff4666e]::-webkit-scrollbar-track{border-radius:0;background:rgba(0,0,0,.1)}.vehicleDiv[data-v-3ff4666e]{height:50px;margin:0 0 10px 0}.contentMain[data-v-3ff4666e]{margin-top:10px}.vehicleDataTab[data-v-3ff4666e]{width:100%;overflow-y:auto;overflow-x:hidden}.vehicleDataTab[data-v-3ff4666e]::-webkit-scrollbar{width:4px}.vehicleDataTab[data-v-3ff4666e]::-webkit-scrollbar-thumb{border-radius:10px;background:rgba(0,0,0,.2)}.vehicleDataTab[data-v-3ff4666e]::-webkit-scrollbar-track{border-radius:0;background:rgba(0,0,0,.1)}.el-form-item__label[data-v-3ff4666e]{padding:0}.el-form-item[data-v-3ff4666e]{margin-bottom:5px}
|
|
@ -1 +0,0 @@
|
||||||
.app-container[data-v-26d8c57e]{padding:10px 5px 0 10px;background-color:#f4f4f5}.el-row[data-v-26d8c57e]{&:last-child{margin-bottom:0}}.bg-purple[data-v-26d8c57e]{background:#f4f4f5}.grid-content[data-v-26d8c57e]{border-radius:4px;overflow-x:hidden;overflow-y:auto}.grid-content[data-v-26d8c57e]::-webkit-scrollbar{width:4px}.grid-content[data-v-26d8c57e]::-webkit-scrollbar-thumb{border-radius:10px;background:rgba(0,0,0,.2)}.grid-content[data-v-26d8c57e]::-webkit-scrollbar-track{border-radius:0;background:rgba(0,0,0,.1)}.vehicleDiv[data-v-26d8c57e]{height:50px;margin:0 0 10px 0}.contentMain[data-v-26d8c57e]{margin-top:10px}.vehicleDataTab[data-v-26d8c57e]{width:100%;overflow-y:auto;overflow-x:hidden}.vehicleDataTab[data-v-26d8c57e]::-webkit-scrollbar{width:4px}.vehicleDataTab[data-v-26d8c57e]::-webkit-scrollbar-thumb{border-radius:10px;background:rgba(0,0,0,.2)}.vehicleDataTab[data-v-26d8c57e]::-webkit-scrollbar-track{border-radius:0;background:rgba(0,0,0,.1)}.el-form-item__label[data-v-26d8c57e]{padding:0}.el-form-item[data-v-26d8c57e]{margin-bottom:5px}
|
|
|
@ -1 +1 @@
|
||||||
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><link rel=icon href=/favicon.ico><title>车辆</title><link href=/static/css/app.63269458.css rel=preload as=style><link href=/static/css/chunk-elementUI.c1c3b808.css rel=preload as=style><link href=/static/css/chunk-libs.3dfb7769.css rel=preload as=style><link href=/static/js/app.8eebfa14.js rel=preload as=script><link href=/static/js/chunk-elementUI.2491fb2f.js rel=preload as=script><link href=/static/js/chunk-libs.5e39c7d0.js rel=preload as=script><link href=/static/css/chunk-elementUI.c1c3b808.css rel=stylesheet><link href=/static/css/chunk-libs.3dfb7769.css rel=stylesheet><link href=/static/css/app.63269458.css rel=stylesheet></head><body><noscript><strong>We're sorry but 车辆 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script>(function(e){function t(t){for(var r,o,a=t[0],f=t[1],i=t[2],l=0,s=[];l<a.length;l++)o=a[l],Object.prototype.hasOwnProperty.call(u,o)&&u[o]&&s.push(u[o][0]),u[o]=0;for(r in f)Object.prototype.hasOwnProperty.call(f,r)&&(e[r]=f[r]);d&&d(t);while(s.length)s.shift()();return c.push.apply(c,i||[]),n()}function n(){for(var e,t=0;t<c.length;t++){for(var n=c[t],r=!0,o=1;o<n.length;o++){var a=n[o];0!==u[a]&&(r=!1)}r&&(c.splice(t--,1),e=f(f.s=n[0]))}return e}var r={},o={runtime:0},u={runtime:0},c=[];function a(e){return f.p+"static/js/"+({}[e]||e)+"."+{"chunk-22cea610":"7879ff8f","chunk-27278b10":"9fae002a","chunk-3f128364":"a125ba12","chunk-5e598597":"395e8d2d","chunk-6f60c8f1":"f16bf298","chunk-0e8cf5f4":"b7552abc","chunk-7d1a163b":"4d8cc933"}[e]+".js"}function f(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,f),n.l=!0,n.exports}f.e=function(e){var t=[],n={"chunk-22cea610":1,"chunk-27278b10":1,"chunk-3f128364":1,"chunk-5e598597":1,"chunk-0e8cf5f4":1};o[e]?t.push(o[e]):0!==o[e]&&n[e]&&t.push(o[e]=new Promise((function(t,n){for(var r="static/css/"+({}[e]||e)+"."+{"chunk-22cea610":"3c7f5ad9","chunk-27278b10":"887652d5","chunk-3f128364":"22503e40","chunk-5e598597":"fd551682","chunk-6f60c8f1":"31d6cfe0","chunk-0e8cf5f4":"3328abfd","chunk-7d1a163b":"31d6cfe0"}[e]+".css",u=f.p+r,c=document.getElementsByTagName("link"),a=0;a<c.length;a++){var i=c[a],l=i.getAttribute("data-href")||i.getAttribute("href");if("stylesheet"===i.rel&&(l===r||l===u))return t()}var s=document.getElementsByTagName("style");for(a=0;a<s.length;a++){i=s[a],l=i.getAttribute("data-href");if(l===r||l===u)return t()}var d=document.createElement("link");d.rel="stylesheet",d.type="text/css",d.onload=t,d.onerror=function(t){var r=t&&t.target&&t.target.src||u,c=new Error("Loading CSS chunk "+e+" failed.\n("+r+")");c.code="CSS_CHUNK_LOAD_FAILED",c.request=r,delete o[e],d.parentNode.removeChild(d),n(c)},d.href=u;var h=document.getElementsByTagName("head")[0];h.appendChild(d)})).then((function(){o[e]=0})));var r=u[e];if(0!==r)if(r)t.push(r[2]);else{var c=new Promise((function(t,n){r=u[e]=[t,n]}));t.push(r[2]=c);var i,l=document.createElement("script");l.charset="utf-8",l.timeout=120,f.nc&&l.setAttribute("nonce",f.nc),l.src=a(e);var s=new Error;i=function(t){l.onerror=l.onload=null,clearTimeout(d);var n=u[e];if(0!==n){if(n){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;s.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",s.name="ChunkLoadError",s.type=r,s.request=o,n[1](s)}u[e]=void 0}};var d=setTimeout((function(){i({type:"timeout",target:l})}),12e4);l.onerror=l.onload=i,document.head.appendChild(l)}return Promise.all(t)},f.m=e,f.c=r,f.d=function(e,t,n){f.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},f.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(e,t){if(1&t&&(e=f(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(f.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)f.d(n,r,function(t){return e[t]}.bind(null,r));return n},f.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return f.d(t,"a",t),t},f.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},f.p="/",f.oe=function(e){throw console.error(e),e};var i=window["webpackJsonp"]=window["webpackJsonp"]||[],l=i.push.bind(i);i.push=t,i=i.slice();for(var s=0;s<i.length;s++)t(i[s]);var d=l;n()})([]);</script><script src=/static/js/chunk-elementUI.2491fb2f.js></script><script src=/static/js/chunk-libs.5e39c7d0.js></script><script src=/static/js/app.8eebfa14.js></script></body></html>
|
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><link rel=icon href=/favicon.ico><title>车辆</title><link href=/static/css/app.63269458.css rel=preload as=style><link href=/static/css/chunk-elementUI.c1c3b808.css rel=preload as=style><link href=/static/css/chunk-libs.3dfb7769.css rel=preload as=style><link href=/static/js/app.740bf904.js rel=preload as=script><link href=/static/js/chunk-elementUI.2491fb2f.js rel=preload as=script><link href=/static/js/chunk-libs.5e39c7d0.js rel=preload as=script><link href=/static/css/chunk-elementUI.c1c3b808.css rel=stylesheet><link href=/static/css/chunk-libs.3dfb7769.css rel=stylesheet><link href=/static/css/app.63269458.css rel=stylesheet></head><body><noscript><strong>We're sorry but 车辆 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script>(function(e){function t(t){for(var r,o,a=t[0],f=t[1],i=t[2],l=0,d=[];l<a.length;l++)o=a[l],Object.prototype.hasOwnProperty.call(u,o)&&u[o]&&d.push(u[o][0]),u[o]=0;for(r in f)Object.prototype.hasOwnProperty.call(f,r)&&(e[r]=f[r]);s&&s(t);while(d.length)d.shift()();return c.push.apply(c,i||[]),n()}function n(){for(var e,t=0;t<c.length;t++){for(var n=c[t],r=!0,o=1;o<n.length;o++){var a=n[o];0!==u[a]&&(r=!1)}r&&(c.splice(t--,1),e=f(f.s=n[0]))}return e}var r={},o={runtime:0},u={runtime:0},c=[];function a(e){return f.p+"static/js/"+({}[e]||e)+"."+{"chunk-0df6049d":"652396eb","chunk-22cea610":"7879ff8f","chunk-24e6d936":"285324d6","chunk-3f128364":"a125ba12","chunk-6f60c8f1":"f16bf298","chunk-0e8cf5f4":"b7552abc","chunk-7d1a163b":"4d8cc933"}[e]+".js"}function f(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,f),n.l=!0,n.exports}f.e=function(e){var t=[],n={"chunk-0df6049d":1,"chunk-22cea610":1,"chunk-24e6d936":1,"chunk-3f128364":1,"chunk-0e8cf5f4":1};o[e]?t.push(o[e]):0!==o[e]&&n[e]&&t.push(o[e]=new Promise((function(t,n){for(var r="static/css/"+({}[e]||e)+"."+{"chunk-0df6049d":"970f2904","chunk-22cea610":"3c7f5ad9","chunk-24e6d936":"a515fcdd","chunk-3f128364":"22503e40","chunk-6f60c8f1":"31d6cfe0","chunk-0e8cf5f4":"3328abfd","chunk-7d1a163b":"31d6cfe0"}[e]+".css",u=f.p+r,c=document.getElementsByTagName("link"),a=0;a<c.length;a++){var i=c[a],l=i.getAttribute("data-href")||i.getAttribute("href");if("stylesheet"===i.rel&&(l===r||l===u))return t()}var d=document.getElementsByTagName("style");for(a=0;a<d.length;a++){i=d[a],l=i.getAttribute("data-href");if(l===r||l===u)return t()}var s=document.createElement("link");s.rel="stylesheet",s.type="text/css",s.onload=t,s.onerror=function(t){var r=t&&t.target&&t.target.src||u,c=new Error("Loading CSS chunk "+e+" failed.\n("+r+")");c.code="CSS_CHUNK_LOAD_FAILED",c.request=r,delete o[e],s.parentNode.removeChild(s),n(c)},s.href=u;var h=document.getElementsByTagName("head")[0];h.appendChild(s)})).then((function(){o[e]=0})));var r=u[e];if(0!==r)if(r)t.push(r[2]);else{var c=new Promise((function(t,n){r=u[e]=[t,n]}));t.push(r[2]=c);var i,l=document.createElement("script");l.charset="utf-8",l.timeout=120,f.nc&&l.setAttribute("nonce",f.nc),l.src=a(e);var d=new Error;i=function(t){l.onerror=l.onload=null,clearTimeout(s);var n=u[e];if(0!==n){if(n){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;d.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",d.name="ChunkLoadError",d.type=r,d.request=o,n[1](d)}u[e]=void 0}};var s=setTimeout((function(){i({type:"timeout",target:l})}),12e4);l.onerror=l.onload=i,document.head.appendChild(l)}return Promise.all(t)},f.m=e,f.c=r,f.d=function(e,t,n){f.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},f.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(e,t){if(1&t&&(e=f(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(f.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)f.d(n,r,function(t){return e[t]}.bind(null,r));return n},f.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return f.d(t,"a",t),t},f.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},f.p="/",f.oe=function(e){throw console.error(e),e};var i=window["webpackJsonp"]=window["webpackJsonp"]||[],l=i.push.bind(i);i.push=t,i=i.slice();for(var d=0;d<i.length;d++)t(i[d]);var s=l;n()})([]);</script><script src=/static/js/chunk-elementUI.2491fb2f.js></script><script src=/static/js/chunk-libs.5e39c7d0.js></script><script src=/static/js/app.740bf904.js></script></body></html>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1 @@
|
||||||
|
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-0df6049d"],{4658:function(e,t,n){},"884f":function(e,t,n){"use strict";n("4658")},"9ed6":function(e,t,n){"use strict";n.r(t);var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"login-container"},[n("el-form",{ref:"loginForm",staticClass:"login-form",attrs:{model:e.loginForm,rules:e.loginRules,"auto-complete":"on","label-position":"left"}},[n("div",{staticClass:"title-container"},[n("h3",{staticClass:"title"},[e._v("车辆模拟")])]),n("el-form-item",{attrs:{prop:"userName"}},[n("span",{staticClass:"svg-container"},[n("svg-icon",{attrs:{"icon-class":"user"}})],1),n("el-input",{ref:"userName",attrs:{placeholder:"userName",name:"userName",type:"text",tabindex:"1","auto-complete":"on"},model:{value:e.loginForm.userName,callback:function(t){e.$set(e.loginForm,"userName",t)},expression:"loginForm.userName"}})],1),n("el-form-item",{attrs:{prop:"password"}},[n("span",{staticClass:"svg-container"},[n("svg-icon",{attrs:{"icon-class":"password"}})],1),n("el-input",{ref:"password",attrs:{type:"password",placeholder:"Password",name:"password",tabindex:"2","auto-complete":"on"},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleLogin(t)}},model:{value:e.loginForm.password,callback:function(t){e.$set(e.loginForm,"password",t)},expression:"loginForm.password"}})],1),n("el-button",{staticStyle:{width:"48%","margin-bottom":"30px"},attrs:{loading:e.loading,type:"primary"},nativeOn:{click:function(t){return t.preventDefault(),e.handleLogin(t)}}},[e._v("登录系统")]),n("el-button",{staticStyle:{width:"48%","margin-bottom":"30px","margin-left":"4%"},attrs:{loading:e.loading,type:"primary"},nativeOn:{click:function(t){return t.preventDefault(),e.handleLogin(t)}}},[e._v("注册系统")])],1)],1)},o=[],i={name:"Login",data:function(){return{loginForm:{userName:"",password:""},loginRules:{userName:[{required:!0,trigger:"blur"}],password:[{required:!0,trigger:"blur"}]},loading:!1,passwordType:"password",redirect:void 0}},watch:{$route:{handler:function(e){this.redirect=e.query&&e.query.redirect},immediate:!0}},methods:{handleLogin:function(){var e=this;this.$refs.loginForm.validate((function(t){if(!t)return console.log("error submit!!"),!1;e.loading=!0,e.$store.dispatch("user/login",e.loginForm).then((function(){e.$router.push({path:e.redirect||"/"}),e.loading=!1})).catch((function(){e.loading=!1})),e.$router.push({path:e.redirect||"/"})}))}}},a=i,s=(n("884f"),n("efc9"),n("2877")),l=Object(s["a"])(a,r,o,!1,null,"5f7d9308",null);t["default"]=l.exports},a7f1:function(e,t,n){},efc9:function(e,t,n){"use strict";n("a7f1")}}]);
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +0,0 @@
|
||||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-5e598597"],{4927:function(e,t,r){"use strict";r("7ef9")},5709:function(e,t,r){},"7ef9":function(e,t,r){},"9ed6":function(e,t,r){"use strict";r.r(t);var o=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"login-container"},[r("el-form",{ref:"loginForm",staticClass:"login-form",attrs:{model:e.loginForm,rules:e.loginRules,"auto-complete":"on","label-position":"left"}},[r("div",{staticClass:"title-container"},[r("h3",{staticClass:"title"},[e._v("车辆模拟")])]),r("el-form-item",{attrs:{prop:"userName"}},[r("span",{staticClass:"svg-container"},[r("svg-icon",{attrs:{"icon-class":"user"}})],1),r("el-input",{ref:"userName",attrs:{placeholder:"userName",name:"userName",type:"text",tabindex:"1","auto-complete":"on"},model:{value:e.loginForm.userName,callback:function(t){e.$set(e.loginForm,"userName",t)},expression:"loginForm.userName"}})],1),r("el-form-item",{attrs:{prop:"password"}},[r("span",{staticClass:"svg-container"},[r("svg-icon",{attrs:{"icon-class":"password"}})],1),r("el-input",{ref:"password",attrs:{type:"password",placeholder:"Password",name:"password",tabindex:"2","auto-complete":"on"},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleLogin(t)}},model:{value:e.loginForm.password,callback:function(t){e.$set(e.loginForm,"password",t)},expression:"loginForm.password"}})],1),r("el-button",{staticStyle:{width:"100%","margin-bottom":"30px"},attrs:{loading:e.loading,type:"primary"},nativeOn:{click:function(t){return t.preventDefault(),e.handleLogin(t)}}},[e._v("进入")])],1)],1)},n=[],s={name:"Login",data:function(){return{loginForm:{userName:"",password:""},loginRules:{userName:[{required:!0,trigger:"blur"}],password:[{required:!0,trigger:"blur"}]},loading:!1,passwordType:"password",redirect:void 0}},watch:{$route:{handler:function(e){this.redirect=e.query&&e.query.redirect},immediate:!0}},methods:{handleLogin:function(){var e=this;this.$refs.loginForm.validate((function(t){if(!t)return console.log("error submit!!"),!1;e.loading=!0,e.$store.dispatch("user/login",e.loginForm).then((function(){e.$router.push({path:e.redirect||"/"}),e.loading=!1})).catch((function(){e.loading=!1})),e.$router.push({path:e.redirect||"/"})}))}}},i=s,a=(r("4927"),r("ce52"),r("2877")),l=Object(a["a"])(i,o,n,!1,null,"30d4a998",null);t["default"]=l.exports},ce52:function(e,t,r){"use strict";r("5709")}}]);
|
|
Loading…
Reference in New Issue