Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
cloud-platform-ui
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
youjj
cloud-platform-ui
Commits
ca502d38
Commit
ca502d38
authored
Aug 27, 2019
by
lixy
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'base-modify' of
http://113.105.137.151:22280/youjj/cloud-platform-ui
into base-modify
parents
32120521
5548eccd
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
636 additions
and
257 deletions
+636
-257
package-lock.json
package-lock.json
+22
-53
vehicleType.js
src/api/vehicleType.js
+11
-0
main.js
src/main.js
+16
-0
index.js
src/router/index.js
+28
-0
validate.js
src/utils/validate.js
+295
-0
memberEnter.vue
src/views/userManagement/memberEnter.vue
+20
-4
index.vue
src/views/userManagement/memberManagement/index.vue
+4
-4
index.vue
src/views/userManagement/userList/index.vue
+237
-194
index.vue
src/views/vehicle/vehicleInfo/index.vue
+2
-1
index.vue
src/views/vehicleType/index.vue
+1
-1
activityList.vue
src/views/xxOfficialWebsite/activityList.vue
+0
-0
bannerList.vue
src/views/xxOfficialWebsite/bannerList.vue
+0
-0
newsList.vue
src/views/xxOfficialWebsite/newsList.vue
+0
-0
No files found.
package-lock.json
View file @
ca502d38
...
...
@@ -2821,8 +2821,8 @@
},
"dom7"
:
{
"version"
:
"2.1.3"
,
"resolved"
:
"https://registry.npm
js.org/dom7/-
/dom7-2.1.3.tgz"
,
"integrity"
:
"sha
512-QTxHHDox+M6ZFz1zHPAHZKI3JOHY5iY4i9BK2uctlggxKQwRhO3q3HHFq1BKsT25Bm/ySSj70K6Wk/G4bs9rMQ=
="
,
"resolved"
:
"https://registry.npm
.taobao.org/dom7/download
/dom7-2.1.3.tgz"
,
"integrity"
:
"sha
1-pzb5w7+8TKA5qBzQlfl9HX894Zw
="
,
"dev"
:
true
,
"requires"
:
{
"ssr-window"
:
"^1.0.1"
...
...
@@ -3911,8 +3911,7 @@
"version"
:
"2.1.1"
,
"resolved"
:
"https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
,
"integrity"
:
"sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
,
"dev"
:
true
,
"optional"
:
true
"dev"
:
true
},
"aproba"
:
{
"version"
:
"1.1.1"
,
...
...
@@ -3989,7 +3988,6 @@
"resolved"
:
"https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz"
,
"integrity"
:
"sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"inherits"
:
"~2.0.0"
}
...
...
@@ -3999,7 +3997,6 @@
"resolved"
:
"https://registry.npmjs.org/boom/-/boom-2.10.1.tgz"
,
"integrity"
:
"sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"hoek"
:
"2.x.x"
}
...
...
@@ -4019,8 +4016,7 @@
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz"
,
"integrity"
:
"sha1-mXjOMXOIxkmth5MCjDR37wRKi1E="
,
"dev"
:
true
,
"optional"
:
true
"dev"
:
true
},
"caseless"
:
{
"version"
:
"0.12.0"
,
...
...
@@ -4040,8 +4036,7 @@
"version"
:
"1.1.0"
,
"resolved"
:
"https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz"
,
"integrity"
:
"sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
,
"dev"
:
true
,
"optional"
:
true
"dev"
:
true
},
"combined-stream"
:
{
"version"
:
"1.0.5"
,
...
...
@@ -4064,15 +4059,13 @@
"version"
:
"1.1.0"
,
"resolved"
:
"https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz"
,
"integrity"
:
"sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
,
"dev"
:
true
,
"optional"
:
true
"dev"
:
true
},
"core-util-is"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
,
"integrity"
:
"sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
,
"dev"
:
true
,
"optional"
:
true
"dev"
:
true
},
"cryptiles"
:
{
"version"
:
"2.0.5"
,
...
...
@@ -4155,8 +4148,7 @@
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz"
,
"integrity"
:
"sha1-4QgOBljjALBilJkMxw4VAiNf1VA="
,
"dev"
:
true
,
"optional"
:
true
"dev"
:
true
},
"forever-agent"
:
{
"version"
:
"0.6.1"
,
...
...
@@ -4181,15 +4173,13 @@
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
,
"integrity"
:
"sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
,
"dev"
:
true
,
"optional"
:
true
"dev"
:
true
},
"fstream"
:
{
"version"
:
"1.0.11"
,
"resolved"
:
"https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz"
,
"integrity"
:
"sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"graceful-fs"
:
"^4.1.2"
,
"inherits"
:
"~2.0.0"
,
...
...
@@ -4250,7 +4240,6 @@
"resolved"
:
"https://registry.npmjs.org/glob/-/glob-7.1.2.tgz"
,
"integrity"
:
"sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"fs.realpath"
:
"^1.0.0"
,
"inflight"
:
"^1.0.4"
,
...
...
@@ -4264,8 +4253,7 @@
"version"
:
"4.1.11"
,
"resolved"
:
"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz"
,
"integrity"
:
"sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
,
"dev"
:
true
,
"optional"
:
true
"dev"
:
true
},
"har-schema"
:
{
"version"
:
"1.0.5"
,
...
...
@@ -4309,8 +4297,7 @@
"version"
:
"2.16.3"
,
"resolved"
:
"https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz"
,
"integrity"
:
"sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
,
"dev"
:
true
,
"optional"
:
true
"dev"
:
true
},
"http-signature"
:
{
"version"
:
"1.1.1"
,
...
...
@@ -4329,7 +4316,6 @@
"resolved"
:
"https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
,
"integrity"
:
"sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"once"
:
"^1.3.0"
,
"wrappy"
:
"1"
...
...
@@ -4339,8 +4325,7 @@
"version"
:
"2.0.3"
,
"resolved"
:
"https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
,
"integrity"
:
"sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
,
"dev"
:
true
,
"optional"
:
true
"dev"
:
true
},
"ini"
:
{
"version"
:
"1.3.4"
,
...
...
@@ -4354,7 +4339,6 @@
"resolved"
:
"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"
,
"integrity"
:
"sha1-754xOG8DGn8NZDr4L95QxFfvAMs="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"number-is-nan"
:
"1.0.1"
}
...
...
@@ -4370,8 +4354,7 @@
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
,
"integrity"
:
"sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
,
"dev"
:
true
,
"optional"
:
true
"dev"
:
true
},
"isstream"
:
{
"version"
:
"0.1.2"
,
...
...
@@ -4472,7 +4455,6 @@
"resolved"
:
"https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz"
,
"integrity"
:
"sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"brace-expansion"
:
"1.1.7"
}
...
...
@@ -4489,7 +4471,6 @@
"resolved"
:
"https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz"
,
"integrity"
:
"sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"minimist"
:
"0.0.8"
}
...
...
@@ -4569,7 +4550,6 @@
"resolved"
:
"https://registry.npmjs.org/once/-/once-1.4.0.tgz"
,
"integrity"
:
"sha1-WDsap3WWHUsROsF9nFC6753Xa9E="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"wrappy"
:
"1"
}
...
...
@@ -4603,8 +4583,7 @@
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
,
"integrity"
:
"sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
,
"dev"
:
true
,
"optional"
:
true
"dev"
:
true
},
"performance-now"
:
{
"version"
:
"0.2.0"
,
...
...
@@ -4617,8 +4596,7 @@
"version"
:
"1.0.7"
,
"resolved"
:
"https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz"
,
"integrity"
:
"sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
,
"dev"
:
true
,
"optional"
:
true
"dev"
:
true
},
"punycode"
:
{
"version"
:
"1.4.1"
,
...
...
@@ -4661,7 +4639,6 @@
"resolved"
:
"https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz"
,
"integrity"
:
"sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"buffer-shims"
:
"~1.0.0"
,
"core-util-is"
:
"~1.0.0"
,
...
...
@@ -4708,7 +4685,6 @@
"resolved"
:
"https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz"
,
"integrity"
:
"sha1-wjOOxkPfeht/5cVPqG9XQopV8z0="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"glob"
:
"^7.0.5"
}
...
...
@@ -4717,8 +4693,7 @@
"version"
:
"5.0.1"
,
"resolved"
:
"https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz"
,
"integrity"
:
"sha1-0mPKVGls2KMGtcplUekt5XkY++c="
,
"dev"
:
true
,
"optional"
:
true
"dev"
:
true
},
"semver"
:
{
"version"
:
"5.3.0"
,
...
...
@@ -4783,7 +4758,6 @@
"resolved"
:
"https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz"
,
"integrity"
:
"sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"code-point-at"
:
"^1.0.0"
,
"is-fullwidth-code-point"
:
"^1.0.0"
,
...
...
@@ -4795,7 +4769,6 @@
"resolved"
:
"https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz"
,
"integrity"
:
"sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"safe-buffer"
:
"^5.0.1"
}
...
...
@@ -4812,7 +4785,6 @@
"resolved"
:
"https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"
,
"integrity"
:
"sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"ansi-regex"
:
"^2.0.0"
}
...
...
@@ -4829,7 +4801,6 @@
"resolved"
:
"https://registry.npmjs.org/tar/-/tar-2.2.1.tgz"
,
"integrity"
:
"sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"block-stream"
:
"*"
,
"fstream"
:
"^1.0.2"
,
...
...
@@ -4891,8 +4862,7 @@
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
,
"integrity"
:
"sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
,
"dev"
:
true
,
"optional"
:
true
"dev"
:
true
},
"uuid"
:
{
"version"
:
"3.0.1"
,
...
...
@@ -4925,8 +4895,7 @@
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
,
"integrity"
:
"sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
,
"dev"
:
true
,
"optional"
:
true
"dev"
:
true
}
}
},
...
...
@@ -10562,8 +10531,8 @@
},
"ssr-window"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npm
js.org/ssr-window/-
/ssr-window-1.0.1.tgz"
,
"integrity"
:
"sha
512-dgFqB+f00LJTEgb6UXhx0h+SrG50LJvti2yMKMqAgzfUmUXZrLSv2fjULF7AWGwK25EXu8+smLR3jYsJQChPsg=
="
,
"resolved"
:
"https://registry.npm
.taobao.org/ssr-window/download
/ssr-window-1.0.1.tgz"
,
"integrity"
:
"sha
1-MHUqakZm53Z/C35qpvwv29DZs2k
="
,
"dev"
:
true
},
"stackframe"
:
{
...
...
@@ -10761,8 +10730,8 @@
},
"swiper"
:
{
"version"
:
"4.5.0"
,
"resolved"
:
"https://registry.npm
js.org/swiper/-
/swiper-4.5.0.tgz"
,
"integrity"
:
"sha
512-jRCd/CGet9kaHwthHdd/sL/YU8CI157PWLyItnIcn/o/jP4haVky3zTF6f9F3JDpmQIw7jdWihISiYx0/oTHsg=
="
,
"resolved"
:
"https://registry.npm
.taobao.org/swiper/download
/swiper-4.5.0.tgz"
,
"integrity"
:
"sha
1-TYcL7E9avi+yWTJYSd0mQckkPA0
="
,
"dev"
:
true
,
"requires"
:
{
"dom7"
:
"^2.1.3"
,
...
...
src/api/vehicleType.js
View file @
ca502d38
...
...
@@ -70,6 +70,17 @@ export function getAllVehicleList() {
method
:
'get'
});
}
/**
* 根据sort排序,获取全部车型
* */
export
function
getAllVehicleModelList
()
{
return
fetch
({
url
:
'/vehicle/vehicleModel/list'
,
method
:
'get'
});
}
/**
* 车型标签是否多选
*/
...
...
src/main.js
View file @
ca502d38
...
...
@@ -96,6 +96,22 @@ Vue.directive('enterNumber', {
});
}
});
Vue
.
directive
(
'isNumber'
,
{
inserted
:
function
(
el
)
{
el
.
addEventListener
(
"keypress"
,
function
(
e
){
e
=
e
||
window
.
event
;
let
charcode
=
typeof
e
.
charCode
==
'number'
?
e
.
charCode
:
e
.
keyCode
;
let
re
=
/
\d
/
;
if
(
!
re
.
test
(
String
.
fromCharCode
(
charcode
))
&&
charcode
>
9
&&
!
e
.
ctrlKey
){
if
(
e
.
preventDefault
){
e
.
preventDefault
();
}
else
{
e
.
returnValue
=
false
;
}
}
});
}
});
// register global utility filters.
Object
.
keys
(
filters
).
forEach
(
key
=>
{
...
...
src/router/index.js
View file @
ca502d38
...
...
@@ -561,4 +561,32 @@ export const asyncRouterMap = [{
}
]
}
,
{
path
:
'/xxOfficialWebsite'
,
component
:
Layout
,
name
:
'新欣房车官网管理'
,
icon
:
'setting'
,
authority
:
'xxOfficialWebsite'
,
children
:
[
{
path
:
'activityList'
,
component
:
_import
(
'xxOfficialWebsite/activityList'
),
name
:
'活动管理'
,
authority
:
'activityList'
},
{
path
:
'newsList'
,
component
:
_import
(
'xxOfficialWebsite/newsList'
),
name
:
'新闻管理'
,
authority
:
'newsList'
},
{
path
:
'bannerList'
,
component
:
_import
(
'xxOfficialWebsite/bannerList'
),
name
:
'banner管理'
,
authority
:
'bannerList'
}
]
}
];
src/utils/validate.js
View file @
ca502d38
...
...
@@ -50,3 +50,298 @@ export function objDeepCopy(source) {
}
/*是否合法IP地址*/
export
function
validateIP
(
rule
,
value
,
callback
)
{
if
(
value
==
''
||
value
==
undefined
||
value
==
null
){
callback
();
}
else
{
const
reg
=
/^
(\d{1,2}
|1
\d\d
|2
[
0-4
]\d
|25
[
0-5
])\.(\d{1,2}
|1
\d\d
|2
[
0-4
]\d
|25
[
0-5
])\.(\d{1,2}
|1
\d\d
|2
[
0-4
]\d
|25
[
0-5
])\.(\d{1,2}
|1
\d\d
|2
[
0-4
]\d
|25
[
0-5
])
$/
;
if
((
!
reg
.
test
(
value
))
&&
value
!=
''
)
{
callback
(
new
Error
(
'请输入正确的IP地址'
));
}
else
{
callback
();
}
}
}
/* 是否手机号码或者固话*/
export
function
validatePhoneTwo
(
rule
,
value
,
callback
)
{
const
reg
=
/^
((
0
\d{2,3}
-
\d{7,8})
|
(
1
[
34578
]\d{9}))
$/
;;
if
(
value
==
''
||
value
==
undefined
||
value
==
null
)
{
callback
();
}
else
{
if
((
!
reg
.
test
(
value
))
&&
value
!=
''
)
{
callback
(
new
Error
(
'请输入正确的电话号码或者固话号码'
));
}
else
{
callback
();
}
}
}
/* 是否固话*/
export
function
validateTelphone
(
rule
,
value
,
callback
)
{
const
reg
=
/0
\d{2}
-
\d{7,8}
/
;
if
(
value
==
''
||
value
==
undefined
||
value
==
null
){
callback
();
}
else
{
if
((
!
reg
.
test
(
value
))
&&
value
!=
''
)
{
callback
(
new
Error
(
'请输入正确的固话(格式:区号+号码,如010-1234567)'
));
}
else
{
callback
();
}
}
}
/* 是否手机号码*/
export
function
validatePhone
(
rule
,
value
,
callback
)
{
const
reg
=
/^
[
1
][
3,4,5,7,8
][
0-9
]{9}
$/
;
if
(
value
==
''
||
value
==
undefined
||
value
==
null
){
callback
();
}
else
{
if
((
!
reg
.
test
(
value
))
&&
value
!=
''
)
{
callback
(
new
Error
(
'请输入正确的电话号码'
));
}
else
{
callback
();
}
}
}
/* 是否身份证号码*/
export
function
validateIdNo
(
rule
,
value
,
callback
)
{
const
reg
=
/
(
^
\d{15}
$
)
|
(
^
\d{18}
$
)
|
(
^
\d{17}(\d
|X|x
)
$
)
/
;
if
(
value
==
''
||
value
==
undefined
||
value
==
null
){
callback
();
}
else
{
if
((
!
reg
.
test
(
value
))
&&
value
!=
''
)
{
callback
(
new
Error
(
'请输入正确的身份证号码'
));
}
else
{
callback
();
}
}
}
/* 是否邮箱*/
export
function
validateEMail
(
rule
,
value
,
callback
)
{
const
reg
=
/^
([
a-zA-Z0-9
]
+
[
-_
\.]?)
+@
[
a-zA-Z0-9
]
+
\.[
a-z
]
+$/
;
if
(
value
==
''
||
value
==
undefined
||
value
==
null
){
callback
();
}
else
{
if
(
!
reg
.
test
(
value
)){
callback
(
new
Error
(
'请输入正确的邮箱地址'
));
}
else
{
callback
();
}
}
}
/*验证内容是否英文数字以及下划线*/
export
function
isPassword
(
rule
,
value
,
callback
)
{
const
reg
=
/^
[
_a-zA-Z0-9
]
+$/
;
if
(
value
==
''
||
value
==
undefined
||
value
==
null
){
callback
();
}
else
{
if
(
!
reg
.
test
(
value
)){
callback
(
new
Error
(
'密码仅由英文字母,数字以及下划线组成'
));
}
else
{
callback
();
}
}
}
/*自动检验数值的范围*/
export
function
checkMax20000
(
rule
,
value
,
callback
)
{
if
(
value
==
''
||
value
==
undefined
||
value
==
null
)
{
callback
();
}
else
if
(
!
Number
(
value
))
{
callback
(
new
Error
(
'请输入[1,20000]之间的数字'
));
}
else
if
(
value
<
1
||
value
>
20000
)
{
callback
(
new
Error
(
'请输入[1,20000]之间的数字'
));
}
else
{
callback
();
}
}
//验证数字输入框最大数值,32767
export
function
checkMaxVal
(
rule
,
value
,
callback
)
{
if
(
value
<
0
||
value
>
32767
)
{
callback
(
new
Error
(
'请输入[0,32767]之间的数字'
));
}
else
{
callback
();
}
}
//验证是否1-99之间
export
function
isOneToNinetyNine
(
rule
,
value
,
callback
)
{
if
(
!
value
)
{
return
callback
(
new
Error
(
'输入不可以为空'
));
}
setTimeout
(()
=>
{
if
(
!
Number
(
value
))
{
callback
(
new
Error
(
'请输入正整数'
));
}
else
{
const
re
=
/^
[
1-9
][
0-9
]{0,1}
$/
;
const
rsCheck
=
re
.
test
(
value
);
if
(
!
rsCheck
)
{
callback
(
new
Error
(
'请输入正整数,值为【1,99】'
));
}
else
{
callback
();
}
}
},
0
);
}
// 验证是否整数
export
function
isInteger
(
rule
,
value
,
callback
)
{
if
(
!
value
)
{
return
callback
(
new
Error
(
'输入不可以为空'
));
}
setTimeout
(()
=>
{
if
(
!
Number
(
value
))
{
callback
(
new
Error
(
'请输入正整数'
));
}
else
{
const
re
=
/^
[
0-9
]
*
[
1-9
][
0-9
]
*$/
;
const
rsCheck
=
re
.
test
(
value
);
if
(
!
rsCheck
)
{
callback
(
new
Error
(
'请输入正整数'
));
}
else
{
callback
();
}
}
},
0
);
}
// 验证是否整数,非必填
export
function
isIntegerNotMust
(
rule
,
value
,
callback
)
{
if
(
!
value
)
{
callback
();
}
setTimeout
(()
=>
{
if
(
!
Number
(
value
))
{
callback
(
new
Error
(
'请输入正整数'
));
}
else
{
const
re
=
/^
[
0-9
]
*
[
1-9
][
0-9
]
*$/
;
const
rsCheck
=
re
.
test
(
value
);
if
(
!
rsCheck
)
{
callback
(
new
Error
(
'请输入正整数'
));
}
else
{
callback
();
}
}
},
1000
);
}
// 验证是否是[0-1]的小数
export
function
isDecimal
(
rule
,
value
,
callback
)
{
if
(
!
value
)
{
return
callback
(
new
Error
(
'输入不可以为空'
));
}
setTimeout
(()
=>
{
if
(
!
Number
(
value
))
{
callback
(
new
Error
(
'请输入[0,1]之间的数字'
));
}
else
{
if
(
value
<
0
||
value
>
1
)
{
callback
(
new
Error
(
'请输入[0,1]之间的数字'
));
}
else
{
callback
();
}
}
},
100
);
}
// 验证是否是[1-10]的小数,即不可以等于0
export
function
isBtnOneToTen
(
rule
,
value
,
callback
)
{
if
(
typeof
value
==
'undefined'
)
{
return
callback
(
new
Error
(
'输入不可以为空'
));
}
setTimeout
(()
=>
{
if
(
!
Number
(
value
))
{
callback
(
new
Error
(
'请输入正整数,值为[1,10]'
));
}
else
{
if
(
!
(
value
==
'1'
||
value
==
'2'
||
value
==
'3'
||
value
==
'4'
||
value
==
'5'
||
value
==
'6'
||
value
==
'7'
||
value
==
'8'
||
value
==
'9'
||
value
==
'10'
))
{
callback
(
new
Error
(
'请输入正整数,值为[1,10]'
));
}
else
{
callback
();
}
}
},
100
);
}
// 验证是否是[1-100]的小数,即不可以等于0
export
function
isBtnOneToHundred
(
rule
,
value
,
callback
)
{
if
(
!
value
)
{
return
callback
(
new
Error
(
'输入不可以为空'
));
}
setTimeout
(()
=>
{
if
(
!
Number
(
value
))
{
callback
(
new
Error
(
'请输入整数,值为[1,100]'
));
}
else
{
if
(
value
<
1
||
value
>
100
)
{
callback
(
new
Error
(
'请输入整数,值为[1,100]'
));
}
else
{
callback
();
}
}
},
100
);
}
// 验证是否是[0-100]的小数
export
function
isBtnZeroToHundred
(
rule
,
value
,
callback
)
{
if
(
!
value
)
{
return
callback
(
new
Error
(
'输入不可以为空'
));
}
setTimeout
(()
=>
{
if
(
!
Number
(
value
))
{
callback
(
new
Error
(
'请输入[1,100]之间的数字'
));
}
else
{
if
(
value
<
0
||
value
>
100
)
{
callback
(
new
Error
(
'请输入[1,100]之间的数字'
));
}
else
{
callback
();
}
}
},
100
);
}
// 验证端口是否在[0,65535]之间
export
function
isPort
(
rule
,
value
,
callback
)
{
if
(
!
value
)
{
return
callback
(
new
Error
(
'输入不可以为空'
));
}
setTimeout
(()
=>
{
if
(
value
==
''
||
typeof
(
value
)
==
undefined
)
{
callback
(
new
Error
(
'请输入端口值'
));
}
else
{
const
re
=
/^
([
0-9
]
|
[
1-9
]\d
|
[
1-9
]\d{2}
|
[
1-9
]\d{3}
|
[
1-5
]\d{4}
|6
[
0-4
]\d{3}
|65
[
0-4
]\d{2}
|655
[
0-2
]\d
|6553
[
0-5
])
$/
;
const
rsCheck
=
re
.
test
(
value
);
if
(
!
rsCheck
)
{
callback
(
new
Error
(
'请输入在[0-65535]之间的端口值'
));
}
else
{
callback
();
}
}
},
100
);
}
// 验证端口是否在[0,65535]之间,非必填,isMust表示是否必填
export
function
isCheckPort
(
rule
,
value
,
callback
)
{
if
(
!
value
)
{
callback
();
}
setTimeout
(()
=>
{
if
(
value
==
''
||
typeof
(
value
)
==
undefined
)
{
//callback(new Error('请输入端口值'));
}
else
{
const
re
=
/^
([
0-9
]
|
[
1-9
]\d
|
[
1-9
]\d{2}
|
[
1-9
]\d{3}
|
[
1-5
]\d{4}
|6
[
0-4
]\d{3}
|65
[
0-4
]\d{2}
|655
[
0-2
]\d
|6553
[
0-5
])
$/
;
const
rsCheck
=
re
.
test
(
value
);
if
(
!
rsCheck
)
{
callback
(
new
Error
(
'请输入在[0-65535]之间的端口值'
));
}
else
{
callback
();
}
}
},
100
);
}
/*保留2为小数*/
export
function
validatetoFixedNew
(
str
)
{
return
str
;
}
src/views/userManagement/memberEnter.vue
View file @
ca502d38
...
...
@@ -102,7 +102,7 @@
<el-form-item
label=
"会员等级"
>
<el-select
class=
"filter-item"
v-model=
"newMemberObject.memberLevel"
placeholder=
"选择会员等级"
>
<!-- <el-option :key="undefined" label="无" :value="undefined"></el-option>-->
<el-option
v-for=
"(val, key, index) in memberLevelist "
:key=
"val.id"
:label=
"val.name"
<el-option
v-for=
"(val, key, index) in memberLevel
L
ist "
:key=
"val.id"
:label=
"val.name"
:value=
"val.id"
></el-option>
</el-select>
</el-form-item>
...
...
@@ -125,14 +125,14 @@
<el-row>
<el-col
:span=
"8"
>
<el-form-item
label=
"免费天数"
placeholder=
"免费天数"
prop=
"totalNumber"
>
<el-input
size=
"small "
type=
"
text"
v-model=
"newMemberObject.totalNumber
"
v-enterNumber
></el-input>
<el-input
size=
"small "
type=
"
number"
v-model=
"newMemberObject.totalNumber"
min=
"0
"
v-enterNumber
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
>
<el-form-item
label=
"剩余天数"
placeholder=
"剩余天数"
prop=
"rentFreeDays"
>
<el-input
size=
"small "
type=
"
text"
v-model=
"newMemberObject.rentFreeDays
"
v-enterNumber
></el-input>
<el-input
size=
"small "
type=
"
number"
v-model=
"newMemberObject.rentFreeDays"
min=
"0
"
v-enterNumber
></el-input>
</el-form-item>
</el-col>
</el-row>
...
...
@@ -196,6 +196,7 @@
import
{
formatDate
}
from
"../../utils/dateFormattor"
;
import
ElRow
from
"element-ui/packages/row/src/row"
;
import
ElCol
from
"element-ui/packages/col/src/col"
;
import
{
getMembers
}
from
"src/api/admin/member/index"
export
default
{
components
:
{
...
...
@@ -214,7 +215,7 @@
id
:
undefined
,
userId
:
undefined
},
memberLevel
ist
:
[{
id
:
1
,
name
:
'普通会员'
},
{
id
:
2
,
name
:
'黄金会员'
},
{
id
:
3
,
name
:
'钻石会员'
}
],
memberLevel
List
:
[
],
saveUserId
:
undefined
,
validityType
:
'无'
,
userOrderMessage
:
{},
...
...
@@ -302,6 +303,7 @@
this
.
memberEnter_btn_del
=
this
.
elements
[
'memberEnter:btn_del'
];
//删除
this
.
memberEnter_btn_addIn
=
this
.
elements
[
'memberEnter:btn_addIn'
];
//批量上传
this
.
getList
();
this
.
getMembersLevel
()
}
,
computed
:
{
...
...
...
@@ -316,6 +318,20 @@
},
},
methods
:
{
getMembersLevel
()
{
var
_this
=
this
;
getMembers
().
then
(
res
=>
{
let
members
=
res
.
data
// console.log('getMembersLevel:{}'+JSON.stringify(members))
// debugger
members
.
map
(
function
(
ele
)
{
_this
.
memberLevelList
.
push
({
id
:
ele
.
level
,
name
:
ele
.
name
})
})
// console.log('this.queryMemberLevelList'+JSON.stringify(this.queryMemberLevelList))
}
)
},
/**
* 上传
*/
...
...
src/views/userManagement/memberManagement/index.vue
View file @
ca502d38
...
...
@@ -65,7 +65,7 @@
<el-row>
<el-col
:span=
"16"
>
<el-form-item
label=
"等级"
prop=
"level"
>
<el-input
type=
"
text"
v-model=
"add.level"
placeholder=
"请填会员等级"
></el-input>
<el-input
type=
"
number"
min=
"0"
v-model=
"add.level"
placeholder=
"请填会员等级"
v-enterNumber
></el-input>
</el-form-item>
</el-col>
</el-row>
...
...
@@ -82,7 +82,7 @@
<el-row>
<el-col
:span=
"16"
>
<el-form-item
label=
"折扣"
prop=
"discount"
>
<el-input
type=
"
text
"
v-model=
"add.discount"
<el-input
type=
"
number"
min=
"0
"
v-model=
"add.discount"
placeholder=
"请填写折扣"
></el-input>
</el-form-item>
</el-col>
...
...
@@ -90,14 +90,14 @@
<el-row>
<el-col
:span=
"16"
>
<el-form-item
label=
"免费天数"
prop=
"number"
>
<el-input
type=
"
text"
v-model=
"add.number"
placeholder=
"请填免费天数"
></el-input>
<el-input
type=
"
number"
min=
"0"
v-model=
"add.number"
placeholder=
"请填免费天数"
v-enterNumber
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"16"
>
<el-form-item
label=
"价格"
prop=
"price"
>
<el-input
type=
"
text
"
v-model=
"add.price"
placeholder=
"请填价格"
></el-input>
<el-input
type=
"
number"
min=
"0
"
v-model=
"add.price"
placeholder=
"请填价格"
></el-input>
</el-form-item>
</el-col>
</el-row>
...
...
src/views/userManagement/userList/index.vue
View file @
ca502d38
...
...
@@ -3,63 +3,64 @@
<div
class=
"filter-container"
>
<el-form
ref=
"queryForm"
:inline=
"inline"
:model=
"listQuery"
label-width=
"100px"
>
<el-row>
<el-form-item
label=
"手机号"
>
<el-input
v-model
.
number=
"listQuery.mobile"
placeholder=
"请输入手机号"
></el-input>
</el-form-item>
<el-form-item
label=
"注册终端"
>
<el-select
class=
"filter-item"
v-model=
"listQuery.channel"
placeholder=
"请选注册终端"
>
<el-option
:key=
"undefined"
label=
"全部"
:value=
"undefined"
></el-option>
<el-option
v-for=
"(val, key, index) in mobileList "
:key=
"val.id"
:label=
"val.name"
:value=
"val.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"会员类型"
>
<el-select
class=
"filter-item"
v-model=
"listQuery.memberLevel"
placeholder=
"请选会员类型"
>
<el-option
:key=
"undefined"
label=
"全部用户"
:value=
"undefined"
></el-option>
<el-option
v-for=
"(val, key, index) in queryMemberLevelList "
:key=
"val.id"
:label=
"val.name"
:value=
"val.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"用户身份"
>
<el-select
class=
"filter-item"
v-model=
"listQuery.postionState"
placeholder=
"选择会员身份"
>
<el-option
:key=
"undefined"
label=
"全部"
:value=
"undefined"
></el-option>
<el-option
v-for=
"(val, key, index) in postionStatelList "
:key=
"val.id"
:label=
"val.name"
:value=
"val.id"
></el-option>
</el-select>
</el-form-item>
<!--
<el-form-item
label=
"注册时间"
prop=
"bookDateRange"
>
-->
<!--
<el-date-picker-->
<!-- v-model="listQuery.registrationDate "-->
<!-- type="daterange"-->
<!-- :editable="true"-->
<!-- format="yyyy-MM-dd"-->
<!-- placeholder="请选择注册时间范围">-->
<!--
</el-date-picker>
-->
<!--
</el-form-item>
-->
<el-form-item
label=
"手机号"
>
<el-input
v-model
.
number=
"listQuery.mobile"
placeholder=
"请输入手机号"
></el-input>
</el-form-item>
<el-form-item
label=
"注册终端"
>
<el-select
class=
"filter-item"
v-model=
"listQuery.channel"
placeholder=
"请选注册终端"
>
<el-option
:key=
"undefined"
label=
"全部"
:value=
"undefined"
></el-option>
<el-option
v-for=
"(val, key, index) in mobileList "
:key=
"val.id"
:label=
"val.name"
:value=
"val.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"会员类型"
>
<el-select
class=
"filter-item"
v-model=
"listQuery.memberLevel"
placeholder=
"请选会员类型"
>
<el-option
:key=
"undefined"
label=
"全部用户"
:value=
"undefined"
></el-option>
<el-option
v-for=
"(val, key, index) in queryMemberLevelList "
:key=
"val.id"
:label=
"val.name"
:value=
"val.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"用户身份"
>
<el-select
class=
"filter-item"
v-model=
"listQuery.postionState"
placeholder=
"选择会员身份"
>
<el-option
:key=
"undefined"
label=
"全部"
:value=
"undefined"
></el-option>
<el-option
v-for=
"(val, key, index) in postionStatelList "
:key=
"val.id"
:label=
"val.name"
:value=
"val.id"
></el-option>
</el-select>
</el-form-item>
<!--
<el-form-item
label=
"注册时间"
prop=
"bookDateRange"
>
-->
<!--
<el-date-picker-->
<!-- v-model="listQuery.registrationDate "-->
<!-- type="daterange"-->
<!-- :editable="true"-->
<!-- format="yyyy-MM-dd"-->
<!-- placeholder="请选择注册时间范围">-->
<!--
</el-date-picker>
-->
<!--
</el-form-item>
-->
<el-form-item
label=
"注册时间"
>
<el-date-picker
v-model=
"listQuery.registrationTimeBegin"
type=
"date"
:editable=
"true"
format=
"yyyy-MM-dd"
placeholder=
"选择日期"
></el-date-picker>
~
<el-date-picker
v-model=
"listQuery.registrationTimeEnd"
type=
"date"
:editable=
"true"
format=
"yyyy-MM-dd"
placeholder=
"选择日期"
></el-date-picker>
</el-form-item>
<el-form-item
label=
"用户来源"
>
<el-select
class=
"filter-item"
v-model=
"listQuery.source"
placeholder=
"请选用户来源"
>
<el-option
:key=
"undefined"
label=
"全部"
:value=
"undefined"
></el-option>
<el-option
v-for=
"(val, key, index) in sourceList"
:key=
"val.id"
:label=
"val.name"
:value=
"val.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"注册时间"
>
<el-date-picker
v-model=
"listQuery.registrationTimeBegin"
type=
"date"
:editable=
"true"
format=
"yyyy-MM-dd"
placeholder=
"选择日期"
></el-date-picker>
~
<el-date-picker
v-model=
"listQuery.registrationTimeEnd"
type=
"date"
:editable=
"true"
format=
"yyyy-MM-dd"
placeholder=
"选择日期"
></el-date-picker>
</el-form-item>
<el-form-item
label=
"用户来源"
>
<el-select
class=
"filter-item"
v-model=
"listQuery.source"
placeholder=
"请选用户来源"
>
<el-option
:key=
"undefined"
label=
"全部"
:value=
"undefined"
></el-option>
<el-option
v-for=
"(val, key, index) in sourceList"
:key=
"val.id"
:label=
"val.name"
:value=
"val.id"
></el-option>
</el-select>
</el-form-item>
</el-row>
</el-form>
<el-button
class=
"filter-item"
type=
"primary"
v-waves
icon=
"search"
@
click=
"handleFilter"
>
搜索
</el-button>
...
...
@@ -131,19 +132,29 @@
<!-- </el-table-column>-->
<el-table-column
align=
"center"
label=
"操作"
width=
"400"
fixed=
"right"
>
<
template
scope=
"scope"
>
<el-button
size=
"small"
class=
"el-button el-button--text el-button--small"
@
click=
"viewDetails(scope.row)"
>
查看详情
<el-button
size=
"small"
class=
"el-button el-button--text el-button--small"
@
click=
"viewDetails(scope.row)"
>
查看详情
</el-button>
<el-button
size=
"small"
class=
"el-button el-button--text el-button--small"
v-if=
"admin_btn_user_postion_put"
@
click=
"peopleSetting(scope.row)"
>
身份设置
</el-button>
<el-button
size=
"small"
class=
"el-button el-button--text el-button--small"
v-if=
"admin_btn_user_postion_put"
@
click=
"peopleSetting(scope.row)"
>
身份设置
<el-button
class=
"el-button el-button--text el-button--small"
v-if=
"scope.row.status!=1&&userList_btn_edit"
size=
"small"
@
click=
" setMember(scope.row)"
>
设置会员信息
</el-button>
<el-button
class=
"el-button el-button--text el-button--small"
v-if=
"scope.row.status!=1&&userList_btn_edit"
size=
"small"
@
click=
" setMember(scope.row)"
>
设置会员信息
<el-button
class=
"el-button el-button--text el-button--small"
v-if=
"scope.row.status!=1"
size=
"small"
@
click=
"userOrder(scope.row)"
>
用户订单
</el-button>
<el-button
class=
"el-button el-button--text el-button--small"
v-if=
"scope.row.status!=1"
size=
"small"
@
click=
"userOrder(scope.row)"
>
用户订单
<el-button
v-if=
"scope.row.status!=1&&userList_btn_forbidden"
size=
"small"
class=
"el-button el-button--text el-button--small"
style=
"color:red"
@
click=
"disable(scope.row)"
>
设为禁用
</el-button>
<el-button
v-if=
"scope.row.status!=1&&userList_btn_forbidden"
size=
"small"
class=
"el-button el-button--text el-button--small"
style=
"color:red"
@
click=
"disable(scope.row)"
>
设为禁用
<el-button
v-if=
"scope.row.status==1&&userList_btn_unmute"
size=
"small"
class=
"el-button el-button--text el-button--small"
style=
"color:red"
@
click=
"available(scope.row)"
>
取消禁用
</el-button>
<el-button
v-if=
"scope.row.status==1&&userList_btn_unmute"
size=
"small"
class=
"el-button el-button--text el-button--small"
style=
"color:red"
@
click=
"available(scope.row)"
>
取消禁用
<el-button
class=
"el-button el-button--text el-button--small"
style=
"color:red"
size=
"small"
v-if=
"userList_btn_del"
@
click=
"deleteUser(scope.row)"
>
删除
</el-button>
<el-button
class=
"el-button el-button--text el-button--small"
style=
"color:red"
size=
"small"
v-if=
"userList_btn_del"
@
click=
"deleteUser(scope.row)"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -154,7 +165,8 @@
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"total"
></el-pagination>
</div>
<!-- 用户详细信息窗口-->
<el-dialog
title=
"用户详情"
:visible
.
sync=
"detailsDialogFormVisible"
type=
"text"
label-width=
"95px"
class=
"user-list-dialog"
>
<el-dialog
title=
"用户详情"
:visible
.
sync=
"detailsDialogFormVisible"
type=
"text"
label-width=
"95px"
class=
"user-list-dialog"
>
<el-form>
<el-row>
<el-form-item
label=
"基础信息"
>
...
...
@@ -302,12 +314,12 @@
<!-- 设置会员信息窗口-->
<el-dialog
title=
"设置会员信息"
@
change=
"change"
:visible
.
sync=
"setMemberArea"
class=
"member"
>
<el-form
:model=
"userMembershipInformation"
ref=
"userMembership"
label-width=
"100px"
>
<el-form
:model=
"userMembershipInformation"
:rules=
"rules"
ref=
"userMembership"
label-width=
"100px"
>
<el-row>
<el-col
:span=
"16"
>
<el-form-item
label=
"会员等级"
prop=
"memberLevel"
>
<el-select
class=
"filter-item"
v-model=
"userMembershipInformation.memberLevel"
placeholder=
"请选择会员等级"
>
<!-- <el-option :key="undefined" label="无" :value="undefined"></el-option>-->
<!-- <el-option :key="undefined" label="无" :value="undefined"></el-option>-->
<el-option
v-for=
"(val, key, index) in setMemberLevelList "
:key=
"val.id"
:label=
"val.name"
:value=
"val.id"
></el-option>
</el-select>
...
...
@@ -318,7 +330,7 @@
<el-col
:span=
"24"
>
<el-form-item
label=
"有效期"
prop=
"validTime"
>
<el-radio-group
v-model=
"validityType"
>
<!-- <el-radio-button style="margin-bottom: 10px;" label="无"></el-radio-button>-->
<!-- <el-radio-button style="margin-bottom: 10px;" label="无"></el-radio-button>-->
<el-radio-button
style=
"margin-bottom: 10px;"
label=
"永久"
></el-radio-button>
<el-radio-button
style=
"margin-bottom: 10px;"
label=
"自定义"
></el-radio-button>
</el-radio-group>
...
...
@@ -336,22 +348,23 @@
<el-row>
<el-col
:span=
"16"
>
<el-form-item
label=
"充值次数/次"
prop=
"buyCount"
>
<el-input
type=
"
text
"
:disabled=
"true"
v-model=
"userMembershipInformation.buyCount"
<el-input
type=
"
number
"
:disabled=
"true"
v-model=
"userMembershipInformation.buyCount"
placeholder=
"请填写充值次数"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"16"
>
<el-form-item
label=
"总天数"
prop=
"totalNumber"
>
<el-input
type=
"text"
v-model=
"userMembershipInformation.totalNumber"
placeholder=
"请填写赠送天数"
v-enterNumber
></el-input>
<el-form-item
label=
"总天数"
prop=
"totalNumber"
>
<el-input
type=
"number"
v-model=
"userMembershipInformation.totalNumber"
min=
"0"
placeholder=
"请填写总天数"
v-enterNumber
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"16"
>
<el-form-item
label=
"剩余天数
/天"
prop=
"rentFreeDays"
placeholder=
"请填写剩余天数
"
>
<el-input
type=
"
text"
v-model=
"userMembershipInformation.rentFreeDays"
v-enterNumber
></el-input>
<el-form-item
label=
"剩余天数
"
prop=
"rentFreeDays
"
>
<el-input
type=
"
number"
v-model=
"userMembershipInformation.rentFreeDays"
min=
"0"
v-enterNumber
placeholder=
"请填写剩余天数"
></el-input>
</el-form-item>
</el-col>
</el-row>
...
...
@@ -366,7 +379,9 @@
<el-dialog
title=
"身份设置"
:visible
.
sync=
"peopleSettingModal"
width=
"10%"
>
<el-form
:model=
"peopleSettingObject"
ref=
""
label-width=
"100px"
>
<el-form-item
label=
"身份类型"
>
<el-radio
v-model=
"peopleSettingObject.positionId"
:label=
'item.id'
v-for=
"(item,index) in settingList"
:key=
"index"
>
{{item.name}}
</el-radio>
<el-radio
v-model=
"peopleSettingObject.positionId"
:label=
'item.id'
v-for=
"(item,index) in settingList"
:key=
"index"
>
{{item.name}}
</el-radio>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
...
...
@@ -426,7 +441,9 @@
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-button
class=
"filter-item"
type=
"primary"
v-waves
icon=
"search"
@
click=
"userOrder"
style=
"margin-left: 10px;"
>
搜索
</el-button>
<el-button
class=
"filter-item"
type=
"primary"
v-waves
icon=
"search"
@
click=
"userOrder"
style=
"margin-left: 10px;"
>
搜索
</el-button>
</el-col>
</el-row>
...
...
@@ -540,13 +557,14 @@
getrewardSetting
}
from
'api/purseManage'
;
import
{
formatDate
}
from
"../../../utils/dateFormattor"
;
import
{
getMembers
}
from
"src/api/admin/member/index"
import
{
getMembers
}
from
"src/api/admin/member/index"
export
default
{
name
:
'appUser'
,
data
()
{
return
{
inline
:
true
,
peopleSettingModal
:
false
,
inline
:
true
,
peopleSettingModal
:
false
,
orderData
:
[],
validTime
:
''
,
userMembershipInformation
:
{
...
...
@@ -558,22 +576,22 @@
id
:
undefined
,
userId
:
undefined
},
peopleSettingObject
:{
id
:
''
,
positionId
:
undefined
peopleSettingObject
:
{
id
:
''
,
positionId
:
undefined
},
saveUserId
:
undefined
,
validityType
:
'无'
,
userOrderMessage
:
{},
mobileList
:
[{
id
:
1
,
name
:
'app'
},
{
id
:
2
,
name
:
"小程序"
}],
queryMemberLevelList
:
[{
id
:
-
1
,
name
:
'全部会员'
}],
postionStatelList
:[
postionStatelList
:
[
{
id
:
6
,
name
:
'普通用户'
},{
id
:
1
,
name
:
'非普通用户'
id
:
6
,
name
:
'普通用户'
},
{
id
:
1
,
name
:
'非普通用户'
}
],
setMemberLevelList
:
[],
...
...
@@ -588,8 +606,8 @@
{
id
:
7
,
name
:
'已完成'
}
],
orderTypeList
:
[
{
id
:
1
,
name
:
'
旅游
'
},
{
id
:
2
,
name
:
'
租车
'
},
{
id
:
1
,
name
:
'
租车
'
},
{
id
:
2
,
name
:
'
旅游
'
},
{
id
:
3
,
name
:
'会员订单'
}
],
BASE_API
:
process
.
env
.
BASE_API
,
...
...
@@ -619,6 +637,11 @@
type
:
undefined
,
status
:
undefined
},
rules
:
{
totalNumber
:
[
this
.
integerValidator
()],
rentFreeDays
:
[
this
.
integerValidator
()]
},
newMemberObjectVerify
:
{
phone
:
[
{
...
...
@@ -660,11 +683,11 @@
channel
:
undefined
,
registrationTimeEnd
:
undefined
,
registrationTimeBegin
:
undefined
,
postionState
:
undefined
,
postionState
:
undefined
,
},
sexObj
:{
1
:
'女'
,
2
:
'男'
sexObj
:
{
1
:
'女'
,
2
:
'男'
},
source
:
{
0
:
'自来'
,
...
...
@@ -684,8 +707,8 @@
6
:
'已完成'
,
},
orderType
:
{
1
:
'
旅游
'
,
2
:
'
租车
'
,
1
:
'
租车
'
,
2
:
'
旅游
'
,
3
:
'会员订单'
},
detailsDialogFormVisible
:
false
,
...
...
@@ -703,18 +726,18 @@
selectedAccItem
:
undefined
,
userList_btn_edit
:
false
,
//编辑
userList_btn_forbidden
:
false
,
//禁用
userList_btn_unmute
:
false
,
//取消禁用
userList_btn_unmute
:
false
,
//取消禁用
userList_btn_del
:
false
,
//删除
admin_btn_user_postion_put
:
false
,
//身份设置
settingList
:[],
admin_btn_user_postion_put
:
false
,
//身份设置
settingList
:
[],
}
},
created
()
{
this
.
userList_btn_edit
=
this
.
elements
[
'userList:btn_edit'
];
//编辑
this
.
userList_btn_forbidden
=
this
.
elements
[
'userList:btn_forbidden'
];
//禁用
this
.
userList_btn_unmute
=
this
.
elements
[
'userList:btn_unmute'
];
//取消禁用
this
.
userList_btn_del
=
this
.
elements
[
'userList:btn_del'
];
//删除
this
.
admin_btn_user_postion_put
=
this
.
elements
[
'admin:btn:user_postion:put'
];
//身份设置
this
.
userList_btn_edit
=
this
.
elements
[
'userList:btn_edit'
];
//编辑
this
.
userList_btn_forbidden
=
this
.
elements
[
'userList:btn_forbidden'
];
//禁用
this
.
userList_btn_unmute
=
this
.
elements
[
'userList:btn_unmute'
];
//取消禁用
this
.
userList_btn_del
=
this
.
elements
[
'userList:btn_del'
];
//删除
this
.
admin_btn_user_postion_put
=
this
.
elements
[
'admin:btn:user_postion:put'
];
//身份设置
this
.
getList
();
this
.
getMembersLevel
();
}
...
...
@@ -735,19 +758,19 @@
},
methods
:
{
getMembersLevel
(){
getMembersLevel
()
{
var
_this
=
this
;
getMembers
().
then
(
res
=>
{
let
members
=
res
.
data
// console.log('getMembersLevel:{}'+JSON.stringify(members))
// debugger
members
.
map
(
function
(
ele
)
{
getMembers
().
then
(
res
=>
{
let
members
=
res
.
data
// console.log('getMembersLevel:{}'+JSON.stringify(members))
// debugger
members
.
map
(
function
(
ele
)
{
_this
.
queryMemberLevelList
.
push
({
id
:
ele
.
level
,
name
:
ele
.
name
})
_this
.
setMemberLevelList
.
push
({
id
:
ele
.
level
,
name
:
ele
.
name
})
})
_this
.
queryMemberLevelList
.
push
({
id
:
ele
.
level
,
name
:
ele
.
name
})
_this
.
setMemberLevelList
.
push
({
id
:
ele
.
level
,
name
:
ele
.
name
})
})
// console.log('this.queryMemberLevelList'+JSON.stringify(this.queryMemberLevelList))
}
}
)
},
...
...
@@ -832,10 +855,10 @@
let
query
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
listQuery
))
query
.
source
=
query
.
source
?
query
.
source
-
1
:
''
// console.log('handleFilterStatus:this.listQuery=' + JSON.stringify(this.listQuery))
query
.
registrationTimeBegin
=
this
.
listQuery
.
registrationTimeBegin
?
(
new
Date
(
query
.
registrationTimeBegin
).
getTime
())
/
1000
:
undefined
query
.
registrationTimeBegin
=
this
.
listQuery
.
registrationTimeBegin
?
(
new
Date
(
query
.
registrationTimeBegin
).
getTime
())
/
1000
:
undefined
query
.
registrationTimeEnd
=
this
.
listQuery
.
registrationTimeEnd
?
(
new
Date
(
query
.
registrationTimeEnd
).
getTime
())
/
1000
:
undefined
?
(
new
Date
(
query
.
registrationTimeEnd
).
getTime
())
/
1000
:
undefined
//
// console.log('handleFilterEnd:this.listQuery=' + JSON.stringify(this.listQuery))
// console.log('query================' + JSON.stringify(query))
...
...
@@ -857,14 +880,14 @@
listKey
.
timeOfMembership
=
listKey
.
timeOfMembership
?
timestamp2Date
(
listKey
.
timeOfMembership
)
:
''
;
listKey
.
recentRecharge
=
listKey
.
recentRecharge
?
timestamp2Date
(
listKey
.
recentRecharge
)
:
''
;
listKey
.
lastTime
=
listKey
.
lastTime
?
timestamp2Date
(
listKey
.
lastTime
)
:
''
;
listKey
.
createTime
=
listKey
.
createTime
?
timestamp2Date
(
listKey
.
createTime
*
1000
)
:
''
;
listKey
.
createTime
=
listKey
.
createTime
?
timestamp2Date
(
listKey
.
createTime
*
1000
)
:
''
;
listKey
.
buyCount
=
listKey
.
buyCount
?
listKey
.
buyCount
:
0
;
listKey
.
channel
=
this
.
terminal
[
listKey
.
channel
];
listKey
.
source
=
this
.
source
[
listKey
.
source
];
listKey
.
validTime
=
listKey
.
validTime
?
((
listKey
.
validTime
==
0
)
?
'永久'
:
listKey
.
validTime
)
:
'无'
;
listKey
.
visible2
=
false
listKey
.
visible2
=
false
listKey
.
sex
=
(
listKey
.
sex
+
1
)?
this
.
sexObj
[(
listKey
.
sex
+
1
)]:
''
listKey
.
sex
=
(
listKey
.
sex
+
1
)
?
this
.
sexObj
[(
listKey
.
sex
+
1
)]
:
''
},
/**
...
...
@@ -916,28 +939,28 @@
this
.
saveUserId
=
row
.
userId
getUserMemberByUserId
(
row
.
userId
).
then
(
response
=>
{
if
(
response
.
data
){
if
(
response
.
data
.
validTime
==
0
)
{
this
.
validityType
=
'永久'
}
else
if
(
response
.
data
.
validTime
&&
response
.
data
.
validTime
!=
-
1
)
{
this
.
validityType
=
'自定义'
response
.
data
.
validTime
=
timestamp2Date
(
response
.
data
.
validTime
)
}
// else if (response.data.validTime == -1) {
// this.validityType = '无'
// }
this
.
validTime
=
response
.
data
.
validTime
;
this
.
userMembershipInformation
.
memberLevel
=
response
.
data
.
memberLevel
;
this
.
userMembershipInformation
.
validTime
=
response
.
data
.
validTime
;
this
.
userMembershipInformation
.
totalNumber
=
response
.
data
.
totalNumber
;
this
.
userMembershipInformation
.
rentFreeDays
=
response
.
data
.
rentFreeDays
;
this
.
userMembershipInformation
.
buyCount
=
response
.
data
.
buyCount
;
this
.
userMembershipInformation
.
id
=
response
.
data
.
id
;
// this.userMembershipInformation.memberLevel= this.userMembershipInformation.memberLevel?this.userMembershipInformation.memberLevel:undefined
if
(
response
.
data
)
{
if
(
response
.
data
.
validTime
==
0
)
{
this
.
validityType
=
'永久'
}
else
if
(
response
.
data
.
validTime
&&
response
.
data
.
validTime
!=
-
1
)
{
this
.
validityType
=
'自定义'
response
.
data
.
validTime
=
timestamp2Date
(
response
.
data
.
validTime
)
}
// else if (response.data.validTime == -1) {
// this.validityType = '无'
// }
this
.
validTime
=
response
.
data
.
validTime
;
this
.
userMembershipInformation
.
memberLevel
=
response
.
data
.
memberLevel
?
response
.
data
.
memberLevel
:
''
;
this
.
userMembershipInformation
.
validTime
=
response
.
data
.
validTime
;
this
.
userMembershipInformation
.
totalNumber
=
response
.
data
.
totalNumber
;
this
.
userMembershipInformation
.
rentFreeDays
=
response
.
data
.
rentFreeDays
;
this
.
userMembershipInformation
.
buyCount
=
response
.
data
.
buyCount
;
this
.
userMembershipInformation
.
id
=
response
.
data
.
id
;
// this.userMembershipInformation.memberLevel= this.userMembershipInformation.memberLevel?this.userMembershipInformation.memberLevel:undefined
}
this
.
setMemberArea
=
true
})
console
.
log
(
'this.userMembershipInformation:'
+
JSON
.
stringify
(
this
.
userMembershipInformation
))
// console.log('this.userMembershipInformation:' +
JSON.stringify(this.userMembershipInformation))
this
.
userMembershipInformation
.
userId
=
this
.
saveUserId
},
/**
...
...
@@ -945,44 +968,49 @@
* @param formName
*/
saveMember
(
formName
)
{
if
(
Number
(
this
.
userMembershipInformation
.
totalNumber
)
<
Number
(
this
.
userMembershipInformation
.
rentFreeDays
)){
this
.
$notify
({
title
:
'警告'
,
message
:
'剩余天数不能大于总天数'
,
type
:
'warning'
,
duration
:
2000
});
return
false
}
if
(
this
.
validityType
==
'永久'
)
{
this
.
userMembershipInformation
.
validTime
=
0
}
else
if
(
this
.
validityType
==
'自定义'
)
{
let
date
=
new
Date
(
this
.
validTime
);
this
.
userMembershipInformation
.
validTime
=
date
.
getTime
()
}
// else {
// this.userMembershipInformation.validTime = -1
// }
// if (this.$utils.isInteger(this.userMembershipInformation.totalNumber) ||
// this.$utils.isInteger(this.userMembershipInformation.rentFreeDays) ||
// (this.userMembershipInformation.totalNumber && this.userMembershipInformation.rentFreeDays)) {
this
.
userMembershipInformation
.
userId
=
this
.
saveUserId
this
.
userMembershipInformation
.
buyCount
=
undefined
;
// console.log('userMembershipInformation:' + JSON.stringify(this.userMembershipInformation))
seveObj
(
this
.
userMembershipInformation
).
then
(
res
=>
{
if
(
res
.
rel
)
{
this
.
$notify
.
success
({
title
:
'修改成功'
,
message
:
`success`
})
}
else
{
this
.
$notify
.
warning
({
title
:
'修改成功'
,
message
:
`failed`
})
if
(
Number
(
this
.
userMembershipInformation
.
totalNumber
)
<
Number
(
this
.
userMembershipInformation
.
rentFreeDays
))
{
this
.
$notify
({
title
:
'警告'
,
message
:
'剩余天数不能大于总天数'
,
type
:
'warning'
,
duration
:
2000
});
return
false
}
this
.
setMemberArea
=
false
this
.
$refs
[
formName
].
resetFields
()
this
.
getList
();
})
if
(
this
.
validityType
==
'永久'
)
{
this
.
userMembershipInformation
.
validTime
=
0
}
else
if
(
this
.
validityType
==
'自定义'
)
{
let
date
=
new
Date
(
this
.
validTime
);
this
.
userMembershipInformation
.
validTime
=
date
.
getTime
()
}
// else {
// this.userMembershipInformation.validTime = -1
// }
this
.
userMembershipInformation
.
userId
=
this
.
saveUserId
this
.
userMembershipInformation
.
buyCount
=
undefined
;
// console.log('userMembershipInformation:' + JSON.stringify(this.userMembershipInformation))
seveObj
(
this
.
userMembershipInformation
).
then
(
res
=>
{
if
(
res
.
rel
)
{
this
.
$notify
.
success
({
title
:
'修改成功'
,
message
:
`success`
})
}
else
{
this
.
$notify
.
warning
({
title
:
'修改失败'
,
message
:
`failed`
})
}
this
.
setMemberArea
=
false
this
.
$refs
[
formName
].
resetFields
()
this
.
getList
();
})
// }
},
/**
* 显示新增会员窗口
...
...
@@ -1050,10 +1078,10 @@
closeMembershipWindow
()
{
this
.
detailsDialogFormVisible
=
false
;
},
cancelPeopleSetting
(){
cancelPeopleSetting
()
{
this
.
peopleSettingModal
=
false
;
},
setPeopleSetting
(){
setPeopleSetting
()
{
userPosition
(
this
.
peopleSettingObject
).
then
(
response
=>
{
if
(
response
.
status
==
200
)
{
this
.
$notify
({
...
...
@@ -1064,7 +1092,7 @@
});
this
.
peopleSettingModal
=
false
;
this
.
getList
();
}
else
{
}
else
{
this
.
$notify
({
title
:
'失败'
,
message
:
response
.
message
,
...
...
@@ -1074,17 +1102,17 @@
}
});
},
peopleSetting
(
row
){
var
that
=
this
;
peopleSetting
(
row
)
{
var
that
=
this
;
this
.
peopleSettingObject
.
id
=
row
.
userId
;
getrewardSetting
().
then
(
response
=>
{
this
.
settingList
=
response
.
data
;
response
.
data
.
forEach
(
function
(
item
)
{
if
(
row
.
positionName
)
{
if
(
row
.
positionName
==
item
.
name
)
{
response
.
data
.
forEach
(
function
(
item
)
{
if
(
row
.
positionName
)
{
if
(
row
.
positionName
==
item
.
name
)
{
that
.
peopleSettingObject
.
positionId
=
item
.
id
;
}
}
else
{
}
else
{
that
.
peopleSettingObject
.
positionId
=
1
;
}
})
...
...
@@ -1211,26 +1239,26 @@
cleaningQuery
()
{
this
.
listQuery
.
page
=
1
this
.
listQuery
.
limit
=
20
this
.
listQuery
.
mobileList
=
undefined
this
.
listQuery
.
mobile
=
undefined
this
.
listQuery
.
memberLevel
=
undefined
this
.
listQuery
.
source
=
undefined
this
.
listQuery
.
channel
=
undefined
this
.
listQuery
.
registrationTimeEnd
=
undefined
this
.
listQuery
.
registrationTimeBegin
=
undefined
this
.
listQuery
.
postionState
=
undefined
this
.
listQuery
.
mobileList
=
undefined
this
.
listQuery
.
mobile
=
undefined
this
.
listQuery
.
memberLevel
=
undefined
this
.
listQuery
.
source
=
undefined
this
.
listQuery
.
channel
=
undefined
this
.
listQuery
.
registrationTimeEnd
=
undefined
this
.
listQuery
.
registrationTimeBegin
=
undefined
this
.
listQuery
.
postionState
=
undefined
},
change
()
{
this
.
$forceUpdate
()
},
deleteUser
(
row
){
deleteUser
(
row
)
{
this
.
$confirm
(
'确定删除吗?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
deleteUser
(
row
.
userId
).
then
(
res
=>
{
res
=>
{
if
(
res
.
rel
)
{
this
.
$notify
.
success
({
title
:
'删除成功'
,
...
...
@@ -1245,7 +1273,21 @@
this
.
getList
()
})
})
}
},
integerValidator
:
function
()
{
return
{
validator
:
(
rule
,
value
,
callback
)
=>
{
if
(
this
.
$utils
.
isUndefined
(
value
)
||
this
.
$utils
.
isNull
())
{
return
callback
();
}
if
(
!
this
.
$utils
.
isInteger
(
value
))
{
return
callback
(
new
Error
(
'必须为整数'
));
}
callback
();
},
trigger
:
'blur'
};
},
}
}
</
script
>
...
...
@@ -1253,7 +1295,8 @@
.member
.el-dialog--small
{
width
:
500px
;
}
.user-list-dialog
.el-form-item
{
.user-list-dialog
.el-form-item
{
margin-bottom
:
0px
;
}
</
style
>
...
...
src/views/vehicle/vehicleInfo/index.vue
View file @
ca502d38
...
...
@@ -745,6 +745,7 @@
}
from
'api/vehicle/vehicleInfo/'
;
import
{
getAllVehicleModelList
,
getAllVehicleList
}
from
'api/vehicleType'
;
...
...
@@ -1368,7 +1369,7 @@
* 获取全部车型
* */
getAllVehicleType
()
{
getAllVehicleList
().
then
(
response
=>
{
getAllVehicle
Model
List
().
then
(
response
=>
{
let
listRs
=
undefined
;
if
(
!
this
.
$utils
.
isEmpty
(
response
.
data
))
{
listRs
=
response
.
data
;
...
...
src/views/vehicleType/index.vue
View file @
ca502d38
...
...
@@ -69,7 +69,7 @@
<span>
{{
scope
.
row
.
sum
}}
</span>
</
template
>
</el-table-column>
<el-table-column
width=
"
20
0"
align=
"center"
label=
"可租借数量"
>
<el-table-column
width=
"
15
0"
align=
"center"
label=
"可租借数量"
>
<
template
scope=
"scope"
>
<span>
{{
scope
.
row
.
leasableQuantity
}}
</span>
</
template
>
...
...
src/views/xxOfficialWebsite/activityList.vue
0 → 100644
View file @
ca502d38
src/views/xxOfficialWebsite/bannerList.vue
0 → 100644
View file @
ca502d38
src/views/xxOfficialWebsite/newsList.vue
0 → 100644
View file @
ca502d38
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