Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Fedex
/
iClear-Connect-Pre-Clearance
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
jinhui.wang
2024-11-20 18:08:23 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
7581d373ba0c50acf04163ab09613101365bfd2d
7581d373
1 parent
7bb9089a
接口增加逻辑增加
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
45 additions
and
1184 deletions
web/src/api/login.js
web/src/api/system/dictionary.js
web/src/api/system/user.js
web/src/api/waybillInquiry.js
web/src/i18n/en.js
web/src/main.js
web/src/store/modules/permission.js
web/src/store/modules/user.js
web/src/utils/request.js
web/src/views/fedexLogin/loginForm.vue
web/src/views/login.vue
web/src/api/login.js
View file @
7581d37
...
...
@@ -8,75 +8,10 @@ export function fclInit() {
});
}
// 获取用户详细信息
export
function
getInfo
()
{
return
request
({
url
:
"/manager-server/user/getUser"
,
method
:
"get"
,
});
}
// 登录界面查询用户,可用不要token
export
function
getUserNotoken
()
{
return
request
({
url
:
"/icleartw/auth/getUser"
,
method
:
"get"
,
});
}
// 根据账号获取用户信息
export
function
getUserByAccNo
(
data
)
{
return
request
({
url
:
"/icleartw/auth/getUserByAccNo/"
+
data
,
method
:
"get"
,
});
}
// 退出
export
function
logout
()
{
return
request
({
url
:
"/manager-server/auth/logout"
,
method
:
"post"
,
});
}
// 注册账号
export
function
addUser
(
data
)
{
return
request
({
url
:
"/icleartw/auth/addUser"
,
method
:
"post"
,
data
:
data
,
});
}
// 登录
export
function
userLogin
(
accNo
,
password
,
rememberMe
)
{
const
data
=
{
accNo
,
password
,
rememberMe
,
};
return
request
({
url
:
"/icleartw/auth/login"
,
method
:
"post"
,
data
:
data
,
});
}
// 根据用户账号发送修改密码邮件
export
function
updPwd
(
data
)
{
return
request
({
url
:
"/icleartw/auth/updPwd/"
+
data
,
method
:
"get"
,
});
}
// 重置密碼
export
function
resetPwd
(
data
)
{
return
request
({
url
:
"/icleartw/auth/resetPwd"
,
method
:
"post"
,
data
:
data
,
});
}
// 根据用户账号发送修改密码邮件
export
function
verifyResetPwd
(
data
)
{
return
request
({
url
:
"/icleartw/auth/verifyResetPwd/"
+
data
,
method
:
"get"
,
});
}
\ No newline at end of file
...
...
web/src/api/system/dictionary.js
View file @
7581d37
import
request
from
'@/utils/request'
// 上传状态
/**
*/
export
function
getUploadStatus
()
{
return
request
({
url
:
"/manager-server/dicEntries/getConsStatus"
,
method
:
"get"
,
});
}
...
...
web/src/api/system/user.js
View file @
7581d37
import
request
from
'@/utils/request'
import
{
praseStrEmpty
}
from
"@/utils/FedEx"
;
// 查询用户列表
/**
* @param page 页码 *
* @param size 数据长度 *
* @param isValid 用户状态
* @param username 用户名
* @param phone 手机号码
*/
export
function
listUser
(
data
)
{
return
request
({
url
:
'/sysUser/getUserList'
,
method
:
'post'
,
data
:
data
})
}
// 查询用户详细
/**
* @param id 用户id *
*/
export
function
detailUser
(
userId
)
{
return
request
({
url
:
'/sysUser/detailUser?id='
+
praseStrEmpty
(
userId
),
method
:
'get'
})
}
// 新增用户
/**
* @param loginName 员工号 *
* @param username 用户姓名 *
* @param phone 手机号
* @param email 电子邮箱
* @param portName 所属口岸 *
* @param roleIds 所属角色 *
* @param remark 备注
*/
export
function
addOrUpdateUser
(
data
)
{
return
request
({
url
:
'/sysUser/addOrUpdateUser'
,
method
:
'post'
,
data
:
data
})
}
// 修改用户状态
/**
* @param id 用户id *
* @param loginName 员工号 *
* @param username 用户姓名 *
* @param phone 手机号
* @param email 电子邮箱
* @param portName 所属口岸 *
* @param roleIds 所属角色 *
* @param remark 备注
*/
export
function
updateUserStatus
(
data
)
{
return
request
({
url
:
'/sysUser/updateUserStatus'
,
method
:
'post'
,
data
:
data
})
}
//菜单信息
/**
* @param
*/
export
function
getAllAuth
()
{
return
request
({
url
:
'/sysMenu/getAllAuth'
,
method
:
'get'
})
}
//菜单开启关闭
/**
* @param id 菜单id *
* @param status 菜单状态 *
*/
export
function
updateStatus
(
data
)
{
return
request
({
url
:
'/sysMenu/updateStatus'
,
method
:
'post'
,
data
:
data
})
}
//角色列表
/**
* @param name 角色名称
* @param size 数据长度 *
* @param page 页码 *
* @param createStart 创建开始时间
* @param createEnd 创建结束时间
* @param valid 角色状态
*/
export
function
getRoleList
(
data
)
{
// 获取用户详细信息
export
function
getInfo
()
{
return
request
({
url
:
'/role/getRoleList'
,
method
:
'post'
,
data
:
data
})
}
//角色详情
/**
* @param id 角色id *
*/
export
function
detailRole
(
id
)
{
return
request
({
url
:
'/role/detailRole?id='
+
id
,
method
:
'get'
,
})
}
//新增修改角色
/**
* @param id 角色id *
* @param name 角色名 *
* @param remark 角色描述
* @param menuIds 角色权限
* @param valid 角色状态
*/
export
function
addOrUpdateRole
(
data
)
{
return
request
({
url
:
'/role/addOrUpdateRole'
,
method
:
'post'
,
data
:
data
})
}
//角色状态修改
/**
* @param id 角色id *
* @param valid 角色状态 *
*/
export
function
updateRoleStatus
(
data
)
{
return
request
({
url
:
'/role/updateRoleStatus'
,
method
:
'post'
,
data
:
data
})
}
//口岸列表
/**
* @param
*/
export
function
portNameList
()
{
return
request
({
url
:
'/dictionary/port'
,
method
:
'get'
,
})
}
//口岸变更
/**
* @param
*/
export
function
changeCurrentPort
(
data
)
{
return
request
({
url
:
'/sysUser/changeCurrentPort'
,
method
:
'post'
,
data
:
data
})
}
//获取用户设置表头
/**
* @param tableName 表名 *
*/
export
function
getHeaderOrder
(
data
)
{
return
request
({
url
:
'/table/getHeaderOrder?'
+
data
,
method
:
'get'
,
})
url
:
"/manager-server/user/getUser"
,
method
:
"get"
,
});
}
//
保存用户设置表头
//
修改用户提示状态
/**
* @param
tableName 表名 *
* @param
idList 显示表头集合 *
* @param
addFlag1 * 标致1
* @param
addFlag2 * 标志2
*/
export
function
saveTableHeader
(
data
)
{
export
function
uploadUserTipFlag
(
data
)
{
return
request
({
url
:
'/
table/saveTableHeader
'
,
url
:
'/
manager-server/user/updateAddFlag
'
,
method
:
'post'
,
data
:
data
})
...
...
web/src/api/waybillInquiry.js
0 → 100644
View file @
7581d37
import
request
from
"@/utils/request"
;
// 运单查询
/**
* @param createTimeFrom
* @param createTimeTo
* @param consignmentCode
* @param sort
* @param curPage * 页数
* @param pageSize * 页长
*/
export
function
getwaybillData
(
data
)
{
return
request
({
url
:
"/biz-customer/consignment/query/list"
,
method
:
"post"
,
data
:
data
});
}
web/src/i18n/en.js
View file @
7581d37
...
...
@@ -86,7 +86,7 @@ export default {
onlineDeclare
:
"線上申報平臺帳號登錄"
,
registerNumber
:
"register a fedex.com account"
,
userInfo
:
"用戶信息維護"
,
logOut
:
"log
out"
,
logOut
:
"logout"
,
logOutDia
:
"Are you sure to log out and exit the system?"
,
},
// 申报输入
...
...
web/src/main.js
View file @
7581d37
...
...
@@ -43,7 +43,7 @@ import tableHeaders from "@/assets/languages/tableHeaders";
import
dictLabels
from
"@/assets/languages/dictLabels.js"
;
import
settings
from
"./settings.js"
;
import
*
as
filters
from
"./utils/filters.js"
;
import
{
toHead
,
numberRound
,
base64ConvertFile
,
b64ToBlob
,
titleCase
}
from
"@/utils/index"
;
import
{
toHead
,
numberRound
,
base64ConvertFile
,
b64ToBlob
,
titleCase
,
formatDate
}
from
"@/utils/index"
;
// 全局方法挂载
Vue
.
prototype
.
parseTime
=
parseTime
;
...
...
@@ -66,6 +66,7 @@ Vue.prototype.numberRound = numberRound
Vue
.
prototype
.
base64ConvertFile
=
base64ConvertFile
Vue
.
prototype
.
b64ToBlob
=
b64ToBlob
Vue
.
prototype
.
titleCase
=
titleCase
Vue
.
prototype
.
formatDate
=
formatDate
Vue
.
prototype
.
msgSuccess
=
function
(
msg
)
{
this
.
$message
({
showClose
:
true
,
message
:
msg
,
type
:
"success"
});
};
...
...
web/src/store/modules/permission.js
View file @
7581d37
...
...
@@ -46,7 +46,6 @@ const permission = {
return
new
Promise
((
resolve
)
=>
{
// 向后端请求路由数据
getRouters
().
then
((
res
)
=>
{
console
.
log
(
res
);
const
sdata
=
JSON
.
parse
(
JSON
.
stringify
(
routeItemInfo
(
res
.
data
)));
const
rdata
=
JSON
.
parse
(
JSON
.
stringify
(
routeItemInfo
(
res
.
data
)));
const
sidebarRoutes
=
filterAsyncRouter
(
sdata
);
...
...
web/src/store/modules/user.js
View file @
7581d37
import
{
userLogin
,
logout
,
getInfo
}
from
"@/api/login"
;
import
{
userLogin
,
logout
}
from
"@/api/login"
;
import
{
getInfo
}
from
"@/api/system/user.js"
import
{
getToken
,
setToken
,
removeToken
}
from
"@/utils/auth"
;
import
{
MessageBox
}
from
"element-ui"
;
...
...
web/src/utils/request.js
View file @
7581d37
...
...
@@ -58,7 +58,7 @@ service.interceptors.response.use(
const
code
=
Number
(
res
.
data
.
code
)
||
200
;
// 获取错误信息
const
msg
=
errorCode
[
code
]
||
res
.
data
.
msg
||
errorCode
[
"default"
];
if
(
code
===
301
)
{
if
(
code
===
10004
)
{
MessageBox
.
alert
(
"The login status has expired. You can continue to stay on this page or log in again."
,
"System prompt"
,
...
...
web/src/views/fedexLogin/loginForm.vue
deleted
100644 → 0
View file @
7bb9089
<template>
<div class="loginForm">
<FedexAlert
v-if="errorTip.length > 0"
class="mb20"
:tipList="errorTip"
@close="errorTipClose"
/>
<div v-if="loginType == 'login'">
<div class="form-title">{{ $t("login.userTitle") }}</div>
<el-form
class="fedexFormStyle"
style="margin-top: 100px"
ref="loginFormRef"
:model="loginForm"
:rules="loginRules"
label-position="top"
>
<Formitem :label="$t('login.userNum')" prop="accNo">
<el-input
type="text"
:id="'inputInner--accNo'"
v-model="loginForm.accNo"
auto-complete="off"
></el-input>
</Formitem>
<Formitem :label="$t('login.passWord')" prop="password">
<el-input
type="password"
:id="'inputInner--password'"
v-model="loginForm.password"
show-password
auto-complete="off"
></el-input>
</Formitem>
<el-checkbox class="mt10" v-model="loginForm.rememberMe">{{
$t("login.checkPassWord")
}}</el-checkbox>
</el-form>
<div class="form-option">
<el-button
class="entrySaveButton entrySaveButton-background"
:loading="loading"
size="medium"
type="primary"
@click.native.prevent="handleLogin"
>
<span v-if="!loading">{{ $t("login.loginBtn") }}</span>
<span v-else>{{ $t("login.loggingBtn") }}</span>
</el-button>
</div>
</div>
<div v-else-if="loginType == 'rePassword'">
<div class="form-title">{{ $t("login.resetPassWord") }}</div>
<div class="form-tip">{{ $t("login.resetTip") }}</div>
<el-form
class="fedexFormStyle"
ref="rePassword"
:model="rePasswordForm"
:rules="rePasswordFormRules"
label-position="top"
>
<Formitem :label="$t('login.userNum')" type="rePassword" prop="accNo">
<el-input
type="text"
:id="'inputInner-rePassword-accNo'"
v-model="rePasswordForm.accNo"
></el-input>
</Formitem>
</el-form>
<div class="form-option">
<el-button
class="entrySaveButton entrySaveButton-background"
size="medium"
type="primary"
@click="rePassword"
>{{ $t("login.resetPassWordBtn") }}</el-button
>
<el-button
class="entrySaveButton"
size="medium"
type="primary"
@click="loginType = 'login'"
>{{ $t("common.goBack") }}</el-button
>
</div>
</div>
<div v-else-if="loginType == 'create'">
<div class="form-title">{{ $t("login.createUserNum") }}</div>
<div class="form-tip"></div>
<el-form
class="fedexFormStyle"
ref="createUserRef"
:model="createUserForm"
:rules="createUserRules"
label-position="top"
>
<el-row :gutter="10">
<el-col :span="12">
<Formitem :label="$t('login.userNum')" type="create" prop="accNo">
<el-input
type="text"
:id="'inputInner-create-accNo'"
v-model="createUserForm.accNo"
oninput="value = value.replace(/\s+/g,'')"
auto-complete="off"
></el-input>
</Formitem>
</el-col>
<el-col :span="12">
<Formitem
:label="$t('login.userName')"
type="create"
prop="userName"
>
<el-input
type="text"
:id="'inputInner-create-userName'"
v-model="createUserForm.userName"
autocomplete="new-password"
></el-input>
</Formitem>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="12">
<Formitem
:label="$t('login.passWord')"
type="create"
prop="password"
>
<el-input
type="text"
:id="'inputInner-create-password'"
v-model="createUserForm.password"
show-password
autocomplete="new-password"
></el-input>
</Formitem>
</el-col>
<el-col :span="12">
<Formitem
:label="$t('login.confirmPassWord')"
type="create"
prop="password2"
>
<el-input
type="text"
:id="'inputInner-create-password2'"
v-model="createUserForm.password2"
show-password
auto-complete="off"
></el-input>
</Formitem>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="12">
<Formitem
:label="$t('login.fedexNum')"
type="create"
prop="fedexAccNo"
>
<el-input
type="text"
:id="'inputInner-create-fedexAccNo'"
v-model="createUserForm.fedexAccNo"
auto-complete="off"
></el-input>
</Formitem>
</el-col>
<el-col :span="12">
<Formitem
:label="$t('login.confirmFedexNum')"
type="create"
prop="fedexAccNo2"
>
<el-input
type="text"
:id="'inputInner-create-fedexAccNo2'"
v-model="createUserForm.fedexAccNo2"
auto-complete="off"
></el-input>
</Formitem>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="12">
<Formitem :label="$t('login.emailNum')" type="create" prop="email">
<el-input
type="text"
:id="'inputInner-create-email'"
v-model="createUserForm.email"
auto-complete="off"
></el-input>
</Formitem>
</el-col>
<el-col :span="12">
<Formitem :label="$t('login.phone')" type="create" prop="phone">
<el-input
type="text"
:id="'inputInner-create-phone'"
maxlength="40"
v-model="createUserForm.phone"
auto-complete="off"
></el-input>
</Formitem>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="12">
<Formitem
:label="$t('login.company')"
type="create"
prop="companyName"
>
<el-input
type="text"
:id="'inputInner-create-companyName'"
v-model="createUserForm.companyName"
auto-complete="off"
></el-input>
</Formitem>
</el-col>
<el-col :span="12">
<Formitem
:label="$t('login.unifyNum')"
type="create"
prop="unifiedBusinessNum"
>
<el-input
type="text"
:id="'inputInner-create-unifiedBusinessNum'"
maxlength="10"
oninput="value = value.replace(/\s+/g, '')"
v-model="createUserForm.unifiedBusinessNum"
auto-complete="off"
></el-input>
</Formitem>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="12">
<Formitem
:label="$t('login.customsNum')"
type="create"
prop="customsSerialNum"
>
<el-input
type="text"
:id="'inputInner-create-customsSerialNum'"
v-model="createUserForm.customsSerialNum"
auto-complete="off"
></el-input>
</Formitem>
</el-col>
</el-row>
<el-checkbox
class="mt10"
v-model="createUserForm.policyFlag"
style="margin-right: 0px"
>{{ $t("login.checkAgree1") }}</el-checkbox
><a @click="openPrivacy">{{ $t("login.policy1") }}</a>
<el-checkbox v-model="createUserForm.clauseFlag">{{
$t("login.checkAgree2_1")
}}</el-checkbox>
<span>{{ $t("login.policy2") }}</span>
<span>{{ $t("login.checkAgree2_2") }}</span
><a @click="openTermPdf">{{ $t("login.policy3") }}</a
><span>{{ $t("login.checkAgree2_3") }}</span>
</el-form>
<div class="form-option">
<el-button
class="entrySaveButton entrySaveButton-background"
size="medium"
type="primary"
@click="createUser"
>{{ $t("common.submitBtn") }}</el-button
>
<el-button
class="entrySaveButton"
size="medium"
type="primary"
@click="loginType = 'login'"
>{{ $t("common.goBack") }}</el-button
>
</div>
</div>
<div v-else-if="loginType == 'reset'">
<div class="form-title">忘記了您的用户密碼?</div>
<div class="form-tip">提供您的用戶帳號</div>
<div class="form-option">
<el-button
class="entrySaveButton entrySaveButton-background"
size="medium"
type="primary"
@click="loginType = 'rePassword'"
>重置密码</el-button
>
<el-button
class="entrySaveButton"
size="medium"
type="primary"
@click="loginType = 'login'"
>{{ $t("common.goBack") }}</el-button
>
</div>
</div>
<!-- 修改密码 -->
<div v-else-if="loginType == 'resetPwd'">
<div class="form-title">
{{ $t("login.loginPassword.resetPassword.title") }}
</div>
<div class="form-tip">
{{ $t("login.loginPassword.resetPassword.tip") }}
</div>
<el-form
class="fedexFormStyle"
ref="resetPassword"
:model="resetPasswordForm"
:rules="resetPasswordRules"
label-position="top"
>
<Formitem
:label="$t('login.loginPassword.resetPassword.loginNameLabel')"
type="reset"
prop="loginName"
>
<el-input
type="text"
:id="'inputInner-reset-loginName'"
v-model="resetPasswordForm.loginName"
disabled
autocomplete="new-password"
></el-input>
</Formitem>
<div class="formTitle" style="font-size: 16px; margin-top: 30px">
{{ $t("login.loginPassword.resetPassword.password")
}}<span class="tip">{{
$t("login.loginPassword.resetPassword.passwordTip")
}}</span>
</div>
<Formitem
:label="$t('login.loginPassword.resetPassword.newPassword')"
type="reset"
prop="password"
>
<el-input
type="password"
:id="'inputInner-reset-password'"
v-model="resetPasswordForm.password"
show-password
autocomplete="new-password"
></el-input>
</Formitem>
<Formitem
:label="$t('login.loginPassword.resetPassword.confirmPassword')"
type="reset"
prop="confirmPassword"
>
<el-input
type="password"
:id="'inputInner-reset-confirmPassword'"
show-password
v-model="resetPasswordForm.confirmPassword"
autocomplete="new-password"
></el-input>
</Formitem>
</el-form>
<div class="form-option">
<el-button
class="entrySaveButton entrySaveButton-background"
size="medium"
type="primary"
:loading="loading"
@click="resetPasswordSubmit"
>{{ $t("common.submitBtn") }}</el-button
>
<el-button
class="entrySaveButton"
size="medium"
type="primary"
@click="loginType = 'login'"
>{{ $t("common.goBack") }}</el-button
>
</div>
</div>
</div>
</template>
<script>
import {
addUser,
getUserByAccNo,
updPwd,
resetPwd,
verifyResetPwd,
} from "@/api/login.js";
export default {
props: {
loginType: {
type: String,
default: "login",
},
loginName: {
type: String,
default: "",
},
},
data() {
return {
linkList: {
privacy: process.env.VUE_APP_PRIVACT_POLICY,
term: process.env.VUE_APP_EXPRESS_FREIGHT_TERM,
},
loginForm: {
accNo: "",
password: "",
rememberMe: false,
},
createUserForm: {
accNo: "",
userName: "",
password: "",
password2: "",
fedexAccNo: "",
fedexAccNo2: "",
email: "",
phone: "",
companyName: "",
unifiedBusinessNum: "",
customsSerialNum: "",
policyFlag: false,
clauseFlag: false,
},
rePasswordForm: {
username: "",
}, //重置密码数据
resetPasswordForm: {
loginName: "",
password: null,
confirmPassword: null,
},
rePasswordData: null,
loginRules: {
accNo: [
{
required: true,
trigger: "blur",
message: "User account cannot be empty.",
},
],
password: [
{
required: true,
trigger: "blur",
message: "Password cannot be empty.",
},
],
},
rePasswordFormRules: {
accNo: [
{
required: true,
trigger: "blur",
message: "User account cannot be empty.",
},
],
},
createUserRules: {
accNo: [
{
required: true,
trigger: "blur",
message: "User account cannot be empty.",
},
{
validator: (rule, value, callback) => {
if (this.regExp.pattern.test(value)) {
callback(
"The username does not allow special characters or spaces!"
);
} else {
getUserByAccNo(value)
.then((res) => {
if (res.code == 200) {
callback("The username already exists, please change it");
} else {
callback(res.message);
}
})
.catch((err) => {
console.log(err);
});
}
},
trigger: "blur",
},
],
userName: [
{ required: true, trigger: "blur", message: "姓名不能為空" },
{
validator: (rule, value, callback) => {
if (this.regExp.pattern.test(value)) {
callback("姓名不允許存在特殊字符以及空格!");
} else {
callback();
}
},
trigger: "blur",
},
],
password: [
{ required: true, trigger: "blur", message: "密碼不能為空" },
{
validator: (rule, value, callback) => {
if (!this.regExp.passwordExp.test(value)) {
callback("大小寫字母加數字的組合,至少8位!");
} else {
callback();
}
},
trigger: "blur",
},
],
password2: [
{ required: true, trigger: "blur", message: "確認密碼不能為空" },
{
validator: (rule, value, callback) => {
if (value != this.createUserForm.password) {
callback("確認密碼必須和新密碼相同!");
} else {
callback();
}
},
trigger: "blur",
},
],
fedexAccNo: [
{ required: true, trigger: "blur", message: "FedEx帳戶不能為空" },
{
validator: (rule, value, callback) => {
if (value.length != 9) {
callback("FedEx帳戶必須為9位!");
} else {
callback();
}
},
trigger: "blur",
},
],
fedexAccNo2: [
{ required: true, trigger: "blur", message: "確認FedEx帳戶不能為空" },
{
validator: (rule, value, callback) => {
if (value != this.createUserForm.fedexAccNo) {
callback("兩次輸入的FedEx賬戶不一致!");
} else {
callback();
}
},
trigger: "blur",
},
],
email: [
{ required: true, trigger: "blur", message: "郵箱不能為空" },
{
validator: (rule, value, callback) => {
if (!this.regExp.email.test(value)) {
callback("郵箱格式不正確!");
} else if (this.regExp.emailPattern.test(value)) {
callback("郵箱地址不允許存在特殊字符以及空格!");
} else {
callback();
}
},
trigger: "blur",
},
],
phone: [
{ required: true, trigger: "blur", message: "聯系電話不能為空" },
{
validator: (rule, value, callback) => {
if (this.regExp.pattern.test(value)) {
callback("電話不允許存在特殊字符以及空格!");
} else {
callback();
}
},
trigger: "blur",
},
],
companyName: [
{ required: true, trigger: "blur", message: "公司名稱不能為空" },
],
unifiedBusinessNum: [
{
required: true,
trigger: "blur",
message: "請您輸入貨物輸出人統一編號",
},
{
validator: (rule, value, callback) => {
if (!this.regExp.expNumExp.test(value)) {
callback("貨物輸出統一編號必須是8-10位纯數字");
} else {
callback();
}
// if (value) {
// if (value.length < 8 || value.length > 10) {
// callback("貨物輸出統一編號必須是8-10位!");
// } else {
// callback();
// }
// } else {
// callback();
// }
},
trigger: "blur",
},
],
},
resetPasswordRules: {
loginName: [
{
required: true,
trigger: "blur",
message: this.$t("login.loginPassword.formCheck.resetloginName"),
},
],
password: [
{
required: true,
trigger: "blur",
message: this.$t(
"login.loginPassword.formCheck.resetPasswordPassword"
),
},
{
validator: (rule, value, callback) => {
if (!this.regExp.passwordExp.test(value)) {
callback(
this.$t("login.loginPassword.resetPassword.passwordTip")
);
} else {
callback();
}
},
trigger: "blur",
},
],
confirmPassword: [
{
required: true,
trigger: "blur",
message: this.$t(
"login.loginPassword.formCheck.resetPasswordConfirmPassword1"
),
},
{
validator: (rule, value, callback) => {
if (value != this.resetPasswordForm.password) {
callback(
this.$t(
"login.loginPassword.formCheck.resetPasswordConfirmPassword2"
)
);
} else {
callback();
}
},
trigger: "blur",
},
],
},
loading: false,
redirect: undefined,
errorTip: [],
};
},
created() {
if (localStorage.getItem("rememberMe")) {
this.loginForm = {
accNo: localStorage.getItem("accNo"),
password: localStorage.getItem("passwordItem"),
rememberMe: JSON.parse(localStorage.getItem("rememberMe")),
};
}
},
watch: {
$route: {
handler: function (route) {
this.redirect = route.query && route.query.redirect;
if (route.query.changePasswordType) {
// route.query.changePasswordType == 'resetPwd' ?
// this.resetPasswordForm.loginName = route.query.loginname : this.resetPasswordForm.loginName = '';
if (
route.query.changePasswordType == "resetPwd" &&
route.query.loginname
) {
verifyResetPwd(route.query.loginname).then((res) => {
if (res.code == 200) {
this.rePasswordData = res;
this.resetPasswordForm.loginName = res.data;
} else {
this.$alert(res.msg, "提示", {
dangerouslyUseHTMLString: true,
type: "error",
});
this.resetPasswordForm.loginName = "";
}
});
}
}
},
immediate: true,
},
},
methods: {
handleLogin() {
this.$refs.loginFormRef.validate((valid) => {
if (valid) {
this.loading = true;
if (this.loginForm.rememberMe) {
localStorage.setItem("accNo", this.loginForm.accNo, {
expires: 30,
});
localStorage.setItem("passwordItem", this.loginForm.password, {
expires: 30,
});
localStorage.setItem("rememberMe", this.loginForm.rememberMe, {
expires: 30,
});
} else {
localStorage.removeItem("accNo");
localStorage.removeItem("passwordItem");
localStorage.removeItem("rememberMe");
}
this.$store
.dispatch("Login", this.loginForm)
.then(() => {
this.$router.push({ name: "WaybillInquiry" }).catch(() => {
this.loading = false;
});
})
.catch(() => {
this.loading = false;
});
}
});
},
createUser() {
this.errorTip = [];
if (this.createUserForm.policyFlag && this.createUserForm.clauseFlag) {
this.$refs.createUserRef.validate((valid) => {
if (valid) {
addUser(this.createUserForm)
.then((res) => {
if (res.code == "200") {
this.$alert("註冊成功", "提示", {
dangerouslyUseHTMLString: true,
type: "success",
})
.then(() => {
this.loginType = "login";
})
.catch(() => {
this.loginType = "login";
});
} else {
this.errorTip = [res.msg];
}
})
.catch((err) => {
console.log(err);
});
}
});
} else {
this.errorTip = ["请先確認相关协议政策后在进行提交!"];
}
},
rePassword() {
this.$refs.rePassword.validate((valid) => {
if (valid) {
//根据用户账号发送修改密码邮件
updPwd(this.rePasswordForm.accNo)
.then((res) => {
if (res.code == 200) {
this.$alert(
this.$t("login.loginPassword.resetPassword.sendEmail"),
"提示",
{
dangerouslyUseHTMLString: true,
type: "success",
}
).then(() => {
this.loginType = "login";
});
} else {
this.$alert(res.msg, "提示", {
dangerouslyUseHTMLString: true,
type: "warning",
});
}
})
.catch((err) => {
console.log(err);
});
}
});
},
errorTipClose() {
this.errorTip = [];
},
openPrivacy() {
window.open(this.linkList.privacy);
},
openTermPdf() {
window.open(this.linkList.term);
},
//重置密码
resetPasswordSubmit() {
this.$refs.resetPassword.validate((valid) => {
if (valid) {
// verifyResetPwd(this.resetPasswordForm.loginName).then(res => {
if (this.rePasswordData.code == 200) {
resetPwd({
accNo: this.rePasswordData.data,
newPwd: this.resetPasswordForm.password,
newPwd2: this.resetPasswordForm.confirmPassword,
}).then((res1) => {
if (res1.code == 200) {
this.$alert(res1.msg, "提示", {
dangerouslyUseHTMLString: true,
type: "success",
}).then(() => {
location.href = "/ImpPer/#/login";
this.loginType = "login";
});
} else {
this.$alert(res1.msg, "提示", {
dangerouslyUseHTMLString: true,
type: "warning",
});
}
});
} else {
this.$alert(this.rePasswordData.msg, "提示", {
dangerouslyUseHTMLString: true,
type: "warning",
});
}
// })
}
});
},
errorTipClose() {
this.errorTip = [];
},
},
};
</script>
<style rel="stylesheet/scss" lang="scss">
@import "@/assets/styles/variables.scss";
.loginForm {
max-width: 970px;
height: auto;
margin: 0 auto;
padding-top: 6rem;
padding-bottom: 50px;
.form-title {
font-size: 40px;
font-weight: 400;
color: #000;
text-align: center;
margin-bottom: 10px;
}
.form-tip {
text-align: center;
font-size: 14px;
font-weight: 600;
margin-bottom: 60px;
}
.buttonType {
cursor: pointer;
color: $fedexButton;
}
.fedexFormStyle {
width: 70%;
margin: 0 auto;
a {
font-size: 12px;
color: $fedexButton;
}
span {
font-size: 12px;
color: #606266;
}
}
.form-option {
text-align: center;
margin-top: 100px;
.el-button {
min-width: 120px;
height: 60px;
font-size: 16px;
}
.rePassword {
font-size: 14px;
font-weight: 600;
margin-top: 15px;
}
}
}
</style>
web/src/views/login.vue
View file @
7581d37
...
...
@@ -96,7 +96,6 @@
v-else
style="width: 100%; height: calc(100% - 75px); background-color: #fff"
>
<loginForm :loginType="loginType"></loginForm>
</div>
<div class="footer" v-if="!login">
<span>FedEx Online Declaration Platform</span>
...
...
@@ -113,7 +112,6 @@
<script>
import { Navbar } from "@/layout/components";
import loginForm from "./fedexLogin/loginForm.vue";
import { getToken, setToken, removeToken } from "@/utils/auth";
import { fclInit } from "@/api/login.js";
...
...
@@ -121,7 +119,6 @@ export default {
name: "Login",
components: {
Navbar,
loginForm,
},
data() {
return {
...
...
@@ -246,7 +243,7 @@ export default {
localStorage.setItem("impPreHost", location.origin);
this.fclLoginAddr = `http://192.168.1.251/time.html?replaceUrl=${
location.origin
}
/ImpPer/#/redjrectLogin&loginUrl=/icleartw/auth/login
&d=${new Date().getTime()}`;
}
&loginUrl=/manager-server/auth/wlgnForward
&d=${new Date().getTime()}`;
} else {
this.fclLoginAddr = res.data;
}
...
...
Please
register
or
login
to post a comment