Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mes-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
周远喜
mes-ui
Commits
eb7b058c
Commit
eb7b058c
authored
Oct 19, 2020
by
renjintao
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'portal' of git.mes123.com:zhouyx/mes-ui into portal
parents
fab53bd0
2fccf7f8
Show whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
4444 additions
and
1288 deletions
+4444
-1288
filed.vue
components/page/filed.vue
+59
-16
opration.vue
components/page/opration.vue
+2
-2
zh-CN.js
i18n/locale/zh-CN.js
+1212
-1195
api.js
pages/account/register/password/api.js
+8
-0
index.vue
pages/account/register/password/index.vue
+278
-0
add.vue
pages/basicData/cache/add.vue
+133
-0
api.js
pages/basicData/cache/api.js
+28
-0
detail.vue
pages/basicData/cache/detail.vue
+102
-0
edit.vue
pages/basicData/cache/edit.vue
+122
-0
index.vue
pages/basicData/cache/index.vue
+345
-0
search.vue
pages/basicData/cache/search.vue
+114
-0
edit.vue
pages/basicData/calendar/class/edit.vue
+2
-2
add.vue
pages/basicData/dic/components/add.vue
+107
-0
edit.vue
pages/basicData/dic/components/edit.vue
+13
-1
index.vue
pages/basicData/dic/index.vue
+192
-70
add.vue
pages/basicData/systemUser/add.vue
+257
-0
api.js
pages/basicData/systemUser/api.js
+61
-0
detail.vue
pages/basicData/systemUser/detail.vue
+139
-0
edit.vue
pages/basicData/systemUser/edit.vue
+266
-0
index.vue
pages/basicData/systemUser/index.vue
+781
-0
search.vue
pages/basicData/systemUser/search.vue
+216
-0
add.vue
pages/basicData/user/add.vue
+2
-1
index.vue
pages/basicData/user/index.vue
+4
-0
search.vue
pages/basicData/user/search.vue
+1
-1
No files found.
components/page/filed.vue
View file @
eb7b058c
<
template
>
<Col
:span=
"span"
class=
"filed-col"
>
<label
v-text=
"name"
class=
"label"
></label>
<span>
<div
class=
"label"
>
<label
v-text=
"name"
></label>
</div>
<div
class=
"value"
>
<slot></slot>
</
span
>
</
div
>
</Col>
</
template
>
<
script
>
export
default
{
name
:
'filed'
,
name
:
"filed"
,
props
:
{
name
:
{
type
:
String
...
...
@@ -18,29 +20,70 @@ export default {
default
:
12
}
}
}
}
;
</
script
>
<
style
lang=
"less"
>
.detail {
display: table;
height: 100%;
border-collapse: collapse;
background: white;
.ivu-row {
display: table-row
;
border-top:
1px solid #ddd
;
border-left: 1px solid #ddd
;
border: 1px solid #ddd
;
border-top:
none
;
height: 100%
;
.filed-col {
display: table-cell;
border-bottom: 1px solid #ddd;
border: 1px solid #ddd;
border-right: none;
margin: 0 -1px -1px -1px;
// box-sizing: border-box;
display: flex;
flex-direction: row;
line-height: 40px;
> .label {
background: #f7f7f7;
flex-grow: 0;
width: 120px;
text-align: right;
padding: 0 8px;
border-right: 1px solid #ddd;
// margin: 0 0 -1px -1px;
flex-shrink: 0;
}
> .value {
word-break: break-all;
word-wrap: break-word;
flex-grow: 1;
padding-left: 10px;
> div {
line-height: 30px;
}
}
}
}
}
.new-detail {
.ivu-row {
width: 100% !important;
.filed-col {
box-sizing: border-box;
.label {
background: #e8eaf1;
line-height: 70px;
display: flex;
flex-direction: row;
> .label {
display: inline-block;
width: 100px;
text-align: right;
padding: 0 5px;
line-height: 40px;
height: 100%;
font-weight: bold;
}
> .value {
text-align: left;
height: 100%;
word-break: break-all;
word-wrap: break-word;
line-height: 20px;
padding-top: 10px;
}
}
}
...
...
components/page/opration.vue
View file @
eb7b058c
...
...
@@ -47,7 +47,7 @@ export default {
detail
:
"查看"
,
edit
:
"编辑"
,
add
:
"添加"
,
delete
:
"删除"
delete
:
"删除"
,
};
if
(
oprates
[
this
.
oprate
]){
...
...
@@ -56,7 +56,7 @@ export default {
}
else
if
(
this
.
oprate
){
this
.
css
=
this
.
oprate
;
}
else
if
(
this
.
type
==
'icon'
){
this
.
css
=
'icon'
this
.
css
=
'icon'
;
}
},
methods
:{
...
...
i18n/locale/zh-CN.js
View file @
eb7b058c
...
...
@@ -428,11 +428,11 @@ export default {
cityName
:
'省市县'
,
creationTime
:
'创建时间'
,
upMent
:
'上级部门'
,
code
:
'部门编号'
,
location
:
'省市县'
,
parent_Id
:
'上级部门'
,
property
:
'属性'
,
parentTitle
:
'上级部门'
code
:
'部门编号'
,
location
:
'省市县'
,
parent_Id
:
'上级部门'
,
property
:
'属性'
,
parentTitle
:
'上级部门'
},
instance
:
{
id
:
'主键'
,
...
...
@@ -1177,7 +1177,7 @@ export default {
requestUrl
:
'服务地址'
,
requestParam
:
'参数'
,
exception
:
'异常详细信息'
,
remark
:
'备注'
remark
:
'备注'
},
user_message_config
:
{
...
...
@@ -1198,10 +1198,27 @@ export default {
status
:
'启用状态'
,
code
:
'编码'
,
template
:
'模板'
,
title
:
'标题'
,
title
:
'标题'
,
departmentIds
:
'部门Id'
,
departments
:
'部门'
,
color
:
'颜色'
,
icon
:
'图标'
,
color
:
'颜色'
,
icon
:
'图标'
,
},
cache_config
:
{
creationTime
:
'创建时间'
,
creatorUserId
:
'创建人'
,
lastModificationTime
:
'更新时间'
,
lastModifierUserId
:
'更新人'
,
isDeleted
:
'删除人'
,
deletionTime
:
'删除时间'
,
deleterUserId
:
'删除人'
,
code
:
'编码'
,
name
:
'名称'
,
describe
:
'描述'
,
duration
:
'缓存时长'
,
strategy
:
'策略'
,
type
:
'类型'
,
state
:
'状态'
,
size
:
'数据长度'
,
}
}
\ No newline at end of file
pages/account/register/password/api.js
0 → 100644
View file @
eb7b058c
import
Api
from
'@/plugins/request'
export
default
{
//10010修改密码
authChangepassword
(
params
)
{
return
Api
.
post
(
`
${
UserUrl
}
/api/services/app/account/changepassword`
,
params
);
},
}
\ No newline at end of file
pages/account/register/password/index.vue
0 → 100644
View file @
eb7b058c
<
template
>
<div>
<Row>
<Col
span=
"24"
>
<Card
class=
"updatePass"
>
<p
slot=
"title"
>
修改密码
</p>
<p
class=
"rowWaring mt"
>
<Alert
type=
"warning"
>
<template
slot=
"desc"
>
密码过于简单,请重新设置密码!
</
template
>
</Alert>
</p>
<p
class=
"mt"
>
用户帐号:{{ userInfo.userName }}
</p>
<Form
ref=
"formCustom"
:model=
"formCustom"
:rules=
"ruleCustom"
:label-width=
"95"
>
<Row>
<Col
span=
"6"
>
<FormItem
label=
"原密码:"
prop=
"oldpass"
>
<Input
type=
"password"
v-model=
"formCustom.oldpass"
size=
"large"
></Input>
</FormItem>
</Col>
</Row>
<Row>
<Col
span=
"6"
class=
"container"
>
<FormItem
label=
"新密码:"
prop=
"passwd"
>
<Input
type=
"password"
v-model=
"formCustom.passwd"
size=
"large"
></Input>
</FormItem>
<div
class=
"input_span"
>
<label
style=
"margin-left: 40px"
>
强度:
</label>
<span
id=
"one"
></span>
<span
id=
"two"
></span>
<span
id=
"three"
></span>
</div>
<div
id=
"font"
>
<span>
弱
</span>
<span>
中
</span>
<span>
强
</span>
</div>
</Col>
</Row>
<Row>
<Col
span=
"6"
>
<FormItem
label=
"确认密码:"
prop=
"passwdCheck"
>
<Input
size=
"large"
type=
"password"
v-model=
"formCustom.passwdCheck"
></Input>
</FormItem>
</Col>
</Row>
<FormItem>
<Button
type=
"primary"
@
click=
"handleSubmit('formCustom')"
>
确认
</Button
>
<Button
@
click=
"handleReset('formCustom')"
style=
"margin-left: 8px"
>
取消
</Button
>
</FormItem>
</Form>
</Card>
</Col>
</Row>
</div>
</template>
<
script
>
import
Api
from
"./api"
;
export
default
{
data
()
{
const
validatePass
=
(
rule
,
value
,
callback
)
=>
{
if
(
value
===
""
)
{
callback
(
new
Error
(
"请输入密码!"
));
}
else
{
if
(
this
.
formCustom
.
passwdCheck
!==
""
)
{
//对第二个密码框单独验证
this
.
$refs
.
formCustom
.
validateField
(
"passwdCheck"
);
}
callback
();
}
};
const
validatePassCheck
=
(
rule
,
value
,
callback
)
=>
{
if
(
value
===
""
)
{
callback
(
new
Error
(
"请输入密码!"
));
}
else
if
(
value
!==
this
.
formCustom
.
passwd
)
{
callback
(
new
Error
(
"两次输入不一致请重新输入!"
));
}
else
{
callback
();
}
};
const
validateold
=
(
rule
,
value
,
callback
)
=>
{
if
(
value
===
""
)
{
callback
(
new
Error
(
"请输入原密码!"
));
}
else
{
callback
();
}
};
return
{
userInfo
:
{
accountId
:
""
,
id
:
""
,
userName
:
""
,
},
msgText
:
""
,
formCustom
:
{
passwd
:
""
,
passwdCheck
:
""
,
oldpass
:
""
,
},
ruleCustom
:
{
passwd
:
[{
validator
:
validatePass
,
trigger
:
"blur"
,
required
:
true
}],
passwdCheck
:
[
{
validator
:
validatePassCheck
,
trigger
:
"blur"
,
required
:
true
},
],
oldpass
:
[{
validator
:
validateold
,
trigger
:
"blur"
,
required
:
true
}],
},
};
},
watch
:
{
"formCustom.passwd"
(
newname
,
oldname
)
{
this
.
msgText
=
this
.
checkStrong
(
newname
);
if
(
this
.
msgText
>
1
||
this
.
msgText
==
1
)
{
document
.
getElementById
(
"one"
).
style
.
background
=
"red"
;
}
else
{
document
.
getElementById
(
"one"
).
style
.
background
=
"#eee"
;
}
if
(
this
.
msgText
>
2
||
this
.
msgText
==
2
)
{
document
.
getElementById
(
"two"
).
style
.
background
=
"orange"
;
}
else
{
document
.
getElementById
(
"two"
).
style
.
background
=
"#eee"
;
}
if
(
this
.
msgText
==
4
)
{
document
.
getElementById
(
"three"
).
style
.
background
=
"#00D1B2"
;
}
else
{
document
.
getElementById
(
"three"
).
style
.
background
=
"#eee"
;
}
},
// deep: true,
},
created
()
{
this
.
userId
=
this
.
$store
.
state
.
userInfo
.
userId
;
},
mounted
()
{
this
.
initUserInfo
();
},
methods
:
{
//获取用户基本信息
initUserInfo
()
{
let
parma
=
{
Id
:
this
.
userId
,
};
this
.
$http
.
sysUser
.
getuserinfo
(
parma
).
then
((
res
)
=>
{
if
(
res
.
result
)
{
this
.
$nextTick
(
function
()
{
this
.
userInfo
=
res
.
result
;
});
}
else
{
this
.
$Message
.
error
(
"查询失败!"
);
}
});
},
checkStrong
(
sValue
)
{
var
modes
=
0
;
//正则表达式验证符合要求的
if
(
sValue
.
length
<
1
)
return
modes
;
if
(
/
\d
/
.
test
(
sValue
))
modes
++
;
//数字
if
(
/
[
a-z
]
/
.
test
(
sValue
))
modes
++
;
//小写
if
(
/
[
A-Z
]
/
.
test
(
sValue
))
modes
++
;
//大写
if
(
/
\W
/
.
test
(
sValue
))
modes
++
;
//特殊字符
//逻辑处理
switch
(
modes
)
{
case
1
:
return
1
;
break
;
case
2
:
return
2
;
break
;
case
3
:
case
4
:
return
sValue
.
length
<
4
?
3
:
4
;
break
;
}
return
modes
;
},
handleSubmit
(
name
)
{
this
.
$refs
[
name
].
validate
((
valid
)
=>
{
if
(
valid
)
{
if
(
this
.
msgText
<
2
){
this
.
$Message
.
warning
(
"密码过于简单,请重新设置密码!"
);
return
;
}
let
params
=
{
accountId
:
this
.
userInfo
.
accountId
,
userId
:
this
.
userInfo
.
id
,
newPassword
:
this
.
formCustom
.
passwdCheck
,
oldPassword
:
this
.
formCustom
.
oldpass
,
};
Api
.
authChangepassword
(
params
).
then
((
res
)
=>
{
if
(
res
.
success
)
{
this
.
$router
.
push
(
"/"
);
this
.
$Message
.
success
(
"修改成功!"
);
}
else
{
this
.
$Message
.
error
(
"修改失败!"
);
}
});
}
});
},
handleReset
(
name
)
{
this
.
$refs
[
name
].
resetFields
();
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.updatePass .mt {
margin: 20px 0;
text-indent: 7px;
}
.input_span span {
display: inline-block;
width: 85px;
height: 10px;
background: #eee;
line-height: 20px;
}
#one {
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
border-right: 0px solid;
margin-left: 10px;
margin-right: 3px;
}
#two {
border-left: 0px solid;
border-right: 0px solid;
margin-left: -5px;
margin-right: 3px;
}
#three {
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
border-left: 0px solid;
margin-left: -5px;
}
#font {
margin-bottom: 20px;
}
#font span:nth-child(1) {
color: red;
margin-left:100px;
}
#font span:nth-child(2) {
color: orange;
margin: 0 60px;
}
#font span:nth-child(3) {
color: #00d1b2;
}
</
style
>
\ No newline at end of file
pages/basicData/cache/add.vue
0 → 100644
View file @
eb7b058c
<
template
>
<Form
ref=
"form"
:model=
"entity"
:rules=
"rules"
:label-width=
"90"
>
<Row>
<Col
:span=
"12"
><FormItem
:label=
"l('code')"
prop=
"code"
>
<Input
v-model=
"entity.code"
>
</Input>
</FormItem></Col>
<Col
:span=
"12"
><FormItem
:label=
"l('name')"
prop=
"name"
>
<Input
v-model=
"entity.name"
>
</Input>
</FormItem></Col>
<Col
:span=
"12"
><FormItem
:label=
"l('duration')"
prop=
"duration"
>
<InputNumber
v-model=
"entity.duration"
></InputNumber>
</FormItem>
</Col>
<Col
:span=
"12"
><FormItem
:label=
"l('strategy')"
prop=
"strategy"
>
<Dictionary
code=
"mes.cache_config.Strategy"
v-model=
"entity.strategy"
></Dictionary>
</FormItem
></Col>
<Col
:span=
"12"
><FormItem
:label=
"l('type')"
prop=
"type"
>
<Dictionary
code=
"mes.cache_config.Type"
v-model=
"entity.type"
></Dictionary>
</FormItem
></Col>
<Col
:span=
"12"
><FormItem
:label=
"l('state')"
prop=
"state"
>
<Dictionary
code=
"mes.cache_config.State"
v-model=
"entity.state"
></Dictionary>
</FormItem
></Col>
<Col
:span=
"24"
><FormItem
:label=
"l('describe')"
prop=
"describe"
>
<Input
v-model=
"entity.describe"
type=
"textarea"
:rows=
"5"
></Input>
</FormItem
></Col>
</Row>
<FormItem>
<Button
type=
"primary"
@
click=
"handleSubmit"
:disabled=
"disabled"
>
保存
</Button
>
<Button
@
click=
"handleClose"
class=
"ml20"
>
取消
</Button>
</FormItem>
</Form>
</
template
>
<
script
>
import
Api
from
"./api"
;
export
default
{
name
:
"Add"
,
data
()
{
return
{
disabled
:
false
,
entity
:
{
code
:
""
,
name
:
""
,
describe
:
""
,
duration
:
0
,
strategy
:
0
,
type
:
0
,
state
:
0
,
},
rules
:
{
code
:
[{
required
:
true
,
message
:
"必填"
,
trigger
:
"blur"
}],
name
:
[{
required
:
true
,
message
:
"必填"
,
trigger
:
"blur"
}],
duration
:
[{
required
:
true
,
message
:
"必填"
,
trigger
:
"blur"
,
type
:
"number"
}],
},
};
},
props
:
{
v
:
Object
,
eid
:
Number
,
},
mounted
()
{
if
(
this
.
eid
>
0
)
{
this
.
load
(
this
.
eid
);
}
},
methods
:
{
handleSubmit
()
{
this
.
$refs
.
form
.
validate
((
v
)
=>
{
if
(
v
)
{
this
.
disabled
=
true
;
Api
.
create
(
this
.
entity
)
.
then
((
r
)
=>
{
this
.
disabled
=
false
;
if
(
r
.
success
)
{
this
.
$Message
.
success
(
"保存成功"
);
this
.
$emit
(
"on-ok"
);
}
else
{
this
.
$Message
.
error
(
"保存失败"
);
}
})
.
catch
((
err
)
=>
{
this
.
disabled
=
false
;
this
.
$Message
.
error
(
"保存失败"
);
console
.
warn
(
err
);
});
}
});
},
handleClose
()
{
this
.
$emit
(
"on-close"
);
},
load
(
v
)
{
Api
.
get
({
id
:
v
}).
then
((
r
)
=>
{
this
.
entity
=
r
.
result
;
this
.
entity
.
id
=
0
;
});
},
l
(
key
)
{
key
=
"cache_config"
+
"."
+
key
;
return
this
.
$t
(
key
);
},
},
watch
:
{
v
()
{
this
.
entity
=
this
.
$u
.
clone
(
this
.
v
);
},
eid
(
v
)
{
if
(
v
>
0
)
{
this
.
load
(
v
);
}
},
},
};
</
script
>
\ No newline at end of file
pages/basicData/cache/api.js
0 → 100644
View file @
eb7b058c
import
Api
from
'@/plugins/request'
export
default
{
index
:
`
${
systemUrl
}
/cacheconfig/paged`
,
paged
(
params
)
{
return
Api
.
post
(
`
${
systemUrl
}
/cacheconfig/paged`
,
params
);
},
get
(
params
)
{
return
Api
.
get
(
`
${
systemUrl
}
/cacheconfig/get`
,
params
);
},
create
(
params
)
{
return
Api
.
post
(
`
${
systemUrl
}
/cacheconfig/create`
,
params
);
},
update
(
params
)
{
return
Api
.
post
(
`
${
systemUrl
}
/cacheconfig/update`
,
params
);
},
delete
(
id
)
{
return
Api
.
delete
(
`
${
systemUrl
}
/cacheconfig/delete`
,
{
params
:
{
id
:
id
}
});
},
deletes
(
params
)
{
return
Api
.
post
(
`
${
systemUrl
}
/cacheconfig/batchdelete`
,
params
);
},
clears
(
id
)
{
return
Api
.
post
(
`
${
systemUrl
}
/cacheconfig/clear`
,
{
"id"
:
id
});
},
allClears
(
params
)
{
return
Api
.
post
(
`
${
systemUrl
}
/cacheconfig/batchclearcache`
,
params
);
}
}
\ No newline at end of file
pages/basicData/cache/detail.vue
0 → 100644
View file @
eb7b058c
<
template
>
<div
class=
"detail"
>
<Row>
<!--
<Filed
:span=
"12"
:name=
"l('creationTime')"
>
{{
entity
.
creationTime
}}
</Filed>
<Filed
:span=
"12"
:name=
"l('creatorUserId')"
>
{{
entity
.
creatorUserId
}}
</Filed>
<Filed
:span=
"12"
:name=
"l('lastModificationTime')"
>
{{
entity
.
lastModificationTime
}}
</Filed>
<Filed
:span=
"12"
:name=
"l('lastModifierUserId')"
>
{{
entity
.
lastModifierUserId
}}
</Filed>
<Filed
:span=
"12"
:name=
"l('isDeleted')"
>
{{
entity
.
isDeleted
}}
</Filed>
<Filed
:span=
"12"
:name=
"l('deletionTime')"
>
{{
entity
.
deletionTime
}}
</Filed>
<Filed
:span=
"12"
:name=
"l('deleterUserId')"
>
{{
entity
.
deleterUserId
}}
</Filed>
-->
<Filed
:span=
"12"
:name=
"l('code')"
>
{{
entity
.
code
}}
</Filed>
<Filed
:span=
"12"
:name=
"l('name')"
>
{{
entity
.
name
}}
</Filed>
<Filed
:span=
"12"
:name=
"l('duration')"
>
{{
entity
.
duration
}}
</Filed>
<Filed
:span=
"12"
:name=
"l('strategy')"
>
<State
code=
"mes.cache_config.Strategy"
:value=
"entity.strategy"
/>
</Filed>
<Filed
:span=
"12"
:name=
"l('type')"
>
<State
code=
"mes.cache_config.Type"
:value=
"entity.type"
/>
</Filed>
<Filed
:span=
"12"
:name=
"l('state')"
>
<State
code=
"mes.cache_config.State"
:value=
"entity.state"
/>
</Filed>
<Filed
:span=
"24"
:name=
"l('size')"
>
{{
entity
.
size
}}
<Button
type=
"error"
v-if=
"entity.size > 0"
@
click=
"clears(entity.id)"
>
清理缓存
</Button
>
</Filed>
<Filed
:span=
"24"
:name=
"l('describe')"
>
{{
entity
.
describe
}}
</Filed>
</Row>
</div>
</
template
>
<
script
>
import
Api
from
"./api"
;
export
default
{
name
:
"Add"
,
data
()
{
return
{
entity
:
{},
rules
:
{
name
:
[{
required
:
true
,
message
:
"必填"
,
trigger
:
"blur"
}],
code
:
[{
required
:
true
,
message
:
"必填"
,
trigger
:
"blur"
}],
},
};
},
props
:
{
eid
:
Number
,
},
mounted
()
{
if
(
this
.
eid
>
0
)
{
this
.
load
(
this
.
eid
);
}
},
methods
:
{
load
(
v
)
{
Api
.
get
({
id
:
v
}).
then
((
r
)
=>
{
this
.
entity
=
r
.
result
;
this
.
$emit
(
"on-load"
);
});
},
handleClose
()
{
this
.
$emit
(
"on-close"
);
},
l
(
key
)
{
key
=
"cache_config"
+
"."
+
key
;
return
this
.
$t
(
key
);
},
clears
(
id
)
{
this
.
$Modal
.
confirm
({
title
:
"确认"
,
content
:
"确认要清理缓存吗?"
,
onOk
:
()
=>
{
Api
.
clears
(
id
).
then
((
r
)
=>
{
if
(
r
.
success
)
{
this
.
$Message
.
success
(
"缓存已清除"
);
}
});
},
});
},
},
watch
:
{
eid
(
v
)
{
if
(
v
>
0
)
{
this
.
load
(
v
);
}
},
},
};
</
script
>
\ No newline at end of file
pages/basicData/cache/edit.vue
0 → 100644
View file @
eb7b058c
<
template
>
<Form
ref=
"form"
:model=
"entity"
:rules=
"rules"
:label-width=
"90"
>
<Row>
<Col
:span=
"12"
><FormItem
:label=
"l('code')"
prop=
"code"
>
<Input
v-model=
"entity.code"
>
</Input>
</FormItem
></Col>
<Col
:span=
"12"
><FormItem
:label=
"l('name')"
prop=
"name"
>
<Input
v-model=
"entity.name"
>
</Input>
</FormItem
></Col>
<Col
:span=
"12"
><FormItem
:label=
"l('duration')"
prop=
"duration"
>
<InputNumber
v-model=
"entity.duration"
></InputNumber>
</FormItem
></Col>
<Col
:span=
"12"
><FormItem
:label=
"l('strategy')"
prop=
"strategy"
>
<Dictionary
code=
"mes.cache_config.Strategy"
v-model=
"entity.strategy"
></Dictionary>
</FormItem
></Col>
<Col
:span=
"12"
><FormItem
:label=
"l('type')"
prop=
"type"
>
<Dictionary
code=
"mes.cache_config.Type"
v-model=
"entity.type"
></Dictionary>
</FormItem
></Col>
<Col
:span=
"12"
><FormItem
:label=
"l('state')"
prop=
"state"
>
<Dictionary
code=
"mes.cache_config.State"
v-model=
"entity.state"
></Dictionary>
</FormItem
></Col>
<Col
:span=
"24"
><FormItem
:label=
"l('describe')"
prop=
"describe"
>
<Input
v-model=
"entity.describe"
type=
"textarea"
:rows=
"5"
></Input>
</FormItem
></Col>
</Row>
<FormItem>
<Button
type=
"primary"
@
click=
"handleSubmit"
:disabled=
"disabled"
>
保存
</Button
>
<Button
@
click=
"handleClose"
class=
"ml20"
>
取消
</Button>
</FormItem>
</Form>
</
template
>
<
script
>
import
Api
from
"./api"
;
export
default
{
name
:
"Edit"
,
data
()
{
return
{
disabled
:
false
,
entity
:
{},
rules
:
{
code
:
[{
required
:
true
,
message
:
"必填"
,
trigger
:
"blur"
}],
name
:
[{
required
:
true
,
message
:
"必填"
,
trigger
:
"blur"
}],
duration
:
[{
required
:
true
,
message
:
"必填"
,
trigger
:
"blur"
,
type
:
"number"
}],
},
};
},
props
:
{
eid
:
Number
,
},
mounted
()
{
if
(
this
.
eid
>
0
)
{
this
.
load
(
this
.
eid
);
}
},
methods
:
{
load
(
v
)
{
Api
.
get
({
id
:
v
}).
then
((
r
)
=>
{
this
.
entity
=
r
.
result
;
});
},
handleSubmit
()
{
this
.
$refs
.
form
.
validate
((
v
)
=>
{
if
(
v
)
{
this
.
disabled
=
true
;
Api
.
update
(
this
.
entity
)
.
then
((
r
)
=>
{
this
.
disabled
=
false
;
if
(
r
.
success
)
{
this
.
$Message
.
success
(
"保存成功"
);
this
.
$emit
(
"on-ok"
);
}
else
{
this
.
$Message
.
error
(
"保存失败"
);
}
})
.
catch
((
err
)
=>
{
this
.
disabled
=
false
;
this
.
$Message
.
error
(
"保存失败"
);
console
.
warn
(
err
);
});
}
});
},
handleClose
()
{
this
.
$emit
(
"on-close"
);
},
l
(
key
)
{
key
=
"cache_config"
+
"."
+
key
;
return
this
.
$t
(
key
);
},
},
watch
:
{
eid
(
v
)
{
if
(
v
!=
0
)
{
this
.
load
(
v
);
}
},
},
};
</
script
>
\ No newline at end of file
pages/basicData/cache/index.vue
0 → 100644
View file @
eb7b058c
<
template
>
<div>
<DataGrid
:columns=
"columns"
ref=
"grid"
:action=
"action"
@
on-selection-change=
"selectInfo"
><template
slot=
"easySearch"
><Form
ref=
"formInline"
:model=
"easySearch"
inline
><FormItem
prop=
"keys"
><Input
placeholder=
"请输入关键字名称"
v-model=
"easySearch.keys.value"
/>
</FormItem>
<FormItem
><Button
type=
"primary"
@
click=
"search"
>
查询
</Button></FormItem
>
</Form></
template
>
<
template
slot=
"searchForm"
>
<Search
/>
</
template
>
<
template
slot=
"batch"
>
<Button
type=
"primary"
@
click=
"allClear"
>
批量清理
</Button>
<Button
type=
"error"
@
click=
"inSure"
>
批量删除
</Button>
</
template
>
<
template
slot=
"buttons"
>
<Button
type=
"primary"
@
click=
"add"
>
新增
</Button>
</
template
>
</DataGrid>
<Modal
v-model=
"modal"
:title=
"title"
width=
"1200"
footer-hide
>
<component
:is=
"detail"
:eid=
"curId"
@
on-close=
"cancel"
@
on-ok=
"ok"
/>
</Modal>
</div>
</template>
<
script
>
import
Api
from
"./api"
;
import
Search
from
"./search"
;
export
default
{
name
:
"list"
,
components
:
{
Search
,
},
head
:
{
title
:
""
,
author
:
"henq"
,
description
:
"cache_config 10/9/2020 2:37:46 PM"
,
},
data
()
{
return
{
results
:
[],
selectList
:
[],
action
:
Api
.
index
,
easySearch
:
{
keys
:
{
op
:
"name"
,
value
:
null
},
},
modal
:
false
,
title
:
"新增"
,
detail
:
null
,
curId
:
0
,
columns
:
[
{
key
:
"id"
,
title
:
this
.
$t
(
"id"
),
hide
:
true
,
align
:
"left"
,
high
:
true
,
},
{
key
:
"selection"
,
title
:
"多选"
,
width
:
60
,
align
:
"center"
,
type
:
"selection"
,
},
{
key
:
"name"
,
title
:
this
.
l
(
"name"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
render
:
(
h
,
params
)
=>
{
return
h
(
"op"
,
{
attrs
:
{
oprate
:
"detail"
,
},
on
:
{
click
:
()
=>
this
.
view
(
params
.
row
.
id
),
},
},
params
.
row
.
name
);
},
},
{
key
:
"state"
,
title
:
this
.
l
(
"state"
),
align
:
"left"
,
high
:
true
,
code
:
"mes.cache_config.State"
,
},
{
key
:
"code"
,
title
:
this
.
l
(
"code"
),
align
:
"left"
,
high
:
true
},
{
key
:
"creatorUserId"
,
title
:
this
.
l
(
"creatorUserId"
),
align
:
"left"
,
high
:
true
,
},
// {
// key: "lastModificationTime",
// title: this.l("lastModificationTime"),
// align: "left",
// high: true,
// },
// {
// key: "lastModifierUserId",
// title: this.l("lastModifierUserId"),
// align: "left",
// high: true,
// },
// {
// key: "isDeleted",
// title: this.l("isDeleted"),
// align: "left",
// high: true,
// },
// {
// key: "deletionTime",
// title: this.l("deletionTime"),
// align: "left",
// high: true,
// },
// {
// key: "deleterUserId",
// title: this.l("deleterUserId"),
// align: "left",
// high: true,
// },
{
key
:
"duration"
,
title
:
this
.
l
(
"duration"
),
align
:
"left"
,
high
:
true
,
},
{
key
:
"strategy"
,
title
:
this
.
l
(
"strategy"
),
align
:
"left"
,
high
:
true
,
code
:
"mes.cache_config.Strategy"
,
},
{
key
:
"type"
,
title
:
this
.
l
(
"type"
),
align
:
"left"
,
high
:
true
,
code
:
"mes.cache_config.Type"
,
},
{
key
:
"creationTime"
,
title
:
this
.
l
(
"creationTime"
),
align
:
"left"
,
high
:
true
,
},
{
title
:
"操作"
,
key
:
"action"
,
width
:
170
,
align
:
"right"
,
render
:
(
h
,
params
)
=>
{
return
h
(
"div"
,
{
class
:
"action"
},
[
h
(
"op"
,
{
attrs
:
{
oprate
:
"detail"
},
on
:
{
click
:
()
=>
this
.
view
(
params
.
row
.
id
)
},
},
"查看"
),
//h('op', { attrs: { oprate: 'copy' }, on: { click: () => this.copy(params.row.id) } }, '克隆'),
h
(
"op"
,
{
attrs
:
{
oprate
:
"edit"
},
on
:
{
click
:
()
=>
this
.
edit
(
params
.
row
.
id
)
},
},
"编辑"
),
h
(
"op"
,
{
attrs
:
{
oprate
:
"delete"
,
msg
:
"确认要清理缓存吗?"
},
on
:
{
click
:
()
=>
this
.
clears
(
params
.
row
.
id
)
},
},
"清理"
),
h
(
"op"
,
{
attrs
:
{
oprate
:
"delete"
},
on
:
{
click
:
()
=>
this
.
remove
(
params
.
row
.
id
)
},
},
"删除"
),
]);
},
},
],
};
},
mounted
()
{
console
.
log
(
this
);
},
async
fetch
({
store
,
params
})
{
await
store
.
dispatch
(
"loadDictionary"
);
// 加载数据字典
},
methods
:
{
ok
()
{
this
.
$refs
.
grid
.
load
();
this
.
modal
=
false
;
this
.
curId
=
0
;
},
search
()
{
this
.
$refs
.
grid
.
reload
(
this
.
easySearch
);
},
add
()
{
this
.
curId
=
0
;
this
.
title
=
"新增"
;
this
.
detail
=
()
=>
import
(
"./add"
);
this
.
modal
=
true
;
},
// copy(id) {
// this.curId = id;
// this.title = "克隆";
// this.detail = () => import("./add");
// this.modal = true;
// },
view
(
id
)
{
this
.
curId
=
id
;
this
.
title
=
"详情"
;
this
.
detail
=
()
=>
import
(
"./detail"
);
this
.
modal
=
true
;
},
edit
(
id
)
{
this
.
curId
=
id
;
this
.
title
=
"编辑"
;
this
.
detail
=
()
=>
import
(
"./edit"
);
this
.
modal
=
true
;
},
remove
(
id
)
{
Api
.
delete
(
id
).
then
((
r
)
=>
{
if
(
r
.
success
)
{
this
.
$refs
.
grid
.
load
();
this
.
$Message
.
success
(
"删除成功"
);
}
});
},
clears
(
id
)
{
Api
.
clears
(
id
).
then
((
r
)
=>
{
if
(
r
.
success
)
{
this
.
$refs
.
grid
.
load
();
this
.
$Message
.
success
(
"缓存已清除"
);
}
});
},
cancel
()
{
this
.
curId
=
0
;
this
.
modal
=
false
;
},
l
(
key
)
{
/*
cache_config:{
creationTime:'创建时间',
creatorUserId:'创建人',
lastModificationTime:'更新时间',
lastModifierUserId:'更新人',
isDeleted:'删除人',
deletionTime:'删除时间',
deleterUserId:'删除人',
key:'键',
name:'名称',
describe:'描述',
duration:'缓存时长',
strategy:'策略',
type:'类型',
state:'状态',
}
*/
let
vkey
=
"cache_config"
+
"."
+
key
;
return
this
.
$t
(
vkey
)
||
key
;
},
selectInfo
(
value
)
{
this
.
selectList
=
[];
this
.
selectList
=
value
;
let
statueArry
=
[];
value
.
forEach
((
data
)
=>
{
var
that
=
this
;
statueArry
.
push
(
data
.
id
);
});
this
.
results
=
[];
this
.
results
=
statueArry
;
},
inSure
()
{
this
.
$Modal
.
confirm
({
title
:
"确认"
,
content
:
"是否确认批量删除?"
,
onOk
:
()
=>
{
Api
.
deletes
(
this
.
results
).
then
((
r
)
=>
{
if
(
r
.
success
)
{
this
.
$refs
.
grid
.
load
();
this
.
$refs
.
grid
.
selectAll
(
false
);
this
.
$Message
.
success
(
"删除成功"
);
}
});
},
});
},
allClear
()
{
this
.
$Modal
.
confirm
({
title
:
"确认"
,
content
:
"是否确认批量清除数据?"
,
onOk
:
()
=>
{
Api
.
allClears
(
this
.
results
).
then
((
r
)
=>
{
if
(
r
.
success
)
{
this
.
$refs
.
grid
.
load
();
this
.
$refs
.
grid
.
selectAll
(
false
);
this
.
$Message
.
success
(
"缓存已清除"
);
}
});
},
});
},
},
};
</
script
>
<
style
lang=
"less"
>
</
style
>
\ No newline at end of file
pages/basicData/cache/search.vue
0 → 100644
View file @
eb7b058c
<
template
>
<Form
ref=
"form"
:model=
"condition"
:label-width=
"90"
>
<Row>
<Col
:span=
"12"
:v-if=
"condition.id.show"
><FormItem
:label=
"$t('id')"
prop=
"id"
>
<Input
v-model=
"condition.id.value"
>
</Input>
</FormItem
></Col>
<Col
:span=
"12"
:v-if=
"condition.creationTime.show"
><FormItem
:label=
"l('creationTime')"
prop=
"creationTime"
>
<DatePicker
type=
"daterange"
v-model=
"condition.creationTime.value"
></DatePicker>
</FormItem
></Col>
<Col
:span=
"12"
:v-if=
"condition.creatorUserId.show"
><FormItem
:label=
"l('creatorUserId')"
prop=
"creatorUserId"
>
<Input
v-model=
"condition.creatorUserId.value"
>
</Input>
</FormItem
></Col>
<Col
:span=
"12"
:v-if=
"condition.lastModificationTime.show"
><FormItem
:label=
"l('lastModificationTime')"
prop=
"lastModificationTime"
>
<DatePicker
type=
"daterange"
v-model=
"condition.lastModificationTime.value"
></DatePicker>
</FormItem
></Col>
<Col
:span=
"12"
:v-if=
"condition.lastModifierUserId.show"
><FormItem
:label=
"l('lastModifierUserId')"
prop=
"lastModifierUserId"
>
<Input
v-model=
"condition.lastModifierUserId.value"
>
</Input>
</FormItem
></Col>
<Col
:span=
"12"
:v-if=
"condition.deletionTime.show"
><FormItem
:label=
"l('deletionTime')"
prop=
"deletionTime"
>
<DatePicker
type=
"daterange"
v-model=
"condition.deletionTime.value"
></DatePicker>
</FormItem
></Col>
<Col
:span=
"12"
:v-if=
"condition.key.show"
><FormItem
:label=
"l('code')"
prop=
"code"
>
<Input
v-model=
"condition.code.value"
>
</Input>
</FormItem
></Col>
<Col
:span=
"12"
:v-if=
"condition.name.show"
><FormItem
:label=
"l('name')"
prop=
"name"
>
<Input
v-model=
"condition.name.value"
>
</Input>
</FormItem
></Col>
<Col
:span=
"24"
:v-if=
"condition.describe.show"
><FormItem
:label=
"l('describe')"
prop=
"describe"
>
<Input
v-model=
"condition.describe.value"
>
</Input>
</FormItem
></Col>
<Col
:span=
"12"
:v-if=
"condition.duration.show"
><FormItem
:label=
"l('duration')"
prop=
"duration"
>
<Input
v-model=
"condition.duration.value"
>
</Input>
</FormItem
></Col>
<Col
:span=
"12"
:v-if=
"condition.strategy.show"
><FormItem
:label=
"l('strategy')"
prop=
"strategy"
>
<Dictionary
code=
"mes.cache_config.Strategy"
v-model=
"condition.strategy.value"
></Dictionary>
</FormItem
></Col>
<Col
:span=
"12"
:v-if=
"condition.type.show"
><FormItem
:label=
"l('type')"
prop=
"type"
>
<Dictionary
code=
"mes.cache_config.Type"
v-model=
"condition.type.value"
></Dictionary>
</FormItem
></Col>
<Col
:span=
"12"
:v-if=
"condition.state.show"
><FormItem
:label=
"l('state')"
prop=
"state"
>
<Dictionary
code=
"mes.cache_config.State"
v-model=
"condition.state.value"
></Dictionary>
</FormItem
></Col>
</Row>
</Form>
</
template
>
<
script
>
import
Api
from
"./api"
;
export
default
{
name
:
"Add"
,
data
()
{
return
{
condition
:
{
id
:
{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
creationTime
:
{
op
:
"Range"
,
value
:
null
,
show
:
true
},
creatorUserId
:
{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
lastModificationTime
:
{
op
:
"Range"
,
value
:
null
,
show
:
true
},
lastModifierUserId
:
{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
deletionTime
:
{
op
:
"Range"
,
value
:
null
,
show
:
true
},
code
:
{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
name
:
{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
describe
:
{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
duration
:
{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
strategy
:
{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
type
:
{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
state
:
{
op
:
"Equal"
,
value
:
null
,
show
:
true
},
},
};
},
methods
:
{
handleClose
()
{
this
.
$emit
(
"on-close"
);
},
l
(
key
)
{
key
=
"cache_config"
+
"."
+
key
;
return
this
.
$t
(
key
);
},
},
};
</
script
>
\ No newline at end of file
pages/basicData/calendar/class/edit.vue
View file @
eb7b058c
...
...
@@ -11,11 +11,11 @@
<Input
v-model=
"entity.shiftName"
></Input>
</FormItem>
</Col>
<
!--
<
Col
:span=
"24"
>
<Col
:span=
"24"
>
<FormItem
:label=
"l('shiftStartEnd')"
prop=
"shiftStartEnd"
>
<TimePicker
format=
"HH:mm"
v-model=
"entity.shiftStartEnd"
type=
"timerange"
placeholder=
"选择时间段"
style=
"width: 130px"
></TimePicker>
</FormItem>
</Col>
-->
</Col>
<Col
:span=
"24"
>
<FormItem
:label=
"l('shiftStart')"
prop=
"shiftStart"
>
<TimePicker
format=
"HH:mm"
v-model=
"entity.shiftStart"
placeholder=
"选择时间段"
style=
"width: 130px"
></TimePicker>
...
...
pages/basicData/dic/components/add.vue
0 → 100644
View file @
eb7b058c
<
template
>
<Form
ref=
"form"
:model=
"entity"
:rules=
"rules"
:label-width=
"100"
>
<Row
class=
"rowTitle100"
>
<FormItem
label=
"类别"
prop=
"typeId"
>
<RadioGroup
v-model=
"entity.typeId"
>
<Radio
:label=
"0"
disabled
>
系统
</Radio>
<Radio
:label=
"1"
disabled
>
分类
</Radio>
<Radio
:label=
"2"
disabled
>
字典
</Radio>
<Radio
:label=
"3"
disabled
>
字典项
</Radio>
</RadioGroup>
</FormItem>
</Row>
<Row
class=
"rowTitle100"
>
<FormItem
label=
"名称"
prop=
"name"
>
<Input
v-model=
"entity.name"
>
<ColorPicker
v-model=
"entity.color"
slot=
"prepend"
transfer
size=
"small"
transfer
recommend
/>
</Input>
</FormItem>
</Row>
<Row
class=
"rowTitle100"
>
<FormItem
label=
"编码"
prop=
"code"
>
<Input
v-model=
"entity.code"
/>
</FormItem>
</Row>
<Row
class=
"rowTitle100"
>
<FormItem
label=
"图标"
prop=
"icon"
>
<InputIcon
v-model=
"entity.icon"
></InputIcon>
</FormItem>
</Row>
<FormItem
label=
"状态"
prop=
"number"
>
<RadioGroup
v-model=
"entity.status"
>
<Radio
:label=
"0"
>
启用
</Radio>
<Radio
:label=
"1"
>
禁用(名称和值可以启用或禁用,但不能删除)
</Radio>
</RadioGroup>
</FormItem>
<FormItem
label=
"锁定"
prop=
"number"
>
<RadioGroup
v-model=
"entity.isStatic"
>
<Radio
:label=
"0"
>
不锁定
</Radio>
<Radio
:label=
"1"
>
锁定(锁定后不可改变名称和值,不能删除)
</Radio>
</RadioGroup>
</FormItem>
<Row
class=
"rowTitle100"
>
<FormItem
label=
"描述"
prop=
"description"
>
<Input
v-model=
"entity.description"
type=
"textarea"
:rows=
"3"
></Input>
</FormItem>
</Row>
<FormItem>
<Button
type=
"primary"
@
click=
"handleSubmit"
>
保存
</Button>
<Button
@
click=
"handleClose"
class=
"ml20"
>
取消
</Button>
</FormItem>
</Form>
</
template
>
<
script
>
import
api
from
"../api.js"
;
export
default
{
name
:
"Edit"
,
data
()
{
return
{
entity
:
{
upId
:
0
,
typeId
:
this
.
v
.
typeId
,
status
:
0
,
isStatic
:
0
,
priority
:
0
,
color
:
""
,
},
rules
:
{
name
:
[{
required
:
true
,
message
:
"必填"
,
trigger
:
"blur"
}],
code
:
[{
required
:
true
,
message
:
"必填"
,
trigger
:
"blur"
}],
},
};
},
props
:
[
"v"
],
mounted
()
{
if
(
this
.
v
.
id
)
{
this
.
entity
.
typeId
=
this
.
v
.
typeId
+
1
;
this
.
entity
.
upId
=
this
.
v
.
id
;
}
},
methods
:
{
handleSubmit
()
{
this
.
$refs
.
form
.
validate
((
v
)
=>
{
if
(
v
)
{
api
.
save
(
this
.
entity
).
then
((
r
)
=>
{
console
.
warn
(
r
);
if
(
r
.
success
)
{
this
.
$Message
.
success
(
"添加成功"
);
this
.
$emit
(
"on-ok"
);
}
});
}
});
},
handleClose
()
{
this
.
$emit
(
"on-close"
);
},
},
watch
:
{},
};
</
script
>
pages/basicData/dic/components/edit.vue
View file @
eb7b058c
...
...
@@ -55,7 +55,9 @@ export default {
name
:
'Edit'
,
data
()
{
return
{
entity
:
this
.
v
,
entity
:
{
color
:
""
},
rules
:
{
name
:
[{
required
:
true
,
message
:
'必填'
,
trigger
:
'blur'
}],
code
:
[{
required
:
true
,
message
:
'必填'
,
trigger
:
'blur'
}]
...
...
@@ -65,6 +67,13 @@ export default {
props
:
{
v
:
Object
},
mounted
(){
this
.
entity
=
this
.
v
if
(
!
this
.
entity
.
color
){
this
.
entity
.
color
=
""
;
}
},
methods
:
{
handleSubmit
()
{
this
.
$refs
.
form
.
validate
((
v
)
=>
{
...
...
@@ -86,6 +95,9 @@ export default {
watch
:
{
v
(
v
)
{
this
.
entity
=
this
.
v
if
(
!
this
.
entity
.
color
){
this
.
entity
.
color
=
""
;
}
console
.
info
(
this
.
entity
)
}
}
...
...
pages/basicData/dic/index.vue
View file @
eb7b058c
<
template
>
<Layout
class=
"full"
>
<Sider
hide-trigger
:style=
"
{background: '#fff'}" class="menu" width="240">
<Sider
hide-trigger
:style=
"
{ background: '#fff' }"
class="menu"
width="240"
>
<h3
class=
"title"
>
数据字典
<ButtonGroup
class=
"fr"
size=
"small"
>
<Button
icon=
"md-add"
title=
"新增顶级"
@
click=
"add(0)"
></Button>
<Button>
<Icon
:type=
"expand
?'md-arrow-dropright':
'md-arrow-dropdown'"
:type=
"expand
? 'md-arrow-dropright' :
'md-arrow-dropdown'"
size=
"16"
@
click=
"toggle"
title=
"展开/合并"
...
...
@@ -18,22 +24,48 @@
</ButtonGroup>
</h3>
<div>
<Input
v-model
.
trim=
"keys"
search
placeholder=
"请输入客户名称"
clearable
/>
<Input
v-model
.
trim=
"keys"
search
placeholder=
"请输入名称/编码"
clearable
/>
<Tree
:data=
"projectList"
@
on-select-change=
"change"
class=
"tree-i"
:render=
"renderContent"
/>
<Dropdown
transfer
ref=
"contentMenu"
style=
"display: none"
trigger=
"click"
placement=
"right-start"
>
<DropdownMenu
slot=
"list"
ref=
"ppp"
style=
"min-width: 80px"
>
<DropdownItem
@
click
.
native=
"add"
>
<a>
添加
</a>
</DropdownItem>
<DropdownItem
name=
"edit"
@
click
.
native=
"editRight"
>
<a>
修改
</a>
</DropdownItem>
<!--
<DropdownItem
name=
"del"
@
click
.
native=
"removeNew"
>
<a>
删除
</a>
</DropdownItem>
-->
</DropdownMenu>
</Dropdown>
</div>
</Sider>
<Content
class=
"content"
>
<Tools>
<Breadcrumb
style=
"display:inline-block"
>
<BreadcrumbItem
v-for=
"(li,i) in names"
:key=
"i"
>
{{
li
}}
</BreadcrumbItem>
<Breadcrumb
style=
"display: inline-block"
>
<BreadcrumbItem
v-for=
"(li, i) in names"
:key=
"i"
>
{{
li
}}
</BreadcrumbItem>
</Breadcrumb>
<template
slot=
"btns"
>
<span
class=
"mr20"
v-if=
"node.typeId
==
2"
>
<span
class=
"mr20"
v-if=
"node.typeId
==
2"
>
索引:
<a
data-clipboard-action=
"copy"
...
...
@@ -41,7 +73,8 @@
@
click=
"copy"
id=
"code"
class=
"tag-read"
>
{{
node
.
code
}}
</a>
>
{{
node
.
code
}}
</a
>
</span>
<Button
type=
"default"
@
click=
"setRoot"
>
返回顶级
</Button>
</
template
>
...
...
@@ -53,12 +86,16 @@
border
:columns=
"columns"
:data=
"data"
:draggable=
"edit
==
-1"
:draggable=
"edit
==
-1"
class=
"tableCommon"
@
on-drag-drop=
"onDragDrop"
>
<
template
slot-scope=
"{ row, index }"
slot=
"typeId"
>
<state
code=
"system.dictionary.typeId"
type=
"text"
:value=
"row.typeId"
></state>
<state
code=
"system.dictionary.typeId"
type=
"text"
:value=
"row.typeId"
></state>
</
template
>
<
template
slot-scope=
"{ row, index }"
slot=
"status"
>
<state
code=
"status"
type=
"tag"
:value=
"row.status"
></state>
...
...
@@ -67,16 +104,16 @@
<state
code=
"isStatic"
type=
"tag"
:value=
"row.isStatic"
></state>
</
template
>
<
template
slot-scope=
"{ row, index }"
slot=
"name"
>
<span
v-if=
"edit
!=
index"
v-text=
"row.name"
></span>
<span
v-if=
"edit
!=
index"
v-text=
"row.name"
></span>
<Input
v-else
type=
"text"
v-model
.
trim=
"cur.name"
/>
</
template
>
<
template
slot-scope=
"{ row, index }"
slot=
"color"
>
<div
v-if=
"edit
!=
index"
>
<div
v-if=
"edit
!=
index"
>
<ColorPicker
:value=
"row.color
||
''"
:value=
"row.color
||
''"
transfer
recommend
@
on-change=
"setColor($event,
row,
index)"
@
on-change=
"setColor($event,
row,
index)"
/>
</div>
<div
v-else
>
...
...
@@ -85,17 +122,20 @@
</
template
>
<
template
slot-scope=
"{ row, index }"
slot=
"icon"
>
<div
v-if=
"row.icon"
>
<Icon
:type=
"row.icon"
@
on-change=
"setColor($event,row,index)"
/>
<Icon
:type=
"row.icon"
@
on-change=
"setColor($event, row, index)"
/>
</div>
</
template
>
<
template
slot-scope=
"{ row, index }"
slot=
"code"
>
<span
v-if=
"edit
!=
index"
v-text=
"row.code"
></span>
<span
v-if=
"edit
!=
index"
v-text=
"row.code"
></span>
<Input
v-else
type=
"text"
v-model
.
trim=
"cur.code"
/>
</
template
>
<
template
slot-scope=
"{ row, index }"
slot=
"action"
>
<div
v-if=
"edit
!=
index"
class=
"action"
>
<op
class=
"edit"
@
click=
"editRow(row,index)"
>
编辑
</op>
<!--
<op
class=
"remove"
@
click=
"delRow(row,index)"
>
删除
</op>
-->
<div
v-if=
"edit
!=
index"
class=
"action"
>
<op
class=
"edit"
@
click=
"editRow(row,
index)"
>
编辑
</op>
<!--
<op
class=
"remove"
@
click=
"delRow(row,
index)"
>
删除
</op>
-->
</div>
<div
class=
"action"
v-else
>
<op
class=
"edit"
@
click=
"save"
>
保存
</op>
...
...
@@ -103,36 +143,53 @@
</div>
</
template
>
</Table>
<Button
type=
"primary"
:disabled=
"edit!=-1"
long
@
click=
"addNew"
class=
"mt10"
>
添加
</Button>
<Alert
type=
"info"
class=
"mt10"
v-if=
"data.length>1&&edit==-1"
>
提示: 支持拖拽排序,数据未保存时不可拖拽排序。
</Alert>
<Button
type=
"primary"
:disabled=
"edit != -1"
long
@
click=
"addNew"
class=
"mt10"
>
添加
</Button
>
<Alert
type=
"info"
class=
"mt10"
v-if=
"data.length > 1 && edit == -1"
>
提示: 支持拖拽排序,数据未保存时不可拖拽排序。
</Alert
>
</div>
<Modal
v-model=
"editModal"
:title=
"editTitle"
footer-hide
>
<Edit
:v=
"editModel"
@
on-close=
"editModal=false"
@
on-ok=
"editOk"
/>
<component
:is=
"datail"
:v=
"editModel"
@
on-close=
"editModal = false"
@
on-ok=
"editOk"
/>
</Modal>
</Content>
</Layout>
</template>
<
script
>
import
Edit
from
"./components/edit"
;
import
api
from
"./api.js"
;
import
Clipboard
from
"clipboard"
;
const
root
=
{
id
:
0
,
typeId
:
-
1
,
title
:
"顶级节点"
,
code
:
""
code
:
""
,
};
export
default
{
data
()
{
return
{
datail
:
null
,
addTitle
:
"新增"
,
addModal
:
false
,
keys
:
""
,
treeHeight
:
""
,
code
:
"2"
,
expand
:
false
,
editModal
:
false
,
editModel
:
{
color
:
""
color
:
""
,
},
editTitle
:
"编辑"
,
node
:
root
,
color4
:
""
,
...
...
@@ -147,64 +204,64 @@ export default {
{
type
:
"index"
,
width
:
60
,
align
:
"center"
align
:
"center"
,
},
{
title
:
"类别"
,
key
:
"typeId"
,
width
:
100
,
align
:
"center"
,
slot
:
"typeId"
slot
:
"typeId"
,
},
{
title
:
"颜色"
,
key
:
"color"
,
width
:
100
,
align
:
"center"
,
slot
:
"color"
slot
:
"color"
,
},
{
title
:
"名称"
,
key
:
"name"
,
width
:
150
,
slot
:
"name"
slot
:
"name"
,
},
{
title
:
"编码"
,
key
:
"code"
,
slot
:
"code"
slot
:
"code"
,
},
{
title
:
"图标"
,
key
:
"icon"
,
slot
:
"icon"
slot
:
"icon"
,
},
{
title
:
"描述"
,
key
:
"description"
key
:
"description"
,
},
{
title
:
"状态"
,
key
:
"status"
,
width
:
100
,
align
:
"center"
,
slot
:
"status"
slot
:
"status"
,
},
{
title
:
"锁定"
,
key
:
"isStatic"
,
width
:
100
,
align
:
"center"
,
slot
:
"isStatic"
slot
:
"isStatic"
,
},
{
title
:
"操作"
,
key
:
"action"
,
width
:
160
,
align
:
"center"
,
slot
:
"action"
}
]
slot
:
"action"
,
}
,
]
,
};
},
computed
:
{
...
...
@@ -214,7 +271,7 @@ export default {
let
items
=
this
.
tree
;
search
(
this
.
keys
,
items
);
function
search
(
keys
,
data
)
{
data
.
map
(
u
=>
{
data
.
map
(
(
u
)
=>
{
if
(
keys
.
length
==
u
.
title
)
{
result
.
push
(
u
);
}
else
{
...
...
@@ -235,9 +292,8 @@ export default {
});
}
return
result
;
}
},
components
:
{
Edit
},
},
async
fetch
({
store
,
params
})
{
await
store
.
dispatch
(
"loadDictionary"
);
// 加载数据字典
},
...
...
@@ -259,56 +315,121 @@ export default {
},
methods
:
{
renderContent
(
h
,
{
root
,
node
,
data
})
{
// console.log(data);
return
h
(
"span"
,
[
h
(
"Poptip"
,
{
h
(
"Poptip"
,
{
props
:
{
content
:
data
.
data
.
code
,
trigger
:
"hover"
,
placement
:
"top-start"
placement
:
"top-start"
,
},
style
:
{
cursor
:
"pointer"
}
},[
h
(
'span'
,{
cursor
:
"pointer"
,
color
:
data
.
data
.
status
==
1
?
"#ccc"
:
"#515a6e"
,
},
},
[
h
(
"State"
,
{
props
:
{
value
:
data
.
data
.
typeId
,
code
:
"system.dictionary.typeId"
,
type
:
"tag"
,
},
},
data
.
data
.
typeId
),
h
(
"span"
,
{
on
:
{
// click: () => {
// this.handleSelect(data); //手动选择树节点
// },
//右键点击事件
contextmenu
:
(
e
)
=>
{
e
.
preventDefault
();
this
.
$refs
.
contentMenu
.
$refs
.
reference
=
event
.
target
;
this
.
$refs
.
contentMenu
.
currentVisible
=
!
this
.
$refs
.
contentMenu
.
currentVisible
;
this
.
editModel
=
data
.
data
;
console
.
warn
(
"addd"
,
this
.
editModel
);
},
},
},
data
.
title
)
])
],
// +" ["+data.data.typeId+"]"
),
]
),
]
// data.title
);
},
copy
()
{
var
clipboard
=
new
Clipboard
(
".tag-read"
);
clipboard
.
on
(
"success"
,
e
=>
{
clipboard
.
on
(
"success"
,
(
e
)
=>
{
this
.
$Message
.
success
(
"复制成功:"
+
this
.
node
.
code
);
clipboard
.
destroy
();
});
clipboard
.
on
(
"error"
,
e
=>
{
clipboard
.
on
(
"error"
,
(
e
)
=>
{
// 不支持复制
console
.
log
(
"该浏览器不支持自动复制"
);
// 释放内存
clipboard
.
destroy
();
});
},
editRight
()
{
this
.
editRow
(
this
.
editModel
);
},
editRow
(
row
,
index
)
{
this
.
editTitle
=
"编辑"
;
this
.
editModal
=
true
;
this
.
editModel
=
row
;
this
.
datail
=
()
=>
import
(
"./components/edit"
);
},
toggle
()
{
this
.
expand
=
!
this
.
expand
;
this
.
loadTree
();
},
addOk
()
{
this
.
load
();
this
.
loadTree
();
this
.
addModal
=
false
;
this
.
detail
=
null
;
},
add
(
upId
)
{
if
(
upId
==
0
)
{
this
.
editModel
=
{
// id:-1,
upId
:
0
,
name
:
""
,
code
:
""
,
color
:
""
,
status
:
0
,
isStatic
:
0
,
typeId
:
0
,
priority
:
this
.
edit
,
};
// console.warn("VVVVVVVVVVVVVVVVV")
}
this
.
datail
=
()
=>
import
(
"./components/add"
);
this
.
editModal
=
true
;
},
editOk
()
{
this
.
load
();
this
.
editModal
=
false
;
},
removeNew
()
{
this
.
delRow
(
this
.
editModel
);
},
delRow
(
row
,
index
)
{
var
url
=
`
${
systemUrl
}
/Dictionary/Delete?id=
${
row
.
id
}
`
;
this
.
$Modal
.
confirm
({
...
...
@@ -317,16 +438,16 @@ export default {
onOk
:
()
=>
{
this
.
$api
.
delete
(
`
${
url
}
`
)
.
then
(
r
=>
{
.
then
(
(
r
)
=>
{
if
(
r
.
success
)
{
this
.
$Message
.
success
(
"删除成功"
);
this
.
load
();
}
})
.
catch
(
error
=>
{
.
catch
(
(
error
)
=>
{
this
.
$Message
.
error
(
"删除失败"
);
});
}
}
,
});
},
change
(
nodes
,
node
)
{
...
...
@@ -335,7 +456,7 @@ export default {
id
:
node
.
id
,
typeId
:
node
.
data
.
typeId
,
title
:
node
.
title
,
code
:
node
.
data
.
code
code
:
node
.
data
.
code
,
};
// this.names = [node.title]
let
cur
=
node
;
...
...
@@ -374,7 +495,7 @@ export default {
var
expand
=
this
.
expand
;
setParent
(
null
,
items
);
function
setParent
(
parent
,
items
)
{
items
.
map
(
u
=>
{
items
.
map
(
(
u
)
=>
{
u
.
parent
=
parent
;
u
.
expand
=
expand
;
if
(
u
.
children
)
{
...
...
@@ -388,11 +509,11 @@ export default {
onDragDrop
(
a
,
b
)
{
this
.
data
.
splice
(
b
,
1
,
...
this
.
data
.
splice
(
a
,
1
,
this
.
data
[
b
]));
let
ids
=
[];
this
.
data
.
map
(
u
=>
{
this
.
data
.
map
(
(
u
)
=>
{
ids
.
push
(
u
.
id
);
});
if
(
ids
.
length
>
1
)
{
api
.
setSort
({
ids
}).
then
(
r
=>
{
api
.
setSort
({
ids
}).
then
(
(
r
)
=>
{
if
(
!
r
.
success
)
{
this
.
$Message
.
error
(
"排序失败"
);
this
.
load
();
...
...
@@ -400,6 +521,7 @@ export default {
});
}
},
addNew
()
{
this
.
edit
=
this
.
data
.
length
;
this
.
cur
=
{
...
...
@@ -410,7 +532,7 @@ export default {
status
:
0
,
isStatic
:
0
,
typeId
:
this
.
node
.
typeId
+
1
,
priority
:
this
.
edit
priority
:
this
.
edit
,
};
this
.
data
.
push
(
this
.
cur
);
},
...
...
@@ -428,15 +550,15 @@ export default {
this
.
$Message
.
error
(
"值不能为空"
);
return
;
}
api
.
save
(
this
.
cur
).
then
(
r
=>
{
console
.
warn
(
r
);
api
.
save
(
this
.
cur
).
then
(
(
r
)
=>
{
//
console.warn(r);
if
(
r
.
success
)
{
this
.
$Message
.
success
(
"添加成功"
);
this
.
load
();
}
});
}
}
}
,
}
,
};
</
script
>
<
style
lang=
"less"
scoped
>
...
...
pages/basicData/systemUser/add.vue
0 → 100644
View file @
eb7b058c
<
template
>
<div
class=
"addUser"
>
<Form
ref=
"form"
:model=
"entity"
:rules=
"rules"
:label-width=
"100"
>
<Row
class=
"rowTitle100"
>
<Col
:span=
"12"
>
<FormItem
:label=
"l('userName')"
prop=
"userName"
>
<Input
v-model=
"entity.userName"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('cardNo')"
prop=
"cardNo"
>
<Input
v-model=
"entity.cardNo"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('status')"
prop=
"status"
>
<Dictionary
code=
"User.base.status"
v-model=
"entity.status"
type=
"radio"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('gender')"
prop=
"gender"
>
<Dictionary
code=
"User.base.gender"
v-model=
"entity.gender"
type=
"radio"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('birthday')"
prop=
"birthday"
>
<DatePicker
type=
"date"
v-model=
"entity.birthday"
placeholder=
"请选择"
></DatePicker>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('degreeId')"
prop=
"degreeId"
>
<Dictionary
code=
"User.base.degree"
v-model=
"entity.degreeId"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('departmentTitle')"
prop=
"departmentTitle"
>
<DepartmentSelect
v-model=
"entity.departmentId"
@
on-change=
"setDepartmentTitle"
/>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('phone')"
prop=
"phone"
>
<Input
v-model=
"entity.phone"
/>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('email')"
>
<Input
v-model=
"entity.email"
/>
</FormItem>
</Col>
<!--
<Col
:span=
"12"
>
<FormItem
:label=
"l('enableEquip')"
prop=
"enableEquip"
>
<Input
v-model=
"entity.enableEquip"
></Input>
</FormItem>
</Col>
-->
<Col
:span=
"12"
>
<FormItem
:label=
"l('positionId')"
prop=
"positionId"
>
<Dictionary
code=
"User.base.position"
v-model=
"entity.positionId"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('titleId')"
prop=
"titleId"
>
<Dictionary
code=
"User.base.jobtitle"
v-model=
"entity.titleId"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('licensedToWork')"
prop=
"licensedToWork"
>
<Dictionary
code=
"User.base.workLicense"
v-model=
"entity.licensedToWork"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('property')"
>
<Checkbox
v-model=
"entity.property"
>
排产资源
</Checkbox>
</FormItem>
</Col>
<Col
:span=
"24"
>
<FormItem
:label=
"l('remark')"
prop=
"remark"
>
<Input
v-model=
"entity.remark"
type=
"textarea"
:rows=
"3"
></Input>
</FormItem>
</Col>
</Row>
<FormItem>
<Button
type=
"primary"
@
click=
"handleSubmit"
:disabled=
"disabled"
>
保存
</Button>
<Button
@
click=
"handleClose"
class=
"ml20"
>
取消
</Button>
</FormItem>
</Form>
</div>
</
template
>
<
script
>
import
Api
from
"./api"
;
import
util
from
'@/libs/util'
;
const
valideTel
=
(
rule
,
value
,
callback
)
=>
{
var
re
=
/^1
[
3-9
]{1}[
0-9
]{9}
/
;
if
(
value
===
""
||
value
===
null
)
{
callback
(
new
Error
(
"请输入手机号"
));
}
else
if
(
!
re
.
test
(
value
))
{
callback
(
new
Error
(
"请输入正确手机号"
));
}
else
{
callback
();
}
};
export
default
{
name
:
"Add"
,
components
:
{},
data
()
{
const
validateCarNo
=
(
rule
,
value
,
callback
)
=>
{
if
(
!
value
)
{
return
callback
(
new
Error
(
"员工编号不能为空"
));
}
Api
.
list
(
value
).
then
(
r
=>
{
if
(
r
.
result
.
length
>
0
)
{
return
callback
(
new
Error
(
"员工编号已经存在"
));
}
else
{
callback
();
}
});
};
return
{
disabled
:
false
,
showDeptTree
:
false
,
entity
:
{
gender
:
1
,
status
:
1
,
property
:
false
,
userType
:
2
},
rules
:
{
userName
:
[{
required
:
true
,
message
:
"必填"
,
trigger
:
"blur"
}],
cardNo
:
[{
required
:
true
,
message
:
"必填"
,
trigger
:
"blur"
},
{
validator
:
validateCarNo
,
trigger
:
"blur"
}
],
departmentTitle
:
[{
required
:
true
,
message
:
"必选"
,
trigger
:
"change"
}],
// email: [
// { required: true, message: '必填', trigger: 'blur', type: 'email' }
// ],
phone
:
[{
validator
:
valideTel
,
required
:
true
,
trigger
:
"blur"
}]
// degreeId: [
// { required: true, message: '必填', trigger: 'blur', type: 'number' }
// ],
// phone: [{ required: true, message: '必填', trigger: 'blur' }]
}
};
},
props
:
{
v
:
Object
},
methods
:
{
handleSubmit
()
{
this
.
$refs
.
form
.
validate
(
v
=>
{
if
(
v
)
{
if
(
this
.
entity
.
property
)
{
this
.
entity
.
property
=
2
;
}
else
{
this
.
entity
.
property
=
""
;
}
this
.
disabled
=
true
;
Api
.
create
(
this
.
entity
)
.
then
(
r
=>
{
this
.
disabled
=
false
;
if
(
r
.
success
)
{
this
.
$Message
.
success
(
"保存成功"
);
//账户同步操作start
let
parms
=
{
userId
:
r
.
result
.
id
,
loginName
:
this
.
entity
.
phone
,
//用户电话
status
:
this
.
entity
.
status
,
//状态
// tenantCode: this.$store.state.userInfo.tenantCode, //商户号
tenantCode
:
util
.
cookies
.
get
(
'tenantCode'
),
//商户号
name
:
this
.
entity
.
userName
};
Api
.
authAccount
(
parms
).
then
(
res
=>
{
if
(
res
.
success
)
{
this
.
$Message
.
success
(
"账户同步成功"
);
//修改用户表的accountId start
let
parms1
=
{
userId
:
parms
.
userId
,
accountId
:
res
.
result
};
Api
.
updateAccount
(
parms1
).
then
(
res1
=>
{
if
(
res1
.
success
)
{
this
.
$Message
.
success
(
"操作成功"
);
this
.
$emit
(
"on-ok"
);
}
else
{
this
.
$Message
.
error
(
"同步失败"
);
}
});
//修改用户表的accountId end
}
});
//账户同步操作end
}
else
{
this
.
$Message
.
error
(
r
.
error
.
message
);
}
})
.
catch
(
err
=>
{
// alert(JSON.stringify(err))
console
.
warn
(
err
);
this
.
disabled
=
false
;
this
.
$Message
.
error
(
err
.
error
.
message
);
});
}
});
},
handleClose
()
{
this
.
$emit
(
"on-close"
);
},
l
(
key
)
{
key
=
"user"
+
"."
+
key
;
return
this
.
$t
(
key
);
},
setDepartmentTitle
(
v
,
item
)
{
this
.
entity
.
departmentTitle
=
item
.
name
;
},
selectDepart
()
{
this
.
showDeptTree
=
true
;
},
getBirthday
(
value
)
{
this
.
entity
.
birthday
=
value
;
}
},
watch
:
{
v
()
{
this
.
entity
=
this
.
$u
.
clone
(
this
.
v
);
}
}
};
</
script
>
<
style
lang=
"less"
>
.addUser {
.ivu-radio-wrapper {
vertical-align: top;
}
}
</
style
>
pages/basicData/systemUser/api.js
0 → 100644
View file @
eb7b058c
import
Api
from
'@/plugins/request'
export
default
{
index
:
`
${
systemUrl
}
/user/paged`
,
paged
(
params
)
{
return
Api
.
post
(
`
${
systemUrl
}
/user/paged`
,
params
);
},
list
(
cardNo
)
{
var
params
=
{
"conditions"
:
[
{
"fieldName"
:
"cardNo"
,
"fieldValue"
:
cardNo
,
"conditionalType"
:
"Equal"
}
],
"pageSize"
:
3
}
return
Api
.
post
(
`
${
systemUrl
}
/user/list`
,
params
);
},
get
(
params
)
{
return
Api
.
get
(
`
${
systemUrl
}
/user/get`
,
params
);
},
create
(
params
)
{
return
Api
.
post
(
`
${
systemUrl
}
/user/create`
,
params
);
},
update
(
params
)
{
return
Api
.
post
(
`
${
systemUrl
}
/user/update`
,
params
);
},
//在10010上更新用户信息//新增、修改、删除、修改密码
authAccount
(
params
)
{
return
Api
.
post
(
`
${
Platform
}
/account/sync`
,
params
);
//168
// return Api.post(`${Platform}/api/services/app/useraccount/sync`, params);
},
//10010重置密码
authResetpassword
(
params
)
{
return
Api
.
post
(
`
${
UserUrl
}
/api/services/app/account/resetpassword`
,
params
);
},
//10010修改密码
authChangepassword
(
params
)
{
return
Api
.
post
(
`
${
authUrl
}
/api/services/app/useraccount/changepassword`
,
params
);
},
//在10020上更新用户AccountId信息
updateAccount
(
params
)
{
return
Api
.
post
(
`
${
systemUrl
}
/user/updateaccountid`
,
params
);
},
//删除:
delete
(
params
)
{
return
Api
.
delete
(
`
${
systemUrl
}
/user/delete`
,
{
params
:
params
});
},
//重置密码
accountreset
(
params
)
{
return
Api
.
post
(
`
${
systemUrl
}
/user/accountreset`
,
params
);
},
//批量导入用户
userImport
(
params
)
{
return
Api
.
post
(
`
${
systemUrl
}
/userimportservice/import`
,
params
);
},
}
\ No newline at end of file
pages/basicData/systemUser/detail.vue
0 → 100644
View file @
eb7b058c
<
template
>
<div
class=
"addUser"
>
<Form
ref=
"form"
:model=
"entity"
:label-width=
"90"
>
<Row
class=
"row_border_bottom"
>
<Col
:span=
"8"
>
<!--
<FormItem
:label=
"l('userName')"
prop=
"userName"
>
{{
entity
.
userName
}}
</FormItem>
-->
<b>
{{
l
(
'userName'
)
}}
</b>
<p>
{{
entity
.
userName
}}
</p>
</Col>
<Col
:span=
"8"
>
<!--
<FormItem
:label=
"l('cardNo')"
prop=
"cardNo"
>
{{
entity
.
cardNo
}}
</FormItem>
-->
<b>
{{
l
(
'cardNo'
)
}}
</b>
<p>
{{
entity
.
cardNo
}}
</p>
</Col>
<Col
:span=
"8"
>
<!--
<FormItem
:label=
"l('gender')"
prop=
"gender"
>
<state
code=
"User.base.gender"
:value=
"entity.gender"
type=
"text"
></state>
</FormItem>
-->
<b>
{{
l
(
'gender'
)
}}
</b>
<p><state
code=
"User.base.gender"
:value=
"entity.gender"
type=
"text"
></state></p>
</Col>
</Row>
<Row
class=
"row_border_bottom"
>
<Col
:span=
"8"
>
<!--
<FormItem
:label=
"l('birthday')"
prop=
"birthday"
>
{{
entity
.
birthday
}}
</FormItem>
-->
<b>
{{
l
(
'birthday'
)
}}
</b>
<p>
{{
entity
.
birthday
}}
</p>
</Col>
<Col
:span=
"8"
>
<!--
<FormItem
:label=
"l('degreeId')"
prop=
"degreeId"
>
<state
code=
"User.base.degree"
:value=
"entity.degreeId"
type=
"text"
></state>
</FormItem>
-->
<b>
{{
l
(
'degreeId'
)
}}
</b>
<p><state
code=
"User.base.degree"
:value=
"entity.degreeId"
type=
"text"
></state></p>
</Col>
<Col
:span=
"8"
>
<!--
<FormItem
:label=
"l('departmentTitle')"
prop=
"departmentTitle"
>
{{
entity
.
departmentTitle
}}
</FormItem>
-->
<b>
{{
l
(
'departmentTitle'
)
}}
</b>
<p>
{{
entity
.
departmentTitle
}}
</p>
</Col>
</Row>
<Row
class=
"row_border_bottom"
>
<Col
:span=
"8"
>
<!--
<FormItem
:label=
"l('status')"
prop=
"status"
>
<state
code=
"User.base.status"
:value=
"entity.status"
type=
"text"
></state>
</FormItem>
-->
<b>
{{
l
(
'status'
)
}}
</b>
<p><state
code=
"User.base.status"
:value=
"entity.status"
type=
"text"
></state></p>
</Col>
<Col
:span=
"8"
>
<!--
<FormItem
:label=
"l('phone')"
prop=
"phone"
>
{{
entity
.
phone
}}
</FormItem>
-->
<b>
{{
l
(
'phone'
)
}}
</b>
<p>
{{
entity
.
phone
}}
</p>
</Col>
<Col
:span=
"8"
>
<!--
<FormItem
:label=
"l('email')"
prop=
"email"
>
{{
entity
.
email
}}
</FormItem>
-->
<b>
{{
l
(
'email'
)
}}
</b>
<p>
{{
entity
.
email
}}
</p>
</Col>
<!--
<Col
:span=
"12"
>
<FormItem
:label=
"l('enableEquip')"
prop=
"enableEquip"
>
{{
entity
.
enableEquip
}}
</FormItem>
</Col>
-->
</Row>
<Row
class=
"row_border_bottom"
>
<Col
:span=
"8"
>
<!--
<FormItem
:label=
"l('positionId')"
prop=
"positionId"
>
<state
code=
"User.base.position"
:value=
"entity.positionId"
type=
"text"
></state>
</FormItem>
-->
<b>
{{
l
(
'positionId'
)
}}
</b>
<p><state
code=
"User.base.position"
:value=
"entity.positionId"
type=
"text"
></state></p>
</Col>
<Col
:span=
"8"
>
<!--
<FormItem
:label=
"l('titleId')"
prop=
"titleId"
>
<state
code=
"User.base.jobtitle"
:value=
"entity.titleId"
type=
"text"
></state>
</FormItem>
-->
<b>
{{
l
(
'titleId'
)
}}
</b>
<p><state
code=
"User.base.titleId"
:value=
"entity.titleId"
type=
"text"
></state></p>
</Col>
<Col
:span=
"8"
>
<!--
<FormItem
:label=
"l('licensedToWork')"
prop=
"licensedToWork"
>
<state
code=
"User.base.workLicense"
:value=
"entity.licensedToWork"
type=
"text"
></state>
</FormItem>
-->
<b>
{{
l
(
'workLicense'
)
}}
</b>
<p><state
code=
"User.base.workLicense"
:value=
"entity.workLicense"
type=
"text"
></state></p>
</Col>
</Row>
<Row
class=
"row_border_bottom"
>
<Col
:span=
"24"
>
<!--
<FormItem
:label=
"l('remark')"
prop=
"remark"
>
{{
entity
.
remark
}}
</FormItem>
-->
<b>
{{
l
(
'remark'
)
}}
</b>
<p>
{{
entity
.
remark
}}
</p>
</Col>
</Row>
</Form>
</div>
</
template
>
<
script
>
import
Api
from
'./api'
export
default
{
name
:
'Add'
,
data
()
{
return
{
entity
:
{}
}
},
props
:
{
eid
:
Number
},
methods
:
{
load
(
v
)
{
Api
.
get
({
id
:
v
}).
then
((
r
)
=>
{
this
.
entity
=
r
.
result
this
.
$emit
(
'on-load'
)
})
},
handleClose
()
{
this
.
$emit
(
'on-close'
)
},
l
(
key
)
{
key
=
'user'
+
'.'
+
key
return
this
.
$t
(
key
)
}
},
watch
:
{
eid
(
v
)
{
if
(
v
!=
0
)
{
this
.
load
(
v
)
}
}
}
}
</
script
>
<
style
lang=
"less"
>
.addUser {
.ivu-radio-wrapper {
vertical-align: top;
}
}
</
style
>
pages/basicData/systemUser/edit.vue
0 → 100644
View file @
eb7b058c
<
template
>
<div
class=
"addUser"
>
<Form
ref=
"form"
:model=
"entity"
:rules=
"rules"
:label-width=
"100"
>
<Row
class=
"rowTitle100"
>
<Col
:span=
"12"
>
<FormItem
:label=
"l('userName')"
prop=
"userName"
>
<Input
v-model=
"entity.userName"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('cardNo')"
prop=
"cardNo"
>
<span
v-text=
"entity.cardNo"
></span>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('status')"
prop=
"status"
>
<Dictionary
code=
"User.base.status"
v-model=
"entity.status"
type=
"radio"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('gender')"
prop=
"gender"
>
<Dictionary
code=
"User.base.gender"
v-model=
"entity.gender"
type=
"radio"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('birthday')"
prop=
"birthday"
>
<DatePicker
type=
"date"
v-model=
"entity.birthday"
style=
"width:100%"
placeholder=
"请选择"
></DatePicker>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('degreeId')"
prop=
"degreeId"
>
<Dictionary
code=
"User.base.degree"
v-model=
"entity.degreeId"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('departmentTitle')"
prop=
"departmentTitle"
>
<DepartmentSelect
v-model=
"entity.departmentId"
@
on-change=
"setDepartmentTitle"
/>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('phone')"
prop=
"phone"
>
<Input
v-model=
"entity.phone"
/>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('email')"
>
<Input
v-model=
"entity.email"
/>
</FormItem>
</Col>
<!--
<Col
:span=
"12"
>
<FormItem
:label=
"l('enableEquip')"
prop=
"enableEquip"
>
<Input
v-model=
"entity.enableEquip"
></Input>
</FormItem>
</Col>
-->
<Col
:span=
"12"
>
<FormItem
:label=
"l('positionId')"
prop=
"positionId"
>
<Dictionary
code=
"User.base.position"
v-model=
"entity.positionId"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('titleId')"
prop=
"titleId"
>
<Dictionary
code=
"User.base.jobtitle"
v-model=
"entity.titleId"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('licensedToWork')"
prop=
"licensedToWork"
>
<Dictionary
code=
"User.base.workLicense"
v-model=
"entity.licensedToWork"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
:label=
"l('property')"
>
<Checkbox
v-model=
"entity.property"
>
排产资源
</Checkbox>
</FormItem>
</Col>
<Col
:span=
"12"
>
<FormItem
label=
"用户类型"
>
<Dictionary
code=
"User.base.UserType"
v-model=
"entity.userType"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"24"
>
<FormItem
:label=
"l('remark')"
prop=
"remark"
>
<Input
v-model=
"entity.remark"
type=
"textarea"
:rows=
"3"
></Input>
</FormItem>
</Col>
</Row>
<FormItem>
<Button
type=
"primary"
@
click=
"handleSubmit"
:disabled=
"disabled"
>
保存
</Button>
<Button
@
click=
"handleClose"
class=
"ml20"
>
取消
</Button>
</FormItem>
</Form>
</div>
</
template
>
<
script
>
import
Api
from
"./api"
;
const
valideTel
=
(
rule
,
value
,
callback
)
=>
{
var
re
=
/^1
[
3-9
]{1}[
0-9
]{9}
/
;
if
(
value
===
""
||
value
===
null
)
{
callback
(
new
Error
(
"请输入手机号"
));
}
else
if
(
!
re
.
test
(
value
))
{
callback
(
new
Error
(
"请输入正确手机号"
));
}
else
{
callback
();
}
};
export
default
{
name
:
"Edit"
,
data
()
{
return
{
disabled
:
false
,
showDeptTree
:
false
,
entity
:
{},
rules
:
{
userName
:
[{
required
:
true
,
message
:
"必填"
,
trigger
:
"blur"
}],
departmentTitle
:
[{
required
:
true
,
message
:
"必选"
,
trigger
:
"blur"
}],
//cardNo: [{ required: true, message: '必填', trigger: 'blur' }],
// birthday: [{ required: true, message: '必填', trigger: 'change' }],
// degreeId: [
// { required: true, message: '必填', trigger: 'blur', type: 'number' }
// ],
// email: [
// { required: true, message: '必填', trigger: 'blur', type: 'email' }
// ],
phone
:
[{
validator
:
valideTel
,
required
:
true
,
trigger
:
"blur"
}]
}
};
},
props
:
{
eid
:
Number
},
methods
:
{
load
(
v
)
{
Api
.
get
({
id
:
v
}).
then
(
r
=>
{
this
.
entity
=
r
.
result
;
if
(
r
.
result
.
property
==
2
)
{
this
.
entity
.
property
=
true
;
}
else
{
this
.
entity
.
property
=
false
;
}
this
.
$emit
(
"on-load"
);
});
},
handleSubmit
()
{
this
.
$refs
.
form
.
validate
(
v
=>
{
if
(
v
)
{
this
.
disabled
=
true
;
if
((
this
.
entity
.
property
=
true
))
{
this
.
entity
.
property
=
2
;
}
else
{
this
.
entity
.
property
=
""
;
}
Api
.
update
(
this
.
entity
)
.
then
(
r
=>
{
this
.
disabled
=
false
;
if
(
r
.
success
)
{
this
.
$Message
.
success
(
"保存成功"
);
//账户同步操作start
if
(
this
.
entity
.
accountId
>
0
)
{
//账户已同步的情况下
let
parms2
=
{
accountId
:
this
.
entity
.
accountId
,
userId
:
this
.
entity
.
id
,
loginName
:
this
.
entity
.
phone
,
//用户电话
status
:
this
.
entity
.
status
,
tenantCode
:
this
.
$store
.
state
.
userInfo
.
tenantCode
,
//商户号
name
:
this
.
entity
.
userName
};
Api
.
authAccount
(
parms2
).
then
(
res
=>
{
//同步电话信息等
if
(
res
.
success
)
{
this
.
$Message
.
success
(
"账户同步成功"
);
}
else
{
this
.
$Message
.
error
(
"账户同步失败"
);
}
});
}
else
{
//账户新建后还未同步成功的情况下
let
parms
=
{
userId
:
this
.
entity
.
id
,
loginName
:
this
.
entity
.
phone
,
//用户电话
status
:
this
.
entity
.
status
,
tenantCode
:
this
.
$store
.
state
.
userInfo
.
tenantCode
,
//商户号
name
:
this
.
entity
.
userName
};
Api
.
authAccount
(
parms
).
then
(
res1
=>
{
if
(
res1
.
success
)
{
this
.
$Message
.
success
(
"账户同步成功"
);
//修改用户表的accountId start
let
parms1
=
{
userId
:
parms
.
userId
,
accountId
:
res1
.
result
//账户同步成功后返回的accountId
};
Api
.
updateAccount
(
parms1
).
then
(
res2
=>
{
if
(
res2
.
success
)
{
this
.
$Message
.
success
(
"操作成功"
);
}
else
{
this
.
$Message
.
error
(
"操作失败"
);
}
});
//修改用户表的accountId end
}
});
}
//账户同步操作end
this
.
$emit
(
"on-ok"
);
}
else
{
this
.
$Message
.
error
(
"保存失败"
);
}
})
.
catch
(
err
=>
{
this
.
disabled
=
false
;
this
.
$Message
.
error
(
"保存失败"
);
console
.
warn
(
err
);
});
}
});
},
handleClose
()
{
this
.
$emit
(
"on-close"
);
},
l
(
key
)
{
key
=
"user"
+
"."
+
key
;
return
this
.
$t
(
key
);
},
setDepartmentTitle
(
v
,
item
)
{
if
(
item
)
{
this
.
entity
.
departmentTitle
=
item
.
name
;
}
},
getBirthday
(
value
)
{
this
.
entity
.
birthday
=
value
;
}
},
watch
:
{
eid
(
v
)
{
if
(
v
!=
0
)
{
this
.
load
(
v
);
}
}
}
};
</
script
>
<
style
lang=
"less"
>
.addUser {
.ivu-radio-wrapper {
vertical-align: top;
}
}
</
style
>
pages/basicData/systemUser/index.vue
0 → 100644
View file @
eb7b058c
<
template
>
<Layout
class=
"full"
>
<Sider
hide-trigger
:style=
"
{background: '#fff'}" width="260" class="menu" style=" flex:0;border:none">
<div
class=
"zh-tree"
:style=
"
{height:treeHeight+'px'}">
<h3
class=
"zh-title"
>
部门结构
</h3>
<div
class=
"zh-box"
>
<Input
search
placeholder=
"请输入查询条件"
v-model=
"treeInputSearch"
/>
<Tree
:data=
"searchList"
class=
"tree-content"
@
on-select-change=
"selectTreeNode"
></Tree>
</div>
</div>
</Sider>
<Content
class=
"content"
>
<DataGrid
:columns=
"columns"
ref=
"grid"
:action=
"action"
:conditions=
"easySearch"
placeholder=
"请输入姓名/员工编号"
exportTitle=
"用户管理"
:high=
"true"
:height=
"tdHeight"
>
<template
slot=
"searchForm"
>
<Search
/>
</
template
>
<
template
slot=
"buttons"
>
<Button
type=
"primary"
@
click=
"addModal=true"
>
新增
</Button>
<Button
@
click=
"openModalIm"
>
导入
</Button>
</
template
>
</DataGrid>
<Modal
v-model=
"addModal"
title=
"新增"
footer-hide
width=
"800"
>
<Add
@
on-close=
"cancel"
@
on-ok=
"addOk"
/>
</Modal>
<Modal
v-model=
"editModal"
title=
"编辑"
footer-hide
width=
"800"
>
<Edit
:eid=
"curId"
@
on-close=
"cancel"
@
on-ok=
"addOk"
/>
</Modal>
<Modal
v-model=
"detailModal"
title=
"详情"
width=
"900"
>
<Detail
:eid=
"curId"
/>
</Modal>
<Modal
v-model=
"deletelModal"
title=
"删除"
@
on-ok=
"removeOk"
@
on-cancel=
"cancel"
>
<p>
确定删除?
</p>
</Modal>
<!-- 重置密码 -->
<Modal
v-model=
"show7"
title=
"提示"
:mask-closable=
"false"
ok-text=
"确定"
cancel-text=
"取消"
@
on-ok=
"reset"
>
此操作将密码重置为初始密码, 是否继续?
</Modal>
<!-- 授权 -->
<Modal
v-model=
"show3"
title=
"授权-当前用户"
:width=
"800"
:mask-closable=
"false"
ok-text=
"保存"
cancel-text=
"取消"
@
on-ok=
"authOk"
@
on-cancel=
"authCancle"
>
<div
style=
"max-height:400px;overflow:auto"
>
<Form
:model=
"authModel"
:label-width=
"70"
>
<Row>
<Col
span=
"24"
>
默认角色
<!-- <Input type="textarea" size="large" :rows="2" v-model="defaultRole" placeholder="暂无数据"/>
-->
<div
style=
"width:750px;border:2px solid #E8EAEC;margin-top:10px"
>
<Row>
<CheckboxGroup
v-model=
"authModel.default"
>
<Col
span=
"5"
offset=
"1"
v-for=
"(item,index) in authList1"
:key=
"index"
style=
"line-height:33px;font-size:14px;"
>
<Checkbox
:label=
"item.id"
>
{{item.name}}
</Checkbox>
</Col>
</CheckboxGroup>
</Row>
</div>
</Col>
</Row>
<Row>
<Col
span=
"24"
>
<div
style=
"margin-top:10px;"
>
自定义角色
<div
style=
"width:750px;border:2px solid #E8EAEC;margin-top:10px"
>
<Row>
<CheckboxGroup
v-model=
"authModel.extra"
>
<Col
span=
"5"
offset=
"1"
v-for=
"(item,index) in authList"
:key=
"index"
style=
"line-height:33px;font-size:14px;"
>
<Checkbox
:label=
"item.id"
>
{{item.name}}
</Checkbox>
</Col>
</CheckboxGroup>
</Row>
</div>
</div>
</Col>
</Row>
</Form>
</div>
</Modal>
<Modal
v-model=
"syncAccountModal"
title=
"同步账户"
@
on-ok=
"syncAccountOk"
@
on-cancel=
"cancel"
>
<p>
确定同步账户?
</p>
</Modal>
<ImportExcel
ref=
"importExcel"
@
on-get-data=
"getData"
:modalTitle=
"temTitle"
:columns=
"columns"
:open=
"ModalIm"
@
on-cancel=
"ModalImCancel"
@
on-ok=
"ok"
/>
</Content>
</Layout>
</template>
<
script
>
import
Api
from
"./api"
;
import
ApiDepart
from
"../department/api"
;
import
Add
from
"./add"
;
import
Edit
from
"./edit"
;
import
Detail
from
"./detail"
;
import
Search
from
"./search"
;
import
service
from
"@/plugins/request"
;
import
util
from
"@/libs/util"
;
import
{
Time
}
from
"view-design"
;
import
XLSX
from
"xlsx"
;
export
default
{
name
:
"list"
,
components
:
{
Add
,
Edit
,
Detail
,
Search
,
},
data
()
{
return
{
action
:
Api
.
index
,
easySearch
:
{
keys
:
{
op
:
"userName,cardNo,national,phone,email,enableEquip,jobNo,remark,departmentTitle,roleTitles"
,
value
:
null
,
default
:
true
,
},
departmentId
:
{
op
:
"In"
,
value
:
""
},
userType
:
{
op
:
"Equal"
,
value
:
"2"
},
},
treeData
:
[],
tdHeight
:
""
,
tdHeightExcel
:
""
,
treeInputSearch
:
""
,
treeHeight
:
""
,
tableHeight
:
""
,
show7
:
false
,
//重置密码
show3
:
false
,
//授权角色
authList
:
[],
authList1
:
[],
authModel
:
{
default
:
[],
extra
:
[]
},
ids
:
[],
addModal
:
false
,
editModal
:
false
,
detailModal
:
false
,
deletelModal
:
false
,
syncAccountModal
:
false
,
curId
:
0
,
columns
:
[
// {
// title: '序号',
// type: 'index',
// width: 80,
// align: 'center'
// },
{
key
:
"id"
,
title
:
this
.
l
(
"id"
),
hide
:
true
,
align
:
"left"
},
{
key
:
"userName"
,
title
:
this
.
l
(
"userName"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
render
:
(
h
,
params
)
=>
{
return
h
(
"div"
,
{
class
:
"action"
},
[
h
(
"op"
,
{
attrs
:
{
oprate
:
"detail"
},
on
:
{
click
:
()
=>
this
.
detail
(
params
.
row
.
id
)
},
},
params
.
row
.
userName
),
]);
},
},
// {
// key: 'cardTypeId',
// title: this.l('cardTypeId'),
// align: 'left',
// high: true,
// hide: true
// },
{
key
:
"cardNo"
,
title
:
this
.
l
(
"cardNo"
),
align
:
"left"
,
width
:
95
,
easy
:
true
,
high
:
true
,
},
{
key
:
"gender"
,
title
:
this
.
l
(
"gender"
),
align
:
"center"
,
high
:
true
,
width
:
65
,
code
:
"User.base.gender"
,
import
:
true
,
},
{
key
:
"birthday"
,
title
:
this
.
l
(
"birthday"
),
align
:
"center"
,
high
:
true
,
width
:
95
,
type
:
"date"
,
import
:
true
,
},
{
key
:
"degreeId"
,
title
:
this
.
l
(
"degreeId"
),
align
:
"left"
,
high
:
true
,
code
:
"User.base.degree"
,
import
:
true
,
},
{
key
:
"status"
,
title
:
this
.
l
(
"status"
),
align
:
"center"
,
high
:
true
,
code
:
"User.base.status"
,
import
:
true
,
},
{
key
:
"departmentId"
,
title
:
this
.
l
(
"departmentId"
),
align
:
"right"
,
easy
:
true
,
high
:
true
,
import
:
true
,
},
{
key
:
"departmentTitle"
,
title
:
this
.
l
(
"departmentTitle"
),
align
:
"left"
,
easy
:
true
,
width
:
100
,
high
:
true
,
import
:
true
,
},
{
key
:
"roleTitles"
,
title
:
this
.
l
(
"roleTitles"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
hide
:
true
,
render
:
(
h
,
params
)
=>
{
return
h
(
"div"
,
{
class
:
"action"
},
[
h
(
"op"
,
{
attrs
:
{
oprate
:
"detail"
,
class
:
params
.
row
.
roleTitles
==
null
||
params
.
row
.
roleTitles
==
""
?
"empower"
:
"detail"
,
},
on
:
{
click
:
()
=>
this
.
authorize
(
params
.
row
.
id
)
},
},
params
.
row
.
roleTitles
==
null
||
params
.
row
.
roleTitles
==
""
?
"授权"
:
params
.
row
.
roleTitles
),
]);
},
},
{
key
:
"accountId"
,
title
:
this
.
l
(
"accountId"
),
hide
:
true
,
align
:
"left"
,
import
:
true
,
},
// {
// key: 'userType',
// title: this.l('userType'),
// hide: true,
// align: 'left'
// },
{
key
:
"phone"
,
title
:
this
.
l
(
"phone"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
import
:
true
,
},
{
key
:
"email"
,
title
:
this
.
l
(
"email"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
import
:
true
,
},
{
key
:
"licensedToWork"
,
title
:
this
.
l
(
"licensedToWork"
),
align
:
"left"
,
code
:
"User.base.workLicense"
,
import
:
true
,
},
{
key
:
"positionId"
,
title
:
this
.
l
(
"positionId"
),
align
:
"left"
,
high
:
true
,
code
:
"User.base.position"
,
import
:
true
,
},
{
key
:
"titleId"
,
title
:
this
.
l
(
"titleId"
),
align
:
"left"
,
high
:
true
,
code
:
"User.base.jobtitle"
,
import
:
true
,
},
{
key
:
"creatorUserId"
,
title
:
this
.
l
(
"creatorUserId"
),
align
:
"left"
,
import
:
false
,
hide
:
true
,
import
:
true
,
type
:
'user'
},
{
key
:
"creationTime"
,
title
:
this
.
l
(
"creationTime"
),
align
:
"left"
,
import
:
false
,
hide
:
true
,
import
:
true
,
},
{
key
:
"lastModifierUserId"
,
title
:
this
.
l
(
"lastModifierUserId"
),
align
:
"left"
,
import
:
false
,
hide
:
true
,
import
:
true
,
type
:
'user'
},
{
key
:
"lastModificationTime"
,
title
:
this
.
l
(
"lastModificationTime"
),
align
:
"left"
,
import
:
false
,
hide
:
true
,
import
:
true
,
},
{
title
:
"操作"
,
key
:
"action"
,
width
:
185
,
align
:
"right"
,
import
:
false
,
render
:
(
h
,
params
)
=>
{
return
h
(
"div"
,
{
class
:
"action"
},
[
h
(
"op"
,
{
attrs
:
{
oprate
:
"detail"
,
class
:
"empower"
,
},
on
:
{
click
:
()
=>
this
.
syncAccount
(
params
.
row
)
},
},
params
.
row
.
accountId
==
0
?
"同步"
:
""
),
h
(
"op"
,
{
attrs
:
{
oprate
:
"edit"
},
on
:
{
click
:
()
=>
this
.
edit
(
params
.
row
.
id
)
},
},
"编辑"
),
h
(
"op"
,
{
attrs
:
{
oprate
:
"remove"
},
on
:
{
click
:
()
=>
this
.
remove
(
params
.
row
)
},
},
"删除"
),
h
(
"op"
,
{
attrs
:
{
oprate
:
"detail"
,
},
on
:
{
click
:
()
=>
this
.
openReset
(
params
.
row
)
},
},
"重置密码"
),
]);
},
},
],
selectRow
:
{},
//删除时选中的行数据
//导入导出时使用start
formatList
:
[
"xlsx"
],
searchs
:
{
pageIndex
:
1
,
pageSize
:
1000
,
conditions
:
[],
},
list
:
[],
modalImport
:
false
,
excelData
:
[],
departArr
:
[],
//部门list
columnsImport
:
[],
temTitle
:
'用户管理'
,
ModalIm
:
false
,
//导入导出时使用end
};
},
created
()
{
this
.
treeHeight
=
window
.
innerHeight
-
150
;
this
.
tdHeight
=
window
.
innerHeight
-
240
;
this
.
tdHeightExcel
=
window
.
innerHeight
-
240
;
//导出对列表头进行预加载start
let
tempCol
=
this
.
$u
.
clone
(
this
.
columns
);
tempCol
.
forEach
((
ele
,
index
)
=>
{
if
(
ele
.
key
==
"action"
)
{
ele
.
hide
=
true
;
}
});
this
.
columnsImport
=
tempCol
;
//导出对列表头进行预加载end
},
mounted
()
{
window
.
onresize
=
()
=>
{
///浏览器窗口大小变化
return
(()
=>
{
window
.
screenHeight
=
window
.
innerHeight
;
this
.
treeHeight
=
window
.
screenHeight
-
150
;
this
.
tdHeight
=
window
.
screenHeight
-
240
;
this
.
tdHeightExcel
=
window
.
innerHeight
-
240
;
})();
};
this
.
initTree
();
this
.
loadrole
(
0
);
this
.
loadrole
(
1
);
},
async
fetch
({
store
,
params
})
{
await
store
.
dispatch
(
"loadDictionary"
);
// 加载数据字典
},
methods
:
{
addOk
()
{
this
.
$refs
.
grid
.
load
();
// this.$refs.grid.reload(this.easySearch)
this
.
addModal
=
false
;
this
.
detailModal
=
false
;
this
.
editModal
=
false
;
this
.
curId
=
0
;
//this.$refs.grid.easySearch()
},
search
()
{
this
.
$refs
.
grid
.
reload
(
this
.
easySearch
);
},
detail
(
id
)
{
this
.
detailModal
=
true
;
this
.
curId
=
id
;
},
edit
(
id
)
{
this
.
editModal
=
true
;
this
.
curId
=
id
;
},
remove
(
row
)
{
this
.
deletelModal
=
true
;
this
.
curId
=
row
.
id
;
this
.
selectRow
=
row
;
},
removeOk
()
{
Api
.
delete
({
id
:
this
.
curId
}).
then
((
r
)
=>
{
if
(
r
.
success
)
{
this
.
$refs
.
grid
.
load
();
this
.
deletelModal
=
false
;
if
(
this
.
selectRow
.
accountId
>
0
)
{
//删除成功后更新auth start
let
parms
=
{
userId
:
this
.
curId
,
accountId
:
this
.
selectRow
.
accountId
,
tenantCode
:
util
.
cookies
.
get
(
"tenantCode"
),
isDeleted
:
true
,
name
:
this
.
selectRow
.
userName
,
};
Api
.
authAccount
(
parms
).
then
((
res
)
=>
{
if
(
res
.
success
)
{
this
.
$Message
.
success
(
"账户同步成功"
);
}
});
}
//删除成功后更新auth end
this
.
$Message
.
success
(
"删除成功"
);
}
});
},
removeCancel
()
{
this
.
deletelModal
=
false
;
},
cancel
()
{
this
.
curId
=
0
;
this
.
addModal
=
false
;
this
.
detailModal
=
false
;
this
.
editModal
=
false
;
this
.
deletedlModal
=
false
;
this
.
syncAccountModal
=
false
;
},
l
(
key
)
{
let
vkey
=
"user"
+
"."
+
key
;
return
this
.
$t
(
vkey
)
||
key
;
},
initTree
()
{
this
.
$http
.
department
.
getDepartmentTree
(
this
.
treeData
);
},
selectTreeNode1
(
value
)
{
if
(
value
!=
""
)
{
this
.
searchObj
.
departmentId
=
null
;
this
.
searchObj
.
level_Desc
=
value
[
0
].
value
;
this
.
mDatas
.
splice
(
0
);
this
.
$http
.
sysUser
.
getSearchTable2
(
this
.
mDatas
,
this
.
searchObj
);
}
},
selectTreeNode
(
value
)
{
if
(
value
.
length
>
0
)
{
this
.
ids
=
[];
this
.
getAllIds
(
value
);
if
(
this
.
ids
.
length
>
0
)
{
this
.
easySearch
.
departmentId
.
value
=
this
.
ids
;
}
else
{
this
.
easySearch
.
departmentId
.
value
=
[
-
1
];
}
this
.
$refs
.
grid
.
easySearch
();
}
},
getAllIds
(
trees
)
{
trees
.
forEach
((
data
,
index
)
=>
{
var
that
=
this
;
this
.
ids
.
push
(
data
.
value
);
if
(
data
.
children
.
length
>
0
)
{
this
.
getAllIds
(
data
.
children
);
}
});
},
//重置密碼
openReset
(
row
)
{
this
.
show7
=
true
;
this
.
curId
=
row
.
id
;
this
.
selectRow
=
row
;
},
reset
()
{
let
parms
=
{
userId
:
this
.
curId
,
accountId
:
this
.
selectRow
.
accountId
,
};
Api
.
authResetpassword
(
parms
).
then
((
res
)
=>
{
if
(
res
.
success
)
{
this
.
$Message
.
success
(
"重置成功!"
);
}
else
{
this
.
$Message
.
error
(
"重置失败!"
);
}
});
},
//授权角色
loadrole
(
type
)
{
var
url
=
`
${
systemUrl
}
/MyRole/GetRolesAsync`
;
var
data
=
[];
service
.
get
(
`
${
url
}
`
,
{
role_type
:
type
}).
then
((
response
)
=>
{
data
=
response
.
result
.
items
;
if
(
type
==
1
)
{
this
.
authList
=
data
;
}
if
(
type
==
0
)
{
this
.
authList1
=
data
;
}
});
},
authorize
(
id
)
{
//授权
this
.
authModel
.
default
=
[];
this
.
authModel
.
extra
=
[];
this
.
curId
=
id
;
this
.
show3
=
true
;
var
url
=
`
${
systemUrl
}
/MyUserRole/GetPaged`
;
service
.
get
(
`
${
url
}
`
,
{
userId
:
id
}).
then
((
response
)
=>
{
var
data
=
response
.
result
.
items
;
var
dt1
=
data
.
filter
(
function
(
ite
)
{
return
ite
.
role_type
==
0
;
});
var
dt2
=
data
.
filter
(
function
(
ite
)
{
return
ite
.
role_type
==
1
;
});
dt1
.
forEach
((
item
,
i
)
=>
{
this
.
authModel
.
default
.
push
(
item
.
roleId
);
});
dt2
.
forEach
((
item
,
i
)
=>
{
this
.
authModel
.
extra
.
push
(
item
.
roleId
);
});
});
},
authOk
()
{
var
url
=
`
${
systemUrl
}
/MyUserRole/CreateOrUpdate`
;
service
.
post
(
`
${
url
}
`
,
{
myUserRole
:
{
userId
:
this
.
curId
,
RoleIds
:
this
.
allChecked
.
join
(
","
),
},
})
.
then
((
response
)
=>
{
if
(
response
.
success
)
{
this
.
$Message
.
success
(
"保存成功"
);
this
.
authModel
.
extra
=
[];
this
.
authModel
.
default
=
[];
this
.
$refs
.
grid
.
easySearch
();
}
})
.
catch
((
error
)
=>
{
this
.
$Message
.
error
(
"保存失败"
);
});
},
authCancle
()
{},
//同步账户start
syncAccount
(
row
)
{
this
.
syncAccountModal
=
true
;
this
.
selectRow
=
row
;
},
syncAccountOk
()
{
let
parms
=
{
userId
:
this
.
selectRow
.
id
,
loginName
:
this
.
selectRow
.
phone
,
status
:
this
.
selectRow
.
status
,
tenantCode
:
util
.
cookies
.
get
(
"tenantCode"
),
name
:
this
.
selectRow
.
userName
,
};
if
(
this
.
selectRow
.
phone
&&
this
.
selectRow
.
phone
!=
""
)
{
Api
.
authAccount
(
parms
).
then
((
res
)
=>
{
if
(
res
.
success
)
{
this
.
$Message
.
success
(
"账户同步成功"
);
let
parms1
=
{
userId
:
parms
.
userId
,
accountId
:
res
.
result
,
};
Api
.
updateAccount
(
parms1
).
then
((
res1
)
=>
{
if
(
res1
.
success
)
{
this
.
$Message
.
success
(
"操作成功"
);
this
.
$refs
.
grid
.
easySearch
();
}
else
{
this
.
$Message
.
error
(
"同步失败"
);
}
});
}
});
}
else
{
this
.
$Message
.
error
(
"请完善个人电话信息"
);
}
},
//同步账户end
//导入excel
//导入功能
openModalIm
()
{
this
.
ModalIm
=
true
},
ModalImCancel
()
{
this
.
ModalIm
=
false
},
ok
()
{
this
.
$refs
.
grid
.
load
();
},
getData
(
val
)
{
let
url
=
`
${
systemUrl
}
/userimportservice/import`
;
this
.
$refs
.
importExcel
.
deelData
(
url
,
this
.
columns
,
this
.
formatMethod
(
val
))
},
//根据页面二次处理数据
formatMethod
(
val
)
{
let
tempData
=
this
.
$u
.
clone
(
val
);
let
tempList
=
[];
tempData
.
forEach
((
ele
)
=>
{
let
obj
=
{
userName
:
ele
.
userName
?
ele
.
userName
:
''
,
cardNo
:
ele
.
cardNo
?
ele
.
cardNo
:
''
,
//用户编号
gender
:
ele
.
gender
?
ele
.
gender
:
''
,
//性别
birthday
:
ele
.
birthday
?
ele
.
birthday
:
''
,
degreeId
:
ele
.
degreeId
?
ele
.
degreeId
:
''
,
departmentId
:
ele
.
departmentId
?
ele
.
departmentId
:
null
,
status
:
ele
.
status
?
ele
.
status
:
null
,
phone
:
ele
.
phone
?
ele
.
phone
:
''
,
email
:
ele
.
email
?
ele
.
email
:
''
,
licensedToWork
:
ele
.
licensedToWork
?
ele
.
licensedToWork
:
null
,
positionId
:
ele
.
positionId
?
ele
.
positionId
:
null
,
titleId
:
ele
.
titleId
?
ele
.
titleId
:
null
,
departmentTitle
:
ele
.
departmentTitle
?
ele
.
departmentTitle
:
''
,
};
if
(
ele
.
userName
&&
ele
.
userName
!=
''
&&
ele
.
cardNo
&&
ele
.
cardNo
!=
''
&&
ele
.
departmentId
&&
ele
.
departmentId
!=
null
&&
ele
.
phone
&&
ele
.
phone
!=
''
)
{
obj
.
ico
=
false
}
else
{
obj
.
ico
=
true
}
tempList
.
push
(
obj
);
});
return
tempList
},
//批量导入end
},
computed
:
{
searchList
()
{
let
nodeList
=
this
.
treeData
;
var
text
=
this
.
treeInputSearch
;
var
newNodeList
=
[];
function
searchTree
(
nodeLists
,
value
)
{
for
(
let
i
=
0
;
i
<
nodeLists
.
length
;
i
++
)
{
if
(
nodeLists
[
i
].
title
.
indexOf
(
value
)
!=
-
1
)
{
newNodeList
.
push
(
nodeLists
[
i
]);
}
else
if
(
nodeLists
[
i
].
children
.
length
>
0
)
{
searchTree
(
nodeLists
[
i
].
children
,
value
);
}
}
}
if
(
text
!=
""
)
{
searchTree
(
nodeList
,
text
);
}
else
{
return
nodeList
;
}
return
newNodeList
;
},
allChecked
:
function
()
{
return
[...
this
.
authModel
.
extra
,
...
this
.
authModel
.
default
];
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.full {
margin-top: 0;
.content {
margin-top: 10px;
}
}
</
style
>
pages/basicData/systemUser/search.vue
0 → 100644
View file @
eb7b058c
<
template
>
<div
class=
"addUser"
>
<Form
ref=
"form"
:model=
"condition"
:label-width=
"100"
>
<Row
class=
"rowTitle100"
>
<Col
:span=
"12"
v-if=
"condition.id.show"
>
<FormItem
:label=
"l('id')"
prop=
"id"
>
<Input
v-model=
"condition.id.value"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.userName.show"
>
<FormItem
:label=
"l('userName')"
prop=
"userName"
>
<Input
v-model=
"condition.userName.value"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.cardTypeId.show"
>
<FormItem
:label=
"l('cardTypeId')"
prop=
"cardTypeId"
>
<Input
v-model=
"condition.cardTypeId.value"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.cardNo.show"
>
<FormItem
:label=
"l('cardNo')"
prop=
"cardNo"
>
<Input
v-model=
"condition.cardNo.value"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.status.show"
>
<FormItem
:label=
"l('status')"
prop=
"status"
>
<Dictionary
code=
"User.base.status"
v-model=
"condition.status.value"
type=
"radio"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.gender.show"
>
<FormItem
:label=
"l('gender')"
prop=
"gender"
>
<Dictionary
code=
"User.base.gender"
v-model=
"condition.gender.value"
type=
"radio"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.birthday.show"
>
<FormItem
:label=
"l('birthday')"
prop=
"birthday"
>
<DTSearch
v-model=
"condition.birthday.value"
@
on-change=
"setTime"
:showFast=
"false"
type=
"date"
></DTSearch>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.departmentTitle.show"
>
<FormItem
:label=
"l('departmentTitle')"
prop=
"departmentTitle"
>
<DepartmentSelect
v-model=
"condition.departmentId.value"
@
on-change=
"setDepartmentTitle"
/>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.national.show"
>
<FormItem
:label=
"l('national')"
prop=
"national"
>
<Input
v-model=
"condition.national.value"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.creatorUserId.show"
>
<FormItem
:label=
"l('creatorUserId')"
prop=
"creatorUserId"
>
<Input
v-model=
"condition.creatorUserId.value"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.creationTime.show"
>
<FormItem
:label=
"l('creationTime')"
prop=
"creationTime"
>
<DatePicker
type=
"daterange"
v-model=
"condition.creationTime.value"
></DatePicker>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.lastModifierUserId.show"
>
<FormItem
:label=
"l('lastModifierUserId')"
prop=
"lastModifierUserId"
>
<Input
v-model=
"condition.lastModifierUserId.value"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.lastModificationTime.show"
>
<FormItem
:label=
"l('lastModificationTime')"
prop=
"lastModificationTime"
>
<DatePicker
type=
"daterange"
v-model=
"condition.lastModificationTime.value"
></DatePicker>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.accountId.show"
>
<FormItem
:label=
"l('accountId')"
prop=
"accountId"
>
<Input
v-model=
"condition.accountId.value"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.isDeleted.show"
>
<FormItem
:label=
"l('isDeleted')"
prop=
"isDeleted"
>
<Dictionary
v-model=
"condition.isDeleted.value"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.userType.show"
>
<FormItem
:label=
"l('userType')"
prop=
"userType"
>
<Input
v-model=
"condition.userType.value"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.phone.show"
>
<FormItem
:label=
"l('phone')"
prop=
"phone"
>
<Input
v-model=
"condition.phone.value"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.email.show"
>
<FormItem
:label=
"l('email')"
prop=
"email"
>
<Input
v-model=
"condition.email.value"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.degreeId.show"
>
<FormItem
:label=
"l('degreeId')"
prop=
"degreeId"
>
<Dictionary
code=
"User.base.degree"
v-model=
"condition.degreeId.value"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.avatarUrl.show"
>
<FormItem
:label=
"l('avatarUrl')"
prop=
"avatarUrl"
>
<Input
v-model=
"condition.avatarUrl.value"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.enableEquip.show"
>
<FormItem
:label=
"l('enableEquip')"
prop=
"enableEquip"
>
<Input
v-model=
"condition.enableEquip.value"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.positionId.show"
>
<FormItem
:label=
"l('positionId')"
prop=
"positionId"
>
<Dictionary
code=
"User.base.position"
v-model=
"condition.positionId.value"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.titleId.show"
>
<FormItem
:label=
"l('titleId')"
prop=
"titleId"
>
<Dictionary
code=
"User.base.jobtitle"
v-model=
"condition.titleId.value"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.licensedToWork.show"
>
<FormItem
:label=
"l('licensedToWork')"
prop=
"licensedToWork"
>
<Dictionary
code=
"User.base.workLicense"
v-model=
"condition.licensedToWork.value"
></Dictionary>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.jobNo.show"
>
<FormItem
:label=
"l('jobNo')"
prop=
"jobNo"
>
<Input
v-model=
"condition.jobNo.value"
></Input>
</FormItem>
</Col>
<Col
:span=
"24"
v-if=
"condition.remark.show"
>
<FormItem
:label=
"l('remark')"
prop=
"remark"
>
<Input
v-model=
"condition.remark.value"
></Input>
</FormItem>
</Col>
<Col
:span=
"12"
v-if=
"condition.roleTitles.show"
>
<FormItem
:label=
"l('roleTitles')"
prop=
"roleTitles"
>
<Input
v-model=
"condition.roleTitles.value"
></Input>
</FormItem>
</Col>
</Row>
</Form>
</div>
</
template
>
<
script
>
import
Api
from
'./api'
export
default
{
name
:
'Search'
,
data
()
{
return
{
showDeptTree
:
false
,
values
:
[
'2001-01-01'
,
'2015-12-05'
],
condition
:
{
id
:
{
op
:
'Equal'
,
value
:
null
,
show
:
false
},
userName
:
{
op
:
'Equal'
,
value
:
null
,
show
:
true
},
cardTypeId
:
{
op
:
'Equal'
,
value
:
null
,
show
:
false
},
cardNo
:
{
op
:
'Equal'
,
value
:
null
,
show
:
true
},
gender
:
{
op
:
'Equal'
,
value
:
null
,
show
:
true
},
birthday
:
{
op
:
'Range'
,
value
:
null
,
show
:
true
},
degreeId
:
{
op
:
'Equal'
,
value
:
null
,
show
:
true
},
departmentId
:
{
op
:
'Equal'
,
value
:
null
,
show
:
false
},
national
:
{
op
:
'Equal'
,
value
:
null
,
show
:
false
},
status
:
{
op
:
'Equal'
,
value
:
null
,
show
:
true
},
creatorUserId
:
{
op
:
'Equal'
,
value
:
null
,
show
:
false
},
creationTime
:
{
op
:
'Range'
,
value
:
null
,
show
:
false
},
lastModifierUserId
:
{
op
:
'Equal'
,
value
:
null
,
show
:
false
},
lastModificationTime
:
{
op
:
'Range'
,
value
:
null
,
show
:
false
},
accountId
:
{
op
:
'Equal'
,
value
:
null
,
show
:
false
},
isDeleted
:
{
op
:
'Equal'
,
value
:
null
,
show
:
false
},
userType
:
{
op
:
'Equal'
,
value
:
null
,
show
:
false
},
phone
:
{
op
:
'Equal'
,
value
:
null
,
show
:
true
},
email
:
{
op
:
'Equal'
,
value
:
null
,
show
:
true
},
avatarUrl
:
{
op
:
'Equal'
,
value
:
null
,
show
:
false
},
enableEquip
:
{
op
:
'Equal'
,
value
:
null
,
show
:
false
},
licensedToWork
:
{
op
:
'Equal'
,
value
:
null
,
show
:
true
},
positionId
:
{
op
:
'Equal'
,
value
:
null
,
show
:
true
},
titleId
:
{
op
:
'Equal'
,
value
:
null
,
show
:
true
},
jobNo
:
{
op
:
'Equal'
,
value
:
null
,
show
:
false
},
remark
:
{
op
:
'Equal'
,
value
:
null
,
show
:
false
},
departmentTitle
:
{
op
:
'Equal'
,
value
:
null
,
show
:
true
},
departmentId
:
{
op
:
'Equal'
,
value
:
null
,
show
:
false
},
roleTitles
:
{
op
:
'Equal'
,
value
:
null
,
show
:
true
}
}
}
},
methods
:
{
handleClose
()
{
this
.
$emit
(
'on-close'
)
},
l
(
key
)
{
key
=
'user'
+
'.'
+
key
return
this
.
$t
(
key
)
},
setDepartmentTitle
(
v
,
item
)
{
this
.
condition
.
departmentTitle
.
value
=
item
.
name
},
setTime
(
v
)
{
this
.
condition
.
birthday
.
value
=
v
},
},
watch
:
{}
}
</
script
>
<
style
lang=
"less"
>
.addUser {
.ivu-radio-wrapper {
vertical-align: top;
}
}
</
style
>
pages/basicData/user/add.vue
View file @
eb7b058c
...
...
@@ -122,7 +122,8 @@ export default {
entity
:
{
gender
:
1
,
status
:
1
,
property
:
false
property
:
false
,
userType
:
0
},
rules
:
{
userName
:
[{
...
...
pages/basicData/user/index.vue
View file @
eb7b058c
...
...
@@ -115,6 +115,10 @@ export default {
op
:
"In"
,
value
:
""
},
userType
:
{
op
:
"Equal"
,
value
:
"0"
},
},
treeData
:
[],
tdHeight
:
""
,
...
...
pages/basicData/user/search.vue
View file @
eb7b058c
...
...
@@ -172,7 +172,7 @@ export default {
lastModificationTime
:
{
op
:
'Range'
,
value
:
null
,
show
:
false
},
accountId
:
{
op
:
'Equal'
,
value
:
null
,
show
:
false
},
isDeleted
:
{
op
:
'Equal'
,
value
:
null
,
show
:
false
},
userType
:
{
op
:
'Equal'
,
value
:
null
,
show
:
false
},
userType
:
{
op
:
'Equal'
,
value
:
'0'
,
show
:
false
},
phone
:
{
op
:
'Equal'
,
value
:
null
,
show
:
true
},
email
:
{
op
:
'Equal'
,
value
:
null
,
show
:
true
},
avatarUrl
:
{
op
:
'Equal'
,
value
:
null
,
show
:
false
},
...
...
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