Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
apaas-login
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gzga-jzapi
apaas-login
Commits
fb9dac47
Commit
fb9dac47
authored
Aug 03, 2021
by
徐一鸣
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复登陆注册
parent
8277dcde
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
309 additions
and
76 deletions
+309
-76
config/index.js
config/index.js
+47
-19
src/components/bg-identify.vue
src/components/bg-identify.vue
+183
-0
src/pages/login.vue
src/pages/login.vue
+79
-57
No files found.
config/index.js
View file @
fb9dac47
'
use strict
'
"
use strict
"
;
// Template version: 1.3.1
// see http://vuejs-templates.github.io/webpack for documentation.
const
path
=
require
(
'
path
'
)
const
path
=
require
(
"
path
"
);
module
.
exports
=
{
dev
:
{
// Paths
assetsSubDirectory
:
'
static
'
,
assetsPublicPath
:
'
/
'
,
proxyTable
:
{},
assetsSubDirectory
:
"
static
"
,
assetsPublicPath
:
"
/
"
,
proxyTable
:
{
"
/apaas
"
:
{
target
:
"
https://apaas3.wodcloud.com/apaas/
"
,
changeOrigin
:
true
,
pathRewrite
:
{
"
^/apaas
"
:
""
,
},
},
"
/awecloud
"
:
{
target
:
"
https://apaas3.wodcloud.com/awecloud/
"
,
changeOrigin
:
true
,
pathRewrite
:
{
"
^/awecloud
"
:
""
,
},
},
"
/vmap
"
:
{
target
:
"
https://apaas3.wodcloud.com/vmap/
"
,
changeOrigin
:
true
,
pathRewrite
:
{
"
^/vmap
"
:
""
,
},
},
"
/iam
"
:
{
target
:
"
https://apaas3.wodcloud.com/iam/
"
,
changeOrigin
:
true
,
pathRewrite
:
{
"
^/iam
"
:
""
,
},
},
},
// Various Dev Server settings
host
:
'
localhost
'
,
// can be overwritten by process.env.HOST
host
:
"
localhost
"
,
// can be overwritten by process.env.HOST
port
:
8080
,
// can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser
:
false
,
errorOverlay
:
true
,
...
...
@@ -33,44 +61,44 @@ module.exports = {
*/
// https://webpack.js.org/configuration/devtool/#development
devtool
:
'
cheap-module-eval-source-map
'
,
devtool
:
"
cheap-module-eval-source-map
"
,
// If you have problems debugging vue-files in devtools,
// set this to false - it *may* help
// https://vue-loader.vuejs.org/en/options.html#cachebusting
cacheBusting
:
true
,
cssSourceMap
:
true
cssSourceMap
:
true
,
},
build
:
{
// Template for index.html
index
:
path
.
resolve
(
__dirname
,
'
../dist
'
,
'
iam
'
,
'
login
'
,
'
index.html
'
),
index
:
path
.
resolve
(
__dirname
,
"
../dist
"
,
"
iam
"
,
"
login
"
,
"
index.html
"
),
// Paths
assetsRoot
:
path
.
resolve
(
__dirname
,
'
../dist
'
,
'
iam
'
,
'
login
'
),
assetsSubDirectory
:
'
static
'
,
assetsPublicPath
:
'
/iam/login/
'
,
assetsRoot
:
path
.
resolve
(
__dirname
,
"
../dist
"
,
"
iam
"
,
"
login
"
),
assetsSubDirectory
:
"
static
"
,
assetsPublicPath
:
"
/iam/login/
"
,
/**
* Source Maps
* Source Maps
*/
productionSourceMap
:
true
,
// https://webpack.js.org/configuration/devtool/#production
devtool
:
'
#source-map
'
,
devtool
:
"
#source-map
"
,
// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin
productionGzip
:
false
,
productionGzipExtensions
:
[
'
js
'
,
'
css
'
],
productionGzipExtensions
:
[
"
js
"
,
"
css
"
],
// Run the build command with an extra argument to
// View the bundle analyzer report after build finishes:
// `npm run build --report`
// Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport
:
process
.
env
.
npm_config_report
}
}
bundleAnalyzerReport
:
process
.
env
.
npm_config_report
,
}
,
}
;
src/components/bg-identify.vue
0 → 100644
View file @
fb9dac47
<
template
>
<div
class=
"bg-identify"
@
click=
"refreshCode"
>
<canvas
:width=
"contentWidth"
:height=
"contentHeight"
></canvas>
</div>
</
template
>
<
script
>
export
default
{
name
:
"
BgIdentify
"
,
model
:
{
prop
:
"
identifyCode
"
,
event
:
"
change
"
,
},
props
:
{
identifyCode
:
{
type
:
String
,
default
:
"
1234
"
,
},
fontSizeMin
:
{
type
:
Number
,
default
:
25
,
},
fontSizeMax
:
{
type
:
Number
,
default
:
30
,
},
backgroundColorMin
:
{
type
:
Number
,
default
:
255
,
},
backgroundColorMax
:
{
type
:
Number
,
default
:
255
,
},
colorMin
:
{
type
:
Number
,
default
:
0
,
},
colorMax
:
{
type
:
Number
,
default
:
160
,
},
lineColorMin
:
{
type
:
Number
,
default
:
100
,
},
lineColorMax
:
{
type
:
Number
,
default
:
255
,
},
dotColorMin
:
{
type
:
Number
,
default
:
0
,
},
dotColorMax
:
{
type
:
Number
,
default
:
255
,
},
contentWidth
:
{
type
:
Number
,
default
:
150
,
},
contentHeight
:
{
type
:
Number
,
default
:
38
,
},
},
data
()
{
return
{
identifyCodes
:
"
1234567890
"
,
};
},
methods
:
{
randomNum
(
min
,
max
)
{
return
Math
.
floor
(
Math
.
random
()
*
(
max
-
min
)
+
min
);
},
randomColor
(
min
,
max
)
{
let
r
=
this
.
randomNum
(
min
,
max
);
let
g
=
this
.
randomNum
(
min
,
max
);
let
b
=
this
.
randomNum
(
min
,
max
);
return
"
rgb(
"
+
r
+
"
,
"
+
g
+
"
,
"
+
b
+
"
)
"
;
},
drawPic
()
{
let
canvas
=
this
.
$el
.
querySelector
(
"
canvas
"
);
let
ctx
=
canvas
.
getContext
(
"
2d
"
);
ctx
.
textBaseline
=
"
bottom
"
;
ctx
.
fillStyle
=
this
.
randomColor
(
this
.
backgroundColorMin
,
this
.
backgroundColorMax
);
ctx
.
fillRect
(
0
,
0
,
this
.
contentWidth
,
this
.
contentHeight
);
for
(
let
i
=
0
;
i
<
this
.
identifyCode
.
length
;
i
++
)
{
this
.
drawText
(
ctx
,
this
.
identifyCode
[
i
],
i
);
}
this
.
drawLine
(
ctx
);
this
.
drawDot
(
ctx
);
},
drawText
(
ctx
,
txt
,
i
)
{
ctx
.
fillStyle
=
this
.
randomColor
(
this
.
colorMin
,
this
.
colorMax
);
ctx
.
font
=
this
.
randomNum
(
this
.
fontSizeMin
,
this
.
fontSizeMax
)
+
"
px SimHei
"
;
let
x
=
(
i
+
1
)
*
(
this
.
contentWidth
/
(
this
.
identifyCode
.
length
+
1
));
let
y
=
this
.
randomNum
(
this
.
fontSizeMax
,
this
.
contentHeight
-
5
);
var
deg
=
this
.
randomNum
(
-
45
,
45
);
// 修改坐标原点和旋转角度
ctx
.
translate
(
x
,
y
);
ctx
.
rotate
((
deg
*
Math
.
PI
)
/
180
);
ctx
.
fillText
(
txt
,
0
,
0
);
// 恢复坐标原点和旋转角度
ctx
.
rotate
((
-
deg
*
Math
.
PI
)
/
180
);
ctx
.
translate
(
-
x
,
-
y
);
},
drawLine
(
ctx
)
{
// 绘制干扰线
for
(
let
i
=
0
;
i
<
5
;
i
++
)
{
ctx
.
strokeStyle
=
this
.
randomColor
(
this
.
lineColorMin
,
this
.
lineColorMax
);
ctx
.
beginPath
();
ctx
.
moveTo
(
this
.
randomNum
(
0
,
this
.
contentWidth
),
this
.
randomNum
(
0
,
this
.
contentHeight
)
);
ctx
.
lineTo
(
this
.
randomNum
(
0
,
this
.
contentWidth
),
this
.
randomNum
(
0
,
this
.
contentHeight
)
);
ctx
.
stroke
();
}
},
drawDot
(
ctx
)
{
// 绘制干扰点
for
(
let
i
=
0
;
i
<
80
;
i
++
)
{
ctx
.
fillStyle
=
this
.
randomColor
(
0
,
255
);
ctx
.
beginPath
();
ctx
.
arc
(
this
.
randomNum
(
0
,
this
.
contentWidth
),
this
.
randomNum
(
0
,
this
.
contentHeight
),
1
,
0
,
2
*
Math
.
PI
);
ctx
.
fill
();
}
},
refreshCode
()
{
let
identifyCode
=
""
;
for
(
let
i
=
0
;
i
<
4
;
i
++
)
{
identifyCode
+=
this
.
identifyCodes
[
this
.
randomNum
(
0
,
this
.
identifyCodes
.
length
)
];
}
this
.
$emit
(
"
change
"
,
identifyCode
);
this
.
$nextTick
(()
=>
{
this
.
drawPic
();
});
},
},
mounted
()
{
if
(
this
.
identifyCode
)
{
this
.
drawPic
();
}
else
{
this
.
refreshCode
();
}
},
};
</
script
>
<
style
scoped
>
.bg-identify
{
border
:
1px
solid
#dcdfe6
;
box-sizing
:
border-box
;
border-radius
:
8px
;
overflow
:
hidden
;
}
.bg-identify
>
canvas
{
display
:
block
;
}
</
style
>
src/pages/login.vue
View file @
fb9dac47
...
...
@@ -50,17 +50,20 @@
class=
"yzm"
:class=
"ruleFormIcon.yzm ? '' : 'icon_show'"
>
<el-input
v-model.trim=
"yzms.yzm"
placeholder=
"请输入验证码"
:validate-event=
"false"
></el-input>
<img
class=
"yzm_img"
title=
"看不清?换一张"
:src=
"imgSrc"
@
click=
"getImg()"
/>
<div
class=
"yzm_ctx"
>
<el-input
class=
"yzm_ipt"
v-model.trim=
"yzms.yzm"
placeholder=
"请输入验证码"
:validate-event=
"false"
></el-input>
<img
class=
"yzm_img"
title=
"看不清?换一张"
:src=
"imgSrc"
@
click=
"getImg()"
/>
</div>
</el-form-item>
</el-form>
<el-form>
...
...
@@ -230,8 +233,8 @@
<div
v-if=
"registerActive == 1"
>
<el-form
:model=
"yzms"
:rules=
"yzmRules"
ref=
"yzms"
:rules=
"yzmRules
1
"
ref=
"yzms
_1
"
class=
"demo-ruleForm"
>
<el-form-item
...
...
@@ -239,16 +242,19 @@
:class=
"ruleFormIcon.yzm ? 'yzm' : 'yzm icon_show'"
>
<p
class=
"item_p"
>
验证码
</p>
<el-input
v-model.trim=
"yzms.yzm"
placeholder=
"请输入验证码"
:validate-event=
"false"
></el-input>
<s-identify
class=
"yzm_img"
:identifyCode=
"identifyCode"
@
click.native=
"refreshCode()"
></s-identify>
<div
class=
"yzm_ctx"
>
<el-input
class=
"yzm_ipt"
v-model.trim=
"yzms.yzm"
placeholder=
"请输入验证码"
></el-input>
<bg-identify
class=
"yzm_img"
ref=
"bgIdentify"
v-model=
"identifyCode"
/>
</div>
</el-form-item>
</el-form>
</div>
...
...
@@ -291,13 +297,15 @@
</div>
</div>
</div>
</
template
>
</
template
>
<
script
>
import
{
getCookie
,
clearCookie
,
setCookie
}
from
"
@/utils/common.js
"
;
import
SIdentify
from
"
@/components/sidentify
"
;
import
CryptoJS
from
"
crypto-js
"
;
//加密js
import
BgIdentify
from
"
@/components/bg-identify
"
;
import
CryptoJS
from
"
crypto-js
"
;
// 加密js
export
default
{
components
:
{
SIdentify
},
components
:
{
SIdentify
,
BgIdentify
},
data
()
{
var
validatePass
=
(
rule
,
value
,
callback
)
=>
{
if
(
value
!==
this
.
ruleForm_0
.
password1
)
{
...
...
@@ -426,9 +434,22 @@ export default {
callback
(
new
Error
(
response
.
data
.
errMsg
));
}
})
.
catch
(
function
(
response
)
{});
.
catch
(
function
(
response
)
{});
}
};
var
validateCheckCode
=
(
rule
,
value
,
callback
)
=>
{
if
(
value
==
""
)
{
callback
(
new
Error
(
"
请输入验证码
"
));
}
else
{
if
(
value
!==
this
.
identifyCode
)
{
callback
(
new
Error
(
"
验证码错误
"
));
this
.
refreshCode
();
}
else
{
callback
();
}
}
};
return
{
form
:
{
userid
:
""
,
...
...
@@ -458,6 +479,13 @@ export default {
yzmRules
:
{
yzm
:
[{
validator
:
validateYzm
}],
},
identifyCode
:
""
,
yzmRules1
:
{
yzm
:
[
{
required
:
true
,
message
:
"
请输入验证码
"
,
trigger
:
"
blur
"
},
{
validator
:
validateCheckCode
,
trigger
:
"
blur
"
},
],
},
yzmState
:
false
,
ruleFormIcon
:
{
userid1
:
true
,
...
...
@@ -607,7 +635,7 @@ export default {
this
.
imgSrc
=
response
.
data
.
data
.
captcha
;
}
})
.
catch
(
function
(
response
)
{});
.
catch
(
function
(
response
)
{});
},
changePass
()
{
this
.
visible
=
!
this
.
visible
;
...
...
@@ -629,8 +657,9 @@ export default {
},
makeCode
(
o
,
l
)
{
for
(
let
i
=
0
;
i
<
l
;
i
++
)
{
this
.
identifyCode
+=
this
.
identifyCodes
[
this
.
randomNum
(
0
,
this
.
identifyCodes
.
length
)];
this
.
identifyCode
+=
this
.
identifyCodes
[
this
.
randomNum
(
0
,
this
.
identifyCodes
.
length
)
];
}
},
getOrganizations
()
{
...
...
@@ -644,7 +673,7 @@ export default {
let
self
=
this
;
self
.
$refs
[
"
ruleForm_1
"
].
validate
((
valid
,
obj
)
=>
{
if
(
valid
)
{
self
.
$refs
[
"
yzms
"
].
validate
((
volid_yzm
,
obj_yzm
)
=>
{
self
.
$refs
[
"
yzms
_1
"
].
validate
((
volid_yzm
,
obj_yzm
)
=>
{
if
(
volid_yzm
)
{
self
.
submitAll
();
}
else
{
...
...
@@ -762,7 +791,26 @@ export default {
},
};
</
script
>
<
style
scoped
>
.yzm_ctx
{
width
:
80%
;
margin-left
:
10%
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
}
.yzm_ctx
.yzm_ipt
{
width
:
calc
(
100%
-
170px
);
margin
:
0
!important
;
flex-grow
:
1
;
}
.yzm_ctx
.yzm_img
{
width
:
150px
;
flex-shrink
:
0
;
margin-left
:
20px
;
}
.login_backg
{
height
:
100vh
;
background
:
url("~@/assets/image/img_bg.jpg")
center
center
;
...
...
@@ -890,19 +938,6 @@ export default {
cursor
:
pointer
;
background
:
url("~@/assets/image/login_eye_dis.png")
no-repeat
center
center
;
}
.login
.yzm
.el-input
{
width
:
42%
;
margin-left
:
10%
;
}
.yzm
{
position
:
relative
;
}
.yzm
.yzm_img
{
position
:
absolute
;
width
:
30%
;
margin-left
:
5%
;
cursor
:
pointer
;
}
.footer_message
{
width
:
500px
;
text-align
:
center
;
...
...
@@ -970,19 +1005,6 @@ export default {
}
</
style
>
<
style
>
.login
.yzm
.el-input
{
width
:
40%
;
margin-left
:
10%
;
}
.yzm
{
position
:
relative
;
}
.yzm
.yzm_img
{
position
:
absolute
;
width
:
30%
;
margin-left
:
5%
;
cursor
:
pointer
;
}
.login
.el-input__suffix
{
font-size
:
20px
;
right
:
10px
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment