Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
so-manage-ui
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
smart-operation
so-manage-ui
Commits
837fff7d
Commit
837fff7d
authored
May 22, 2023
by
白舜
🎱
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev0508' of
ssh://cloud.wodcloud.com:10022/apaas/apaas-system-ui
into dev
parents
8885d605
8913d2e8
Changes
22
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
513 additions
and
175 deletions
+513
-175
.beagle.yml
.beagle.yml
+16
-14
src/App.vue
src/App.vue
+60
-1
src/bg-ui/bg-table.vue
src/bg-ui/bg-table.vue
+2
-2
src/components/register-org-user.vue
src/components/register-org-user.vue
+18
-19
src/lipeng.vue
src/lipeng.vue
+257
-0
src/page/index.vue
src/page/index.vue
+14
-32
src/page/login/index.vue
src/page/login/index.vue
+1
-0
src/page/main/config/dict/index.vue
src/page/main/config/dict/index.vue
+90
-76
src/page/main/develop/account/add/system-form.vue
src/page/main/develop/account/add/system-form.vue
+2
-2
src/page/main/develop/account/detail/index.vue
src/page/main/develop/account/detail/index.vue
+1
-1
src/page/main/develop/account/index.vue
src/page/main/develop/account/index.vue
+2
-2
src/page/main/develop/systemApproval/approval/index.vue
src/page/main/develop/systemApproval/approval/index.vue
+2
-2
src/page/main/develop/systemApproval/detail/index.vue
src/page/main/develop/systemApproval/detail/index.vue
+2
-1
src/page/main/develop/systemApproval/index.vue
src/page/main/develop/systemApproval/index.vue
+2
-2
src/page/main/log/userAccount/index.vue
src/page/main/log/userAccount/index.vue
+2
-2
src/page/main/log/userBehavior/detail/index.vue
src/page/main/log/userBehavior/detail/index.vue
+25
-2
src/page/main/log/userBehavior/index.vue
src/page/main/log/userBehavior/index.vue
+1
-1
src/page/main/system/organization/index.vue
src/page/main/system/organization/index.vue
+6
-6
src/page/main/system/organization/org-detail/index.vue
src/page/main/system/organization/org-detail/index.vue
+2
-2
src/page/main/system/organization/org-form.vue
src/page/main/system/organization/org-form.vue
+6
-6
src/page/main/system/organization/org-user/org-account-form.vue
...ge/main/system/organization/org-user/org-account-form.vue
+1
-1
src/page/register/index.vue
src/page/register/index.vue
+1
-1
No files found.
.beagle.yml
View file @
837fff7d
# platform:
# runner: 10.11.92.37
kind
:
pipeline
kind
:
pipeline
name
:
dev
name
:
dev
0508
trigger
:
trigger
:
branch
:
branch
:
-
dev
-
dev
0508
clone
:
clone
:
disable
:
true
disable
:
true
...
@@ -63,7 +65,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
...
@@ -63,7 +65,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
base
:
registry.cn-qingdao.aliyuncs.com/wod/nginx:1.19.5
# 基础镜像,根据项目需求进行使用,如果第三方登录改成ui-base
base
:
registry.cn-qingdao.aliyuncs.com/wod/nginx:1.19.5
# 基础镜像,根据项目需求进行使用,如果第三方登录改成ui-base
dockerfile
:
.beagle/dockerfile
dockerfile
:
.beagle/dockerfile
repo
:
wod/apaas-system-ui
# 生成镜像的 分组/名称
repo
:
wod/apaas-system-ui
# 生成镜像的 分组/名称
version
:
"
5.0.1
4
"
# 版本号
version
:
"
5.0.1
5
"
# 版本号
channel
:
amd64
channel
:
amd64
args
:
"
TARGETOS=linux,TARGETARCH=amd64"
# 不同架构的构建参数
args
:
"
TARGETOS=linux,TARGETARCH=amd64"
# 不同架构的构建参数
registry
:
registry.cn-qingdao.aliyuncs.com
# 私有仓库地址
registry
:
registry.cn-qingdao.aliyuncs.com
# 私有仓库地址
...
@@ -75,10 +77,10 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
...
@@ -75,10 +77,10 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
-
name
:
deploy-amd64
-
name
:
deploy-amd64
image
:
registry.cn-qingdao.aliyuncs.com/wod/devops-kubernetes:1.0
image
:
registry.cn-qingdao.aliyuncs.com/wod/devops-kubernetes:1.0
settings
:
settings
:
namespace
:
apaas-v5
-demo
namespace
:
apaas-v5
deployment
:
apaas-manage-ui
deployment
:
apaas-manage-ui
container
:
apaas-manage-ui
container
:
apaas-manage-ui
image
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.1
4
-amd64
image
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.1
5
-amd64
environment
:
environment
:
KUBERNETES_SERVER
:
KUBERNETES_SERVER
:
from_secret
:
KUBERNETES_SERVER
from_secret
:
KUBERNETES_SERVER
...
@@ -94,7 +96,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
...
@@ -94,7 +96,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
base
:
registry.cn-qingdao.aliyuncs.com/wod/nginx:1.19.5-arm64
base
:
registry.cn-qingdao.aliyuncs.com/wod/nginx:1.19.5-arm64
dockerfile
:
.beagle/dockerfile
dockerfile
:
.beagle/dockerfile
repo
:
wod/apaas-system-ui
repo
:
wod/apaas-system-ui
version
:
"
5.0.1
4
"
version
:
"
5.0.1
5
"
channel
:
arm64
channel
:
arm64
args
:
"
TARGETOS=linux,TARGETARCH=arm64"
args
:
"
TARGETOS=linux,TARGETARCH=arm64"
registry
:
registry.cn-qingdao.aliyuncs.com
registry
:
registry.cn-qingdao.aliyuncs.com
...
@@ -112,7 +114,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
...
@@ -112,7 +114,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
base
:
registry.cn-qingdao.aliyuncs.com/wod/nginx:1.19.5-ppc64le
base
:
registry.cn-qingdao.aliyuncs.com/wod/nginx:1.19.5-ppc64le
dockerfile
:
.beagle/dockerfile
dockerfile
:
.beagle/dockerfile
repo
:
wod/apaas-system-ui
repo
:
wod/apaas-system-ui
version
:
"
5.0.1
4
"
version
:
"
5.0.1
5
"
channel
:
ppc64le
channel
:
ppc64le
args
:
"
TARGETOS=linux,TARGETARCH=ppc64le"
args
:
"
TARGETOS=linux,TARGETARCH=ppc64le"
registry
:
registry.cn-qingdao.aliyuncs.com
registry
:
registry.cn-qingdao.aliyuncs.com
...
@@ -130,7 +132,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
...
@@ -130,7 +132,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
base
:
registry.cn-qingdao.aliyuncs.com/wod/nginx:1.19.5-mips64le
base
:
registry.cn-qingdao.aliyuncs.com/wod/nginx:1.19.5-mips64le
dockerfile
:
.beagle/dockerfile
dockerfile
:
.beagle/dockerfile
repo
:
wod/apaas-system-ui
repo
:
wod/apaas-system-ui
version
:
"
5.0.1
4
"
version
:
"
5.0.1
5
"
channel
:
mips64le
channel
:
mips64le
args
:
"
TARGETOS=linux,TARGETARCH=mips64le"
args
:
"
TARGETOS=linux,TARGETARCH=mips64le"
registry
:
registry.cn-qingdao.aliyuncs.com
registry
:
registry.cn-qingdao.aliyuncs.com
...
@@ -143,8 +145,8 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
...
@@ -143,8 +145,8 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
image
:
registry.cn-qingdao.aliyuncs.com/wod/devops-docker-manifest:1.0
image
:
registry.cn-qingdao.aliyuncs.com/wod/devops-docker-manifest:1.0
settings
:
settings
:
platforms
:
linux/amd64,linux/arm64,linux/ppc64le,linux/mips64le
platforms
:
linux/amd64,linux/arm64,linux/ppc64le,linux/mips64le
template
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.1
4
-ARCH
template
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.1
5
-ARCH
target
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.1
4
target
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.1
5
username
:
username
:
from_secret
:
REGISTRY_USER_ALIYUN
from_secret
:
REGISTRY_USER_ALIYUN
password
:
password
:
...
@@ -179,7 +181,7 @@ steps:
...
@@ -179,7 +181,7 @@ steps:
REGISTRY_PASSWORD
:
REGISTRY_PASSWORD
:
from_secret
:
REGISTRY_PASSWORD_ALIYUN
from_secret
:
REGISTRY_PASSWORD_ALIYUN
settings
:
settings
:
source
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.1
4
-amd64
source
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.1
5
-amd64
target
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0-amd64
target
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0-amd64
registry
:
registry.cn-qingdao.aliyuncs.com
registry
:
registry.cn-qingdao.aliyuncs.com
...
@@ -197,7 +199,7 @@ steps:
...
@@ -197,7 +199,7 @@ steps:
REGISTRY_PASSWORD
:
REGISTRY_PASSWORD
:
from_secret
:
REGISTRY_PASSWORD_ALIYUN
from_secret
:
REGISTRY_PASSWORD_ALIYUN
settings
:
settings
:
source
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.1
4
-arm64
source
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.1
5
-arm64
target
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0-arm64
target
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0-arm64
registry
:
registry.cn-qingdao.aliyuncs.com
registry
:
registry.cn-qingdao.aliyuncs.com
...
@@ -215,7 +217,7 @@ steps:
...
@@ -215,7 +217,7 @@ steps:
REGISTRY_PASSWORD
:
REGISTRY_PASSWORD
:
from_secret
:
REGISTRY_PASSWORD_ALIYUN
from_secret
:
REGISTRY_PASSWORD_ALIYUN
settings
:
settings
:
source
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.1
4
-ppc64le
source
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.1
5
-ppc64le
target
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0-ppc64le
target
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0-ppc64le
registry
:
registry.cn-qingdao.aliyuncs.com
registry
:
registry.cn-qingdao.aliyuncs.com
...
@@ -233,7 +235,7 @@ steps:
...
@@ -233,7 +235,7 @@ steps:
REGISTRY_PASSWORD
:
REGISTRY_PASSWORD
:
from_secret
:
REGISTRY_PASSWORD_ALIYUN
from_secret
:
REGISTRY_PASSWORD_ALIYUN
settings
:
settings
:
source
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.1
4
-mips64le
source
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.1
5
-mips64le
target
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0-mips64le
target
:
registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0-mips64le
##--------------对于需要保密的信息隐藏,减少账户信息的泄密⬇-----------------##
##--------------对于需要保密的信息隐藏,减少账户信息的泄密⬇-----------------##
---
---
...
...
src/App.vue
View file @
837fff7d
...
@@ -46,6 +46,9 @@ import login from "@/page/login/index.vue";
...
@@ -46,6 +46,9 @@ import login from "@/page/login/index.vue";
import
page404
from
"
@/page/404.vue
"
;
import
page404
from
"
@/page/404.vue
"
;
import
register
from
"
@/page/register/index.vue
"
;
import
register
from
"
@/page/register/index.vue
"
;
import
password
from
"
@/page/password/index.vue
"
;
import
password
from
"
@/page/password/index.vue
"
;
import
{
clearCookie
}
from
"
@/services/cookie.js
"
;
import
{
resetRouter
}
from
"
@/router/index
"
;
export
default
{
export
default
{
components
:
{
components
:
{
bgMenu
,
bgMenu
,
...
@@ -111,8 +114,64 @@ export default {
...
@@ -111,8 +114,64 @@ export default {
created
()
{
created
()
{
// this.initMsg()
// this.initMsg()
},
},
mounted
()
{},
mounted
()
{
this
.
getSysOptions
();
},
methods
:
{
methods
:
{
/**
* 设置用户多久不操作就跳转到登录界面
* limit:用户无操作时常限制(分钟)
*/
exitSystemAfterLimit
(
limit
)
{
window
.
lastOperateTime
=
new
Date
();
window
.
onload
=
this
.
addOperateListener
;
this
.
setTimer
(
limit
);
},
//绑定用户操作事件
addOperateListener
()
{
document
.
addEventListener
(
"
mousemove
"
,
this
.
resetStartTime
);
document
.
addEventListener
(
"
keydown
"
,
this
.
resetStartTime
);
document
.
addEventListener
(
"
scroll
"
,
this
.
resetStartTime
);
document
.
addEventListener
(
"
touchstart
"
,
this
.
resetStartTime
);
},
//重置起始时间
resetStartTime
()
{
window
.
lastOperateTime
=
new
Date
();
},
//设置定时器
setTimer
(
limit
)
{
window
.
logTimer
=
setInterval
(()
=>
{
var
currentTime
=
new
Date
();
var
timeDiff
=
currentTime
.
getTime
()
-
lastOperateTime
.
getTime
();
if
(
timeDiff
>
limit
*
60
*
1000
)
{
clearInterval
(
window
.
logTimer
);
this
.
$axios
.
post
(
`/apaas/system/v5/user/logout`
).
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
"
200
"
)
{
window
.
location
.
href
=
`/apaas/manage/ui/#/login`
;
this
.
$store
.
commit
(
"
setUserInfo
"
,
null
);
clearCookie
(
"
bgToken
"
);
this
.
$message
.
success
(
"
退出成功
"
);
resetRouter
();
}
else
{
this
.
$message
.
error
(
"
退出失败
"
);
}
});
}
},
1000
);
},
getSysOptions
()
{
this
.
$axios
.
get
(
`/apaas/system/v5/sysOptions`
).
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
200
)
{
const
result
=
res
.
data
.
data
||
{};
if
(
result
.
session_validity
)
this
.
exitSystemAfterLimit
(
result
.
session_validity
);
}
else
{
this
.
$message
.
error
(
res
.
data
.
data
);
}
});
},
openMsg
(
data
)
{
openMsg
(
data
)
{
this
.
readFlag
=
!
this
.
readFlag
;
this
.
readFlag
=
!
this
.
readFlag
;
},
},
...
...
src/bg-ui/bg-table.vue
View file @
837fff7d
...
@@ -24,11 +24,11 @@
...
@@ -24,11 +24,11 @@
<!-- 序号 -->
<!-- 序号 -->
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
v-for=
"(header
, index
) in headers"
v-for=
"(header) in headers"
:width=
"header.width"
:width=
"header.width"
:min-width=
"header.minWidth"
:min-width=
"header.minWidth"
:align=
"header.align"
:align=
"header.align"
:key=
"'col_' +
index
"
:key=
"'col_' +
header.prop
"
:fixed=
"header.fixed"
:fixed=
"header.fixed"
show-overflow-tooltip
>
show-overflow-tooltip
>
<
template
v-slot:header
>
<
template
v-slot:header
>
...
...
src/components/register-org-user.vue
View file @
837fff7d
<
template
>
<
template
>
<div
class=
"register-personal-user"
>
<div
class=
"register-personal-user"
>
<el-form
ref=
"form"
:model=
"formData"
:rules=
"formDataRules"
>
<el-form
ref=
"form"
:model=
"formData"
:rules=
"formDataRules"
>
<el-form-item
label=
"用户组织
机构
"
prop=
"oid"
>
<el-form-item
label=
"用户组织"
prop=
"oid"
>
<el-select
<el-select
v-model=
"formData.oid"
v-model=
"formData.oid"
placeholder=
"搜索并选择"
placeholder=
"搜索并选择"
...
@@ -82,12 +82,12 @@
...
@@ -82,12 +82,12 @@
</el-form>
</el-form>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
md5
from
"
js-md5
"
;
import
md5
from
"
js-md5
"
;
export
default
{
export
default
{
name
:
"
RegisterOrgUser
"
,
// 注册政府
机构
用户
name
:
"
RegisterOrgUser
"
,
// 注册政府
组织
用户
data
()
{
data
()
{
const
validateUserId
=
(
rule
,
value
,
callback
)
=>
{
const
validateUserId
=
(
rule
,
value
,
callback
)
=>
{
let
reg
=
new
RegExp
(
/^
[
a-zA-Z0-9|
\-
|_|
\.]
+$/
);
let
reg
=
new
RegExp
(
/^
[
a-zA-Z0-9|
\-
|_|
\.]
+$/
);
...
@@ -115,7 +115,7 @@
...
@@ -115,7 +115,7 @@
};
};
const
validatePassword
=
(
rule
,
value
,
callback
)
=>
{
const
validatePassword
=
(
rule
,
value
,
callback
)
=>
{
let
reg
=
new
RegExp
(
/^
(?=
.*
\d)(?=
.*
[
a-zA-Z
])(?=
.*
[^
a-zA-Z0-9
])
.
{8,20}
$/
);
let
reg
=
new
RegExp
(
/^
(?=
.*
\d)(?=
.*
[
a-zA-Z
])(?=
.*
[^
a-zA-Z0-9
])
.
{8,20}
$/
);
setTimeout
(()
=>
{
setTimeout
(()
=>
{
if
(
value
==
""
)
{
if
(
value
==
""
)
{
callback
(
new
Error
(
"
请输入密码
"
));
callback
(
new
Error
(
"
请输入密码
"
));
...
@@ -137,7 +137,7 @@
...
@@ -137,7 +137,7 @@
};
};
const
validatePhone
=
(
rule
,
value
,
callback
)
=>
{
const
validatePhone
=
(
rule
,
value
,
callback
)
=>
{
const
reg
=
/^
(?:(?:\+
|00
)
86
)?
1
[
3-9
]\d{9}
$/
;
const
reg
=
/^
(?:(?:\+
|00
)
86
)?
1
[
3-9
]\d{9}
$/
;
setTimeout
(()
=>
{
setTimeout
(()
=>
{
if
(
!
reg
.
test
(
value
))
{
if
(
!
reg
.
test
(
value
))
{
callback
(
new
Error
(
"
请输入正确的手机号码
"
));
callback
(
new
Error
(
"
请输入正确的手机号码
"
));
...
@@ -146,12 +146,12 @@
...
@@ -146,12 +146,12 @@
}
}
});
});
};
};
return
{
return
{
formData
:
{
formData
:
{
is_inside
:
1
,
// 固定1
is_inside
:
1
,
// 固定1
user_category
:
0
,
// 用户类型0
user_category
:
0
,
// 用户类型0
oid
:
""
,
// 用户组织
机构
必填
oid
:
""
,
// 用户组织 必填
user_id
:
""
,
// 用户名 必填
user_id
:
""
,
// 用户名 必填
password
:
""
,
// 密码 必填
password
:
""
,
// 密码 必填
confirm_password
:
""
,
confirm_password
:
""
,
...
@@ -164,7 +164,7 @@
...
@@ -164,7 +164,7 @@
},
},
formDataRules
:
{
formDataRules
:
{
oid
:
[
oid
:
[
{
required
:
true
,
message
:
"
请选择用户组织
机构
"
,
trigger
:
"
change
"
},
{
required
:
true
,
message
:
"
请选择用户组织
"
,
trigger
:
"
change
"
},
],
],
user_id
:
[
user_id
:
[
{
required
:
true
,
message
:
"
请输入用户名
"
,
trigger
:
"
blur
"
},
{
required
:
true
,
message
:
"
请输入用户名
"
,
trigger
:
"
blur
"
},
...
@@ -197,7 +197,7 @@
...
@@ -197,7 +197,7 @@
getOrgList
(
queryText
)
{
getOrgList
(
queryText
)
{
if
(
queryText
)
{
if
(
queryText
)
{
this
.
laodingOrgList
=
true
;
this
.
laodingOrgList
=
true
;
this
.
$api
.
general
this
.
$api
.
general
.
getOrgList
({
.
getOrgList
({
limit
:
9999999
,
limit
:
9999999
,
...
@@ -210,7 +210,7 @@
...
@@ -210,7 +210,7 @@
this
.
$message
.
error
(
data
.
errMsg
);
this
.
$message
.
error
(
data
.
errMsg
);
this
.
orgList
=
[];
this
.
orgList
=
[];
}
}
this
.
laodingOrgList
=
false
;
this
.
laodingOrgList
=
false
;
});
});
}
else
{
}
else
{
...
@@ -230,11 +230,11 @@
...
@@ -230,11 +230,11 @@
},
},
countDownAction
()
{
countDownAction
()
{
this
.
countDown
=
60
;
this
.
countDown
=
60
;
if
(
this
.
countDownTimer
)
{
if
(
this
.
countDownTimer
)
{
clearInterval
(
this
.
countDownTimer
);
clearInterval
(
this
.
countDownTimer
);
}
}
this
.
countDownTimer
=
setInterval
(()
=>
{
this
.
countDownTimer
=
setInterval
(()
=>
{
if
(
this
.
countDown
>
0
)
{
if
(
this
.
countDown
>
0
)
{
this
.
countDown
--
;
this
.
countDown
--
;
...
@@ -250,16 +250,16 @@
...
@@ -250,16 +250,16 @@
...
this
.
formData
,
...
this
.
formData
,
password
:
md5
(
this
.
formData
.
password
),
password
:
md5
(
this
.
formData
.
password
),
};
};
delete
formData
.
confirm_password
;
delete
formData
.
confirm_password
;
this
.
$api
.
general
.
registerlUser
(
formData
).
then
(({
data
})
=>
{
this
.
$api
.
general
.
registerlUser
(
formData
).
then
(({
data
})
=>
{
if
(
data
.
success
==
1
)
{
if
(
data
.
success
==
1
)
{
this
.
$message
({
this
.
$message
({
message
:
"
注册成功
"
,
message
:
"
注册成功
"
,
type
:
"
success
"
,
type
:
"
success
"
,
});
});
this
.
$emit
(
"
success
"
);
this
.
$emit
(
"
success
"
);
}
else
{
}
else
{
this
.
$message
({
this
.
$message
({
...
@@ -288,18 +288,17 @@
...
@@ -288,18 +288,17 @@
},
},
};
};
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
<
style
lang=
"less"
scoped
>
.msg-code {
.msg-code {
display: flex;
display: flex;
justify-content: space-between;
justify-content: space-between;
align-items: center;
align-items: center;
margin-top: 25px;
margin-top: 25px;
> .bg-identify {
> .bg-identify {
margin-left: 6px;
margin-left: 6px;
flex-shrink: 0;
flex-shrink: 0;
}
}
}
}
</
style
>
</
style
>
\ No newline at end of file
src/lipeng.vue
0 → 100644
View file @
837fff7d
<
template
>
<div
class=
"h-full"
@
click=
"readFlag = false"
>
<el-config-provider>
<bg-menu
v-if=
"menuShow"
:path=
"nowParent.path"
@
open-msg=
"openMsg"
/>
<div
v-if=
"pageShow"
class=
"container"
:class=
"menuShow ? '' : 'full_screen'"
>
<bg-nav
v-if=
"nowParent.children"
v-show=
"navShow"
:highlight-parent-rule=
"highlightParentRule"
width=
"208px"
:list=
"nowParent.children"
class=
"con-nav"
/>
<div
class=
"bg-main view log_content_nor"
>
<router-view
/>
</div>
</div>
<div
v-else-if=
"$route.path == '/login'"
class=
"container"
>
<div
class=
"bg-main view"
>
<login
/>
</div>
</div>
<div
v-else-if=
"$route.path == '/404'"
class=
"container"
>
<div
class=
"bg-main view"
>
<page404
/>
</div>
</div>
<msg
v-model=
"readFlag"
/>
</el-config-provider>
</div>
</
template
>
<
script
setup
>
import
{
computed
,
onBeforeMount
,
reactive
,
watch
,
ref
,
getCurrentInstance
}
from
"
vue
"
;
import
{
useRoute
}
from
"
vue-router
"
;
import
store
from
"
@/store
"
;
import
bgMenu
from
"
@/components/bg-menu.vue
"
;
import
login
from
"
@/page/login/index.vue
"
;
import
page404
from
"
@/page/404.vue
"
;
import
axios
from
"
@/request/http.js
"
;
import
{
clearCookie
}
from
"
@/services/cookie.js
"
;
import
{
resetRouter
}
from
"
@/router/index
"
;
const
route
=
useRoute
();
const
{
proxy
}
=
getCurrentInstance
();
const
{
$trace
}
=
proxy
;
const
msgBoxFlag
=
computed
(()
=>
{
return
store
.
state
.
msgBoxFlag
;
});
const
userInfo
=
computed
(()
=>
{
return
store
.
state
.
userInfo
;
});
const
navMenu
=
computed
(()
=>
{
return
store
.
state
.
menu
;
});
const
menuObj
=
computed
(()
=>
{
return
store
.
state
.
menuObj
;
});
const
navShow
=
computed
(()
=>
{
return
(
false
||
!
(
excludeMenuArr
.
includes
(
route
.
path
)
||
excludeMenuArr
.
includes
(
store
.
state
.
menuObj
[
route
.
path
].
source
)
)
);
});
const
pageShow
=
computed
(()
=>
{
return
false
||
!
[
"
/404
"
,
"
/login
"
].
includes
(
route
.
path
);
});
const
rowPath
=
computed
(()
=>
{
if
(
pageShow
.
value
&&
store
.
state
.
userInfo
)
{
return
menuObj
.
value
[
route
.
path
]
&&
menuObj
.
value
[
route
.
path
].
rowPath
;
}
else
{
return
""
;
}
});
const
nowParent
=
computed
(()
=>
{
if
(
pageShow
.
value
&&
store
.
state
.
userInfo
)
{
return
rowPath
.
value
?
navMenu
.
value
[
rowPath
.
value
.
slice
(
1
,
2
)]
:
""
;
}
else
{
return
""
;
}
});
const
menuShow
=
computed
(()
=>
{
return
false
||
!
[
"
/ui-example
"
].
includes
(
route
.
path
);
});
watch
(
()
=>
msgBoxFlag
.
value
,
(
n
,
o
)
=>
{
readFlag
.
value
=
!
readFlag
.
value
;
}
);
watch
(
()
=>
userInfo
.
value
,
(
n
,
o
)
=>
{
this
.
initMsg
();
}
);
const
readFlag
=
ref
(
false
);
const
excludeMenuArr
=
reactive
([
"
/
"
,
"
/404
"
,
"
/login
"
,
"
/ability-manage/real-list/detail
"
,
"
/ability-manage/mock-list/detail
"
,
"
/ability-register/add/desc
"
,
"
/ability-register/edit/desc
"
,
"
/ability-register/add/preview
"
,
"
/ability-register/edit/preview
"
,
"
/ui-example
"
,
"
/ability-register/add/valid
"
,
"
/ability-manage/ability-maintain/detail
"
,
"
/ability-manage/sold-approval/detail
"
,
"
/ability-manage/sold-list/detail
"
,
"
/ability-manage/search-list/detail
"
,
"
/ability-manage/my-apply/detail
"
,
"
/ability-manage/my-apply/update
"
,
"
/ability-manage/ability-approval/detail
"
,
"
/shop
"
,
"
/shop/detail
"
,
"
/my-subscription
"
,
"
/my-subscription/ability-shop-apply
"
,
"
/my-subscription/ability-apply-success
"
,
"
/password
"
,
"
/app-manage/app-detail
"
,
"
/cloud-manage/cloud-detail
"
,
"
/cloud-manage/my-apply/resource
"
,
"
/app-manage/deployment-detail
"
,
"
/customer-support
"
,
]);
onBeforeMount
(()
=>
{
initMsg
();
getSysOptions
();
});
/**
* 设置用户多久不操作就跳转到登录界面
* limit:用户无操作时常限制(分钟)
*/
const
exitSystemAfterLimit
=
(
limit
)
=>
{
window
.
lastOperateTime
=
new
Date
();
window
.
onload
=
addOperateListener
;
setTimer
(
limit
);
};
//绑定用户操作事件
const
addOperateListener
=
()
=>
{
document
.
addEventListener
(
"
mousemove
"
,
resetStartTime
);
document
.
addEventListener
(
"
keydown
"
,
resetStartTime
);
document
.
addEventListener
(
"
scroll
"
,
resetStartTime
);
document
.
addEventListener
(
"
touchstart
"
,
resetStartTime
);
};
//重置起始时间
const
resetStartTime
=
()
=>
{
window
.
lastOperateTime
=
new
Date
();
};
//设置定时器
const
setTimer
=
(
limit
)
=>
{
window
.
logTimer
=
setInterval
(()
=>
{
var
currentTime
=
new
Date
();
var
timeDiff
=
currentTime
.
getTime
()
-
lastOperateTime
.
getTime
();
if
(
timeDiff
>
limit
*
60
*
1000
)
{
clearInterval
(
window
.
logTimer
);
$axios
.
post
(
"
/apaas/system/v5/user/logout
"
).
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
"
200
"
)
{
window
.
location
.
href
=
"
/apaas/manage/ui/#/login
"
;
$store
.
commit
(
"
setUserInfo
"
,
null
);
clearCookie
(
"
bgToken
"
);
$message
.
success
(
"
退出成功
"
);
resetRouter
();
}
else
{
$message
.
error
(
"
退出失败
"
);
}
});
}
},
1000
);
};
const
getSysOptions
=
()
=>
{
axios
.
get
(
"
/apaas/system/v5/sysOptions
"
).
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
200
)
{
const
result
=
res
.
data
.
data
||
{};
if
(
result
.
session_validity
)
exitSystemAfterLimit
(
result
.
session_validity
);
}
else
{
$message
.
error
(
res
.
data
.
data
);
}
});
};
const
openMsg
=
(
data
)
=>
{
readFlag
.
value
=
!
readFlag
.
value
;
};
const
initMsg
=
()
=>
{
if
(
userInfo
.
value
&&
userInfo
.
value
&&
userInfo
.
value
.
system_id
)
{
$trace
.
setOptionValue
(
"
userId
"
,
userInfo
.
value
.
system_id
);
$trace
.
setOptionValue
(
"
organization
"
,
userInfo
.
value
.
organization_id
);
}
};
const
pathToData
=
(
data
,
path
)
=>
{
let
arr
=
path
.
split
(
"
.
"
);
let
temp
=
null
;
let
tempName
=
""
;
let
tempPath
=
""
;
arr
.
forEach
((
e
,
idx
)
=>
{
if
(
idx
==
1
)
{
temp
=
data
[
e
];
tempName
=
data
[
e
].
menuName
;
tempPath
=
data
[
e
].
path
;
data
=
data
[
e
];
}
if
(
idx
==
2
)
{
if
(
data
.
children
&&
data
.
children
.
length
)
{
temp
=
data
.
children
[
e
];
data
=
data
.
children
[
e
];
}
}
});
return
{
menuName
:
tempName
,
path
:
tempPath
,
children
:
[
temp
],
};
};
const
highlightParentRule
=
(
pathArr
)
=>
{
return
pathArr
.
includes
(
route
.
path
);
};
</
script
>
<
style
>
.h-full
{
height
:
100%
;
}
.container
{
width
:
100%
;
height
:
calc
(
100%
-
56px
);
overflow
:
hidden
;
}
.full_screen
{
height
:
100%
;
}
.full_screen
.bg-main
{
overflow-x
:
hidden
;
}
.con-nav
{
float
:
left
;
}
.view
{
height
:
100%
;
overflow-y
:
auto
;
}
</
style
>
src/page/index.vue
View file @
837fff7d
<
template
>
<
template
>
<div
style=
"height:100%;
"
>
<div
style=
"height: 100%
"
>
<router-view></router-view>
<router-view></router-view>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
export
default
{
export
default
{
props
:
{
props
:
{},
components
:
{},
},
data
()
{
components
:
{
return
{};
},
},
watch
:
{},
data
()
{
computed
:
{},
return
{
created
()
{},
mounted
()
{},
};
methods
:
{},
},
watch
:
{
},
computed
:
{
},
created
()
{
},
mounted
()
{
},
methods
:
{
},
};
};
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
></
style
>
</
style
>
src/page/login/index.vue
View file @
837fff7d
...
@@ -107,6 +107,7 @@ const getSysOptions = () => {
...
@@ -107,6 +107,7 @@ const getSysOptions = () => {
axios
.
get
(
`/apaas/system/v5/sysOptions`
).
then
((
res
)
=>
{
axios
.
get
(
`/apaas/system/v5/sysOptions`
).
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
200
)
{
if
(
res
.
data
.
code
==
200
)
{
const
result
=
res
.
data
.
data
||
{};
const
result
=
res
.
data
.
data
||
{};
if
(
result
.
session_validity
)
exitSystemAfterLimit
(
result
.
session_validity
);
if
(
result
.
license_dead_date
&&
result
.
license_inform_day
)
{
if
(
result
.
license_dead_date
&&
result
.
license_inform_day
)
{
calculateValidityDays
(
calculateValidityDays
(
new
Date
().
getTime
(),
new
Date
().
getTime
(),
...
...
src/page/main/config/dict/index.vue
View file @
837fff7d
...
@@ -25,15 +25,22 @@
...
@@ -25,15 +25,22 @@
</div>
</div>
<div
class=
"flex_right"
>
<div
class=
"flex_right"
>
<div
class=
"main_container"
>
<div
class=
"main_container"
>
<bg-filter-group
@
search=
"changeSearch"
v-model=
"filter.search"
placeholder=
"请输入关键字"
>
<bg-filter-group
<template
v-slot:left_action
v-if=
"nodeClassifyId != '263758a4-0349-4d49-a816-e8ff8d33a8bb'"
>
@
search=
"changeSearch"
v-model=
"filter.search"
placeholder=
"请输入关键字"
>
<template
v-slot:left_action
v-if=
"nodeClassifyId != '263758a4-0349-4d49-a816-e8ff8d33a8bb'"
>
<div
class=
"apaas_button"
>
<div
class=
"apaas_button"
>
<el-button
type=
"primary"
@
click=
"backDict"
v-if=
"dictLevel != 1"
>
<el-button
type=
"primary"
@
click=
"backDict"
v-if=
"dictLevel != 1"
>
<!--
<bg-icon
style=
"font-size: 12px; color: #fff; margin-right: 8px"
icon=
"#bg-ic-add"
></bg-icon>
-->
<!--
<bg-icon
style=
"font-size: 12px; color: #fff; margin-right: 8px"
icon=
"#bg-ic-add"
></bg-icon>
-->
返回上级
返回上级
</el-button>
</el-button>
<el-button
type=
"primary"
@
click=
"register"
>
<el-button
type=
"primary"
@
click=
"register"
>
<bg-icon
style=
"font-size: 12px; color: #fff; margin-right: 8px"
icon=
"#bg-ic-add"
></bg-icon>
<bg-icon
style=
"font-size: 12px; color: #fff; margin-right: 8px"
icon=
"#bg-ic-add"
></bg-icon>
新增
新增
</el-button>
</el-button>
</div>
</div>
...
@@ -60,9 +67,14 @@
...
@@ -60,9 +67,14 @@
</bg-filter-group>
</bg-filter-group>
<div
class=
"table_container"
>
<div
class=
"table_container"
>
<div
class=
"table bg-scroll"
>
<div
class=
"table bg-scroll"
>
<bg-table
ref=
"bgTable"
:headers=
"isLang && dictLevel == 1 ? langHeaders : headers"
:rows=
"tableRows"
:isIndex=
"true"
:stripe=
"true"
>
<bg-table
ref=
"bgTable"
:headers=
"headers"
:rows=
"tableRows"
:isIndex=
"true"
:stripe=
"true"
>
<
template
v-slot:name=
"{ row }"
>
<
template
v-slot:name=
"{ row }"
>
<span
class=
"can_click_text"
@
click=
"getChildren(row)"
v-if=
"
isLang && dictLevel == 1
"
>
<span
class=
"can_click_text"
@
click=
"getChildren(row)"
v-if=
"
row.children
"
>
{{
row
.
name
}}
{{
row
.
name
}}
</span>
</span>
<span
v-else
>
<span
v-else
>
...
@@ -81,17 +93,33 @@
...
@@ -81,17 +93,33 @@
</
template
>
</
template
>
<
template
v-slot:action=
"{ row }"
>
<
template
v-slot:action=
"{ row }"
>
<!-- 除技术类型之外的字典可以删除 -->
<!-- 除技术类型之外的字典可以删除 -->
<bg-table-btns2
:limit=
"3"
v-if=
"nodeClassifyId !== '263758a4-0349-4d49-a816-e8ff8d33a8bb'"
>
<bg-table-btns2
<bg-table-btn
@
click=
"edit_row(row)"
:disabled=
"row.state == 1"
>
编辑
</bg-table-btn>
:limit=
"3"
<bg-table-btn
@
click=
"delete_row(row)"
:disabled=
"row.state == 1"
>
删除
</bg-table-btn>
v-if=
"nodeClassifyId !== '263758a4-0349-4d49-a816-e8ff8d33a8bb'"
>
<bg-table-btn
@
click=
"moveRow(row, 1)"
:disabled=
"!row.canMoveUp"
>
上移
</bg-table-btn>
<bg-table-btn
@
click=
"edit_row(row)"
:disabled=
"row.state == 1"
<bg-table-btn
@
click=
"moveRow(row, 2)"
:disabled=
"!row.canMoveDown"
>
下移
</bg-table-btn>
>
编辑
</bg-table-btn
>
<bg-table-btn
@
click=
"delete_row(row)"
:disabled=
"row.state == 1"
>
删除
</bg-table-btn
>
<bg-table-btn
@
click=
"moveRow(row, 1)"
:disabled=
"!row.canMoveUp"
>
上移
</bg-table-btn
>
<bg-table-btn
@
click=
"moveRow(row, 2)"
:disabled=
"!row.canMoveDown"
>
下移
</bg-table-btn
>
</bg-table-btns2>
</bg-table-btns2>
<!-- 技术类型字典不可删除 -->
<!-- 技术类型字典不可删除 -->
<bg-table-btns2
:limit=
"3"
v-else
>
<bg-table-btns2
:limit=
"3"
v-else
>
<bg-table-btn
@
click=
"edit_row(row)"
:disabled=
"row.state == 1"
>
编辑
</bg-table-btn>
<bg-table-btn
@
click=
"edit_row(row)"
:disabled=
"row.state == 1"
<bg-table-btn
@
click=
"moveRow(row, 1)"
:disabled=
"!row.canMoveUp"
>
上移
</bg-table-btn>
>
编辑
</bg-table-btn
<bg-table-btn
@
click=
"moveRow(row, 2)"
:disabled=
"!row.canMoveDown"
>
下移
</bg-table-btn>
>
<bg-table-btn
@
click=
"moveRow(row, 1)"
:disabled=
"!row.canMoveUp"
>
上移
</bg-table-btn
>
<bg-table-btn
@
click=
"moveRow(row, 2)"
:disabled=
"!row.canMoveDown"
>
下移
</bg-table-btn
>
</bg-table-btns2>
</bg-table-btns2>
</
template
>
</
template
>
</bg-table>
</bg-table>
...
@@ -108,7 +136,11 @@
...
@@ -108,7 +136,11 @@
</div>
</div>
</div>
</div>
<!-- 新增/编辑弹窗 -->
<!-- 新增/编辑弹窗 -->
<el-dialog
class=
"dialog_box"
:title=
"addType == 1 ? '新增' : '编辑'"
v-model=
"addDialog"
width=
"758px"
>
<el-dialog
class=
"dialog_box"
:title=
"addType == 1 ? '新增' : '编辑'"
v-model=
"addDialog"
width=
"758px"
>
<el-form
ref=
"bgForm"
:model=
"formData"
:rules=
"rules"
label-width=
"80px"
class=
"bg_form"
>
<el-form
ref=
"bgForm"
:model=
"formData"
:rules=
"rules"
label-width=
"80px"
class=
"bg_form"
>
<el-form-item
label=
"名称"
prop=
"name"
>
<el-form-item
label=
"名称"
prop=
"name"
>
<el-input
<el-input
...
@@ -176,21 +208,15 @@
...
@@ -176,21 +208,15 @@
</template>
</template>
<
script
setup
>
<
script
setup
>
import
{
reactive
,
ref
,
onBeforeMount
,
toRefs
,
computed
,
watch
,
nextTick
}
from
"
vue
"
;
import
{
reactive
,
ref
,
onBeforeMount
,
toRefs
,
computed
,
watch
,
nextTick
,
watchEffect
}
from
"
vue
"
;
import
{
useRouter
}
from
"
vue-router
"
;
import
{
ElMessage
}
from
"
element-plus
"
;
import
{
ElMessage
}
from
"
element-plus
"
;
import
axios
from
"
../../../../request/http.js
"
;
import
axios
from
"
../../../../request/http.js
"
;
import
{
Search
}
from
"
@element-plus/icons-vue
"
;
import
{
Search
}
from
"
@element-plus/icons-vue
"
;
import
bgBreadcrumb
from
"
@/components/bg-breadcrumb.vue
"
;
import
bgBreadcrumb
from
"
@/components/bg-breadcrumb.vue
"
;
const
bgForm
=
ref
(
null
);
const
bgForm
=
ref
(
null
);
const
state
=
reactive
({
bgForm
,
const
headers
=
computed
(()
=>
{
typeList
:
[],
// 分类数据
let
_headers
=
[
typeKeyword
:
""
,
// 分类删选关键词
nodeClassifyId
:
null
,
// 当前选中分类的uuid 用于新增字典
nodeId
:
null
,
// 当前选中分类的id 用于请求列表
timer
:
null
,
// 定时器
headers
:
[
{
{
label
:
"
名称
"
,
label
:
"
名称
"
,
prop
:
"
name
"
,
prop
:
"
name
"
,
...
@@ -215,37 +241,29 @@ const state = reactive({
...
@@ -215,37 +241,29 @@ const state = reactive({
width
:
176
,
width
:
176
,
fixed
:
"
right
"
,
fixed
:
"
right
"
,
},
},
],
// 表格数据表头
];
langHeaders
:
[
{
if
(
state
.
nodeClassifyId
===
"
59315100-5c2a-4381-83fe-32934605f0a9
"
)
{
label
:
"
名称
"
,
_headers
.
splice
(
1
,
0
,
{
prop
:
"
name
"
,
},
{
label
:
"
版本数
"
,
label
:
"
版本数
"
,
prop
:
"
total_children
"
,
prop
:
"
total_children
"
,
},
});
{
}
label
:
"
描述
"
,
if
(
state
.
nodeClassifyId
===
"
b3a083ee-a8c1-8ca4-f9a1-ea01692a0f1a
"
)
{
prop
:
"
describe
"
,
_headers
.
splice
(
1
,
0
,
{
minWidth
:
360
,
label
:
"
服务名称
"
,
},
prop
:
"
service_name
"
,
{
});
label
:
"
更新时间
"
,
}
prop
:
"
updated_time
"
,
return
_headers
;
width
:
220
,
});
},
const
state
=
reactive
({
{
bgForm
,
label
:
"
是否启用
"
,
typeList
:
[],
// 分类数据
prop
:
"
state
"
,
typeKeyword
:
""
,
// 分类删选关键词
},
nodeClassifyId
:
null
,
// 当前选中分类的uuid 用于新增字典
{
nodeId
:
null
,
// 当前选中分类的id 用于请求列表
label
:
"
操作
"
,
timer
:
null
,
// 定时器
prop
:
"
action
"
,
width
:
176
,
fixed
:
"
right
"
,
},
],
tableRows
:
[],
// 表格数据
tableRows
:
[],
// 表格数据
tableTotal
:
0
,
// 表格数据条数
tableTotal
:
0
,
// 表格数据条数
filter
:
{
filter
:
{
...
@@ -289,27 +307,23 @@ const state = reactive({
...
@@ -289,27 +307,23 @@ const state = reactive({
fatherRow
:
null
,
fatherRow
:
null
,
});
});
const
isLang
=
computed
(()
=>
{
const
dictLevel
=
ref
(
1
);
return
state
.
nodeClassifyId
==
"
59315100-5c2a-4381-83fe-32934605f0a9
"
})
const
dictLevel
=
ref
(
1
)
const
getChildren
=
(
row
)
=>
{
const
getChildren
=
(
row
)
=>
{
dictLevel
.
value
=
2
dictLevel
.
value
=
2
;
state
.
tableRows
=
row
.
children
||
[]
state
.
tableRows
=
row
.
children
||
[]
;
state
.
tableTotal
=
row
.
total_children
state
.
tableTotal
=
row
.
total_children
;
state
.
fatherRow
=
row
state
.
fatherRow
=
row
;
}
}
;
const
backDict
=
()
=>
{
const
backDict
=
()
=>
{
dictLevel
.
value
=
1
dictLevel
.
value
=
1
;
state
.
fatherRow
=
null
state
.
fatherRow
=
null
;
changePage
(
1
);
changePage
(
1
);
}
}
;
const
nodeClick
=
(
item
)
=>
{
const
nodeClick
=
(
item
)
=>
{
state
.
nodeId
=
item
.
id
;
state
.
nodeId
=
item
.
id
;
dictLevel
.
value
=
1
dictLevel
.
value
=
1
;
state
.
fatherRow
=
null
state
.
fatherRow
=
null
;
state
.
nodeClassifyId
=
item
.
classify_id
;
state
.
nodeClassifyId
=
item
.
classify_id
;
state
.
filter
=
{
state
.
filter
=
{
state
:
""
,
state
:
""
,
...
@@ -380,14 +394,16 @@ const getTableRows = () => {
...
@@ -380,14 +394,16 @@ const getTableRows = () => {
})
})
.
then
((
res
)
=>
{
.
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
200
)
{
if
(
res
.
data
.
code
==
200
)
{
let
data
=
res
.
data
.
data
||
[]
let
data
=
res
.
data
.
data
||
[]
;
if
(
dictLevel
.
value
==
1
)
{
if
(
dictLevel
.
value
==
1
)
{
state
.
tableRows
=
data
;
state
.
tableRows
=
data
;
state
.
tableTotal
=
res
.
data
.
total
;
state
.
tableTotal
=
res
.
data
.
total
;
}
else
{
}
else
{
let
row
=
data
.
filter
(
e
=>
{
return
e
.
dict_id
==
state
.
fatherRow
.
dict_id
})
let
row
=
data
.
filter
((
e
)
=>
{
state
.
tableRows
=
row
[
0
].
children
return
e
.
dict_id
==
state
.
fatherRow
.
dict_id
;
state
.
tableTotal
=
row
[
0
].
total_children
});
state
.
tableRows
=
row
[
0
].
children
;
state
.
tableTotal
=
row
[
0
].
total_children
;
}
}
if
(
state
.
tableRows
.
length
>
0
)
{
if
(
state
.
tableRows
.
length
>
0
)
{
state
.
tableRows
.
forEach
((
e
)
=>
{
state
.
tableRows
.
forEach
((
e
)
=>
{
...
@@ -455,7 +471,7 @@ const edit_row = (row) => {
...
@@ -455,7 +471,7 @@ const edit_row = (row) => {
name
:
state
.
actionRow
.
name
,
name
:
state
.
actionRow
.
name
,
describe
:
state
.
actionRow
.
describe
,
describe
:
state
.
actionRow
.
describe
,
state
:
state
.
actionRow
.
state
,
state
:
state
.
actionRow
.
state
,
p_dict_id
:
state
.
actionRow
.
p_dict_id
p_dict_id
:
state
.
actionRow
.
p_dict_id
,
};
};
}
else
{
}
else
{
ElMessage
.
error
(
res
.
data
.
data
);
ElMessage
.
error
(
res
.
data
.
data
);
...
@@ -580,7 +596,6 @@ const {
...
@@ -580,7 +596,6 @@ const {
typeList
,
typeList
,
typeKeyword
,
typeKeyword
,
nodeClassifyId
,
nodeClassifyId
,
headers
,
tableRows
,
tableRows
,
tableTotal
,
tableTotal
,
filter
,
filter
,
...
@@ -590,7 +605,6 @@ const {
...
@@ -590,7 +605,6 @@ const {
addDialog
,
addDialog
,
formData
,
formData
,
rules
,
rules
,
langHeaders
,
}
=
toRefs
(
state
);
}
=
toRefs
(
state
);
</
script
>
</
script
>
...
...
src/page/main/develop/account/add/system-form.vue
View file @
837fff7d
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
:rules=
"formRules"
:rules=
"formRules"
ref=
"systemRef"
ref=
"systemRef"
style=
"max-width: 66%"
>
style=
"max-width: 66%"
>
<el-form-item
label=
"所属
机构
"
prop=
"organization_id"
>
<el-form-item
label=
"所属
组织
"
prop=
"organization_id"
>
<el-tree-select
<el-tree-select
v-model=
"systemForm.organization_id"
v-model=
"systemForm.organization_id"
:data=
"orgData"
:data=
"orgData"
...
@@ -225,7 +225,7 @@ const checkPhoneRepet = (rule, value, callback) => {
...
@@ -225,7 +225,7 @@ const checkPhoneRepet = (rule, value, callback) => {
};
};
const
formRules
=
reactive
({
const
formRules
=
reactive
({
organization_id
:
[{
required
:
true
,
message
:
"
请选择组织
机构
"
,
trigger
:
"
change
"
}],
organization_id
:
[{
required
:
true
,
message
:
"
请选择组织
"
,
trigger
:
"
change
"
}],
business_name
:
[
business_name
:
[
{
required
:
true
,
message
:
"
请输入业务系统名称
"
,
trigger
:
"
blur
"
},
{
required
:
true
,
message
:
"
请输入业务系统名称
"
,
trigger
:
"
blur
"
},
{
max
:
50
,
message
:
"
业务系统名称最大长度为50个字符
"
,
trigger
:
"
blur
"
},
{
max
:
50
,
message
:
"
业务系统名称最大长度为50个字符
"
,
trigger
:
"
blur
"
},
...
...
src/page/main/develop/account/detail/index.vue
View file @
837fff7d
...
@@ -46,7 +46,7 @@ import bgBreadcrumb from "@/components/bg-breadcrumb.vue";
...
@@ -46,7 +46,7 @@ import bgBreadcrumb from "@/components/bg-breadcrumb.vue";
const
route
=
useRoute
();
const
route
=
useRoute
();
const
baseInfo
=
reactive
([
const
baseInfo
=
reactive
([
{
{
name
:
"
所属
机构
"
,
name
:
"
所属
组织
"
,
value
:
""
,
value
:
""
,
nameWidth
:
130
,
nameWidth
:
130
,
},
},
...
...
src/page/main/develop/account/index.vue
View file @
837fff7d
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
<bg-breadcrumb></bg-breadcrumb>
<bg-breadcrumb></bg-breadcrumb>
<div
class=
"flex_row"
>
<div
class=
"flex_row"
>
<div
class=
"flex_left bgc_white"
>
<div
class=
"flex_left bgc_white"
>
<div
class=
"tree_header"
>
政务
机构
</div>
<div
class=
"tree_header"
>
政务
组织
</div>
<div
class=
"tree_content"
>
<div
class=
"tree_content"
>
<div
class=
"search"
>
<div
class=
"search"
>
<el-input
v-model=
"filterTree"
placeholder=
"请输入组织名称搜索"
:prefix-icon=
"Search"
/>
<el-input
v-model=
"filterTree"
placeholder=
"请输入组织名称搜索"
:prefix-icon=
"Search"
/>
...
@@ -207,7 +207,7 @@ const headers = ref([
...
@@ -207,7 +207,7 @@ const headers = ref([
prop
:
"
system_account
"
,
prop
:
"
system_account
"
,
},
},
{
{
label
:
"
所属
机构
"
,
label
:
"
所属
组织
"
,
prop
:
"
organization_name
"
,
prop
:
"
organization_name
"
,
minWidth
:
180
,
minWidth
:
180
,
},
},
...
...
src/page/main/develop/systemApproval/approval/index.vue
View file @
837fff7d
...
@@ -38,7 +38,7 @@
...
@@ -38,7 +38,7 @@
<el-form-item
label=
"审批结果"
prop=
"status"
>
<el-form-item
label=
"审批结果"
prop=
"status"
>
<el-radio-group
v-model=
"instanceData.formData.status"
>
<el-radio-group
v-model=
"instanceData.formData.status"
>
<el-radio
:label=
"1"
>
通过
</el-radio>
<el-radio
:label=
"1"
>
通过
</el-radio>
<el-radio
:label=
"
0
"
>
驳回
</el-radio>
<el-radio
:label=
"
2
"
>
驳回
</el-radio>
</el-radio-group>
</el-radio-group>
</el-form-item>
</el-form-item>
<el-form-item
label=
"审批意见"
prop=
"comments"
>
<el-form-item
label=
"审批意见"
prop=
"comments"
>
...
@@ -76,7 +76,7 @@ const instanceData = reactive({
...
@@ -76,7 +76,7 @@ const instanceData = reactive({
approveBasicInfo
:
[
approveBasicInfo
:
[
{
{
key
:
"
organization_name
"
,
key
:
"
organization_name
"
,
label
:
"
所属
机构
"
,
label
:
"
所属
组织
"
,
value
:
""
,
value
:
""
,
// slot: "approvalStatus",
// slot: "approvalStatus",
},
},
...
...
src/page/main/develop/systemApproval/detail/index.vue
View file @
837fff7d
...
@@ -17,6 +17,7 @@ import bgBreadcrumb from "@/components/bg-breadcrumb.vue";
...
@@ -17,6 +17,7 @@ import bgBreadcrumb from "@/components/bg-breadcrumb.vue";
import
{
useRoute
}
from
"
vue-router
"
;
import
{
useRoute
}
from
"
vue-router
"
;
import
axios
from
"
@/request/http.js
"
;
import
axios
from
"
@/request/http.js
"
;
import
{
ElMessage
}
from
"
element-plus
"
;
import
{
ElMessage
}
from
"
element-plus
"
;
import
{
dateStringTransform
}
from
"
@/services/helper.js
"
;
const
route
=
useRoute
();
const
route
=
useRoute
();
...
@@ -24,7 +25,7 @@ const instanceData = reactive({
...
@@ -24,7 +25,7 @@ const instanceData = reactive({
approveBasicInfo
:
[
approveBasicInfo
:
[
{
{
key
:
"
organization_name
"
,
key
:
"
organization_name
"
,
label
:
"
所属
机构
"
,
label
:
"
所属
组织
"
,
value
:
""
,
value
:
""
,
// slot: "approvalStatus",
// slot: "approvalStatus",
},
},
...
...
src/page/main/develop/systemApproval/index.vue
View file @
837fff7d
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<div
class=
"page_container"
>
<div
class=
"page_container"
>
<bg-breadcrumb></bg-breadcrumb>
<bg-breadcrumb></bg-breadcrumb>
<div
class=
"main_container"
>
<div
class=
"main_container"
>
<bg-filter-group
@
search=
"changeSearch"
v-model=
"filter.search"
placeholder=
"请输入业务系统名称、账号或所属
机构
"
>
<bg-filter-group
@
search=
"changeSearch"
v-model=
"filter.search"
placeholder=
"请输入业务系统名称、账号或所属
组织
"
>
<template
v-slot:filter_group
>
<template
v-slot:filter_group
>
<div
class=
"left-filter filter_list"
>
<div
class=
"left-filter filter_list"
>
<div
class=
"filter_item"
>
<div
class=
"filter_item"
>
...
@@ -133,7 +133,7 @@ const state = reactive({
...
@@ -133,7 +133,7 @@ const state = reactive({
minWidth
:
120
,
minWidth
:
120
,
},
},
{
{
label
:
"
所属
机构
"
,
label
:
"
所属
组织
"
,
prop
:
"
organization_name
"
,
prop
:
"
organization_name
"
,
width
:
200
,
width
:
200
,
},
},
...
...
src/page/main/log/userAccount/index.vue
View file @
837fff7d
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<bg-filter-group
<bg-filter-group
@
search=
"changeSearch"
@
search=
"changeSearch"
v-model=
"filter.search"
v-model=
"filter.search"
placeholder=
"请输入账号、手机号和所属
机构
"
>
placeholder=
"请输入账号、手机号和所属
组织
"
>
<template
v-slot:left_action
>
<template
v-slot:left_action
>
<div
class=
"apaas_button"
>
<div
class=
"apaas_button"
>
<el-button
type=
"primary"
@
click=
"exportFile"
>
<el-button
type=
"primary"
@
click=
"exportFile"
>
...
@@ -206,7 +206,7 @@ const state = reactive({
...
@@ -206,7 +206,7 @@ const state = reactive({
// width: 200,
// width: 200,
},
},
{
{
label
:
"
所属
机构
"
,
label
:
"
所属
组织
"
,
prop
:
"
name
"
,
prop
:
"
name
"
,
// width: 120,
// width: 120,
},
},
...
...
src/page/main/log/userBehavior/detail/index.vue
View file @
837fff7d
...
@@ -3,7 +3,22 @@
...
@@ -3,7 +3,22 @@
<bg-breadcrumb></bg-breadcrumb>
<bg-breadcrumb></bg-breadcrumb>
<div
class=
"page_content"
>
<div
class=
"page_content"
>
<bg-form-gap
title=
"详情"
></bg-form-gap>
<bg-form-gap
title=
"详情"
></bg-form-gap>
<bg-detail-table2
class=
"detail_info"
:list=
"instanceData.detailInfo"
>
</bg-detail-table2>
<bg-detail-table2
class=
"detail_info"
:list=
"instanceData.detailInfo"
>
<template
#req_url_value
="
{ data }">
<el-popover
placement=
"top-start"
:width=
"600"
trigger=
"hover"
:content=
"data.value"
>
<template
#reference
>
<p
class=
"show_in_line"
>
{{
data
.
value
}}
</p>
</
template
>
</el-popover>
</template>
<
template
#res_fields_value
="{
data
}"
>
<el-popover
placement=
"bottom-start"
:width=
"800"
trigger=
"hover"
:content=
"data.value"
>
<template
#reference
>
<p
class=
"show_in_line"
>
{{
data
.
value
}}
</p>
</
template
>
</el-popover>
</template>
</bg-detail-table2>
</div>
</div>
</div>
</div>
</template>
</template>
...
@@ -37,7 +52,7 @@ const instanceData = reactive({
...
@@ -37,7 +52,7 @@ const instanceData = reactive({
},
},
{
{
key
:
"
org_name
"
,
key
:
"
org_name
"
,
label
:
"
所属
机构
"
,
label
:
"
所属
组织
"
,
value
:
""
,
value
:
""
,
},
},
{
{
...
@@ -81,6 +96,7 @@ const instanceData = reactive({
...
@@ -81,6 +96,7 @@ const instanceData = reactive({
label
:
"
请求地址
"
,
label
:
"
请求地址
"
,
value
:
""
,
value
:
""
,
width
:
"
100%
"
,
width
:
"
100%
"
,
childSlot
:
"
req_url_value
"
,
},
},
{
{
key
:
"
req_param
"
,
key
:
"
req_param
"
,
...
@@ -96,6 +112,7 @@ const instanceData = reactive({
...
@@ -96,6 +112,7 @@ const instanceData = reactive({
key
:
"
res_fields
"
,
key
:
"
res_fields
"
,
label
:
"
返回参数
"
,
label
:
"
返回参数
"
,
value
:
""
,
value
:
""
,
childSlot
:
"
res_fields_value
"
,
},
},
],
],
});
});
...
@@ -130,5 +147,11 @@ const getDetailInfo = () => {
...
@@ -130,5 +147,11 @@ const getDetailInfo = () => {
margin-bottom
:
24px
;
margin-bottom
:
24px
;
width
:
960px
;
width
:
960px
;
}
}
.show_in_line
{
overflow
:
hidden
;
width
:
824px
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
}
}
</
style
>
</
style
>
src/page/main/log/userBehavior/index.vue
View file @
837fff7d
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<bg-filter-group
<bg-filter-group
@
search=
"changeSearch"
@
search=
"changeSearch"
v-model=
"filter.search"
v-model=
"filter.search"
placeholder=
"请输入账号、手机号和所属
机构
"
>
placeholder=
"请输入账号、手机号和所属
组织
"
>
<template
v-slot:left_action
>
<template
v-slot:left_action
>
<div
class=
"apaas_button"
>
<div
class=
"apaas_button"
>
<el-button
type=
"primary"
@
click=
"exportFile"
>
<el-button
type=
"primary"
@
click=
"exportFile"
>
...
...
src/page/main/system/organization/index.vue
View file @
837fff7d
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
<bg-breadcrumb></bg-breadcrumb>
<bg-breadcrumb></bg-breadcrumb>
<div
class=
"flex_row"
>
<div
class=
"flex_row"
>
<div
class=
"flex_left bgc_white"
>
<div
class=
"flex_left bgc_white"
>
<div
class=
"tree_header"
>
政务
机构
</div>
<div
class=
"tree_header"
>
政务
组织
</div>
<div
class=
"tree_content"
>
<div
class=
"tree_content"
>
<div
class=
"search"
>
<div
class=
"search"
>
<el-input
v-model=
"search"
placeholder=
"请输入组织名称搜索"
:prefix-icon=
"Search"
@
input=
"searchChange"
/>
<el-input
v-model=
"search"
placeholder=
"请输入组织名称搜索"
:prefix-icon=
"Search"
@
input=
"searchChange"
/>
...
@@ -282,17 +282,17 @@ const toOrgDetail = () => {
...
@@ -282,17 +282,17 @@ const toOrgDetail = () => {
};
};
const
baseInfo
=
reactive
([
const
baseInfo
=
reactive
([
{
{
name
:
"
机构
类型
"
,
name
:
"
组织
类型
"
,
value
:
""
,
value
:
""
,
nameWidth
:
130
,
nameWidth
:
130
,
},
},
{
{
name
:
"
组织
机构
代码
"
,
name
:
"
组织代码
"
,
value
:
""
,
value
:
""
,
nameWidth
:
130
,
nameWidth
:
130
,
},
},
{
{
name
:
"
机构
名称
"
,
name
:
"
组织
名称
"
,
value
:
""
,
value
:
""
,
callback
:
toOrgDetail
,
callback
:
toOrgDetail
,
nameWidth
:
130
,
nameWidth
:
130
,
...
@@ -315,12 +315,12 @@ const baseInfo = reactive([
...
@@ -315,12 +315,12 @@ const baseInfo = reactive([
]);
]);
const
baseInfo2
=
reactive
([
const
baseInfo2
=
reactive
([
{
{
name
:
"
机构
名称
"
,
name
:
"
组织
名称
"
,
value
:
""
,
value
:
""
,
nameWidth
:
130
,
nameWidth
:
130
,
},
},
{
{
name
:
"
组织
机构
代码
"
,
name
:
"
组织代码
"
,
value
:
""
,
value
:
""
,
nameWidth
:
130
,
nameWidth
:
130
,
},
},
...
...
src/page/main/system/organization/org-detail/index.vue
View file @
837fff7d
...
@@ -60,12 +60,12 @@ const route = useRoute();
...
@@ -60,12 +60,12 @@ const route = useRoute();
const
baseInfo
=
reactive
([
const
baseInfo
=
reactive
([
{
{
name
:
"
机构
名称
"
,
name
:
"
组织
名称
"
,
value
:
""
,
value
:
""
,
nameWidth
:
130
,
nameWidth
:
130
,
},
},
{
{
name
:
"
组织
机构
代码
"
,
name
:
"
组织代码
"
,
value
:
""
,
value
:
""
,
nameWidth
:
130
,
nameWidth
:
130
,
},
},
...
...
src/page/main/system/organization/org-form.vue
View file @
837fff7d
...
@@ -13,10 +13,10 @@
...
@@ -13,10 +13,10 @@
<el-checkbox
v-model=
"orgForm.level"
@
change=
"isTop"
label=
"顶级"
/>
<el-checkbox
v-model=
"orgForm.level"
@
change=
"isTop"
label=
"顶级"
/>
</el-form-item>
</el-form-item>
</el-form-item>
</el-form-item>
<el-form-item
label=
"政务
机构
名称"
prop=
"name"
>
<el-form-item
label=
"政务
组织
名称"
prop=
"name"
>
<el-input
v-model=
"orgForm.name"
/>
<el-input
v-model=
"orgForm.name"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"组织
机构
代码"
prop=
"organization_code"
>
<el-form-item
label=
"组织代码"
prop=
"organization_code"
>
<el-input
v-model=
"orgForm.organization_code"
/>
<el-input
v-model=
"orgForm.organization_code"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"组织介绍"
prop=
"description"
>
<el-form-item
label=
"组织介绍"
prop=
"description"
>
...
@@ -75,13 +75,13 @@ const checkName = (rule, value, callback) => {
...
@@ -75,13 +75,13 @@ const checkName = (rule, value, callback) => {
const
formRules
=
reactive
({
const
formRules
=
reactive
({
p_organization_id
:
[{
required
:
true
,
message
:
"
输入上级目录
"
,
trigger
:
"
blur
"
}],
p_organization_id
:
[{
required
:
true
,
message
:
"
输入上级目录
"
,
trigger
:
"
blur
"
}],
name
:
[
name
:
[
{
required
:
true
,
message
:
"
请输入
机构
名称
"
,
trigger
:
"
blur
"
},
{
required
:
true
,
message
:
"
请输入
组织
名称
"
,
trigger
:
"
blur
"
},
{
max
:
50
,
message
:
"
机构
名称最大长度为50位
"
,
trigger
:
"
blur
"
},
{
max
:
50
,
message
:
"
组织
名称最大长度为50位
"
,
trigger
:
"
blur
"
},
{
validator
:
checkName
,
trigger
:
"
blur
"
},
{
validator
:
checkName
,
trigger
:
"
blur
"
},
],
],
organization_code
:
[
organization_code
:
[
{
required
:
true
,
message
:
"
请输入组织
机构
代码
"
,
trigger
:
"
blur
"
},
{
required
:
true
,
message
:
"
请输入组织代码
"
,
trigger
:
"
blur
"
},
{
max
:
18
,
message
:
"
组织
机构
代码最大长度为18位
"
,
trigger
:
"
blur
"
},
{
max
:
18
,
message
:
"
组织代码最大长度为18位
"
,
trigger
:
"
blur
"
},
{
validator
:
checkCode
,
trigger
:
"
blur
"
},
{
validator
:
checkCode
,
trigger
:
"
blur
"
},
],
],
});
});
...
...
src/page/main/system/organization/org-user/org-account-form.vue
View file @
837fff7d
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
:rules=
"orgAccountFormRules"
:rules=
"orgAccountFormRules"
ref=
"orgformAccountRef"
ref=
"orgformAccountRef"
style=
"max-width: 66%"
>
style=
"max-width: 66%"
>
<el-form-item
label=
"所属组织
机构
"
prop=
"organization_id"
>
<el-form-item
label=
"所属组织"
prop=
"organization_id"
>
<el-tree-select
<el-tree-select
v-model=
"orgAccountForm.organization_id"
v-model=
"orgAccountForm.organization_id"
:data=
"orgData"
:data=
"orgData"
...
...
src/page/register/index.vue
View file @
837fff7d
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
<div
class=
"dashed_line"
></div>
<div
class=
"dashed_line"
></div>
</div>
</div>
<div
class=
"info-form"
>
<div
class=
"info-form"
>
<el-form-item
prop=
"organization_id"
label=
"所属
机构
"
>
<el-form-item
prop=
"organization_id"
label=
"所属
组织
"
>
<el-tree-select
<el-tree-select
v-model=
"infoForm.organization_id"
v-model=
"infoForm.organization_id"
:data=
"orgData"
:data=
"orgData"
...
...
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