Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
I
ibzdisk
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
ibiz4jteam
ibzdisk
提交
71ace5c0
提交
71ace5c0
编写于
9月 22, 2020
作者:
ibizdev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ibiz4j 发布系统代码
上级
67565fa7
变更
60
显示空白字符变更
内嵌
并排
正在显示
60 个修改的文件
包含
1855 行增加
和
192 行删除
+1855
-192
avue.min.js
app_web/public/assets/js/avue.min.js
+8
-0
view-message-group.json
app_web/public/assets/json/view-message-group.json
+2
-0
index.css
app_web/public/assets/styles/index.css
+1
-0
app-register.ts
app_web/src/app-register.ts
+13
-2
codelist-service.ts
app_web/src/codelist/codelist-service.ts
+201
-0
app-alert-group.vue
app_web/src/components/app-alert-group/app-alert-group.vue
+84
-0
app-alert.less
app_web/src/components/app-alert/app-alert.less
+13
-0
app-alert.vue
app_web/src/components/app-alert/app-alert.vue
+201
-0
app-checkbox-list.vue
...eb/src/components/app-checkbox-list/app-checkbox-list.vue
+1
-1
app-data-upload.vue
app_web/src/components/app-data-upload/app-data-upload.vue
+1
-1
app-department-personnel.vue
...nts/app-department-personnel/app-department-personnel.vue
+1
-1
app-department-select.vue
...omponents/app-department-select/app-department-select.vue
+1
-1
app-form-druipart.vue
...eb/src/components/app-form-druipart/app-form-druipart.vue
+1
-1
app-form-part.less
app_web/src/components/app-form-part/app-form-part.less
+3
-0
app-form-part.vue
app_web/src/components/app-form-part/app-form-part.vue
+244
-0
app-group-select.vue
app_web/src/components/app-group-select/app-group-select.vue
+1
-1
app-message-popover.less
...c/components/app-message-popover/app-message-popover.less
+1
-1
app-message-popover.vue
...rc/components/app-message-popover/app-message-popover.vue
+1
-1
app-org-select.vue
app_web/src/components/app-org-select/app-org-select.vue
+1
-1
app-panel-button.vue
app_web/src/components/app-panel-button/app-panel-button.vue
+62
-0
app-radio-group.vue
app_web/src/components/app-radio-group/app-radio-group.vue
+1
-1
app-rawitem.vue
app_web/src/components/app-rawitem/app-rawitem.vue
+86
-0
app-transfer.vue
app_web/src/components/app-transfer/app-transfer.vue
+1
-1
avue-custom-form.vue
app_web/src/components/avue-custom-form/avue-custom-form.vue
+55
-43
codelist.vue
app_web/src/components/codelist/codelist.vue
+1
-1
dropdown-list-dynamic.vue
...omponents/dropdown-list-dynamic/dropdown-list-dynamic.vue
+1
-1
dropdown-list-mpicker.vue
...omponents/dropdown-list-mpicker/dropdown-list-mpicker.vue
+1
-1
dropdown-list.vue
app_web/src/components/dropdown-list/dropdown-list.vue
+47
-1
data-view9-engine.ts
app_web/src/engine/view/data-view9-engine.ts
+2
-2
grid-view-engine.ts
app_web/src/engine/view/grid-view-engine.ts
+2
-2
list-view9-engine.ts
app_web/src/engine/view/list-view9-engine.ts
+2
-2
md-view-engine.ts
app_web/src/engine/view/md-view-engine.ts
+3
-3
wfdyna-exp-grid-view-engine.ts
app_web/src/engine/view/wfdyna-exp-grid-view-engine.ts
+2
-2
index.d.ts
app_web/src/index.d.ts
+3
-1
message.ts
app_web/src/interface/message.ts
+103
-0
message-service-register.ts
app_web/src/message/message-service-register.ts
+79
-0
view-message-group-service.ts
app_web/src/message/view-message-group-service.ts
+87
-0
view-message-service.ts
app_web/src/message/view-message-service.ts
+308
-0
viewconfig.ts
app_web/src/mock/viewconfig/viewconfig.ts
+7
-0
form-item.ts
app_web/src/model/form-detail/form-item.ts
+9
-0
sdfile-edit-view-base.vue
...src/pages/disk/sdfile-edit-view/sdfile-edit-view-base.vue
+7
-3
sdfile-grid-view-base.vue
...src/pages/disk/sdfile-grid-view/sdfile-grid-view-base.vue
+8
-4
main.ts
app_web/src/pages/disk/sdindex-view/main.ts
+6
-0
sdindex-view-base.vue
app_web/src/pages/disk/sdindex-view/sdindex-view-base.vue
+7
-3
entity-service.ts
app_web/src/service/entity-service.ts
+1
-1
getters.ts
app_web/src/store/getters.ts
+17
-1
mutations.ts
app_web/src/store/mutations.ts
+13
-1
state.ts
app_web/src/store/state.ts
+1
-0
default.less
app_web/src/styles/default.less
+1
-0
template.html
app_web/src/template.html
+1
-0
sdfile-ui-service-base.ts
app_web/src/uiservice/sdfile/sdfile-ui-service-base.ts
+3
-3
auth-guard.ts
app_web/src/utils/auth-guard/auth-guard.ts
+5
-1
sdindex-view-appmenu-base.vue
...ts/app/sdindex-view-appmenu/sdindex-view-appmenu-base.vue
+11
-1
control-service.ts
app_web/src/widgets/control-service.ts
+1
-1
default-searchform-base.vue
...ets/sdfile/default-searchform/default-searchform-base.vue
+15
-15
default-searchform-service.ts
...s/sdfile/default-searchform/default-searchform-service.ts
+40
-0
main-form-base.vue
app_web/src/widgets/sdfile/main-form/main-form-base.vue
+75
-66
config.xml
config.xml
+0
-5
Dockerfile
...-provider/ibzdisk-provider-api/src/main/docker/Dockerfile
+1
-1
ibzdisk-provider-api.yaml
...sk-provider-api/src/main/docker/ibzdisk-provider-api.yaml
+1
-14
未找到文件。
app_web/public/assets/js/avue.min.js
0 → 100644
浏览文件 @
71ace5c0
因为 它太大了无法显示 源差异 。您可以改为
查看blob
。
app_web/public/assets/json/view-message-group.json
0 → 100644
浏览文件 @
71ace5c0
{
}
\ No newline at end of file
app_web/public/assets/styles/index.css
0 → 100644
浏览文件 @
71ace5c0
@charset
"UTF-8"
;
.avue-crud
.tree-ctrl
,
.avue-draggable
{
-webkit-user-select
:
none
;
-ms-user-select
:
none
}
.avue-avatar
,
.avue-card__item
{
-webkit-box-sizing
:
border-box
;
font-variant
:
tabular-nums
;
list-style
:
none
}
.avue-affix
{
position
:
fixed
;
z-index
:
10
}
.avue-sign
{
padding
:
5px
}
.avue-sign__canvas
{
border
:
1px
solid
#ccc
}
.avue-carousel--fullscreen
{
height
:
100%
}
.avue-carousel--fullscreen
.el-carousel
,
.avue-carousel--fullscreen
.el-carousel__container
{
height
:
90%
}
.avue-carousel__item
{
position
:
relative
;
width
:
100%
;
height
:
100%
}
.avue-carousel__item
a
{
width
:
100%
;
height
:
100%
;
display
:
block
}
.avue-carousel__img
{
height
:
100%
;
background-size
:
cover
;
background-position
:
center
center
}
.avue-carousel__title
{
z-index
:
1024
;
position
:
absolute
;
left
:
0
;
bottom
:
0
;
width
:
100%
;
height
:
50px
;
line-height
:
50px
;
font-size
:
16px
;
text-align
:
center
;
color
:
#fff
;
background-color
:
rgba
(
0
,
0
,
0
,
.6
)}
.avue-article__title
{
margin-bottom
:
15px
;
font-size
:
32px
;
line-height
:
32px
;
font-weight
:
400
}
.avue-article__meta
{
display
:
block
;
margin-bottom
:
20px
;
font-size
:
12px
;
color
:
#999
}
.avue-article__lead
{
color
:
#666
;
font-size
:
14px
;
line-height
:
22px
;
border
:
1px
solid
#dedede
;
border-radius
:
2px
;
background
:
#f9f9f9
;
padding
:
10px
}
.avue-article__body
{
padding-top
:
10px
;
background
:
#fff
;
font-family
:
Segoe
UI
,
Lucida
Grande
,
Helvetica
,
Arial
,
Microsoft
YaHei
,
FreeSans
,
Arimo
,
Droid
Sans
,
wenquanyi
micro
hei
,
Hiragino
Sans
GB
,
Hiragino
Sans
GB
W3
,
FontAwesome
,
sans-serif
;
color
:
#333
;
font-size
:
14px
}
.avue-article
blockquote
{
margin
:
0
;
font-family
:
Georgia
,
Times
New
Roman
,
Times
,
Kai
,
Kaiti
SC
,
KaiTi
,
BiauKai
,
FontAwesome
,
serif
;
padding
:
1px
0
1px
15px
;
border-left
:
4px
solid
#ddd
}
.avue-avatar
{
font-size
:
14px
;
box-sizing
:
border-box
;
margin
:
0
;
padding
:
0
;
display
:
inline-block
;
text-align
:
center
;
background
:
#ccc
;
color
:
#fff
;
white-space
:
nowrap
;
position
:
relative
;
overflow
:
hidden
;
vertical-align
:
middle
;
width
:
32px
;
height
:
32px
;
line-height
:
32px
;
border-radius
:
50%
}
.avue-avatar__images
{
width
:
100%
;
height
:
100%
}
.avue-avatar__icon
{
font-size
:
18px
}
.avue-avatar__string
{
position
:
absolute
;
left
:
50%
;
-webkit-transform-origin
:
0
center
;
transform-origin
:
0
center
}
.avue-avatar--lg
{
width
:
40px
;
height
:
40px
;
line-height
:
40px
;
border-radius
:
50%
;
font-size
:
24px
}
.avue-avatar--sm
{
width
:
24px
;
height
:
24px
;
line-height
:
24px
;
border-radius
:
50%
;
font-size
:
14px
}
.avue-avatar--square
{
border-radius
:
4px
}
.avue-skeleton__avatar
{
width
:
40px
;
height
:
40px
;
line-height
:
40px
;
display
:
inline-block
;
border-radius
:
50%
;
background
:
#f2f2f2
}
.avue-skeleton__header
{
display
:
table-cell
;
vertical-align
:
top
;
padding-right
:
16px
}
.avue-skeleton__content
{
display
:
table-cell
;
vertical-align
:
top
;
width
:
100%
}
.avue-skeleton__title
{
margin-top
:
16px
;
height
:
16px
;
width
:
40%
;
background
:
#f2f2f2
}
.avue-skeleton__item
{
padding-top
:
16px
;
padding-bottom
:
16px
;
border-bottom
:
1px
solid
#e8e8e8
}
.avue-skeleton__item
:last-child
{
border-bottom
:
none
}
.avue-skeleton__li
{
margin-bottom
:
10px
;
height
:
16px
;
background
:
#f2f2f2
;
list-style
:
none
;
width
:
100%
}
.avue-skeleton__li
:last-child
{
width
:
50%
}
.avue-skeleton__loading
{
background
:
-webkit-gradient
(
linear
,
left
top
,
right
top
,
color-stop
(
25%
,
#f2f2f2
),
color-stop
(
37%
,
#e6e6e6
),
color-stop
(
63%
,
#f2f2f2
));
background
:
linear-gradient
(
90deg
,
#f2f2f2
25%
,
#e6e6e6
37%
,
#f2f2f2
63%
);
-webkit-animation
:
avue-skeleton-loading
1.4s
ease
infinite
;
animation
:
avue-skeleton-loading
1.4s
ease
infinite
;
background-size
:
400%
100%
}
@-webkit-keyframes
avue-skeleton-loading
{
0
%
{
background-position
:
100%
50%
}
100
%
{
background-position
:
0
50%
}}
@keyframes
avue-skeleton-loading
{
0
%
{
background-position
:
100%
50%
}
100
%
{
background-position
:
0
50%
}}
.avue-crud
{
margin
:
0
auto
;
width
:
99%
}
.avue-crud
.el-checkbox
:last-of-type
{
margin-right
:
0
}
.avue-crud
.el-range-editor--mini
{
height
:
28px
}
.avue-crud__img
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
}
.avue-crud__img
img
{
height
:
40px
;
margin-left
:
5px
;
-o-object-fit
:
contain
;
object-fit
:
contain
}
.avue-crud__column
.el-checkbox
{
margin-bottom
:
10px
;
cursor
:
move
}
.avue-crud__menu
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-pack
:
justify
;
-ms-flex-pack
:
justify
;
justify-content
:
space-between
;
position
:
relative
;
width
:
100%
;
min-height
:
40px
;
height
:
auto
;
overflow
:
hidden
;
margin-bottom
:
5px
}
.avue-crud__search
.el-form-item--mini.el-form-item
,
.avue-crud__search
.el-form-item--small.el-form-item
{
margin-bottom
:
14px
}
.avue-crud
.el-table--mini
.avue-crud__color
{
width
:
20px
;
height
:
20px
}
.avue-crud
.el-table--mini
.avue-crud__icon
{
font-size
:
25px
}
.avue-crud
.el-table--small
.avue-crud__color
{
width
:
30px
;
height
:
30px
}
.avue-crud
.el-table--small
.avue-crud__icon
{
font-size
:
35px
}
.avue-crud
th
{
word-break
:
break-word
;
color
:
rgba
(
0
,
0
,
0
,
.85
);
background-color
:
#fafafa
}
.avue-crud
.ms-tree-title
{
padding-left
:
10px
}
.avue-crud
.ms-tree-space
{
position
:
relative
;
top
:
1px
;
display
:
inline-block
;
font-style
:
normal
;
font-weight
:
400
;
line-height
:
1
;
width
:
15px
;
height
:
14px
}
.avue-crud
.ms-tree-space
::before
{
content
:
""
}
.avue-crud
.processContainer
{
width
:
100%
;
height
:
100%
}
.avue-crud
table
td
{
line-height
:
26px
}
.avue-crud
.tree-ctrl
{
position
:
relative
;
cursor
:
pointer
;
color
:
#666
;
margin-left
:
-15px
;
display
:
inline-block
;
width
:
17px
;
height
:
17px
;
text-align
:
center
;
line-height
:
14px
;
border
:
1px
solid
#e8e8e8
;
-moz-user-select
:
none
;
user-select
:
none
;
background
:
#fff
;
font-size
:
10px
}
.avue-crud
.tree-ctrl
i
{
padding-top
:
3px
}
@keyframes
treeTableShow
{
from
{
opacity
:
0
}
to
{
opacity
:
1
}}
@-webkit-keyframes
treeTableShow
{
from
{
opacity
:
0
}
to
{
opacity
:
1
}}
.avue-crud--indeterminate
.is-indeterminate
.el-checkbox__inner
{
background-color
:
#fff
;
border-color
:
#dcdfe6
}
.avue-crud
.el-table
th
{
word-break
:
break-word
;
color
:
rgba
(
0
,
0
,
0
,
.85
);
background-color
:
#fafafa
}
.avue-crud__color
{
margin
:
0
auto
;
width
:
40px
;
height
:
40px
;
border-radius
:
5px
;
display
:
block
}
.avue-crud__icon
{
font-size
:
45px
}
.avue-crud__icon--small
{
font-size
:
25px
}
.avue-crud__sortable
{
opacity
:
.2
}
.avue-crud__drag-handler
{
cursor
:
pointer
}
.avue-crud__pagination
{
position
:
relative
;
padding
:
25px
0
20px
20px
;
text-align
:
right
}
.avue-crud__form
{
padding
:
0
8px
}
.avue-crud__empty
{
padding
:
60px
0
}
.avue-crud__header
{
margin-bottom
:
10px
}
.avue-crud__header
>
.el-button
{
padding
:
12px
25px
}
.avue-crud__title
{
font-weight
:
700
;
margin-bottom
:
20px
;
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
-webkit-box-pack
:
justify
;
-ms-flex-pack
:
justify
;
justify-content
:
space-between
;
font-size
:
22px
}
.avue-crud__filter-item
,
.avue-crud__tip
{
display
:
-ms-flexbox
;
-webkit-box-align
:
center
}
.avue-crud__tip
{
margin
:
8px
0
;
display
:
-webkit-box
;
display
:
flex
;
-ms-flex-align
:
center
;
align-items
:
center
;
font-size
:
12px
}
.avue-crud__tip-name
{
margin-right
:
10px
}
.avue-crud__tip-count
{
font-size
:
16px
;
font-weight
:
600
}
.avue-crud__tip
.el-button
{
margin-bottom
:
0
}
.avue-crud__filter-item
{
margin-bottom
:
12px
;
display
:
-webkit-box
;
display
:
flex
;
-ms-flex-align
:
center
;
align-items
:
center
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
}
.avue-crud__filter-menu
{
padding
:
0
5px
;
margin-bottom
:
20px
}
.avue-crud__filter-label
{
margin
:
0
5px
;
width
:
120px
!important
}
.avue-crud__filter-symbol
{
margin
:
0
5px
;
width
:
80px
!important
}
.avue-crud__filter-value
{
margin
:
0
5px
;
width
:
150px
!important
}
.avue-crud__filter-value
.el-date-editor.el-input
,
.avue-crud__filter-value
.el-date-editor.el-input__inner
{
width
:
100%
}
.avue-crud__filter-icon
{
margin-left
:
10px
}
.avue-crud__dialog--fullscreen
.el-dialog
{
left
:
0
!important
;
top
:
0
!important
}
.avue-crud__dialog__header
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
-webkit-box-pack
:
justify
;
-ms-flex-pack
:
justify
;
justify-content
:
space-between
}
.avue-crud__dialog__menu
{
padding-right
:
20px
}
.avue-crud__dialog__menu
i
{
color
:
#909399
;
font-size
:
15px
}
.avue-crud__dialog__menu
i
:hover
{
color
:
#409EFF
}
.avue-crud__dialog
.el-transfer
{
padding
:
0
20px
;
height
:
96%
}
.avue-crud__dialog
.el-transfer-panel__body
,
.avue-crud__dialog
.el-transfer-panel__list.is-filterable
{
height
:
100%
!important
}
.avue-crud__dialog
.el-transfer__buttons
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-orient
:
vertical
;
-webkit-box-direction
:
normal
;
-ms-flex-direction
:
column
;
flex-direction
:
column
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
}
.avue-crud__dialog
.el-transfer__buttons
.el-button
{
margin
:
5px
0
}
.avue-crud__dialog
.el-transfer-panel
{
min-width
:
200px
;
width
:
40%
}
.avue-crud__dialog
.el-dialog__body
{
padding
:
20px
20px
5px
10px
}
.avue-crud__dialog
.el-scrollbar__wrap
{
overflow-x
:
hidden
}
.avue-crud__dialog
.avue-form__menu
{
padding-top
:
15px
}
.avue-card__item
{
margin-bottom
:
16px
;
border
:
1px
solid
#e8e8e8
;
background-color
:
#fff
;
box-sizing
:
border-box
;
color
:
rgba
(
0
,
0
,
0
,
.65
);
font-size
:
14px
;
line-height
:
1.5
;
-webkit-font-feature-settings
:
"tnum"
;
font-feature-settings
:
"tnum"
;
cursor
:
pointer
;
height
:
200px
}
.avue-card__item
:hover
{
border-color
:
rgba
(
0
,
0
,
0
,
.09
);
-webkit-box-shadow
:
0
2px
8px
rgba
(
0
,
0
,
0
,
.09
);
box-shadow
:
0
2px
8px
rgba
(
0
,
0
,
0
,
.09
)}
.avue-card__item--add
{
border
:
1px
dashed
#d9d9d9
;
width
:
100%
;
color
:
rgba
(
0
,
0
,
0
,
.45
);
background-color
:
#fff
;
border-radius
:
2px
;
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
;
font-size
:
16px
}
.avue-card__item--add
i
{
margin-right
:
10px
}
.avue-card__item--add
:hover
{
color
:
#40a9ff
;
background-color
:
#fff
;
border-color
:
#40a9ff
}
.avue-card__body
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
padding
:
24px
}
.avue-card__detail
{
-webkit-box-flex
:
1
;
-ms-flex
:
1
;
flex
:
1
}
.avue-card__avatar
{
width
:
48px
;
height
:
48px
;
border-radius
:
48px
;
overflow
:
hidden
;
margin-right
:
12px
}
.avue-card__avatar
img
{
width
:
100%
;
height
:
100%
}
.avue-card__title
{
color
:
rgba
(
0
,
0
,
0
,
.85
);
margin-bottom
:
12px
;
font-size
:
16px
}
.avue-card__title
:hover
{
color
:
#1890ff
}
.avue-card__info
,
.avue-card__menu
{
color
:
rgba
(
0
,
0
,
0
,
.45
);
display
:
-webkit-box
}
.avue-card__info
{
-webkit-box-orient
:
vertical
;
-webkit-line-clamp
:
3
;
overflow
:
hidden
;
height
:
64px
}
.avue-card__menu
{
display
:
-ms-flexbox
;
display
:
flex
;
-ms-flex-pack
:
distribute
;
justify-content
:
space-around
;
height
:
50px
;
background
:
#f7f9fa
;
text-align
:
center
;
line-height
:
50px
}
.avue-card__menu
:hover
{
color
:
#1890ff
}
.avue-comment
{
margin-bottom
:
30px
;
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-align
:
start
;
-ms-flex-align
:
start
;
align-items
:
flex-start
}
.avue-comment--reverse
{
-webkit-box-orient
:
horizontal
;
-webkit-box-direction
:
reverse
;
-ms-flex-direction
:
row-reverse
;
flex-direction
:
row-reverse
}
.avue-data-display
.item
,
.avue-flow__node
,
.data-box
.item-info
,
.data-icons
.item--easy
{
-webkit-box-orient
:
vertical
;
-webkit-box-direction
:
normal
}
.avue-comment--reverse
.avue-comment__main
:after
,
.avue-comment--reverse
.avue-comment__main
:before
{
left
:
auto
;
right
:
-8px
;
border-width
:
8px
0
8px
8px
}
.avue-comment--reverse
.avue-comment__main
:before
{
border-left-color
:
#dedede
}
.avue-comment--reverse
.avue-comment__main
:after
{
border-left-color
:
#f8f8f8
;
margin-right
:
1px
;
margin-left
:
auto
}
.avue-comment__avatar
{
width
:
48px
;
height
:
48px
;
border-radius
:
50%
;
border
:
1px
solid
transparent
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
vertical-align
:
middle
}
.avue-comment__header
{
padding
:
5px
15px
;
background
:
#f8f8f8
;
border-bottom
:
1px
solid
#eee
;
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
-webkit-box-pack
:
justify
;
-ms-flex-pack
:
justify
;
justify-content
:
space-between
}
.avue-comment__author
{
font-weight
:
700
;
font-size
:
14px
;
color
:
#999
}
.avue-comment__main
{
-webkit-box-flex
:
1
;
-ms-flex
:
1
;
flex
:
1
;
margin
:
0
20px
;
position
:
relative
;
border
:
1px
solid
#dedede
;
border-radius
:
2px
}
.avue-comment__main
:after
,
.avue-comment__main
:before
{
position
:
absolute
;
top
:
10px
;
left
:
-8px
;
right
:
100%
;
width
:
0
;
height
:
0
;
display
:
block
;
content
:
" "
;
border-color
:
transparent
;
border-style
:
solid
solid
outset
;
border-width
:
8px
8px
8px
0
;
pointer-events
:
none
}
.avue-comment__main
:before
{
border-right-color
:
#dedede
;
z-index
:
1
}
.avue-comment__main
:after
{
border-right-color
:
#f8f8f8
;
margin-left
:
1px
;
z-index
:
2
}
.avue-comment__body
{
padding
:
15px
;
overflow
:
hidden
;
background
:
#fff
;
font-family
:
Segoe
UI
,
Lucida
Grande
,
Helvetica
,
Arial
,
Microsoft
YaHei
,
FreeSans
,
Arimo
,
Droid
Sans
,
wenquanyi
micro
hei
,
Hiragino
Sans
GB
,
Hiragino
Sans
GB
W3
,
FontAwesome
,
sans-serif
;
color
:
#333
;
font-size
:
14px
}
.avue-comment
blockquote
{
margin
:
0
;
font-family
:
Georgia
,
Times
New
Roman
,
Times
,
Kai
,
Kaiti
SC
,
KaiTi
,
BiauKai
,
FontAwesome
,
serif
;
padding
:
1px
0
1px
15px
;
border-left
:
4px
solid
#ddd
}
.avue-chat
{
-webkit-box-shadow
:
1px
2px
10px
#eee
;
box-shadow
:
1px
2px
10px
#eee
;
position
:
relative
;
background-color
:
#fcfcfc
}
.avue-chat
li
,
.avue-chat
ul
{
padding
:
0
;
margin
:
0
}
.avue-chat
li
{
list-style
:
none
;
cursor
:
pointer
}
.avue-chat
.web__content
{
height
:
100%
;
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
}
.avue-chat
.web__main
{
height
:
calc
(
100%
-
200px
);
padding
:
15px
15px
20px
;
overflow-x
:
hidden
;
overflow-y
:
auto
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-chat
.web__logo
{
background-color
:
#409eff
;
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
padding
:
15px
12px
;
margin
:
0
auto
;
vertical-align
:
middle
}
.avue-chat
.web__logo-img
{
margin-top
:
3px
;
width
:
35px
;
height
:
35px
;
border-radius
:
100%
;
-webkit-box-shadow
:
0
3px
3px
0
rgba
(
0
,
0
,
0
,
.1
);
box-shadow
:
0
3px
3px
0
rgba
(
0
,
0
,
0
,
.1
)}
.avue-chat
.web__logo-info
{
margin-left
:
10px
}
.avue-chat
.web__logo-name
{
position
:
relative
;
margin-top
:
5px
;
font-size
:
13px
}
.avue-chat
.web__logo-dept
{
margin-top
:
1px
;
font-size
:
12px
}
.avue-chat
.web__logo-dept
,
.avue-chat
.web__logo-name
{
color
:
#fff
;
margin
:
0
;
padding
:
0
;
width
:
175px
;
text-overflow
:
ellipsis
;
overflow
:
hidden
;
white-space
:
nowrap
}
.avue-chat
.web__main-item
{
position
:
relative
;
font-size
:
0
;
margin-bottom
:
10px
;
padding-left
:
60px
;
min-height
:
68px
}
.avue-chat
.web__main-text
,
.avue-chat
.web__main-user
{
display
:
inline-block
;
vertical-align
:
top
;
font-size
:
14px
}
.avue-chat
.web__main-user
{
position
:
absolute
;
left
:
3px
}
.avue-chat
.web__main-user
img
{
width
:
40px
;
height
:
40px
;
border-radius
:
100%
}
.avue-chat
.web__main-user
cite
{
position
:
absolute
;
left
:
60px
;
top
:
-2px
;
width
:
500px
;
line-height
:
24px
;
font-size
:
12px
;
white-space
:
nowrap
;
color
:
#999
;
text-align
:
left
;
font-style
:
normal
}
.avue-chat
.web__main-user
cite
i
{
padding-left
:
15px
;
font-style
:
normal
}
.avue-chat
.web__main-text
{
position
:
relative
;
line-height
:
22px
;
margin-top
:
25px
;
padding
:
8px
15px
;
background-color
:
#f3f3f3
;
border-radius
:
3px
;
border
:
1px
solid
#f0f0f0
;
color
:
#000
;
word-break
:
break-all
}
.avue-chat
.web__main-arrow
{
top
:
6px
;
left
:
-8px
;
position
:
absolute
;
display
:
block
;
width
:
0
;
height
:
0
;
border-color
:
transparent
#ebeef5
transparent
transparent
;
border-style
:
solid
;
border-width
:
8px
8px
8px
0
}
.avue-chat
.web__main-arrow
::after
{
content
:
" "
;
top
:
-7px
;
left
:
1px
;
position
:
absolute
;
display
:
block
;
width
:
0
;
height
:
0
;
border-color
:
transparent
#fff
transparent
transparent
;
border-style
:
solid
;
border-width
:
7px
7px
7px
0
}
.avue-chat
.web__main-item--mine
.web__main-text
.web__main-arrow
{
left
:
auto
;
right
:
-5px
;
border-color
:
transparent
transparent
transparent
#409eff
;
border-style
:
solid
;
border-width
:
8px
0
8px
8px
}
.avue-chat
.web__main-item--mine
.web__main-text
.web__main-arrow
::after
{
left
:
auto
;
right
:
-2px
;
border-color
:
transparent
transparent
transparent
#409eff
;
border-style
:
solid
;
border-width
:
7px
0
7px
7px
}
.avue-chat
.web__main-list
{
margin
:
10px
0
}
.avue-chat
.web__main-list
li
{
height
:
30px
;
color
:
#409eff
;
line-height
:
30px
}
.avue-chat
.web__main-item--mine
{
text-align
:
right
;
padding-left
:
0
;
padding-right
:
60px
}
.avue-chat
.web__main-item--mine
.web__main-user
{
left
:
auto
;
right
:
3px
}
.avue-chat
.web__main-item--mine
.web__main-user
cite
{
left
:
auto
;
right
:
60px
;
text-align
:
right
}
.avue-chat
.web__main-item--mine
.web__main-user
cite
i
{
padding-left
:
0
;
padding-right
:
15px
}
.avue-chat
.web__main-item--mine
.web__main-text
{
margin-left
:
0
;
text-align
:
left
;
background-color
:
#409eff
;
color
:
#fff
}
.avue-chat
.web__footer
{
-webkit-box-shadow
:
0
-1px
0
0
rgba
(
0
,
0
,
0
,
.04
),
0
-2px
0
0
rgba
(
0
,
0
,
0
,
.01
);
box-shadow
:
0
-1px
0
0
rgba
(
0
,
0
,
0
,
.04
),
0
-2px
0
0
rgba
(
0
,
0
,
0
,
.01
);
position
:
absolute
;
left
:
0
;
bottom
:
0
;
width
:
100%
;
background-color
:
#fff
}
.avue-chat
.web__msg
{
padding
:
10px
;
height
:
auto
;
overflow
:
hidden
}
.avue-chat
.web__msg--file
,
.avue-chat
.web__msg--img
,
.avue-chat
.web__msg--video
{
position
:
relative
;
max-width
:
250px
;
min-width
:
200px
;
width
:
100%
;
margin
:
10px
0
;
border
:
1px
solid
#eee
;
overflow
:
hidden
;
border-radius
:
5px
;
cursor
:
pointer
;
display
:
block
}
.avue-chat
.web__msg--file
{
height
:
140px
;
background-color
:
#fff
}
.avue-chat
.web__msg--file
span
{
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
padding
:
3px
5px
;
color
:
#333
;
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
width
:
100%
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
;
height
:
calc
(
100%
-
80px
);
overflow
:
hidden
;
font-size
:
13px
;
text-align
:
center
}
.avue-chat
.web__msg--file
h2
{
margin
:
0
;
width
:
100%
;
text-align
:
center
;
line-height
:
80px
;
background-color
:
#409EFF
;
color
:
#fff
}
.avue-chat
.web__msg--map
{
height
:
160px
}
.avue-chat
.web__msg-input
{
display
:
block
;
width
:
100%
;
height
:
60px
;
overflow-x
:
hidden
;
overflow-y
:
auto
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
resize
:
none
;
outline
:
0
;
background-color
:
#fff
;
border
:
0
;
word-break
:
break-all
;
font-size
:
13px
;
line-height
:
17px
;
-webkit-appearance
:
none
}
.avue-chat
.web__msg-submit
{
float
:
right
;
display
:
block
;
outline
:
0
;
cursor
:
pointer
;
text-align
:
center
}
.avue-image-preview__box
,
.avue-img--center
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
-webkit-box-align
:
center
}
.avue-chat
.web__tools
{
padding
:
8px
10px
0
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-chat
.web__tools
i
{
margin-right
:
12px
;
font-size
:
20px
;
color
:
#888a91
}
.avue-chat
.web__tools
i
:hover
{
color
:
#76b1f9
}
.avue-draggable
{
padding
:
10px
;
position
:
absolute
;
cursor
:
move
;
-webkit-tap-highlight-color
:
transparent
;
-moz-user-select
:
none
;
user-select
:
none
}
.avue-draggable__mask
{
width
:
100%
;
height
:
100%
;
border
:
0
;
position
:
absolute
;
top
:
0
;
right
:
0
;
bottom
:
0
;
left
:
0
;
z-index
:
1
}
.avue-draggable--active
{
cursor
:
move
;
border
:
1px
dashed
#09f
;
background-color
:
rgba
(
115
,
170
,
229
,
.5
)}
.avue-draggable--move
{
opacity
:
.6
;
background-color
:
rgba
(
115
,
170
,
229
,
.5
)}
.avue-draggable--click
{
cursor
:
pointer
}
.avue-draggable__line--left
{
position
:
absolute
;
border-top
:
1px
dashed
#09f
;
width
:
10000px
;
height
:
0
;
top
:
0
;
-webkit-transform
:
translateX
(
-100%
);
transform
:
translateX
(
-100%
)}
.avue-draggable__line--top
{
position
:
absolute
;
border-left
:
1px
dashed
#09f
;
width
:
0
;
height
:
10000px
;
left
:
0
;
-webkit-transform
:
translateY
(
-100%
);
transform
:
translateY
(
-100%
)}
.avue-draggable__line--label
{
top
:
-5px
;
left
:
-8px
;
position
:
absolute
;
padding
:
5px
;
-webkit-transform
:
translate
(
-100%
,
-100%
);
transform
:
translate
(
-100%
,
-100%
);
color
:
#09f
;
font-size
:
18px
;
white-space
:
nowrap
;
cursor
:
move
}
.avue-draggable__menu
{
position
:
absolute
;
top
:
0
;
left
:
0
;
background-color
:
#409EFF
;
font-size
:
25px
;
color
:
#fff
;
z-index
:
9999
;
cursor
:
pointer
}
.avue-draggable__range
{
position
:
absolute
;
width
:
10px
;
height
:
10px
;
border-radius
:
100%
;
z-index
:
9999
;
background-color
:
#09f
}
.avue-draggable__range--left
,
.avue-draggable__range--right
{
top
:
50%
;
-webkit-transform
:
translateY
(
-50%
);
transform
:
translateY
(
-50%
)}
.avue-draggable__range--left
:hover
,
.avue-draggable__range--right
:hover
{
cursor
:
ew-resize
}
.avue-draggable__range--left
{
left
:
-6px
}
.avue-draggable__range--right
{
right
:
-6px
}
.avue-draggable__range--bottom
,
.avue-draggable__range--top
{
left
:
50%
;
-webkit-transform
:
translateX
(
-50%
);
transform
:
translateX
(
-50%
)}
.avue-draggable__range--bottom
:hover
,
.avue-draggable__range--top
:hover
{
cursor
:
ns-resize
}
.avue-draggable__range--top
{
top
:
-6px
}
.avue-draggable__range--bottom
{
bottom
:
-6px
}
.avue-draggable__range--bottom-right
:hover
,
.avue-draggable__range--top-left
:hover
{
cursor
:
nwse-resize
}
.avue-draggable__range--bottom-left
:hover
,
.avue-draggable__range--top-right
:hover
{
cursor
:
nesw-resize
}
.avue-draggable__range--top-right
{
top
:
-6px
;
right
:
-6px
}
.avue-draggable__range--top-left
{
top
:
-6px
;
left
:
-6px
}
.avue-draggable__range--bottom-right
{
bottom
:
-6px
;
right
:
-6px
}
.avue-draggable__range--bottom-left
{
bottom
:
-6px
;
left
:
-6px
}
.avue-img--center
{
display
:
flex
;
-ms-flex-align
:
center
;
align-items
:
center
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
}
.avue-img--fullscreen
.el-dialog__body
{
height
:
100%
}
.avue-image-preview
{
position
:
fixed
;
top
:
0
;
left
:
0
;
width
:
100%
;
height
:
100%
;
-webkit-transition
:
all
.5s
;
transition
:
all
.5s
;
z-index
:
9999
}
.avue-image-preview
.el-image-viewer__close
i
{
color
:
#fff
}
.avue-image-preview
.el-image-viewer__btn
{
z-index
:
1024
}
.avue-image-preview
img
{
-webkit-transition
:
all
.5s
;
transition
:
all
.5s
;
cursor
:
pointer
}
.avue-image-preview__mask
{
position
:
absolute
;
top
:
0
;
left
:
0
;
width
:
100%
;
height
:
100%
;
background
:
rgba
(
0
,
0
,
0
,
.5
);
z-index
:
-1
}
.avue-image-preview__box
{
width
:
100%
;
height
:
100%
;
display
:
flex
;
-ms-flex-align
:
center
;
align-items
:
center
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
}
.avue-image-preview__box
.el-carousel
{
width
:
90%
;
height
:
100%
}
.avue-image-preview__box
.el-carousel__container
{
height
:
100%
}
.avue-image-preview__box
.el-carousel__item
{
width
:
100%
;
height
:
100%
;
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
}
.avue-input-table__crud
.avue-crud__pagination
{
padding
:
10px
0
2px
10px
;
margin
:
0
}
.amap-icon
img
,
.amap-marker-content
img
{
width
:
25px
;
height
:
34px
}
.avue-input-map__marker
{
position
:
absolute
;
top
:
-20px
;
right
:
-118px
;
color
:
#fff
;
padding
:
4px
10px
;
-webkit-box-shadow
:
1px
1px
1px
rgba
(
10
,
10
,
10
,
.2
);
box-shadow
:
1px
1px
1px
rgba
(
10
,
10
,
10
,
.2
);
white-space
:
nowrap
;
font-size
:
12px
;
font-family
:
""
;
background-color
:
#25a5f7
;
border-radius
:
3px
}
.avue-input-map__content-input
{
margin-bottom
:
10px
}
.avue-input-map__content-box
{
position
:
relative
}
.avue-input-map__content-container
{
width
:
100%
;
height
:
450px
}
.avue-input-map__content-result
{
display
:
block
!important
;
position
:
absolute
;
top
:
0
;
right
:
-8px
;
width
:
250px
;
height
:
450px
;
overflow-y
:
auto
}
.avue-input-icon__item
{
text-align
:
center
;
max-width
:
80px
;
padding
:
20px
;
-webkit-transition
:
all
.2s
;
transition
:
all
.2s
}
.avue-input-icon__item
:hover
{
-webkit-transform
:
scale
(
1.4
);
transform
:
scale
(
1.4
)}
.avue-input-icon__item--active
{
-webkit-transform
:
scale
(
1.4
);
transform
:
scale
(
1.4
);
color
:
#409EFF
}
.avue-input-icon__list
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-ms-flex-wrap
:
wrap
;
flex-wrap
:
wrap
}
.avue-input-icon__icon
{
font-size
:
32px
!important
}
.avue-upload--upload
.el-upload
,
.avue-upload--upload
.el-upload__tip
{
display
:
none
}
.avue-upload--upload
.el-upload--picture-img
{
display
:
inline-block
}
.avue-upload--upload
.el-upload-list
{
margin-top
:
-6px
}
.avue-upload--list
.el-upload
{
border
:
1px
dashed
#d9d9d9
;
border-radius
:
6px
;
cursor
:
pointer
;
position
:
relative
;
overflow
:
hidden
}
.avue-upload--list
.el-upload
:hover
{
border-color
:
#409eff
}
.avue-upload__dialog
.el-dialog__header
{
display
:
none
}
.avue-upload__dialog
.el-dialog__body
{
padding
:
10px
;
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
}
.avue-upload__menu
{
position
:
absolute
;
top
:
0
;
left
:
0
;
width
:
100%
;
height
:
100%
;
background-color
:
rgba
(
0
,
0
,
0
,
.5
);
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
;
z-index
:
1024
}
.avue-form
,
.avue-form__group
.el-col
{
position
:
relative
}
.avue-upload__menu
i
{
color
:
#fff
;
margin
:
0
8px
;
font-size
:
20px
}
.avue-upload__icon
{
font-size
:
28px
;
color
:
#8c939d
;
width
:
178px
;
height
:
178px
;
line-height
:
178px
!important
;
text-align
:
center
}
.avue-upload__avatar
{
width
:
178px
;
height
:
178px
;
display
:
block
}
.avue-form
{
margin
:
0
auto
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-form__item--top
.el-form-item__label
{
width
:
100%
!important
;
text-align
:
left
!important
}
.avue-form__item--top
.el-form-item__content
{
margin-left
:
0
!important
}
.avue-form__item--left
.el-form-item__label
{
text-align
:
left
!important
}
.avue-form__menu
{
padding
:
5px
10px
0
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-form__menu--center
{
text-align
:
center
}
.avue-form__menu--center
.el-button
{
margin
:
0
5px
}
.avue-form__menu--left
{
text-align
:
left
}
.avue-form__menu--right
{
text-align
:
right
}
.avue-form__tabs
{
padding
:
0
10px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-form__group
{
-webkit-box-align
:
start
;
-ms-flex-align
:
start
;
align-items
:
flex-start
;
-ms-flex-wrap
:
wrap
;
flex-wrap
:
wrap
;
height
:
auto
}
.avue-form__group--flex
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
}
.avue-form__line
{
display
:
inline-block
;
height
:
42px
}
.avue-form__row--block
{
width
:
100%
;
display
:
block
}
.avue-flow__node
,
.avue-flow__node-body
{
display
:
-webkit-box
;
display
:
-ms-flexbox
}
.avue-form__row--cursor
{
cursor
:
pointer
}
.avue-form__option
{
position
:
absolute
;
right
:
0
;
top
:
-10px
;
z-index
:
999
}
.avue-flow
,
.avue-flow__node
,
.avue-tree
{
position
:
relative
}
.avue-form__option
i
{
color
:
#666
}
.avue-form__option
i
+
i
{
margin-left
:
10px
}
.el-drawer
.avue-form
{
padding
:
0
20px
}
.avue-flow
.avue-draggable
{
padding
:
0
}
.avue-flow__node
{
display
:
flex
;
-ms-flex-direction
:
column
;
flex-direction
:
column
;
width
:
200px
;
height
:
80px
;
border-radius
:
5px
;
-webkit-box-shadow
:
'#66a6e0 0px 0px 12px 0px'
;
box-shadow
:
'#66a6e0 0px 0px 12px 0px'
;
border
:
1px
solid
#eee
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
overflow
:
hidden
}
.avue-flow__node--active
{
border-width
:
2px
;
border-color
:
#f56c6c
}
.avue-flow__node-drag
{
margin
:
0
5px
;
display
:
inline-block
}
.avue-flow__node-header
{
-webkit-box-flex
:
1
;
-ms-flex
:
1
;
flex
:
1
;
background-color
:
#66a6e0
}
.avue-flow__node-body
{
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
;
-webkit-box-flex
:
1.5
;
-ms-flex
:
1.5
;
flex
:
1.5
;
text-align
:
center
;
background
:
#fff
}
.avue-date__group
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
}
.avue-date__radio
.el-radio-button
:last-child
.el-radio-button__inner
{
border-radius
:
0
;
border-right
:
0
}
.avue-date__date
{
width
:
300px
}
.avue-date__date
.el-date-editor
{
border-top-left-radius
:
0
;
border-bottom-left-radius
:
0
}
.avue-empty
{
margin
:
0
8px
;
font-size
:
14px
;
line-height
:
22px
;
text-align
:
center
}
.avue-checkbox
.el-checkbox
+
.el-checkbox
,
.avue-radio
.el-radio
+
.el-radio
{
margin-left
:
0
}
.avue-checkbox
.el-checkbox
,
.avue-radio
.el-radio
{
margin-right
:
10px
}
.avue-empty__image
{
height
:
100px
;
margin-bottom
:
8px
}
.avue-empty__image
img
{
height
:
100%
;
vertical-align
:
middle
;
border-style
:
none
}
.avue-empty__desc
{
color
:
rgba
(
0
,
0
,
0
,
.65
)}
.avue-select
.sortable-ghost
{
opacity
:
.8
;
color
:
#fff
!important
;
background
:
#409EFF
!important
}
.avue-select
.el-tag
{
cursor
:
pointer
}
.avue-group
.el-collapse
,
.avue-group
.el-collapse-item__wrap
{
border-color
:
#fff
}
.avue-group
.el-collapse-item__header
{
height
:
inherit
;
border
:
none
}
.avue-group
.el-collapse-item__content
{
padding-bottom
:
0
}
.avue-group--arrow
.el-collapse-item__arrow
,
.avue-group--header
.el-collapse-item__header
{
display
:
none
}
.avue-group
.el-collapse-item__arrow
{
margin-top
:
-25px
}
.avue-group--collapse
.el-collapse-item__arrow
,
.avue-group--collapse
.el-collapse-item__header
{
display
:
-webkit-box
!important
;
display
:
-ms-flexbox
!important
;
display
:
flex
!important
}
.avue-group__header
,
.avue-tree__filter
{
display
:
-webkit-box
;
display
:
-ms-flexbox
}
.avue-group--card
{
padding
:
0
20px
}
.avue-group--card
:last-child
{
margin-bottom
:
50px
}
.avue-group--card
.avue-group__item
{
border-radius
:
5px
;
-webkit-box-shadow
:
2px
1px
8px
rgba
(
0
,
0
,
0
,
.15
);
box-shadow
:
2px
1px
8px
rgba
(
0
,
0
,
0
,
.15
)}
.avue-group__item
{
margin-bottom
:
10px
;
background-color
:
#fff
;
border-bottom
:
1px
solid
#eee
;
border-radius
:
5px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-group__item
:last-child
{
border-bottom
:
none
}
.avue-group__header
{
width
:
100%
;
margin-bottom
:
30px
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
height
:
50px
;
line-height
:
50px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
border-bottom
:
1px
solid
#eee
}
.avue-group__icon
{
margin-right
:
8px
;
font-size
:
20px
;
color
:
rgba
(
0
,
0
,
0
,
.85
)}
.avue-group__title
{
font-size
:
16px
;
font-weight
:
500
;
color
:
rgba
(
0
,
0
,
0
,
.85
)}
.avue-tree__menu
{
width
:
200px
;
position
:
fixed
;
z-index
:
1024
;
-ms-flex-wrap
:
wrap
;
flex-wrap
:
wrap
;
background-color
:
#fff
}
.avue-tree__item
,
.avue-video
{
position
:
relative
;
overflow
:
hidden
}
.avue-tree__dialog
.el-dialog__body
{
padding
:
30px
20px
0
}
.avue-tree__item
{
height
:
34px
;
line-height
:
34px
;
outline
:
0
;
padding
:
0
10px
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
width
:
100%
;
color
:
#666
}
.avue-tree__item
:hover
{
cursor
:
pointer
;
color
:
#409eff
}
.avue-tree__filter
{
margin-bottom
:
15px
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
}
.avue-search
{
padding
:
0
20px
}
.avue-search__item
{
padding
:
20px
0
10px
;
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-align
:
start
;
-ms-flex-align
:
start
;
align-items
:
flex-start
;
border-bottom
:
1px
dashed
#e8e8e8
}
.avue-search__item
:last-child
{
border-bottom
:
none
}
.avue-search__tags
{
padding
:
0
12px
;
margin-right
:
24px
;
margin-bottom
:
12px
;
font-size
:
14px
;
color
:
rgba
(
0
,
0
,
0
,
.65
);
cursor
:
pointer
;
white-space
:
nowrap
;
display
:
inline-block
}
.avue-search__tags
:hover
{
color
:
#1890ff
}
.avue-search__tags--active
{
color
:
#fff
;
background-color
:
#1890ff
;
border-radius
:
5px
}
.avue-search__tags--active
:hover
{
opacity
:
.85
;
color
:
#fff
}
.avue-search__title
{
margin
:
0
;
padding
:
0
20px
;
width
:
120px
;
font-size
:
14px
;
text-align
:
right
;
display
:
inline-block
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-search__content
{
width
:
calc
(
100%
-
190px
);
display
:
inline-block
}
.avue-dynamic__item
,
.avue-notice__item
{
display
:
-webkit-box
;
display
:
-ms-flexbox
}
.avue-search__content
.el-tag
{
margin-right
:
10px
;
margin-bottom
:
10px
}
.avue-tabs
{
padding
:
20px
10px
0
}
.avue-video
{
width
:
500px
}
.avue-video__border
span
{
position
:
absolute
;
width
:
30px
;
height
:
30px
;
border-width
:
4px
;
color
:
#0073eb
;
border-style
:
solid
}
.avue-video__border
span
:nth-child
(
1
)
{
left
:
15px
;
top
:
15px
;
border-right
:
0
;
border-bottom
:
0
}
.avue-video__border
span
:nth-child
(
2
)
{
right
:
15px
;
top
:
15px
;
border-left
:
0
;
border-bottom
:
0
}
.avue-video__border
span
:nth-child
(
3
)
{
bottom
:
15px
;
left
:
15px
;
border-right
:
0
;
border-top
:
0
}
.avue-video__border
span
:nth-child
(
4
)
{
bottom
:
15px
;
right
:
15px
;
border-left
:
0
;
border-top
:
0
}
.avue-video__img
{
width
:
100px
;
position
:
absolute
;
left
:
50%
;
top
:
50%
;
-webkit-transform
:
translate
(
-50%
,
-50%
);
transform
:
translate
(
-50%
,
-50%
)}
.avue-video__main
{
width
:
100%
}
.avue-dynamic__item
{
margin-bottom
:
10px
;
width
:
100%
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
}
.avue-dynamic__input
{
margin-right
:
8px
;
width
:
100%
}
.avue-dynamic__button
{
margin-bottom
:
0
!important
}
.avue-verify__item
{
padding
:
5px
10px
;
display
:
inline-block
;
margin
:
0
4px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
border
:
1px
solid
#e1e1e1
;
font-size
:
64px
;
text-align
:
center
}
.avue-text-ellipsis__more
{
padding
:
0
2px
}
.avue-login
.el-form-item
{
margin-bottom
:
18px
}
.avue-login
.el-input-group__append
{
padding
:
0
;
overflow
:
hidden
}
.avue-login__send
{
min-width
:
150px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-login__send
:hover
{
color
:
#C0C4CC
!important
;
border-color
:
#EBEEF5
!important
;
background-color
:
#F5F7FA
!important
}
.avue-login__submit
{
width
:
100%
}
.avue-keyboard--default
.akeyboard-keyboard
{
height
:
100%
;
width
:
100%
;
background
:
#f0f0f0
;
border-radius
:
5px
;
padding
:
9px
5px
5px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-keyboard--default
.akeyboard-keyboard-innerKeys
{
text-align
:
center
}
.avue-keyboard--default
.akeyboard-keyboard-keys
{
height
:
40px
;
min-width
:
40px
;
padding
:
0
10px
;
border-radius
:
5px
;
background
:
#fff
;
display
:
inline-block
;
line-height
:
40px
;
text-align
:
center
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
margin
:
4px
;
cursor
:
pointer
;
-webkit-user-select
:
none
;
-moz-user-select
:
none
;
-ms-user-select
:
none
;
user-select
:
none
}
.avue-keyboard--default
.akeyboard-keyboard-keys
:hover
,
.avue-keyboard--default
.keyboard-keyboard-keys-focus
{
background
:
#1e9fff
;
color
:
#fff
}
.avue-keyboard--default
.akeyboard-keyboard-keys-Delete
,
.avue-keyboard--default
.akeyboard-keyboard-keys-Tab
{
width
:
80px
}
.avue-keyboard--default
.akeyboard-keyboard-keys-Caps
{
width
:
77px
}
.avue-keyboard--default
.akeyboard-keyboard-keys-Enter
{
width
:
90px
}
.avue-keyboard--default
.akeyboard-keyboard-keys-Shift
{
width
:
106px
}
.avue-keyboard--default
.akeyboard-keyboard-keys-Space
{
width
:
350px
}
.avue-keyboard--default
.akeyboard-keyboard-fixedBottomCenter
{
width
:
100%
!important
;
height
:
auto
!important
;
position
:
fixed
;
bottom
:
0
;
left
:
0
;
border-radius
:
0
!important
}
.avue-keyboard--default
.akeyboard-numberKeyboard
{
height
:
100%
;
width
:
100%
;
background
:
#f0f0f0
;
border-radius
:
5px
;
padding
:
10px
5px
5px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-keyboard--default
.akeyboard-numberKeyboard-keys-Enter
{
height
:
40px
;
width
:
100px
}
.avue-keyboard--default
.akeyboard-mobileKeyboard
{
height
:
100%
;
width
:
100%
;
background
:
#f0f0f0
;
border-radius
:
5px
;
padding
:
11px
5px
5px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-keyboard--default
.akeyboard-mobileKeyboard-keys
{
height
:
25px
;
min-width
:
25px
;
padding
:
0
10px
;
border-radius
:
3px
;
background
:
#fff
;
display
:
inline-block
;
line-height
:
25px
;
text-align
:
center
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
margin
:
3px
2px
2px
;
cursor
:
pointer
;
-webkit-user-select
:
none
;
-moz-user-select
:
none
;
-ms-user-select
:
none
;
user-select
:
none
;
font-size
:
10px
}
.avue-keyboard--green
.akeyboard-keyboard-keys
,
.avue-keyboard--green
.akeyboard-mobileKeyboard-keys
{
display
:
inline-block
;
text-align
:
center
;
cursor
:
pointer
;
-webkit-user-select
:
none
;
-ms-user-select
:
none
}
.avue-keyboard--default
.akeyboard-mobileKeyboard-keys
:hover
{
background
:
#1e9fff
!important
;
color
:
#fff
}
.avue-keyboard--default
.akeyboard-mobileKeyboard-keys-
⇦
,
.avue-keyboard--default
.akeyboard-mobileKeyboard-keys-
⇧
{
width
:
25px
;
background-color
:
#999faf
}
.avue-keyboard--default
.akeyboard-mobileKeyboard-keys-Space
{
height
:
28px
;
width
:
100px
;
line-height
:
28px
;
margin-left
:
55px
}
.avue-keyboard--default
.akeyboard-mobileKeyboard-keys-Enter
{
height
:
28px
;
width
:
55px
;
line-height
:
28px
;
background
:
#1e9fff
!important
;
color
:
#fff
}
.avue-keyboard--default
.akeyboard-mobileKeyboard-keys-focus
{
background
:
#1e9fff
!important
;
color
:
#fff
}
.avue-keyboard--green
.akeyboard-keyboard
{
height
:
100%
;
width
:
100%
;
background
:
#030
;
border-radius
:
5px
;
padding
:
9px
5px
5px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-keyboard--green
.akeyboard-keyboard-innerKeys
{
text-align
:
center
}
.avue-keyboard--green
.akeyboard-keyboard-keys
{
height
:
40px
;
min-width
:
40px
;
padding
:
0
10px
;
border-radius
:
5px
;
background
:
#cc9
;
line-height
:
40px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
margin
:
4px
;
-moz-user-select
:
none
;
user-select
:
none
}
.avue-keyboard--green
.akeyboard-keyboard-keys
:hover
,
.avue-keyboard--green
.keyboard-keyboard-keys-focus
{
background
:
#693
;
color
:
#fff
}
.avue-keyboard--green
.akeyboard-keyboard-keys-Delete
,
.avue-keyboard--green
.akeyboard-keyboard-keys-Tab
{
width
:
80px
}
.avue-keyboard--green
.akeyboard-keyboard-keys-Caps
{
width
:
77px
}
.avue-keyboard--green
.akeyboard-keyboard-keys-Enter
{
width
:
90px
}
.avue-keyboard--green
.akeyboard-keyboard-keys-Shift
{
width
:
106px
}
.avue-keyboard--green
.akeyboard-keyboard-keys-Space
{
width
:
350px
}
.avue-keyboard--green
.akeyboard-keyboard-fixedBottomCenter
{
width
:
100%
!important
;
height
:
auto
!important
;
position
:
fixed
;
bottom
:
0
;
left
:
0
;
border-radius
:
0
!important
}
.avue-keyboard--green
.akeyboard-numberKeyboard
{
height
:
100%
;
width
:
100%
;
background
:
#030
;
border-radius
:
5px
;
padding
:
10px
5px
5px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-keyboard--green
.akeyboard-numberKeyboard-keys-Enter
{
height
:
40px
;
width
:
100px
}
.avue-keyboard--green
.akeyboard-mobileKeyboard
{
height
:
100%
;
width
:
100%
;
background
:
#030
;
border-radius
:
5px
;
padding
:
11px
5px
5px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-keyboard--green
.akeyboard-mobileKeyboard-keys
{
height
:
25px
;
min-width
:
25px
;
padding
:
0
10px
;
border-radius
:
3px
;
background
:
#cc9
;
line-height
:
25px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
margin
:
3px
2px
2px
;
-moz-user-select
:
none
;
user-select
:
none
;
font-size
:
10px
}
.avue-keyboard--dark
.akeyboard-keyboard-keys
,
.avue-keyboard--dark
.akeyboard-mobileKeyboard-keys
{
-webkit-user-select
:
none
;
-ms-user-select
:
none
;
color
:
#fff
;
display
:
inline-block
;
text-align
:
center
;
cursor
:
pointer
}
.avue-keyboard--green
.akeyboard-mobileKeyboard-keys
:hover
{
background
:
#693
!important
;
color
:
#fff
}
.avue-keyboard--green
.akeyboard-mobileKeyboard-keys-
⇦
,
.avue-keyboard--green
.akeyboard-mobileKeyboard-keys-
⇧
{
width
:
25px
;
background-color
:
#999faf
}
.avue-keyboard--green
.akeyboard-mobileKeyboard-keys-Space
{
height
:
28px
;
width
:
100px
;
line-height
:
28px
;
margin-left
:
55px
}
.avue-keyboard--green
.akeyboard-mobileKeyboard-keys-Enter
{
height
:
28px
;
width
:
55px
;
line-height
:
28px
;
background
:
#693
!important
;
color
:
#fff
}
.avue-keyboard--green
.akeyboard-mobileKeyboard-keys-focus
{
background
:
#693
!important
;
color
:
#fff
}
.avue-keyboard--dark
.akeyboard-keyboard
{
height
:
100%
;
width
:
100%
;
background
:
#000
;
color
:
#fff
;
border-radius
:
5px
;
padding
:
9px
5px
5px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-keyboard--dark
.akeyboard-keyboard-innerKeys
{
text-align
:
center
}
.avue-keyboard--dark
.akeyboard-keyboard-keys
{
height
:
40px
;
min-width
:
40px
;
padding
:
0
10px
;
border-radius
:
5px
;
background
:
#393d49
;
line-height
:
40px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
margin
:
4px
;
-moz-user-select
:
none
;
user-select
:
none
}
.avue-keyboard--dark
.akeyboard-keyboard-keys
:hover
,
.avue-keyboard--dark
.keyboard-keyboard-keys-focus
{
background
:
#1e9fff
}
.avue-keyboard--dark
.akeyboard-keyboard-keys-Delete
,
.avue-keyboard--dark
.akeyboard-keyboard-keys-Tab
{
width
:
80px
}
.avue-keyboard--dark
.akeyboard-keyboard-keys-Caps
{
width
:
77px
}
.avue-keyboard--dark
.akeyboard-keyboard-keys-Enter
{
width
:
90px
}
.avue-keyboard--dark
.akeyboard-keyboard-keys-Shift
{
width
:
106px
}
.avue-keyboard--dark
.akeyboard-keyboard-keys-Space
{
width
:
350px
}
.avue-keyboard--dark
.akeyboard-keyboard-fixedBottomCenter
{
width
:
100%
!important
;
height
:
auto
!important
;
position
:
fixed
;
bottom
:
0
;
left
:
0
;
border-radius
:
0
!important
}
.avue-keyboard--dark
.akeyboard-numberKeyboard
{
height
:
100%
;
width
:
100%
;
background
:
#000
;
border-radius
:
5px
;
padding
:
10px
5px
5px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-keyboard--dark
.akeyboard-numberKeyboard-keys-Enter
{
height
:
40px
;
width
:
100px
}
.avue-keyboard--dark
.akeyboard-mobileKeyboard
{
height
:
100%
;
width
:
100%
;
background
:
#000
;
border-radius
:
5px
;
padding
:
11px
5px
5px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-keyboard--dark
.akeyboard-mobileKeyboard-keys
{
height
:
25px
;
min-width
:
25px
;
padding
:
0
10px
;
border-radius
:
3px
;
background
:
#393d49
;
line-height
:
25px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
margin
:
3px
2px
2px
;
-moz-user-select
:
none
;
user-select
:
none
;
font-size
:
10px
}
.avue-keyboard--dark
.akeyboard-mobileKeyboard-keys
:hover
{
background
:
#1e9fff
!important
;
color
:
#fff
}
.avue-keyboard--dark
.akeyboard-mobileKeyboard-keys-
⇦
,
.avue-keyboard--dark
.akeyboard-mobileKeyboard-keys-
⇧
{
width
:
25px
;
background-color
:
#999faf
}
.avue-keyboard--dark
.akeyboard-mobileKeyboard-keys-Space
{
height
:
28px
;
width
:
100px
;
line-height
:
28px
;
margin-left
:
55px
}
.avue-keyboard--dark
.akeyboard-mobileKeyboard-keys-Enter
{
height
:
28px
;
width
:
55px
;
line-height
:
28px
;
background
:
#1e9fff
!important
;
color
:
#fff
}
.avue-keyboard--dark
.akeyboard-mobileKeyboard-keys-focus
{
background
:
#1e9fff
!important
;
color
:
#fff
}
.avue-keyboard--classic
.akeyboard-keyboard
{
height
:
100%
;
width
:
100%
;
background
:
#2f4056
;
border-radius
:
5px
;
padding
:
9px
5px
5px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-keyboard--classic
.akeyboard-keyboard-innerKeys
{
text-align
:
center
}
.avue-keyboard--classic
.akeyboard-keyboard-keys
{
height
:
40px
;
min-width
:
40px
;
padding
:
0
10px
;
border-radius
:
5px
;
background
:
#fff
;
display
:
inline-block
;
line-height
:
40px
;
text-align
:
center
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
margin
:
4px
;
cursor
:
pointer
;
-webkit-user-select
:
none
;
-moz-user-select
:
none
;
-ms-user-select
:
none
;
user-select
:
none
}
.avue-keyboard--classic
.akeyboard-keyboard-keys
:hover
,
.avue-keyboard--classic
.keyboard-keyboard-keys-focus
{
background
:
#c2c2c2
;
color
:
#fff
}
.avue-keyboard--classic
.akeyboard-keyboard-keys-Delete
,
.avue-keyboard--classic
.akeyboard-keyboard-keys-Tab
{
width
:
80px
}
.avue-keyboard--classic
.akeyboard-keyboard-keys-Caps
{
width
:
77px
}
.avue-keyboard--classic
.akeyboard-keyboard-keys-Enter
{
width
:
90px
}
.avue-keyboard--classic
.akeyboard-keyboard-keys-Shift
{
width
:
106px
}
.avue-keyboard--classic
.akeyboard-keyboard-keys-Space
{
width
:
350px
}
.avue-keyboard--classic
.akeyboard-keyboard-fixedBottomCenter
{
width
:
100%
!important
;
height
:
auto
!important
;
position
:
fixed
;
bottom
:
0
;
left
:
0
;
border-radius
:
0
!important
}
.avue-keyboard--classic
.akeyboard-numberKeyboard
{
height
:
100%
;
width
:
100%
;
background
:
#2f4056
;
border-radius
:
5px
;
padding
:
10px
5px
5px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-keyboard--classic
.akeyboard-numberKeyboard-keys-Enter
{
height
:
40px
;
width
:
100px
}
.avue-keyboard--classic
.akeyboard-mobileKeyboard
{
height
:
100%
;
width
:
100%
;
background
:
#2f4056
;
border-radius
:
5px
;
padding
:
11px
5px
5px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-keyboard--classic
.akeyboard-mobileKeyboard-keys
{
height
:
25px
;
min-width
:
25px
;
padding
:
0
10px
;
border-radius
:
3px
;
background
:
#fff
;
display
:
inline-block
;
line-height
:
25px
;
text-align
:
center
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
margin
:
3px
2px
2px
;
cursor
:
pointer
;
-webkit-user-select
:
none
;
-moz-user-select
:
none
;
-ms-user-select
:
none
;
user-select
:
none
;
font-size
:
10px
}
.avue-keyboard--classic
.akeyboard-mobileKeyboard-keys
:hover
{
background
:
#c2c2c2
!important
;
color
:
#fff
}
.avue-keyboard--classic
.akeyboard-mobileKeyboard-keys-
⇦
,
.avue-keyboard--classic
.akeyboard-mobileKeyboard-keys-
⇧
{
width
:
25px
;
background-color
:
#999faf
}
.avue-keyboard--classic
.akeyboard-mobileKeyboard-keys-Space
{
height
:
28px
;
width
:
100px
;
line-height
:
28px
;
margin-left
:
55px
}
.avue-keyboard--classic
.akeyboard-mobileKeyboard-keys-Enter
{
height
:
28px
;
width
:
55px
;
line-height
:
28px
;
background
:
#c2c2c2
!important
;
color
:
#fff
}
.avue-keyboard--classic
.akeyboard-mobileKeyboard-keys-focus
{
background
:
#c2c2c2
!important
;
color
:
#fff
}
.avue-notice__item
{
padding
:
12px
24px
;
border-bottom
:
1px
solid
#e8eaec
;
cursor
:
pointer
;
-webkit-transition
:
background-color
.2s
ease-in-out
;
transition
:
background-color
.2s
ease-in-out
;
text-align
:
left
;
display
:
flex
;
-webkit-box-align
:
start
;
-ms-flex-align
:
start
;
align-items
:
flex-start
}
.avue-notice__content
{
-webkit-box-flex
:
1
;
-ms-flex
:
1
;
flex
:
1
}
.avue-notice__img
{
width
:
38px
;
height
:
38px
;
border-radius
:
100%
;
margin-top
:
5px
;
margin-right
:
10px
;
overflow
:
hidden
}
.avue-notice__img
img
{
width
:
100%
;
height
:
100%
}
.avue-notice__name
{
line-height
:
25px
}
.avue-notice__title
{
font-size
:
14px
;
font-weight
:
400
;
line-height
:
22px
;
color
:
#515a6e
;
margin-bottom
:
4px
}
.avue-notice__tag
{
float
:
right
;
margin-top
:
2px
}
.avue-notice__subtitle
{
font-size
:
12px
;
color
:
#808695
}
.avue-notice__more
{
cursor
:
pointer
;
color
:
#2d8cf0
;
text-align
:
center
;
padding
:
10px
0
}
.avue-array__item
{
margin-bottom
:
5px
}
.ant-form-item
,
.ant-form-item-with-help
{
margin-bottom
:
0
}
.avue-array__input
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
}
.avue-array__input
.el-input
{
-webkit-box-flex
:
1
;
-ms-flex
:
1
;
flex
:
1
}
.avue-array__input
.el-button
{
margin-left
:
5px
}
.ant-btn
+
.ant-btn
{
margin-left
:
10px
}
.ant-calendar-picker
,
.ant-time-picker
{
width
:
100%
}
.ant-form
{
padding-right
:
50px
}
.ant-form-item-control
{
line-height
:
34px
}
.ant-form-item
{
height
:
60px
}
.avue-data-tabs
.item
{
position
:
relative
;
margin
:
15px
;
padding
:
12px
;
height
:
160px
;
border-radius
:
4px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
overflow
:
hidden
;
color
:
#fff
}
.avue-data-tabs
.item
a
{
color
:
#fff
}
.avue-data-tabs
.item-header
{
position
:
relative
}
.avue-data-tabs
.item-header
>
p
{
color
:
#fff
;
margin
:
0
;
font-size
:
14px
}
.avue-data-tabs
.item-header
>
span
{
position
:
absolute
;
right
:
0
;
top
:
0
;
padding
:
2px
8px
;
border-radius
:
4px
;
font-size
:
12px
;
background
:
rgba
(
255
,
255
,
255
,
.3
)}
.avue-data-tabs
.item-body
.h2
{
color
:
#fff
;
margin
:
0
;
font-size
:
32px
;
line-height
:
60px
;
font-weight
:
700
}
.avue-data-tabs
.item-footer
{
padding-top
:
8px
;
line-height
:
20px
}
.avue-data-tabs
.item-footer
>
span
{
font-size
:
10px
}
.avue-data-tabs
.item-footer
>
p
{
color
:
#fff
;
margin
:
0
;
font-size
:
12px
}
.avue-data-tabs
.item-tip
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
;
position
:
absolute
;
width
:
80px
;
height
:
80px
;
bottom
:
10px
;
right
:
10px
;
border
:
2px
solid
#fff
;
border-radius
:
100%
;
font-size
:
48px
;
-webkit-transform
:
rotate
(
-40deg
);
transform
:
rotate
(
-40deg
);
opacity
:
.1
}
.data-box
.item
a
,
.data-box
.item-icon
{
display
:
-webkit-box
;
display
:
-ms-flexbox
}
.avue-data-cardText
.item
{
padding
:
20px
25px
;
margin
:
10px
20px
;
background
:
#F8F8F8
;
border-radius
:
6px
;
-webkit-box-shadow
:
2px
2px
20px
#ccc
;
box-shadow
:
2px
2px
20px
#ccc
}
.avue-data-cardText
.item-header
{
position
:
relative
}
.avue-data-cardText
.item-header
i
{
font-size
:
26px
;
color
:
#009688
}
.avue-data-cardText
.item-header
a
{
font-size
:
16px
;
margin-left
:
6px
;
position
:
absolute
;
bottom
:
4px
}
.avue-data-cardText
.item-content
{
margin-top
:
8
PX
;
font-size
:
14px
;
line-height
:
22px
;
color
:
#333
}
.avue-data-cardText
.item-footer
{
position
:
relative
}
.avue-data-cardText
.item-footer
span
:nth-child
(
1
)
{
color
:
#777
;
font-size
:
12px
;
text-overflow
:
ellipsis
;
word-break
:
break-all
}
.avue-data-cardText
.item-footer
span
:nth-child
(
2
)
{
color
:
#CCC
;
font-size
:
12px
;
line-height
:
24px
;
position
:
absolute
;
right
:
0
}
.data-box
.item
,
.data-card
.item
{
position
:
relative
;
overflow
:
hidden
}
.data-box
.item
{
margin
:
0
auto
10px
;
width
:
96%
;
height
:
100px
;
border-radius
:
5px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.data-box
.item
:hover
.item-text
{
top
:
0
}
.data-box
.item
a
{
display
:
flex
}
.data-box
.item-icon
{
width
:
100px
;
height
:
100px
;
color
:
#fff
;
text-align
:
center
;
line-height
:
100px
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
;
display
:
flex
}
.data-box
.item-icon
i
{
font-size
:
48px
!important
}
.data-box
.item-info
{
border-radius
:
0
5px
5px
0
;
border
:
1px
solid
#eee
;
border-left
:
none
;
background-color
:
#fff
;
-webkit-box-flex
:
1
;
-ms-flex
:
1
;
flex
:
1
;
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
;
-ms-flex-direction
:
column
;
flex-direction
:
column
}
.data-box
.item-info
.title
{
font-size
:
30px
;
line-height
:
40px
;
text-align
:
center
}
.data-box
.item-info
.info
{
color
:
#999
;
font-size
:
14px
;
text-align
:
center
}
.data-progress
.item
{
margin
:
10px
}
.data-progress
.item-header
{
margin-bottom
:
10px
;
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
-webkit-box-pack
:
justify
;
-ms-flex-pack
:
justify
;
justify-content
:
space-between
}
.data-progress
.item-count
{
line-height
:
26px
;
font-size
:
26px
;
color
:
#666
}
.data-progress
.item-title
{
color
:
#999
;
font-size
:
14px
}
.data-icons
.item
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
;
width
:
90%
;
margin
:
10px
15px
}
.data-icons
.item-icon
{
margin-top
:
3px
;
margin-right
:
0
!important
;
text-align
:
center
}
.data-icons
.item-icon
>
i
{
font-size
:
46px
!important
}
.data-icons
.item-info
{
text-align
:
center
;
padding
:
10px
0
}
.data-icons
.item-info
>
span
{
display
:
block
;
padding
:
5px
0
;
color
:
#999
;
font-size
:
12px
}
.data-icons
.item-info
.count
{
font-size
:
20px
;
line-height
:
25px
}
.data-icons
.item--easy
{
-ms-flex-direction
:
column
;
flex-direction
:
column
}
.data-icons
.item--easy
>
.item-icon
{
margin
:
0
}
.data-icons
.item--easy
>
.item-info
{
margin-top
:
-15px
}
.data-icons
.item--easy
>
.item-info
>
span
{
font-size
:
14px
}
.data-card
.item
{
margin
:
0
auto
50px
;
width
:
230px
;
height
:
340px
;
border-radius
:
5px
;
border-color
:
#fff
;
border-width
:
1px
;
border-style
:
solid
}
.data-card
.item
:hover
.item-text
{
top
:
0
}
.data-card
.item-img
{
width
:
100%
;
border-radius
:
5px
5px
0
0
}
.data-card
.item-text
{
position
:
absolute
;
top
:
150px
;
padding
:
20px
15px
;
width
:
100%
;
height
:
340px
;
overflow
:
auto
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
border-radius
:
0
0
5px
5px
;
opacity
:
.9
;
-webkit-transition
:
top
.4s
;
transition
:
top
.4s
}
.data-card
.item-text
>
p
{
font-size
:
12px
;
line-height
:
25px
;
text-indent
:
2em
}
.avue-data-display
.item
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
-ms-flex-direction
:
column
;
flex-direction
:
column
;
margin
:
5px
0
;
text-align
:
center
}
.avue-data-display
.count
{
display
:
block
;
margin
:
8px
0
15px
;
font-weight
:
700
;
font-size
:
32px
;
color
:
#15A0FF
}
.avue-data-display
.title
{
line-height
:
32px
;
color
:
#999
}
.avue-data-display
.splitLine
{
display
:
block
;
margin
:
0
auto
;
width
:
24px
;
height
:
1px
;
background
:
#9B9B9B
}
.avue-data-imgtext
.item
{
position
:
relative
;
height
:
340px
;
width
:
240px
;
margin
:
10px
auto
50px
;
border-radius
:
5px
;
-webkit-box-shadow
:
2px
2px
20px
#ccc
;
box-shadow
:
2px
2px
20px
#ccc
}
.avue-data-imgtext
.item-header
img
{
width
:
100%
;
height
:
170px
;
background
:
red
;
border-radius
:
5px
5px
0
0
}
.avue-data-imgtext
.item-content
{
padding
:
10px
15px
;
color
:
#333
!important
}
.avue-data-imgtext
.item-content
span
{
font-size
:
20px
}
.avue-data-imgtext
.item-content
:hover
span
{
color
:
#1890ff
}
.avue-data-imgtext
.item-content
p
{
font-size
:
14px
;
height
:
60px
;
margin
:
6px
0
;
overflow
:
hidden
}
.avue-data-imgtext
.item-footer
{
padding
:
10px
15px
;
position
:
relative
}
.avue-data-imgtext
.item-footer
img
{
height
:
20px
;
width
:
20px
;
border-radius
:
50%
}
.avue-data-imgtext
.item-footer
div
{
display
:
inline-block
}
.avue-data-imgtext
.item-footer
div
li
,
.avue-data-imgtext
.item-footer
div
ul
{
padding
:
0
;
margin
:
0
0
0
-8px
;
list-style
:
none
;
display
:
inline-block
;
border
:
2px
solid
#fff
;
border-radius
:
50%
}
.avue-data-imgtext
.item-footer
div
:nth-child
(
1
)
{
font-size
:
14px
;
color
:
#ccc
!important
}
.avue-data-imgtext
.item-footer
div
:nth-child
(
2
)
{
position
:
absolute
;
right
:
15px
}
.avue-data-operatext
.item
{
margin
:
5px
10px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
position
:
relative
;
border-radius
:
3px
;
background
:
#fff
;
-webkit-box-shadow
:
0
1px
1px
rgba
(
0
,
0
,
0
,
.1
);
box-shadow
:
0
1px
1px
rgba
(
0
,
0
,
0
,
.1
)}
.avue-data-operatext
.item
a
{
color
:
#333
}
.avue-data-operatext
.item-header
{
padding
:
20px
20px
60px
;
border-top-right-radius
:
3px
;
border-top-left-radius
:
3px
;
color
:
#fff
;
background-position
:
center
center
}
.avue-data-operatext
.item-title
{
margin-top
:
0
;
margin-bottom
:
5px
;
font-size
:
25px
;
font-weight
:
300
;
text-shadow
:
0
1px
1px
rgba
(
0
,
0
,
0
,
.2
);
display
:
block
}
.avue-data-operatext
.item-subtitle
{
font-size
:
14px
;
font-weight
:
400
}
.avue-data-operatext
.item-content
{
border-top
:
1px
solid
#f4f4f4
;
padding
:
10px
10px
20px
;
background-color
:
#fff
;
border-radius
:
0
0
3px
3px
}
.avue-data-operatext
.item-img
{
margin
:
-60px
auto
5px
;
width
:
90px
;
height
:
90px
;
border-radius
:
100%
;
overflow
:
hidden
;
border
:
4px
solid
#fff
}
.avue-data-operatext
.item-img
img
{
width
:
100%
;
height
:
100%
}
.avue-data-operatext
.item-list
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-ms-flex-wrap
:
wrap
;
flex-wrap
:
wrap
}
.avue-data-operatext
.item-row
{
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
width
:
33.33%
;
text-align
:
center
}
.avue-data-operatext
.item-label
{
margin-bottom
:
5px
;
display
:
block
;
font-weight
:
600
;
font-size
:
16px
}
.avue-data-operatext
.item-value
{
display
:
block
;
font-weight
:
300
;
text-transform
:
uppercase
}
.avue-data-rotate
.item
{
margin
:
5px
10px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
position
:
relative
;
color
:
#fff
;
border-radius
:
3px
}
.avue-data-rotate
.item-box
{
padding
:
10px
20px
}
.avue-data-rotate
.item-count
{
margin-bottom
:
5px
;
font-size
:
38px
;
white-space
:
nowrap
;
font-weight
:
300
;
display
:
block
}
.avue-data-rotate
.item-title
{
font-size
:
15px
}
.avue-data-rotate
.item-icon
{
-webkit-transition
:
all
.3s
linear
;
transition
:
all
.3s
linear
;
position
:
absolute
;
top
:
20px
;
right
:
20px
;
font-size
:
65px
;
color
:
rgba
(
0
,
0
,
0
,
.15
)}
.avue-data-rotate
.item-icon
:hover
{
font-size
:
70px
}
.avue-data-rotate
.item-more
{
position
:
relative
;
text-align
:
center
;
padding
:
3px
0
;
color
:
#fff
;
color
:
rgba
(
255
,
255
,
255
,
.8
);
display
:
block
;
z-index
:
10
;
font-size
:
14px
;
letter-spacing
:
2px
;
background
:
rgba
(
0
,
0
,
0
,
.1
);
text-decoration
:
none
}
.avue-data-pay
.item
{
margin
:
0
auto
;
padding-bottom
:
16px
;
width
:
80%
;
position
:
relative
;
border-radius
:
4px
;
background-color
:
#fff
;
min-height
:
670px
;
-webkit-box-shadow
:
1px
2px
10px
#eee
;
box-shadow
:
1px
2px
10px
#eee
}
.avue-data-pay
.top
{
width
:
100%
;
height
:
6px
;
position
:
absolute
;
top
:
0
;
left
:
0
;
border-radius
:
4px
4px
0
0
}
.avue-data-pay
.header
{
margin-bottom
:
40px
;
text-align
:
center
}
.avue-data-pay
.title
{
text-align
:
center
;
padding
:
20px
0
10px
;
font-size
:
20px
;
font-weight
:
200
}
.avue-data-pay
.money
span
{
margin-right
:
5px
;
font-size
:
14px
}
.avue-data-pay
.money
.b
{
margin-right
:
2px
;
font-size
:
20px
;
font-weight
:
700
}
.avue-data-pay
.money
s
{
margin-right
:
3px
;
font-size
:
12px
}
.avue-data-pay
.money
em
{
font-size
:
14px
;
font-style
:
normal
}
.avue-data-pay
.img
{
width
:
50px
}
.avue-data-pay
.line
{
width
:
60%
;
height
:
1px
;
background
:
rgba
(
150
,
150
,
150
,
.1
);
margin
:
20px
auto
}
.avue-data-pay
.btn
{
display
:
block
;
width
:
120px
;
height
:
32px
;
line-height
:
32px
;
margin
:
0
auto
;
text-align
:
center
;
border-radius
:
32px
;
color
:
#fff
;
cursor
:
pointer
;
-webkit-transition
:
opacity
.2s
ease-in-out
;
transition
:
opacity
.2s
ease-in-out
}
.avue-data-pay
.list-item
{
list-style
:
none
;
padding-left
:
20px
;
margin-bottom
:
12px
;
color
:
#666
;
font-size
:
14px
}
.avue-data-pay
.list-item
a
{
color
:
#666
}
.avue-data-pay
.list-item-icon
{
color
:
#515a6e
;
margin-right
:
8px
}
.avue-data-pay
.list-item--link
{
font-size
:
12px
;
color
:
#2d8cf0
}
.avue-data-pay
.list-item--no
,
.avue-data-pay
.list-item--no
+
span
{
color
:
#c5c8ce
}
.data-price
.item
{
margin
:
0
20px
;
text-align
:
center
;
-webkit-box-shadow
:
2px
3px
15px
#eee
;
box-shadow
:
2px
3px
15px
#eee
}
.data-price
.item
:hover
{
border
:
1px
solid
#00a680
}
.data-price
.item
:hover
.body
{
color
:
#fff
;
background-color
:
#00a680
}
.data-price
.item
:hover
.body
::after
{
border-top-color
:
#00a680
}
.data-price
.item
:hover
.list
{
color
:
#00a680
}
.data-price
.item
:hover
.price
{
color
:
#fff
}
.data-price
.item
.title
{
height
:
80px
;
line-height
:
80px
;
font-size
:
18px
;
color
:
#333
}
.data-price
.item
.body
,
.data-price
.item
.price
{
margin
:
0
0
50px
;
line-height
:
120px
;
height
:
120px
;
color
:
#6b6b6b
}
.data-price
.item
.price
{
padding
:
0
8px
;
font-size
:
42px
}
.data-price
.item
.append
{
font-size
:
16px
}
.data-price
.item
.body
{
position
:
relative
;
padding
:
0
;
background-color
:
#f4f4f4
;
font-size
:
42px
}
.data-price
.item
.body
::before
{
content
:
"¥"
;
font-size
:
16px
;
font-weight
:
400
}
.data-price
.item
.body
::after
{
content
:
''
;
position
:
absolute
;
display
:
block
;
width
:
0
;
height
:
0
;
bottom
:
-15px
;
left
:
50%
;
-webkit-transform
:
translateX
(
-50%
);
transform
:
translateX
(
-50%
);
border-color
:
#f4f4f4
transparent
transparent
;
border-style
:
solid
;
border-width
:
20px
30px
0
}
.data-price
.item
.list
{
padding-bottom
:
30px
;
color
:
#666
;
font-size
:
14px
}
.avue-data-panel
.item
{
padding
:
0
30px
;
margin
:
0
20px
;
cursor
:
pointer
;
height
:
108px
;
font-size
:
12px
;
position
:
relative
;
overflow
:
hidden
;
color
:
#666
;
background
:
#fff
;
-webkit-box-shadow
:
4px
4px
40px
rgba
(
0
,
0
,
0
,
.05
);
box-shadow
:
4px
4px
40px
rgba
(
0
,
0
,
0
,
.05
);
border-color
:
rgba
(
0
,
0
,
0
,
.05
);
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
-webkit-box-pack
:
justify
;
-ms-flex-pack
:
justify
;
justify-content
:
space-between
}
.avue-data-panel
.item-icon
{
font-size
:
52px
}
.avue-data-panel
.item-info
{
text-align
:
center
}
.avue-data-panel
.item-title
{
line-height
:
18px
;
color
:
rgba
(
0
,
0
,
0
,
.45
);
font-size
:
16px
;
margin-bottom
:
12px
}
.avue-data-panel
.item-count
{
font-size
:
20px
}
[
class
^=
avue-data-
]
a
,[
class
^=
data-
]
a
{
text-decoration
:
none
}
@-webkit-keyframes
rotating
{
from
{
-webkit-transform
:
rotate
(
0
);
transform
:
rotate
(
0
)}
to
{
-webkit-transform
:
rotate
(
360deg
);
transform
:
rotate
(
360deg
)}}
@keyframes
rotating
{
from
{
-webkit-transform
:
rotate
(
0
);
transform
:
rotate
(
0
)}
to
{
-webkit-transform
:
rotate
(
360deg
);
transform
:
rotate
(
360deg
)}}
.avue-echart-tabs
.el-select
{
width
:
100%
}
.avue-echart-tabs
.el-input
,
.avue-echart-tabs
.el-select
,
.avue-echart-tabs
input
{
height
:
100%
}
.avue-echart-tabs
.el-input
{
font-size
:
inherit
}
.avue-echart-tabs__list
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-ms-flex-pack
:
distribute
;
justify-content
:
space-around
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
height
:
100%
}
.avue-echart-pie__title
,
.avue-echart-tabs__item
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
height
:
100%
;
width
:
100%
}
.avue-echart-tabs__icon
{
margin-right
:
10px
}
.avue-echart-tabs__item
{
display
:
flex
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-echart-iframe
iframe
{
border
:
none
;
width
:
100%
;
height
:
100%
}
.avue-echart-text
{
overflow
:
hidden
}
.avue-echart-text__box
{
width
:
100%
;
height
:
100%
}
.avue-echart-text__text
{
display
:
block
;
text-decoration
:
none
}
.avue-echart-swiper
.el-carousel
,
.avue-echart-swiper
.el-carousel__container
{
height
:
100%
}
.avue-echart-swiper
img
{
width
:
100%
;
height
:
100%
;
-webkit-user-select
:
none
;
-moz-user-select
:
none
;
-ms-user-select
:
none
;
user-select
:
none
}
.avue-echart-pie__title
{
position
:
absolute
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
}
.avue-echart-slide
.swiper-container
{
width
:
100%
;
height
:
100%
}
.avue-echart-slide
.swiper-slide
{
text-align
:
center
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
}
.avue-echart-table__body
{
position
:
relative
;
overflow
:
hidden
}
.avue-echart-table__menu
{
position
:
absolute
;
left
:
0
}
.avue-echart-table__menu
i
{
margin-right
:
20px
;
font-size
:
24px
}
.avue-echart-table__allview
{
opacity
:
.9
}
.avue-echart-table__allview
.el-table--enable-row-hover
.el-table__body
tr
:hover
>
td
{
background-color
:
#333
}
.avue-echart-table__tr
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
}
.avue-echart-table__tr--line
{
-webkit-transition
:
all
.5s
;
transition
:
all
.5s
;
width
:
100%
;
position
:
absolute
}
.avue-echart-table__td
{
-webkit-box-flex
:
1
;
-ms-flex
:
1
;
flex
:
1
;
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
}
.avue-echart-table__header
{
margin-bottom
:
20px
;
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-pack
:
end
;
-ms-flex-pack
:
end
;
justify-content
:
flex-end
;
border-bottom-width
:
0
}
.avue-echart-table__index
{
margin
:
0
auto
;
width
:
30px
;
height
:
30px
;
line-height
:
30px
;
text-align
:
center
;
color
:
#fff
;
background-color
:
#144280
;
border-radius
:
100%
}
.avue-echart-table__index--1
{
background-color
:
#fdd706
}
.avue-echart-table__index--2
,
.avue-echart-table__index--3
{
background-color
:
#1f94f4
}
.avue-echart-table__item
{
display
:
inline-block
;
padding
:
5px
10px
;
border-style
:
solid
;
border-width
:
1px
}
.avue-echart-table__item--active
{
color
:
#fff
!important
}
.avue-echart-table
table
{
width
:
100%
;
border-width
:
1px
;
border-style
:
solid
}
.avue-echart-table
td
,
.avue-echart-table
th
{
border-width
:
0
0
1px
;
border-style
:
solid
;
font-size
:
16px
;
font-weight
:
300
}
.avue-echart-table--line
,
.avue-echart-table--line
td
,
.avue-echart-table--line
th
{
border
:
none
!important
}
.avue-echart-header
{
padding
:
10px
}
.avue-echart-header--center
{
text-align
:
center
}
.avue-echart-header--right
{
text-align
:
right
}
.avue-echart-header__title
{
margin-right
:
5px
;
font-size
:
18px
;
font-weight
:
400
;
color
:
#333
;
text-decoration
:
none
}
.avue-echart-header__info
{
display
:
inline-block
}
.avue-echart-progress
{
position
:
relative
}
.avue-echart-progress__text--circle
{
position
:
absolute
;
width
:
100%
;
top
:
50%
;
-webkit-transform
:
translate
(
0
,
-50%
);
transform
:
translate
(
0
,
-50%
);
text-align
:
center
}
.avue-echart-progress__text--line
{
margin-bottom
:
20px
;
position
:
relative
;
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
}
.avue-echart-progress__text--line
p
{
margin-right
:
5px
}
.avue-echart-img--rotate
{
-webkit-animation
:
rotating
0s
linear
infinite
;
animation
:
rotating
0s
linear
infinite
}
.avue-echart-flop
.el-tooltip
{
width
:
100%
}
.avue-echart-flop__count
{
-webkit-box-flex
:
1
;
-ms-flex
:
1
;
flex
:
1
;
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-ms-flex-wrap
:
wrap
;
flex-wrap
:
wrap
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
}
.avue-echart-flop__item
{
font-family
:
"Microsoft Yahei"
;
font-size
:
28px
;
font-weight
:
400
;
color
:
#fff
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
display
:
inline-block
}
.avue-echart-flop__item--img
{
padding
:
0
5px
;
border-image-slice
:
10
16
15
10
fill
;
border-width
:
10px
16px
15px
10px
;
border-style
:
solid
}
.avue-echart-flop__item--none
{
padding
:
0
!important
;
border-width
:
0
!important
;
background-color
:
transparent
!important
}
.avue-echart-map
{
position
:
relative
}
.avue-echart-map__bg
{
position
:
absolute
;
top
:
0
;
left
:
0
}
.avue-echart-map__box
{
position
:
relative
}
.avue-echart-map__location
{
position
:
absolute
;
background-color
:
red
;
width
:
10px
;
height
:
10px
}
.avue-echart-map__location
:hover
{
background-color
:
green
}
.avue-form__mobile
{
padding-bottom
:
20px
;
background-color
:
#f0f0f0
}
.avue-form__mobile-menu
{
margin-top
:
30px
;
padding
:
0
5px
}
.avue-form__mobile
.van-cell
{
padding
:
10px
15px
10px
20px
}
.avue-form__mobile
.van-cell--required
::before
{
top
:
12px
}
.avue-form__mobile
.van-cell
:not
(
:last-child
)
::after
{
display
:
none
}
.avue-form__mobile
.van-cell-group
{
background-color
:
transparent
}
.avue-form__mobile
.van-switch
{
display
:
block
;
float
:
right
}
.avue-form__mobile
.van-cell__title
{
width
:
80px
;
-webkit-box-flex
:
inherit
;
-ms-flex
:
inherit
;
flex
:
inherit
}
.avue-form__mobile
.van-cell__value
{
font-size
:
13px
;
color
:
#333
}
.avue-upload__mobile-upload
{
margin-top
:
-8px
;
width
:
70px
;
height
:
70px
;
background-color
:
#fbfdff
;
border
:
1px
dashed
#ccc
;
border-radius
:
3px
;
line-height
:
80px
;
text-align
:
center
}
.avue-upload__mobile-upload
i
{
color
:
#666
;
font-size
:
24px
}
.avue-upload__mobile-list
{
padding
:
10px
20px
;
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
-ms-flex-wrap
:
wrap
;
flex-wrap
:
wrap
}
.avue-upload__mobile-menu
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-align
:
center
;
-ms-flex-align
:
center
;
align-items
:
center
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
;
position
:
absolute
;
width
:
100%
;
height
:
100%
;
left
:
0
;
top
:
0
;
color
:
#fff
;
background-color
:
rgba
(
0
,
0
,
0
,
.2
);
z-index
:
1024
;
border-radius
:
5px
}
.avue--detail
.el-radio
,
.avue--detail
.el-radio
.el-radio__inner
,
.avue-canvas
{
display
:
none
}
.avue-upload__mobile-menu
i
{
margin
:
0
5px
}
.avue-upload__mobile-item
{
position
:
relative
;
margin-right
:
8px
;
margin-bottom
:
10px
;
width
:
70px
;
height
:
70px
;
border
:
1px
solid
#eee
;
border-radius
:
5px
}
.avue-upload__mobile-item
img
{
width
:
100%
;
height
:
100%
;
border-radius
:
5px
}
body
{
font-family
:
Chinese
Quote
,
-apple-system
,
BlinkMacSystemFont
,
Segoe
UI
,
PingFang
SC
,
Hiragino
Sans
GB
,
Microsoft
YaHei
,
Helvetica
Neue
,
Helvetica
,
Arial
,
sans-serif
,
Apple
Color
Emoji
,
Segoe
UI
Emoji
,
Segoe
UI
Symbol
}
*
{
outline
:
0
}
.avue-ghost
{
opacity
:
.5
;
background
:
#c8ebfb
}
.avue--disabled
{
color
:
#ccc
}
.avue--detail
.el-input.is-disabled
.el-input__inner
,
.avue--detail
.el-range-editor.is-disabled
,
.avue--detail
.el-range-editor.is-disabled
input
,
.avue--detail
.el-textarea.is-disabled
.el-textarea__inner
{
color
:
#606266
;
background-color
:
#fff
}
.avue--detail
.hover-row
td
{
background-color
:
#fff
!important
}
.avue--detail
.el-input-group__append
,
.avue--detail
.el-input-group__prepend
{
background-color
:
transparent
;
border
:
none
}
.avue--detail
.el-checkbox__input.is-disabled
+
span
.el-checkbox__label
{
color
:
#606266
}
.avue--detail
.el-input__inner
,
.avue--detail
.el-textarea__inner
{
border
:
none
}
.avue--detail
.el-input__inner
::-webkit-input-placeholder
,
.avue--detail
.el-textarea__inner
::-webkit-input-placeholder
{
color
:
transparent
!important
}
.avue--detail
.el-input__inner
::-moz-placeholder
,
.avue--detail
.el-textarea__inner
::-moz-placeholder
{
color
:
transparent
!important
}
.avue--detail
.el-input__inner
::-ms-input-placeholder
,
.avue--detail
.el-textarea__inner
::-ms-input-placeholder
{
color
:
transparent
!important
}
.avue--detail
.el-radio
.is-disabled.is-checked
,
.avue--detail
.el-radio.is-checked
{
display
:
inline-block
;
color
:
#606266
}
.avue--detail
.el-radio
.is-disabled.is-checked
.el-radio__label
,
.avue--detail
.el-radio.is-checked
.el-radio__label
{
padding-left
:
14px
;
color
:
#606266
;
font-weight
:
400
;
font-size
:
14px
}
.avue--detail
.el-checkbox
{
display
:
none
}
.avue--detail
.el-checkbox
.is-disabled.is-checked
,
.avue--detail
.el-checkbox.is-checked
{
display
:
inline-block
;
color
:
#606266
}
.avue--detail
.el-checkbox
.is-disabled.is-checked
.el-checkbox__label
,
.avue--detail
.el-checkbox.is-checked
.el-checkbox__label
{
padding-left
:
14px
;
color
:
#606266
;
font-weight
:
400
;
font-size
:
14px
}
.avue--detail
.el-checkbox
.el-checkbox__inner
,
.avue--detail
.el-form-item.is-required
:not
(
.is-no-asterisk
)
.el-form-item__label-wrap
>
.el-form-item__label
:before
,
.avue--detail
.el-form-item.is-required
:not
(
.is-no-asterisk
)>
.el-form-item__label
:before
,
.avue--detail
.el-input__suffix
{
display
:
none
}
.avue--view
.el-input.is-disabled
.el-input__inner
,
.avue--view
.el-textarea.is-disabled
.el-textarea__inner
{
background-color
:
#fff
;
border-color
:
#dcdfe6
;
color
:
#606266
}
.avue-grid
{
position
:
absolute
;
top
:
0
;
left
:
0
;
width
:
100%
;
height
:
100%
;
background-size
:
20px
20px
,
20px
20px
;
background-image
:
linear-gradient
(
rgba
(
0
,
0
,
0
,
.1
)
1px
,
transparent
0
),
linear-gradient
(
90deg
,
rgba
(
0
,
0
,
0
,
.1
)
1px
,
transparent
0
)}
.avue-mask
{
position
:
fixed
;
top
:
0
;
bottom
:
0
;
left
:
0
;
right
:
0
;
background-color
:
rgba
(
55
,
55
,
55
,
.6
);
height
:
100%
;
z-index
:
1000
}
.avue--card
{
-webkit-box-shadow
:
2px
1px
8px
rgba
(
0
,
0
,
0
,
.15
);
box-shadow
:
2px
1px
8px
rgba
(
0
,
0
,
0
,
.15
);
border-radius
:
5px
}
.avue-dialog
.el-dialog
{
border-radius
:
2px
}
.avue-dialog
.el-dialog__title
,
.avue-dialog
.el-drawer__header
{
color
:
rgba
(
0
,
0
,
0
,
.85
);
font-weight
:
500
;
word-wrap
:
break-word
}
.el-select-dropdown
.el-tree-node__label
,
.el-select-dropdown__item.selected
{
font-weight
:
400
}
.avue-dialog
.el-drawer__header
{
margin
:
0
;
min-height
:
20px
;
padding
:
16px
10px
16px
24px
;
border-bottom
:
1px
solid
#f0f0f0
}
.avue-dialog
.el-drawer__body
{
padding
:
30px
10px
}
.avue-dialog
.el-dialog__footer
{
padding
:
10px
16px
;
border-top
:
1px
solid
#f0f0f0
}
.avue-dialog
.el-dialog__header
{
padding
:
16px
24px
;
border-bottom
:
1px
solid
#f0f0f0
}
.avue-dialog
iframe
{
width
:
100%
;
height
:
100%
;
border
:
0
;
overflow
:
hidden
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
}
.avue-queue--block
{
display
:
inline-block
}
.avuex-opacity
{
opacity
:
0
}
.avuex-opacity--active
{
opacity
:
1
}
.avue-cell
{
border-top
:
1px
solid
#eee
;
background-color
:
#fff
}
.avue-cell-group
{
padding-top
:
10px
}
.avue-cell--row
{
margin-bottom
:
10px
;
border-bottom
:
1px
solid
#eee
}
.avue-cell__tags
{
margin-right
:
10px
}
.avue-cell__tip
{
margin-left
:
10px
;
font-size
:
12px
;
color
:
#999
}
.avue-cell__title
{
margin
:
0
;
padding
:
5px
15px
5px
20px
;
font-size
:
14px
;
color
:
#323233
;
line-height
:
24px
}
.avue-cell__title
+
.van-cell-group
{
padding-left
:
5px
}
.avue-cell__title--required
{
position
:
relative
}
.avue-cell__title--required
::before
{
content
:
'*'
;
position
:
absolute
;
left
:
7px
;
top
:
7px
;
font-size
:
14px
;
color
:
#f44
}
.fade-enter-active
,
.fade-leave-active
{
-webkit-transition
:
opacity
.3s
;
transition
:
opacity
.3s
}
.fade-enter
,
.fade-leave-to
{
opacity
:
0
}
.avue-input__content
{
position
:
relative
}
.avue-input__tip
{
position
:
absolute
;
bottom
:
5px
;
right
:
20px
;
color
:
#999
}
.avue-input__tip--input
{
top
:
1px
;
right
:
28px
;
z-index
:
2
}
.avue-crud
.avue-input-number
,
.avue-crud
.el-cascader
,
.avue-crud
.el-date-editor.el-input
,
.avue-crud
.el-date-editor.el-input__inner
,
.avue-crud
.el-select
,
.avue-form
.avue-input-number
,
.avue-form
.el-cascader
,
.avue-form
.el-date-editor.el-input
,
.avue-form
.el-date-editor.el-input__inner
,
.avue-form
.el-select
{
width
:
100%
!important
}
.avue-crud
.el-input-number
.el-input__inner
,
.avue-form
.el-input-number
.el-input__inner
{
text-align
:
left
}
.avue-crud
.avue-crud__left
.el-button
+
.el-button
,
.avue-crud
.avue-crud__right
.el-button
+
.el-button
,
.avue-form
.avue-crud__left
.el-button
+
.el-button
,
.avue-form
.avue-crud__right
.el-button
+
.el-button
{
margin-left
:
0
}
.avue-crud
.avue-crud__left
.el-button
,
.avue-crud
.avue-crud__right
.el-button
,
.avue-form
.avue-crud__left
.el-button
,
.avue-form
.avue-crud__right
.el-button
{
margin-right
:
8px
;
margin-bottom
:
8px
}
.avue-crud
.el-tree--highlight-current
.el-tree-node.is-current
>
.el-tree-node__content
,
.avue-form
.el-tree--highlight-current
.el-tree-node.is-current
>
.el-tree-node__content
{
color
:
#409EFF
}
.avue-crud
.el-tree-node__label
,
.avue-form
.el-tree-node__label
{
margin-left
:
8px
}
.avue-crud
.el-input__inner
,
.avue-form
.el-input__inner
{
height
:
38px
;
line-height
:
38px
}
.avue-crud
.el-range-editor--small
,
.avue-form
.el-range-editor--small
{
height
:
32px
;
line-height
:
32px
}
.avue-crud
.el-range-editor--mini
,
.avue-form
.el-range-editor--mini
{
height
:
28px
;
line-height
:
28px
}
.avue-crud
.el-input--small
input
,
.avue-form
.el-input--small
input
{
height
:
32px
;
line-height
:
32px
}
.avue-crud
.el-input--mini
input
,
.avue-form
.el-input--mini
input
{
height
:
28px
;
line-height
:
28px
}
.avue-crud
.el-table--medium
td
,
.avue-form
.el-table--medium
td
{
padding
:
7px
0
!important
}
.avue-crud
.el-tooltip__popper
,
.avue-form
.el-tooltip__popper
{
max-width
:
60%
}
.avue-crud
.el-dropdown-menu__item
,
.avue-form
.el-dropdown-menu__item
{
line-height
:
25px
}
.avue-crud
.el-table-filter__list
,
.avue-form
.el-table-filter__list
{
width
:
100%
;
height
:
300px
;
overflow-y
:
auto
}
.el-form-item--mini
.el-color-picker--mini
,
.el-form-item--mini
.el-color-picker--mini
.el-color-picker__trigger
{
width
:
23px
;
height
:
23px
}
.el-dropdown-menu
.el-button--text
{
width
:
100%
!important
}
.el-pagination__editor.el-input
.el-input__inner
{
line-height
:
28px
}
.el-drawer__body
{
height
:
100%
}
.el-checkbox
:last-of-type
{
margin-right
:
8px
}
.is-error
.el-input-number__decrease
,
.is-error
.el-input-number__increase
,
.is-success
.el-input-number__decrease
,
.is-success
.el-input-number__increase
{
right
:
25px
!important
}
.el-input-number__decrease
,
.el-input-number__increase
{
background-color
:
transparent
;
border-left
:
none
!important
;
color
:
#c0c4cc
!important
;
font-size
:
16px
!important
}
.el-input-number__increase
{
border-bottom
:
none
!important
}
.el-table
colgroup
.gutter
,
.el-table
th
.gutter
{
display
:
table-cell
!important
}
.el-transfer
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
}
.el-tree-node.is-current
>
.el-tree-node__content
{
color
:
#409eff
;
background-color
:
#F5F7FA
}
.el-transfer-panel__item
{
width
:
100%
}
.el-select-dropdown
.el-scrollbar
.el-scrollbar__view
.el-select-dropdown__item
{
height
:
auto
;
padding
:
0
}
.el-select-dropdown
.el-scrollbar
.el-scrollbar__view
.el-select-dropdown__item
>
span
{
padding
:
0
20px
}
.el-select-dropdown
ul
li
>>>
.el-tree
.el-tree-node__content
{
height
:
auto
;
padding
:
0
20px
}
.el-select-dropdown
.el-tree
>>>
.is-current
.el-tree-node__label
{
color
:
#409EFF
;
font-weight
:
700
}
.el-select-dropdown
.el-tree
>>>
.is-current
.el-tree-node__children
.el-tree-node__label
{
color
:
#606266
;
font-weight
:
400
}
.el-form-item.is-error
.avue-dynamic
{
border
:
1px
solid
#F56C6C
;
border-radius
:
3px
}
.avue-theme--dark
body
{
background
:
#000
}
.avue-theme--dark
.el-pagination.is-background
.btn-next
,
.avue-theme--dark
.el-pagination.is-background
.btn-prev
,
.avue-theme--dark
.el-pagination.is-background
.el-pager
li
{
background-color
:
#151518
;
color
:
#525256
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
border
:
1px
solid
#313135
}
.avue-theme--dark
.el-pagination.is-background
.el-pager
li
:not
(
.disabled
)
.active
{
background-color
:
#151518
;
border-color
:
#409EFF
}
.avue-theme--dark
.el-cascader-menu
{
border-right
:
solid
1px
#313135
}
.avue-theme--dark
.el-select-dropdown.is-multiple
.el-select-dropdown__item.selected
,
.avue-theme--dark
.el-select-dropdown.is-multiple
.el-select-dropdown__item.selected.hover
{
background-color
:
#151518
}
.avue-theme--dark
.el-cascader__dropdown
,
.avue-theme--dark
.el-input__inner
,
.avue-theme--dark
.el-range-input
,
.avue-theme--dark
.el-select-dropdown
{
background-color
:
#151518
;
color
:
#999
;
border
:
1px
solid
#313135
}
.avue-theme--dark
.el-cascader__dropdown
:hover
,
.avue-theme--dark
.el-input__inner
:hover
,
.avue-theme--dark
.el-range-input
:hover
,
.avue-theme--dark
.el-select-dropdown
:hover
{
border-color
:
#409EFF
}
.avue-theme--dark
.el-cascader__dropdown
::-webkit-input-placeholder
,
.avue-theme--dark
.el-input__inner
::-webkit-input-placeholder
,
.avue-theme--dark
.el-range-input
::-webkit-input-placeholder
,
.avue-theme--dark
.el-select-dropdown
::-webkit-input-placeholder
{
color
:
#525256
}
.avue-theme--dark
.el-cascader__dropdown
::-moz-placeholder
,
.avue-theme--dark
.el-input__inner
::-moz-placeholder
,
.avue-theme--dark
.el-range-input
::-moz-placeholder
,
.avue-theme--dark
.el-select-dropdown
::-moz-placeholder
{
color
:
#525256
}
.avue-theme--dark
.el-cascader__dropdown
:-moz-placeholder
,
.avue-theme--dark
.el-input__inner
:-moz-placeholder
,
.avue-theme--dark
.el-range-input
:-moz-placeholder
,
.avue-theme--dark
.el-select-dropdown
:-moz-placeholder
{
color
:
#525256
}
.avue-theme--dark
.el-cascader__dropdown
:-ms-input-placeholder
,
.avue-theme--dark
.el-input__inner
:-ms-input-placeholder
,
.avue-theme--dark
.el-range-input
:-ms-input-placeholder
,
.avue-theme--dark
.el-select-dropdown
:-ms-input-placeholder
{
color
:
#525256
}
.avue-theme--dark
.el-form-item__label
{
color
:
#9a9a9f
}
.avue-theme--dark
.el-switch__core
{
background
:
#151518
;
border-color
:
#151518
}
.avue-theme--dark
.avue-group__item
{
background-color
:
#000
}
.avue-theme--dark
.el-table--border
,
.avue-theme--dark
.el-table--group
{
border-color
:
#313135
}
.avue-theme--dark
.el-table__body
tr
.current-row
>
td
,
.avue-theme--dark
.el-table__body
tr
.hover-row
>
td
{
background-color
:
#151518
}
.avue-theme--dark
.el-table--border
td
,
.avue-theme--dark
.el-table--border
th
,
.avue-theme--dark
.el-table__body-wrapper
.el-table--border.is-scrolling-left
~
.el-table__fixed
{
border-color
:
#999
}
.avue-theme--dark
.avue-crud
.el-table
th
,
.avue-theme--dark
.el-table
,
.avue-theme--dark
.el-table
th
,
.avue-theme--dark
.el-table
tr
,
.avue-theme--dark
.el-table__fixed-footer-wrapper
tbody
td
,
.avue-theme--dark
.el-table__footer-wrapper
tbody
td
,
.avue-theme--dark
.el-table__header-wrapper
tbody
td
{
background-color
:
#151518
;
color
:
#999
;
border-color
:
#999
}
@media
screen
and
(
max-width
:
992px
){
.el-dialog__footer
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
;
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
}
.el-button
+
.el-button
{
margin-left
:
0
}
.avue-upload__avatar
,
.avue-upload__icon
,
.el-upload--picture-card
,
.el-upload-list--picture-card
.el-upload-list__item
{
width
:
100px
;
height
:
100px
;
line-height
:
100px
}
.avue-crud
.el-form-item
,
.avue-crud__title
.avue-date__radio
,
.avue-crud__title
.avue-date__radio
.el-radio-group
.el-radio-button__inner
,
.avue-crud__title
.avue-date__radio
.el-radio-group
label
{
width
:
100%
}
.avue-tip
{
display
:
none
}
.avue-crud__menu
,
.avue-crud__title
{
display
:
block
!important
}
.avue-crud
.el-form-item__label
{
-webkit-box-flex
:
1
;
-ms-flex
:
1
;
flex
:
1
}
.avue-crud
.el-form-item__content
{
-webkit-box-flex
:
5
;
-ms-flex
:
5
;
flex
:
5
}
.avue-crud__searchMenu
{
text-align
:
center
}
.avue-crud__title
p
{
margin-bottom
:
20px
}
.avue-crud__title
.avue-date__group
{
-webkit-box-pack
:
center
;
-ms-flex-pack
:
center
;
justify-content
:
center
}
.avue-crud__title
.avue-date__date
{
display
:
none
}
.avue-crud__title
.avue-date__radio
.el-radio-group
{
display
:
-webkit-box
;
display
:
-ms-flexbox
;
display
:
flex
}
.avue-crud__title
.avue-date__radio
.el-radio-button
:last-child
.el-radio-button__inner
{
border-radius
:
0
4px
4px
0
;
border-right
:
1px
solid
#dcdfe6
}}
#nprogress
{
pointer-events
:
none
}
#nprogress
.bar
{
background
:
#29d
;
position
:
fixed
;
z-index
:
1031
;
top
:
0
;
left
:
0
;
width
:
100%
;
height
:
2px
}
#nprogress
.peg
{
display
:
block
;
position
:
absolute
;
right
:
0
;
width
:
100px
;
height
:
100%
;
-webkit-box-shadow
:
0
0
10px
#29d
,
0
0
5px
#29d
;
box-shadow
:
0
0
10px
#29d
,
0
0
5px
#29d
;
opacity
:
1
;
-webkit-transform
:
rotate
(
3deg
)
translate
(
0
,
-4px
);
transform
:
rotate
(
3deg
)
translate
(
0
,
-4px
)}
#nprogress
.spinner
{
display
:
block
;
position
:
fixed
;
z-index
:
1031
;
top
:
15px
;
right
:
15px
}
#nprogress
.spinner-icon
{
width
:
18px
;
height
:
18px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
border
:
2px
solid
transparent
;
border-top-color
:
#29d
;
border-left-color
:
#29d
;
border-radius
:
50%
;
-webkit-animation
:
nprogress-spinner
.4s
linear
infinite
;
animation
:
nprogress-spinner
.4s
linear
infinite
}
.nprogress-custom-parent
{
overflow
:
hidden
;
position
:
relative
}
.nprogress-custom-parent
#nprogress
.bar
,
.nprogress-custom-parent
#nprogress
.spinner
{
position
:
absolute
}
@-webkit-keyframes
nprogress-spinner
{
0
%
{
-webkit-transform
:
rotate
(
0
)}
100
%
{
-webkit-transform
:
rotate
(
360deg
)}}
@keyframes
nprogress-spinner
{
0
%
{
-webkit-transform
:
rotate
(
0
);
transform
:
rotate
(
0
)}
100
%
{
-webkit-transform
:
rotate
(
360deg
);
transform
:
rotate
(
360deg
)}}
\ No newline at end of file
app_web/src/app-register.ts
浏览文件 @
71ace5c0
...
...
@@ -13,6 +13,7 @@ import { utilServiceRegister } from '@/utilservice/util-service-register';
import
{
entityServiceRegister
}
from
'@/service/entity-service-register'
;
import
{
counterServiceRegister
}
from
'@/counter/counter-service-register'
;
import
{
codeListRegister
}
from
'@codelist/codelist-register'
;
import
{
messageServiceRegister
}
from
'@/message/message-service-register'
;
import
InputBox
from
'./components/input-box/input-box.vue'
import
AppKeepAlive
from
'./components/app-keep-alive/app-keep-alive.vue'
...
...
@@ -87,11 +88,15 @@ import ActionTimeline from './components/action-timeline/action-timeline.vue'
import
CronEditor
from
'./components/cron-editor/cron-editor.vue'
import
AppMessagePopover
from
'./components/app-message-popover/app-message-popover.vue'
import
AppPanelField
from
'./components/app-panel-field/app-panel-field.vue'
import
AppPanel
Item
from
'./components/app-panel-item/app-panel-item
.vue'
import
AppPanel
Button
from
'./components/app-panel-button/app-panel-button
.vue'
import
AppDepartmentPersonnel
from
'./components/app-department-personnel/app-department-personnel.vue'
import
DiskFileUpload
from
'./components/disk-file-upload/disk-file-upload.vue'
import
AvueCustomForm
from
'./components/avue-custom-form/avue-custom-form.vue'
import
DiskImageUpload
from
'./components/disk-image-upload/disk-image-upload.vue'
import
AppFormPart
from
'./components/app-form-part/app-form-part.vue'
import
AppAlert
from
'./components/app-alert/app-alert.vue'
import
AppAlertGroup
from
'./components/app-alert-group/app-alert-group.vue'
import
AppRawItem
from
'./components/app-rawitem/app-rawitem.vue'
// 全局挂载UI实体服务注册中心
window
[
'uiServiceRegister'
]
=
uiServiceRegister
;
...
...
@@ -105,6 +110,8 @@ window['entityServiceRegister'] = entityServiceRegister;
window
[
'counterServiceRegister'
]
=
counterServiceRegister
;
// 全局挂载代码表服务注册中心
window
[
'codeListRegister'
]
=
codeListRegister
;
// 全局挂载视图消息服务注册中心
window
[
'messageServiceRegister'
]
=
messageServiceRegister
;
export
const
AppComponents
=
{
install
(
v
:
any
,
opt
:
any
)
{
...
...
@@ -118,7 +125,7 @@ export const AppComponents = {
v
.
prototype
.
$viewTool
=
ViewTool
;
v
.
prototype
.
$uiActionTool
=
UIActionTool
;
v
.
component
(
'app-department-personnel'
,
AppDepartmentPersonnel
);
v
.
component
(
'app-panel-
item'
,
AppPanelItem
);
v
.
component
(
'app-panel-
button'
,
AppPanelButton
);
v
.
component
(
'app-panel-field'
,
AppPanelField
);
v
.
component
(
'app-full-scren'
,
AppFullScren
);
v
.
component
(
'app-lock-scren'
,
AppLockScren
);
...
...
@@ -198,5 +205,9 @@ export const AppComponents = {
v
.
component
(
'disk-file-upload'
,
DiskFileUpload
);
v
.
component
(
'avue-custom-form'
,
AvueCustomForm
);
v
.
component
(
'disk-image-upload'
,
DiskImageUpload
);
v
.
component
(
'app-form-part'
,
AppFormPart
);
v
.
component
(
'app-alert'
,
AppAlert
);
v
.
component
(
'app-alert-group'
,
AppAlertGroup
);
v
.
component
(
'app-rawitem'
,
AppRawItem
);
},
};
\ No newline at end of file
app_web/src/codelist/codelist-service.ts
0 → 100644
浏览文件 @
71ace5c0
import
store
from
'@/store'
;
import
EntityService
from
'@/service/entity-service'
;
/**
* 动态代码表服务类
*
* @export
* @class CodeListService
*/
export
default
class
CodeListService
{
/**
* Vue 状态管理器
*
* @private
* @type {(any | null)}
* @memberof CodeListService
*/
private
$store
:
any
;
constructor
(
opts
:
any
=
{})
{
this
.
$store
=
store
;
}
/**
* 获取状态管理器
*
* @returns {(any | null)}
* @memberof CodeListService
*/
public
getStore
():
any
{
return
this
.
$store
;
}
/**
* 动态代码表缓存(加载中)
*
* @type {Map<string,any>}
* @memberof CodeListService
*/
public
static
codelistCache
:
Map
<
string
,
any
>
=
new
Map
();
/**
* 动态代码表缓存(已完成)
*
* @type {Map<string,any>}
* @memberof CodeListService
*/
public
static
codelistCached
:
Map
<
string
,
any
>
=
new
Map
();
/**
* 数据服务基类
*
* @type {Minorentity}
* @memberof CodeListService
*/
public
entityService
:
EntityService
=
new
EntityService
();
/**
* 获取代码表服务
*
* @protected
* @param {string} name 实体名称
* @returns {Promise<any>}
* @memberof EntityService
*/
public
getService
(
name
:
string
):
Promise
<
any
>
{
return
(
window
as
any
)[
'codeListRegister'
].
getService
(
name
);
}
/**
* 获取静态代码表
*
* @param {string} tag 代码表标识
* @returns {Promise<any[]>}
* @memberof CodeListService
*/
public
getStaticItems
(
tag
:
string
):
Promise
<
any
[]
>
{
return
new
Promise
((
resolve
:
any
,
reject
:
any
)
=>
{
const
codelist
=
this
.
$store
.
getters
.
getCodeList
(
tag
);
if
(
codelist
)
{
let
items
:
Array
<
any
>
=
[...
JSON
.
parse
(
JSON
.
stringify
(
codelist
.
items
))];
resolve
(
items
);
}
})
}
/**
* 获取预定义代码表
*
* @param {string} tag 代码表标识
* @returns {Promise<any[]>}
* @memberof CodeListService
*/
public
getPredefinedItems
(
tag
:
string
,
data
?:
any
,
isloading
?:
boolean
):
Promise
<
any
[]
>
{
return
new
Promise
((
resolve
:
any
,
reject
:
any
)
=>
{
if
(
CodeListService
.
codelistCached
.
get
(
`
${
tag
}
`
)){
let
items
:
any
=
CodeListService
.
codelistCached
.
get
(
`
${
tag
}
`
).
items
;
if
(
items
.
length
>
0
)
resolve
(
items
);
}
const
callback
:
Function
=
(
tag
:
string
,
promise
:
Promise
<
any
>
)
=>
{
promise
.
then
((
res
:
any
)
=>
{
let
result
:
any
=
res
.
data
;
if
(
result
.
items
&&
result
.
items
.
length
>
0
){
CodeListService
.
codelistCached
.
set
(
`
${
tag
}
`
,{
items
:
result
.
items
});
return
resolve
(
result
.
items
);
}
else
{
return
resolve
([]);
}
}).
catch
((
result
:
any
)
=>
{
return
reject
(
result
);
})
}
// 加载中,UI又需要数据,解决连续加载同一代码表问题
if
(
CodeListService
.
codelistCache
.
get
(
`
${
tag
}
`
)){
callback
(
tag
,
CodeListService
.
codelistCache
.
get
(
`
${
tag
}
`
));
}
else
{
let
result
:
Promise
<
any
>
=
this
.
entityService
.
getPredefinedCodelist
(
tag
);
CodeListService
.
codelistCache
.
set
(
`
${
tag
}
`
,
result
);
callback
(
tag
,
result
);
}
})
}
/**
* 获取动态代码表
*
* @param {string} tag 代码表标识
* @param {string} context
* @returns {Promise<any[]>}
* @memberof CodeListService
*/
public
getItems
(
tag
:
string
,
context
:
any
=
{},
data
?:
any
,
isloading
?:
boolean
):
Promise
<
any
[]
>
{
let
_this
:
any
=
this
;
if
(
context
&&
context
.
srfsessionid
){
delete
context
.
srfsessionid
;
}
return
new
Promise
((
resolve
:
any
,
reject
:
any
)
=>
{
this
.
getService
(
tag
).
then
((
codelist
:
any
)
=>
{
if
(
Object
.
is
(
codelist
.
predefinedType
,
"RUNTIME"
)){
this
.
getPredefinedItems
(
tag
).
then
((
res
:
any
)
=>
{
resolve
(
res
);
})
return
;
}
let
isEnableCache
:
boolean
=
codelist
.
isEnableCache
;
let
cacheTimeout
:
any
=
codelist
.
cacheTimeout
;
// 启用缓存
if
(
isEnableCache
){
const
callback
:
Function
=
(
context
:
any
=
{},
data
:
any
=
{},
tag
:
string
,
promise
:
Promise
<
any
>
)
=>
{
promise
.
then
((
result
:
any
)
=>
{
if
(
result
.
length
>
0
){
CodeListService
.
codelistCached
.
set
(
`
${
JSON
.
stringify
(
context
)}
-
${
JSON
.
stringify
(
data
)}
-
${
tag
}
`
,{
items
:
result
});
CodeListService
.
codelistCache
.
delete
(
`
${
JSON
.
stringify
(
context
)}
-
${
JSON
.
stringify
(
data
)}
-
${
tag
}
`
);
return
resolve
(
result
);
}
else
{
return
resolve
([]);
}
}).
catch
((
result
:
any
)
=>
{
return
reject
(
result
);
})
}
// 加载完成,从本地缓存获取
if
(
CodeListService
.
codelistCached
.
get
(
`
${
JSON
.
stringify
(
context
)}
-
${
JSON
.
stringify
(
data
)}
-
${
tag
}
`
)){
let
items
:
any
=
CodeListService
.
codelistCached
.
get
(
`
${
JSON
.
stringify
(
context
)}
-
${
JSON
.
stringify
(
data
)}
-
${
tag
}
`
).
items
;
if
(
items
.
length
>
0
){
if
(
new
Date
().
getTime
()
<=
codelist
.
getExpirationTime
()){
return
resolve
(
items
);
}
}
}
if
(
codelist
)
{
// 加载中,UI又需要数据,解决连续加载同一代码表问题
if
(
CodeListService
.
codelistCache
.
get
(
`
${
JSON
.
stringify
(
context
)}
-
${
JSON
.
stringify
(
data
)}
-
${
tag
}
`
)){
callback
(
context
,
data
,
tag
,
CodeListService
.
codelistCache
.
get
(
`
${
JSON
.
stringify
(
context
)}
-
${
JSON
.
stringify
(
data
)}
-
${
tag
}
`
));
}
else
{
let
result
:
Promise
<
any
>
=
codelist
.
getItems
(
context
,
data
,
isloading
);
CodeListService
.
codelistCache
.
set
(
`
${
JSON
.
stringify
(
context
)}
-
${
JSON
.
stringify
(
data
)}
-
${
tag
}
`
,
result
);
codelist
.
setExpirationTime
(
new
Date
().
getTime
()
+
cacheTimeout
);
callback
(
context
,
data
,
tag
,
result
);
}
}
}
else
{
if
(
codelist
)
{
codelist
.
getItems
(
context
,
data
,
isloading
).
then
((
result
:
any
)
=>
{
resolve
(
result
);
}).
catch
((
error
:
any
)
=>
{
Promise
.
reject
([]);
})
}
else
{
return
Promise
.
reject
([]);
}
}
}).
catch
((
error
:
any
)
=>
{
console
.
warn
(
"获取代码表异常"
);
return
Promise
.
reject
([]);
})
})
}
}
\ No newline at end of file
app_web/src/components/app-alert-group/app-alert-group.vue
0 → 100644
浏览文件 @
71ace5c0
<
template
>
<div
class=
"app-alert-group"
>
<template
v-for=
"(item, index) in items"
>
<app-alert
:key=
"index"
:tag=
"item.tag"
:position=
"item.position"
/>
</
template
>
</div>
</template>
<
script
lang=
"ts"
>
import
{
Vue
,
Component
,
Prop
}
from
'vue-property-decorator'
;
import
ViewMessageGroupService
from
'@/message/view-message-group-service'
;
@
Component
({})
export
default
class
AppAlertGroup
extends
Vue
{
/**
* 视图消息组服务
*
* @type {any}
* @memberof AppAlertGroup
*/
public
viewMessageGroupService
=
ViewMessageGroupService
.
getInstance
();
/**
* 视图消息组tag
*
* @type {any}
* @memberof AppAlertGroup
*/
@
Prop
()
infoGroup
:
any
;
/**
* 视图消息组显示位置
*
* @type {any}
* @memberof AppAlertGroup
*/
@
Prop
()
position
:
any
;
/**
* 当前位置视图消息集合
*
* @type {any}
* @memberof AppAlertGroup
*/
public
items
:
any
[]
=
[];
/**
* Vue生命周期
*
* @memberof AppAlertGroup
*/
public
created
()
{
if
(
this
.
infoGroup
)
{
this
.
getItems
();
}
}
/**
* 获取当前位置视图消息集合
*
* @memberof AppAlertGroup
*/
public
getItems
()
{
this
.
viewMessageGroupService
.
getViewMessageDetailsByTag
(
this
.
infoGroup
).
then
((
response
:
any
)
=>
{
if
(
response
)
{
response
.
forEach
((
data
:
any
)
=>
{
if
(
this
.
position
&&
Object
.
is
(
this
.
position
,
data
.
position
))
{
this
.
items
.
push
(
data
);
}
if
(
Object
.
is
(
'TOP'
,
this
.
position
)
&&
Object
.
is
(
'POPUP'
,
data
.
position
))
{
this
.
items
.
push
(
data
);
}
})
}
}).
catch
(
error
=>
{
console
.
log
(
error
);
});
}
}
</
script
>
\ No newline at end of file
app_web/src/components/app-alert/app-alert.less
0 → 100644
浏览文件 @
71ace5c0
.el-message {
.el-message__content {
.title {
padding-bottom: 10px;
}
}
}
.app-alert-group {
.el-alert {
margin: 5px 0px;
}
}
\ No newline at end of file
app_web/src/components/app-alert/app-alert.vue
0 → 100644
浏览文件 @
71ace5c0
<
template
>
<div
class=
"app-alert"
>
<template
v-if=
"items && items.length > 0"
>
<template
v-for=
"(item, index) in items"
>
<template
v-if=
"item.hasContent && !Object.is('POPUP', item.position)"
>
<el-alert
:key=
"index"
v-show=
"item.showState"
:title=
"item.title"
:type=
"item.type"
:closable=
"item.closable"
@
close=
"alertClose(item)"
>
<template
slot
>
<span
v-html=
"item.content"
></span>
</
template
>
</el-alert>
</template>
</template>
</template>
</div>
</template>
<
script
lang=
"ts"
>
import
{
Vue
,
Component
,
Prop
}
from
'vue-property-decorator'
;
import
ViewMessageService
from
'@/message/view-message-service'
;
@
Component
({})
export
default
class
AppAlert
extends
Vue
{
/**
* 视图消息标识
*
* @type {any}
* @memberof AppAlert
*/
@
Prop
()
tag
:
any
;
/**
* 显示位置
*
* @type {any}
* @memberof AppAlert
*/
@
Prop
()
position
:
any
;
/**
* 视图消息对象
*
* @type {any}
* @memberof AppAlert
*/
public
items
:
any
[]
=
[];
/**
* 视图消息服务
*
* @type {ViewMessageService}
* @memberof AppAlert
*/
public
viewMessageService
=
ViewMessageService
.
getInstance
();
/**
* Vue生命周期
*
* @memberof AppAlert
*/
public
created
()
{
this
.
getData
().
then
((
result
:
any
)
=>
{
if
(
!
this
.
items
)
{
return
;
}
})
}
/**
* 获取视图消息对象
*
* @memberof AppAlert
*/
public
async
getData
()
{
let
response
:
any
=
await
this
.
viewMessageService
.
getViewMessageByTag
(
this
.
tag
,
null
,
null
)
if
(
response
&&
response
.
length
>
0
)
{
response
.
forEach
((
item
:
any
)
=>
{
let
tempData
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
item
));
if
(
!
tempData
.
type
)
{
tempData
.
type
=
"info"
;
}
// 判断是否存在内容
this
.
handleItemHasContent
(
tempData
);
tempData
.
closable
=
tempData
.
isEnableRemove
;
let
flag
=
this
.
handleItemCloseMode
(
tempData
);
this
.
handleItemPosition
(
tempData
,
flag
);
this
.
items
.
push
(
tempData
);
});
}
}
/**
* 处理数据项是否存在内容
*
* @memberof AppAlert
*/
public
handleItemHasContent
(
data
:
any
)
{
data
.
hasContent
=
true
;
if
(
!
data
.
title
&&
!
data
.
content
)
{
data
.
hasContent
=
false
;
}
}
/**
* 处理数据关闭模式
*
* @memberof AppAlert
*/
public
handleItemCloseMode
(
data
:
any
)
{
let
flag
=
true
;
data
.
showState
=
true
;
if
(
data
.
closeMode
||
data
.
closeMode
==
0
)
{
if
(
data
.
closeMode
==
1
)
{
const
id
=
this
.
$store
.
getters
.
getViewMessage
(
data
.
codename
);
if
(
id
)
{
data
.
showState
=
false
;
flag
=
false
;
}
}
if
(
data
.
closeMode
==
0
)
{
data
.
closable
=
false
;
}
}
return
flag
;
}
/**
* 处理数据显示位置
*
* @memberof AppAlert
*/
public
handleItemPosition
(
data
:
any
,
flag
:
boolean
)
{
if
(
data
.
position
)
{
if
(
flag
&&
Object
.
is
(
'POPUP'
,
data
.
position
))
{
const
h
=
this
.
$createElement
;
data
.
showState
=
false
;
if
(
Object
.
is
(
'HTML'
,
data
.
messageType
)
&&
data
.
hasMessageTemp
)
{
setTimeout
(()
=>
{
this
.
$message
({
customClass
:
data
.
codename
+
","
+
data
.
closeMode
,
message
:
h
(
'div'
,{},
[
h
(
'p'
,
data
.
title
),
h
(
'p'
,{
domProps
:{
innerHTML
:
data
.
content
}})
]),
type
:
data
.
type
,
showClose
:
data
.
closable
,
onClose
:
this
.
alertClose
,
})
},
0
)
}
else
{
setTimeout
(()
=>
{
this
.
$message
({
customClass
:
data
.
codename
+
","
+
data
.
closeMode
,
message
:
h
(
'div'
,{},
[
h
(
'p'
,
data
.
title
),
h
(
'p'
,
data
.
content
)
]),
type
:
data
.
type
,
showClose
:
data
.
closable
,
onClose
:
this
.
alertClose
,
})
},
0
)
}
}
}
}
/**
* 视图消息关闭
*
* @memberof AppAlert
*/
public
alertClose
(
data
:
any
)
{
if
(
data
.
customClass
)
{
let
tempArr
:
any
[]
=
data
.
customClass
.
toString
().
split
(
','
);
if
(
tempArr
&&
tempArr
.
length
>
0
)
{
if
(
Object
.
is
(
"1"
,
tempArr
[
1
]))
{
const
args
=
{
tag
:
tempArr
[
0
],
id
:
data
.
customClass
};
this
.
$store
.
commit
(
'addViewMessage'
,
args
);
}
}
}
if
(
data
.
closeMode
&&
data
.
closeMode
==
1
)
{
const
args
=
{
tag
:
data
.
codename
,
id
:
data
.
id
};
this
.
$store
.
commit
(
'addViewMessage'
,
args
);
}
}
}
</
script
>
<
style
lang=
"less"
>
@import './app-alert.less';
</
style
>
\ No newline at end of file
app_web/src/components/app-checkbox-list/app-checkbox-list.vue
浏览文件 @
71ace5c0
...
...
@@ -8,7 +8,7 @@
<
script
lang=
"ts"
>
import
{
Component
,
Vue
,
Prop
,
Model
,
Watch
}
from
'vue-property-decorator'
;
import
CodeListService
from
"@
service/app
/codelist-service"
;
import
CodeListService
from
"@
/codelist
/codelist-service"
;
@
Component
({
})
...
...
app_web/src/components/app-data-upload/app-data-upload.vue
浏览文件 @
71ace5c0
...
...
@@ -48,7 +48,7 @@
<
script
lang=
"ts"
>
import
XLSX
from
'xlsx'
;
import
CodeListService
from
"@
service/app
/codelist-service"
;
import
CodeListService
from
"@
/codelist
/codelist-service"
;
import
EntityService
from
'@/service/entity-service'
;
import
{
Vue
,
Component
,
Prop
,
Provide
,
Emit
,
Watch
}
from
'vue-property-decorator'
;
import
{
Environment
}
from
'@/environments/environment'
;
...
...
app_web/src/components/app-department-personnel/app-department-personnel.vue
浏览文件 @
71ace5c0
...
...
@@ -13,7 +13,7 @@
import
{
Component
,
Vue
,
Prop
,
Watch
}
from
'vue-property-decorator'
;
import
{
Subject
}
from
'rxjs'
;
import
{
Http
}
from
'../../utils'
;
import
CodeListService
from
'@/service/app/codelist-service'
;
import
CodeListService
from
"@/codelist/codelist-service"
;
@
Component
({})
export
default
class
AppDepartmentPersonnel
extends
Vue
{
...
...
app_web/src/components/app-department-select/app-department-select.vue
浏览文件 @
71ace5c0
...
...
@@ -6,7 +6,7 @@
<
script
lang=
"ts"
>
import
{
Vue
,
Component
,
Watch
,
Prop
,
Model
}
from
'vue-property-decorator'
;
import
CodeListService
from
'@/service/app/codelist-service'
;
import
CodeListService
from
"@/codelist/codelist-service"
;
@
Component
({
})
export
default
class
AppDepartmentSelect
extends
Vue
{
...
...
app_web/src/components/app-form-druipart/app-form-druipart.vue
浏览文件 @
71ace5c0
...
...
@@ -370,7 +370,7 @@ export default class AppFormDRUIPart extends Vue {
}
}
});
this
.
refreshDRUIPart
();
//
this.refreshDRUIPart();
}
/**
...
...
app_web/src/components/app-form-part/app-form-part.less
0 → 100644
浏览文件 @
71ace5c0
.app-form-part {
display: block;
}
\ No newline at end of file
app_web/src/components/app-form-part/app-form-part.vue
0 → 100644
浏览文件 @
71ace5c0
<
template
>
<div
class=
'app-form-part'
v-if=
"loadState"
>
<avue-form
:option=
"formOption"
v-model=
"formVal"
></avue-form>
</div>
</
template
>
<
script
lang =
'ts'
>
import
{
Vue
,
Component
,
Prop
,
Watch
}
from
'vue-property-decorator'
;
import
{
Subject
,
Subscription
}
from
"rxjs"
;
@
Component
({
})
export
default
class
AppFormPart
extends
Vue
{
/**
* 系统名称
*
* @type {string}
* @memberof AppFormPart
*/
@
Prop
()
public
systemCodeName
!
:
string
;
/**
* 应用名称
*
* @type {string}
* @memberof AppFormPart
*/
@
Prop
()
public
appCodeName
!
:
string
;
/**
* 实体名称
*
* @type {string}
* @memberof AppFormPart
*/
@
Prop
()
public
deCodeName
!
:
string
;
/**
* 表单代码标识
*
* @type {string}
* @memberof AppFormPart
*/
@
Prop
()
public
formCodeName
!
:
string
;
/**
* 表单成员标识
*
* @type {string}
* @memberof AppFormPart
*/
@
Prop
()
public
formDetailCodeName
!
:
string
;
/**
* 当前表单项名称
*
* @type {string}
* @memberof AppFormPart
*/
@
Prop
()
public
name
!
:
string
;
/**
* 导航上下文
*
* @type {string}
* @memberof AppFormPart
*/
@
Prop
()
public
context
!
:
any
;
/**
* 导航参数
*
* @type {string}
* @memberof AppFormPart
*/
@
Prop
()
public
viewparams
!
:
any
;
/**
* 表单数据
*
* @type {any}
* @memberof AppFormPart
*/
@
Prop
()
public
data
:
any
;
/**
* 表单状态对象
*
* @type {Subject<any>}
* @memberof AppFormPart
*/
@
Prop
()
public
formState
!
:
Subject
<
any
>
;
/**
* 订阅对象
*
* @protected
* @type {(Subscription | undefined)}
* @memberof AppFormPart
*/
public
formStateEvent
:
Subscription
|
undefined
;
/**
* 远程地址
*
* @protected
* @type {(Subscription | undefined)}
* @memberof AppFormPart
*/
public
remoteUrl
:
string
=
`/lite/
${
this
.
systemCodeName
.
toLowerCase
()}
-
${
this
.
appCodeName
.
toLowerCase
()}
/components/
${
this
.
formDetailCodeName
.
toLowerCase
()}
`
;
/**
* 动态表单配置对象
*
* @type {*}
* @memberof AppFormPart
*/
public
formOption
:
any
;
/**
* 当前动态表单绑定值
*
* @type {*}
* @memberof AppFormPart
*/
public
curFormValue
:
any
=
{};
/**
* 获取动态表单值对象
*
* @type {*}
* @memberof AppFormPart
*/
get
formVal
(){
return
this
.
curFormValue
;
}
/**
* 设置动态表单值对象
*
* @type {*}
* @memberof AppFormPart
*/
set
formVal
(
data
:
any
){
this
.
$emit
(
"change"
,{
name
:
this
.
name
,
value
:
data
});
}
/**
* 加载数据状态
*
* @type {*}
* @memberof AppFormPart
*/
public
loadState
:
boolean
=
false
;
/**
* 初始化组件(vue生命周期)
*
* @type {Subject<any>}
* @memberof AppFormPart
*/
public
created
(){
if
(
this
.
formState
)
{
this
.
formStateEvent
=
this
.
formState
.
subscribe
(({
type
,
data
})
=>
{
if
(
Object
.
is
(
"load"
,
type
)){
this
.
loadRemoteFormModel
().
then
((
result
:
any
)
=>
{
this
.
initStateData
(
result
);
})
}
});
}
}
/**
* 初始化状态数据
*
* @type {Subject<any>}
* @memberof AppFormPart
*/
public
initStateData
(
modelData
:
any
){
this
.
computedFormVal
(
modelData
);
this
.
formOption
=
modelData
;
this
.
loadState
=
true
;
}
/**
* 计算动态表单绑定数据
*
* @type {Subject<any>}
* @memberof AppFormPart
*/
public
computedFormVal
(
modelData
:
any
){
this
.
curFormValue
=
{};
if
(
modelData
&&
modelData
.
column
&&
modelData
.
column
.
length
>
0
){
modelData
.
column
.
forEach
((
element
:
any
)
=>
{
Object
.
assign
(
this
.
curFormValue
,{[
element
.
prop
]:
null
});
});
}
if
(
Object
.
keys
(
this
.
curFormValue
).
length
>
0
){
Object
.
keys
(
this
.
curFormValue
).
forEach
((
item
:
any
)
=>
{
if
(
this
.
data
&&
this
.
data
[
item
]){
this
.
curFormValue
[
item
]
=
this
.
data
[
item
];
}
})
}
}
/**
* 加载动态表单数据模型
*
* @type {Subject<any>}
* @memberof AppFormPart
*/
public
loadRemoteFormModel
(){
return
new
Promise
((
resolve
:
any
,
reject
:
any
)
=>
{
this
.
$http
.
get
(
this
.
remoteUrl
).
then
((
res
:
any
)
=>
{
if
(
res
.
status
&&
res
.
status
==
200
){
let
result
:
any
=
res
.
data
;
resolve
(
result
);
}
else
{
console
.
warn
(
"加载动态表单模型数据异常"
);
}
}).
catch
((
error
:
any
)
=>
{
console
.
warn
(
"加载动态表单模型数据异常"
);
})
})
}
/**
* 销毁组件(vue生命周期)
*
* @type {Subject<any>}
* @memberof AppFormPart
*/
public
destroy
(){
if
(
this
.
formStateEvent
){
this
.
formStateEvent
.
unsubscribe
();
}
}
}
</
script
>
<
style
lang =
"less"
>
@import './app-form-part.less';
</
style
>
\ No newline at end of file
app_web/src/components/app-group-select/app-group-select.vue
浏览文件 @
71ace5c0
...
...
@@ -21,7 +21,7 @@
<
script
lang=
"ts"
>
import
{
Component
,
Vue
,
Prop
,
Watch
}
from
'vue-property-decorator'
;
import
{
Subject
}
from
'rxjs'
;
import
CodeListService
from
'@/service/app/codelist-service'
;
import
CodeListService
from
"@/codelist/codelist-service"
;
@
Component
({})
export
default
class
AppGroupSelect
extends
Vue
{
...
...
app_web/src/components/app-message-popover/app-message-popover.less
浏览文件 @
71ace5c0
.
item
{
.
app-message-popover
{
height: 24px;
line-height: 24px;
padding: 0 5px 0 0;
...
...
app_web/src/components/app-message-popover/app-message-popover.vue
浏览文件 @
71ace5c0
<
template
>
<!-- 消息弹出框绘制开始 -->
<el-badge
:is-dot=
"showIsDot"
class=
"
item
"
>
<el-badge
:is-dot=
"showIsDot"
class=
"
app-message-popover
"
>
<el-popover
placement=
"bottom"
trigger=
"click"
...
...
app_web/src/components/app-org-select/app-org-select.vue
浏览文件 @
71ace5c0
...
...
@@ -6,7 +6,7 @@
<
script
lang =
'ts'
>
import
{
Vue
,
Component
,
Prop
,
Watch
}
from
"vue-property-decorator"
;
import
{
Http
}
from
'@/utils'
;
import
CodeListService
from
"@
service/app
/codelist-service"
;
import
CodeListService
from
"@
/codelist
/codelist-service"
;
import
{
observable
}
from
'rxjs'
;
@
Component
({})
export
default
class
AppOrgSelect
extends
Vue
{
...
...
app_web/src/components/app-panel-button/app-panel-button.vue
0 → 100644
浏览文件 @
71ace5c0
<
template
>
<div
class=
"app-panel-button"
>
<Button
type=
"primary"
long
@
click=
"onClick"
>
<i
v-if=
"icon"
:class=
"icon"
></i>
<span
v-if=
"showCaption"
:class=
"lableStyle"
>
{{
caption
?
caption
:
''
}}
</span>
</Button>
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Vue
,
Component
,
Prop
,
Watch
}
from
"vue-property-decorator"
;
@
Component
({})
export
default
class
AppPanelButton
extends
Vue
{
/**
* 图标
*
* @type {string}
* @memberof AppPanelItem
*/
@
Prop
()
public
icon
?:
string
;
/**
* 标题
*
* @type {string}
* @memberof AppPanelItem
*/
@
Prop
()
public
caption
?:
string
;
/**
* 显示标题
*
* @type {boolean}
* @memberof AppPanelItem
*/
@
Prop
()
public
showCaption
?:
boolean
;
/**
* 标题样式
*
* @type {boolean}
* @memberof AppPanelItem
*/
@
Prop
()
public
lableStyle
?:
string
;
/**
* 点击按钮
*
* @param {*} $event
* @memberof AppPanelItem
*/
public
onClick
(
$event
:
any
){
this
.
$emit
(
'onClick'
,
$event
);
}
}
</
script
>
<
style
lang=
'less'
>
</
style
>
\ No newline at end of file
app_web/src/components/app-radio-group/app-radio-group.vue
浏览文件 @
71ace5c0
...
...
@@ -7,7 +7,7 @@
</
template
>
<
script
lang =
'ts'
>
import
{
Component
,
Vue
,
Prop
,
Model
,
Watch
}
from
'vue-property-decorator'
;
import
CodeListService
from
"@
service/app
/codelist-service"
;
import
CodeListService
from
"@
/codelist
/codelist-service"
;
@
Component
({})
export
default
class
AppRadioGroup
extends
Vue
{
...
...
app_web/src/components/app-rawitem/app-rawitem.vue
0 → 100644
浏览文件 @
71ace5c0
<
template
>
<div>
<span
v-if=
"caption"
>
{{
caption
}}
</span>
<div
:class=
"contentStyle"
:style=
"sizeStyle"
>
<template
v-if=
"Object.is(contentType,'RAW')"
>
{{
rawContent
?
rawContent
:
''
}}
</
template
>
<
template
v-else-if=
"Object.is(contentType,'HTML')"
>
{{
htmlContent
?
htmlContent
:
''
}}
</
template
>
<
template
v-else-if=
"Object.is(contentType,'IMAGE')"
>
<i
:class=
"imageClass ? imageClass : ''"
></i>
</
template
>
</div>
</div>
</template>
<
script
lang=
'ts'
>
import
{
Component
,
Vue
,
Prop
,
Model
,
Watch
}
from
"vue-property-decorator"
;
@
Component
({})
export
default
class
AppRawItem
extends
Vue
{
/**
* 内容类型
*
* @type {string}
* @memberof AppRawItem
*/
@
Prop
()
public
contentType
!
:
string
;
/**
* 直接内容
*
* @type {strin}
* @memberof AppRawItem
*/
@
Prop
()
public
rawContent
?:
string
;
/**
* html内容
*
* @type {strin}
* @memberof AppRawItem
*/
@
Prop
()
public
htmlContent
?:
string
;
/**
* html内容
*
* @type {strin}
* @memberof AppRawItem
*/
@
Prop
()
public
imageClass
?:
string
;
/**
* 标题
*
* @type {string}
* @memberof AppRawItem
*/
@
Prop
()
public
caption
?:
string
;
/**
* 内容样式
*
* @type {strin}
* @memberof AppRawItem
*/
@
Prop
()
public
contentStyle
!
:
string
;
/**
* 内容宽高
*
* @type {strin}
* @memberof AppRawItem
*/
@
Prop
()
public
sizeStyle
!
:
string
;
}
</
script
>
<
style
lang=
'less'
>
</
style
>
\ No newline at end of file
app_web/src/components/app-transfer/app-transfer.vue
浏览文件 @
71ace5c0
...
...
@@ -21,7 +21,7 @@
<
script
lang=
"ts"
>
import
{
Vue
,
Component
,
Watch
,
Prop
,
Model
}
from
"vue-property-decorator"
;
import
CodeListService
from
"@
service/app
/codelist-service"
;
import
CodeListService
from
"@
/codelist
/codelist-service"
;
import
{
ElSelect
}
from
"element-ui/types/select"
;
@
Component
({})
...
...
app_web/src/components/avue-custom-form/avue-custom-form.vue
浏览文件 @
71ace5c0
<
template
>
<div
v-if=
"formOption!=null"
class=
"app-custom-form"
>
<avue-form
:option=
"formOption"
v-model=
"form
value
"
></avue-form>
<avue-form
:option=
"formOption"
v-model=
"form
Val
"
></avue-form>
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Vue
,
Component
,
Prop
,
Model
,
Emit
,
Watch
,}
from
"vue-property-decorator"
;
import
{
Subject
,
Subscription
}
from
"rxjs"
;
import
{
Vue
,
Component
,
Prop
,
Model
,
Emit
,
Watch
,
}
from
"vue-property-decorator"
;
import
{
Subject
,
Subscription
}
from
"rxjs"
;
@
Component
({})
export
default
class
AvueCustomForm
extends
Vue
{
/**
...
...
@@ -16,8 +23,7 @@ export default class AvueCustomForm extends Vue {
* @type {any}
* @memberof AvueCustomForm
*/
@
Prop
()
public
options
?:
any
;
@
Prop
()
public
options
?:
any
;
/**
* 是否需要转换为string类型
...
...
@@ -25,8 +31,7 @@ export default class AvueCustomForm extends Vue {
* @type {boolean}
* @memberof AvueCustomForm
*/
@
Prop
()
public
isParseString
?:
boolean
;
@
Prop
()
public
isParseString
?:
boolean
;
/**
* 远端地址
...
...
@@ -42,7 +47,7 @@ export default class AvueCustomForm extends Vue {
* @type {any}
* @memberof AvueCustomForm
*/
@
Prop
(
)
public
value
:
any
;
@
Model
(
'change'
)
public
value
:
any
;
/**
* 是否将表单数据通过组件配置带入组件中
...
...
@@ -52,33 +57,13 @@ export default class AvueCustomForm extends Vue {
*/
@
Prop
()
public
isFormData
?:
boolean
;
/**
* 监听事件
*
* @param {*} newVal
* @param {*} oldVal
* @memberof AvueCustomForm
*/
@
Watch
(
"value"
)
public
onValueChange
(
newVal
:
any
,
oldVal
:
any
)
{
if
(
newVal
)
{
let
obj
:
any
=
{};
if
(
newVal
&&
newVal
!=
null
)
{
if
(
this
.
isParseString
)
obj
=
JSON
.
parse
(
newVal
);
else
obj
=
newVal
;
}
if
(
obj
)
this
.
formvalue
=
JSON
.
parse
(
JSON
.
stringify
(
obj
));
}
}
/**
* 表单数据
*
* @type {any}
* @memberof AvueCustomForm
*/
@
Prop
()
public
formData
:
any
;
@
Prop
()
public
formData
:
any
;
/**
* 表单状态
...
...
@@ -89,29 +74,46 @@ export default class AvueCustomForm extends Vue {
@
Prop
()
public
formState
!
:
Subject
<
any
>
;
/**
*
视图状态事件
*
获取组件值
*
* @protected
* @type {(Subscription | undefined)}
* @return {any}
* @memberof AvueCustomForm
*/
protected
formStateEvent
:
Subscription
|
undefined
;
get
formVal
()
{
let
obj
:
any
=
{};
if
(
this
.
value
)
{
if
(
this
.
isParseString
)
obj
=
JSON
.
parse
(
this
.
value
);
else
obj
=
this
.
value
;
}
return
obj
;
}
/**
*
当前组件配置设置属性
*
设置组件值
*
* @
type {any}
* @
param value
* @memberof AvueCustomForm
*/
public
formOption
:
any
=
null
;
set
formVal
(
value
:
any
)
{
this
.
setValue
(
value
);
}
/**
* 订阅对象
*
* @protected
* @type {(Subscription | undefined)}
* @memberof AvueCustomForm
*/
protected
formStateEvent
:
Subscription
|
undefined
;
/**
*
avue-form绑定值
*
当前组件配置设置属性
*
* @type {any}
* @memberof AvueCustomForm
*/
public
form
value
:
any
=
{}
;
public
form
Option
:
any
=
null
;
/**
* avue-form默认配置
...
...
@@ -189,10 +191,8 @@ export default class AvueCustomForm extends Vue {
if
(
this
.
url
&&
this
.
options
==
null
)
{
const
get
:
Promise
<
any
>
=
this
.
$http
.
get
(
this
.
url
);
get
.
then
((
response
:
any
)
=>
{
if
(
response
&&
response
.
data
&&
response
.
data
.
view_config
)
{
that
.
formOption
=
JSON
.
parse
(
response
.
data
.
view_config
)[
"formConfig"
];
if
(
response
&&
response
.
data
)
{
that
.
formOption
=
response
.
data
;
if
(
this
.
isFormData
)
that
.
getFormData
();
}
});
...
...
@@ -214,7 +214,7 @@ export default class AvueCustomForm extends Vue {
public
getFormData
()
{
let
that
:
any
=
this
;
let
obj
:
any
;
if
(
this
.
value
)
obj
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
value
));
if
(
this
.
formVal
)
obj
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
formVal
));
else
obj
=
{};
let
recursionOption
:
any
=
function
(
group
:
any
)
{
group
.
column
.
forEach
((
gItem
:
any
)
=>
{
...
...
@@ -242,5 +242,17 @@ export default class AvueCustomForm extends Vue {
if
(
this
.
isParseString
)
this
.
$emit
(
"change"
,
JSON
.
stringify
(
value
));
else
this
.
$emit
(
"change"
,
value
);
}
/**
* 销毁组件(vue生命周期)
*
* @type {Subject<any>}
* @memberof AvueCustomForm
*/
public
destroy
(){
if
(
this
.
formStateEvent
){
this
.
formStateEvent
.
unsubscribe
();
}
}
}
</
script
>
\ No newline at end of file
app_web/src/components/codelist/codelist.vue
浏览文件 @
71ace5c0
...
...
@@ -13,7 +13,7 @@
<
script
lang=
"ts"
>
import
{
Vue
,
Component
,
Prop
,
Model
,
Watch
}
from
'vue-property-decorator'
;
import
CodeListService
from
"@
service/app
/codelist-service"
;
import
CodeListService
from
"@
/codelist
/codelist-service"
;
@
Component
({})
export
default
class
CodeList
extends
Vue
{
...
...
app_web/src/components/dropdown-list-dynamic/dropdown-list-dynamic.vue
浏览文件 @
71ace5c0
...
...
@@ -14,7 +14,7 @@
<
script
lang=
"ts"
>
import
{
Vue
,
Component
,
Watch
,
Prop
,
Model
}
from
'vue-property-decorator'
;
import
CodeListService
from
"@
service/app
/codelist-service"
;
import
CodeListService
from
"@
/codelist
/codelist-service"
;
@
Component
({
})
...
...
app_web/src/components/dropdown-list-mpicker/dropdown-list-mpicker.vue
浏览文件 @
71ace5c0
...
...
@@ -24,7 +24,7 @@
<
script
lang=
"ts"
>
import
{
Vue
,
Component
,
Prop
,
Model
}
from
'vue-property-decorator'
;
import
CodeListService
from
"@
service/app
/codelist-service"
;
import
CodeListService
from
"@
/codelist
/codelist-service"
;
import
{
Util
}
from
'@/utils'
;
@
Component
({
})
...
...
app_web/src/components/dropdown-list/dropdown-list.vue
浏览文件 @
71ace5c0
...
...
@@ -17,8 +17,9 @@
<
script
lang=
"ts"
>
import
{
Vue
,
Component
,
Watch
,
Prop
,
Model
}
from
'vue-property-decorator'
;
import
CodeListService
from
"@
service/app
/codelist-service"
;
import
CodeListService
from
"@
/codelist
/codelist-service"
;
import
{
Util
}
from
'@/utils'
;
import
{
Subject
,
Subscription
}
from
'rxjs'
;
@
Component
({
})
...
...
@@ -84,6 +85,23 @@ export default class DropDownList extends Vue {
*/
@
Prop
()
public
data
?:
any
;
/**
* 表单状态对象
*
* @type {Subject<any>}
* @memberof AppEmbedPicker
*/
@
Prop
()
public
formState
!
:
Subject
<
any
>
/**
* 订阅对象
*
* @protected
* @type {(Subscription | undefined)}
* @memberof SelectType
*/
protected
formStateEvent
:
Subscription
|
undefined
;
/**
* 监听表单数据
*
...
...
@@ -241,6 +259,23 @@ export default class DropDownList extends Vue {
* @memberof DropDownList
*/
public
created
()
{
if
(
this
.
formState
)
{
this
.
formStateEvent
=
this
.
formState
.
subscribe
(({
type
,
data
})
=>
{
if
(
Object
.
is
(
'load'
,
type
))
{
this
.
loadData
();
}
});
}
else
{
this
.
loadData
();
}
}
/**
* 加载数据
*
* @memberof DropDownList
*/
public
loadData
(){
if
(
this
.
tag
&&
Object
.
is
(
this
.
codelistType
,
"STATIC"
)){
const
codelist
=
this
.
$store
.
getters
.
getCodeList
(
this
.
tag
);
if
(
codelist
)
{
...
...
@@ -372,6 +407,17 @@ export default class DropDownList extends Vue {
}
})
}
/**
* vue 生命周期
*
* @memberof DropDownList
*/
public
destroyed
()
{
if
(
this
.
formStateEvent
)
{
this
.
formStateEvent
.
unsubscribe
();
}
}
}
</
script
>
...
...
app_web/src/engine/view/data-view9-engine.ts
浏览文件 @
71ace5c0
...
...
@@ -17,10 +17,10 @@ export default class DataView9Engine extends DataViewEngine {
*/
public
load
(
opts
:
any
=
{},
isnotify
:
boolean
=
false
):
void
{
if
(
!
this
.
view
.
isformDruipart
){
super
.
load
(
opts
);
super
.
load
(
opts
,
isnotify
);
}
else
{
if
(
isnotify
){
super
.
load
(
opts
);
super
.
load
(
opts
,
isnotify
);
}
}
}
...
...
app_web/src/engine/view/grid-view-engine.ts
浏览文件 @
71ace5c0
...
...
@@ -45,10 +45,10 @@ export default class GridViewEngine extends MDViewEngine {
*/
public
load
(
opts
:
any
=
{},
isnotify
:
boolean
=
false
):
void
{
if
(
!
this
.
view
.
isformDruipart
){
super
.
load
(
opts
);
super
.
load
(
opts
,
isnotify
);
}
else
{
if
(
isnotify
){
super
.
load
(
opts
);
super
.
load
(
opts
,
isnotify
);
}
}
}
...
...
app_web/src/engine/view/list-view9-engine.ts
浏览文件 @
71ace5c0
...
...
@@ -17,10 +17,10 @@ export default class ListView9Engine extends ListViewEngine {
*/
public
load
(
opts
:
any
=
{},
isnotify
:
boolean
=
false
):
void
{
if
(
!
this
.
view
.
isformDruipart
){
super
.
load
(
opts
);
super
.
load
(
opts
,
isnotify
);
}
else
{
if
(
isnotify
){
super
.
load
(
opts
);
super
.
load
(
opts
,
isnotify
);
}
}
...
...
app_web/src/engine/view/md-view-engine.ts
浏览文件 @
71ace5c0
...
...
@@ -78,12 +78,12 @@ export default class MDViewEngine extends ViewEngine {
* @param {*} [opts={}]
* @memberof MDViewEngine
*/
public
load
(
opts
:
any
=
{}):
void
{
public
load
(
opts
:
any
=
{}
,
isnotify
:
boolean
=
false
):
void
{
super
.
load
(
opts
);
if
(
this
.
getSearchForm
())
{
if
(
this
.
getSearchForm
()
&&
(
this
.
isLoadDefault
||
isnotify
)
)
{
const
tag
=
this
.
getSearchForm
().
name
;
this
.
setViewState2
({
tag
:
tag
,
action
:
'loaddraft'
,
viewdata
:
this
.
view
.
viewparams
});
}
else
if
(
this
.
getMDCtrl
()
&&
this
.
isLoadDefault
)
{
}
else
if
(
this
.
getMDCtrl
()
&&
(
this
.
isLoadDefault
||
isnotify
)
)
{
const
tag
=
this
.
getMDCtrl
().
name
;
this
.
setViewState2
({
tag
:
tag
,
action
:
'load'
,
viewdata
:
Object
.
assign
(
this
.
view
.
viewparams
,
opts
)
});
}
else
{
...
...
app_web/src/engine/view/wfdyna-exp-grid-view-engine.ts
浏览文件 @
71ace5c0
...
...
@@ -29,10 +29,10 @@ export default class WFDynaExpGridViewEngine extends GridViewEngine {
return
;
}
if
(
!
this
.
view
.
isformDruipart
){
super
.
load
(
opts
);
super
.
load
(
opts
,
isnotify
);
}
else
{
if
(
isnotify
){
super
.
load
(
opts
);
super
.
load
(
opts
,
isnotify
);
}
}
})
...
...
app_web/src/index.d.ts
浏览文件 @
71ace5c0
...
...
@@ -4,6 +4,7 @@ import { UtilServiceRegister } from '@/utilservice/util-service-register';
import
{
EntityServiceRegister
}
from
'@/service/entity-service-register'
;
import
{
CounterServiceRegister
}
from
'@/counter/counter-service-register'
;
import
{
CodeListRegister
}
from
'@codelist/codelist-register'
;
import
{
MessageServiceRegister
}
from
'@/message/message-service-register'
;
declare
global
{
interface
Window
{
uiServiceRegister
:
UIServiceRegister
,
...
...
@@ -11,6 +12,7 @@ declare global {
utilServiceRegister
:
UtilServiceRegister
,
entityServiceRegister
:
EntityServiceRegister
,
counterServiceRegister
:
CounterServiceRegister
,
codeListRegister
:
CodeListRegister
codeListRegister
:
CodeListRegister
,
messageServiceRegister
:
MessageServiceRegister
}
}
\ No newline at end of file
app_web/src/interface/message.ts
0 → 100644
浏览文件 @
71ace5c0
/**
* 视图消息
*
* @interface ViewMessage
*/
export
interface
ViewMessage
{
/**
* 视图消息标识
*
* @type {string}
* @memberof ViewMessage
*/
id
:
string
;
/**
* 视图消息名称
*
* @type {string}
* @memberof ViewMessage
*/
name
:
string
;
/**
* 视图消息代码名称
*
* @type {string}
* @memberof ViewMessage
*/
codename
:
string
;
/**
* 视图消息标题
*
* @type {string}
* @memberof ViewMessage
*/
title
:
string
;
/**
* 视图消息内容
*
* @type {string}
* @memberof ViewMessage
*/
content
:
string
;
/**
* 视图消息关闭模式
*
* @type {number}
* @memberof ViewMessage
*/
closeMode
:
number
;
/**
* 视图消息位置
*
* @type {string}
* @memberof ViewMessage
*/
position
:
string
;
/**
* 视图消息类型
*
* @type {string}
* @memberof ViewMessage
*/
type
:
string
;
/**
* 视图消息是否支持删除
*
* @type {boolean}
* @memberof ViewMessage
*/
isEnableRemove
:
boolean
;
/**
* 排序值
*
* @type {number}
* @memberof ViewMessage
*/
order
:
number
;
/**
* 动态模式
*
* @type {string}
* @memberof ViewMessage
*/
dynamicMode
:
string
;
/**
* 消息类型
*
* @type {string}
* @memberof ViewMessage
*/
messageType
:
string
;
}
\ No newline at end of file
app_web/src/message/message-service-register.ts
0 → 100644
浏览文件 @
71ace5c0
/**
* 视图消息服务注册中心
*
* @export
* @class MessageServiceRegister
*/
export
class
MessageServiceRegister
{
/**
* 所有视图消息服务Map
*
* @protected
* @type {*}
* @memberof MessageServiceRegister
*/
protected
allMessageService
:
Map
<
string
,
()
=>
Promise
<
any
>>
=
new
Map
();
/**
* 已加载视图消息服务Map缓存
*
* @protected
* @type {Map<string, any>}
* @memberof MessageServiceRegister
*/
protected
serviceCache
:
Map
<
string
,
any
>
=
new
Map
();
/**
* Creates an instance of MessageServiceRegister.
* @memberof MessageServiceRegister
*/
constructor
()
{
this
.
init
();
}
/**
* 初始化
*
* @protected
* @memberof MessageServiceRegister
*/
protected
init
():
void
{
}
/**
* 加载视图消息服务
*
* @protected
* @param {string} codeName
* @returns {Promise<any>}
* @memberof MessageServiceRegister
*/
protected
async
loadService
(
codeName
:
string
):
Promise
<
any
>
{
const
service
=
this
.
allMessageService
.
get
(
codeName
);
if
(
service
)
{
return
service
();
}
}
/**
* 获取视图消息服务
*
* @param {string} name
* @returns {Promise<any>}
* @memberof MessageServiceRegister
*/
public
async
getService
(
name
:
string
):
Promise
<
any
>
{
if
(
this
.
serviceCache
.
has
(
name
))
{
return
this
.
serviceCache
.
get
(
name
);
}
const
messageService
:
any
=
await
this
.
loadService
(
name
);
if
(
messageService
&&
messageService
.
default
)
{
const
instance
:
any
=
new
messageService
.
default
();
this
.
serviceCache
.
set
(
name
,
instance
);
return
instance
;
}
}
}
export
const
messageServiceRegister
:
MessageServiceRegister
=
new
MessageServiceRegister
();
\ No newline at end of file
app_web/src/message/view-message-group-service.ts
0 → 100644
浏览文件 @
71ace5c0
import
{
Http
}
from
'@/utils/http/http'
;
/**
* 视图消息组
*
* @export
* @class ViewMessageGroupService
*/
export
default
class
ViewMessageGroupService
{
/**
* 单例变量声明
*
* @private
* @static
* @type {ViewMessageGroupService}
* @memberof ViewMessageGroupService
*/
private
static
ViewMessageGroup
:
ViewMessageGroupService
;
/**
* 所有视图消息组对象
*
* @private
* @static
* @type {ViewMessageGroupService}
* @memberof ViewMessageGroupService
*/
private
static
allViewMessageGroup
:
any
;
/**
* 初始化实例
*
* @memberof ViewMessageGroupService
*/
constructor
(
opts
:
any
=
{}){}
/**
* 获取 ViewMessageGroupService 单例对象
*
* @static
* @returns {ViewMessageGroupService}
* @memberof ViewMessageGroupService
*/
public
static
getInstance
():
ViewMessageGroupService
{
if
(
!
ViewMessageGroupService
.
ViewMessageGroup
)
{
ViewMessageGroupService
.
ViewMessageGroup
=
new
ViewMessageGroupService
();
}
return
this
.
ViewMessageGroup
;
}
/**
* 获取视图消息组成员集合
*
* @returns {Promise<any></any>}
* @memberof ViewMessageGroupService
*/
public
async
getViewMessageDetailsByTag
(
tag
:
string
):
Promise
<
any
>
{
if
(
ViewMessageGroupService
.
allViewMessageGroup
){
return
ViewMessageGroupService
.
allViewMessageGroup
[
tag
]?
ViewMessageGroupService
.
allViewMessageGroup
[
tag
]:[];
}
else
{
let
result
:
any
=
await
this
.
loadAllViewMessageGroup
();
return
result
[
tag
]?
result
[
tag
]:[];
}
}
/**
* 加载应用所有视图消息组集合
*
* @returns {Promise<any></any>}
* @memberof ViewMessageGroupService
*/
public
loadAllViewMessageGroup
():
Promise
<
any
>
{
return
new
Promise
((
resolve
:
any
,
reject
:
any
)
=>
{
Http
.
getInstance
().
get
(
'./assets/json/view-message-group.json'
).
then
((
response
:
any
)
=>
{
if
(
response
&&
response
.
status
===
200
&&
response
.
data
)
{
ViewMessageGroupService
.
allViewMessageGroup
=
response
.
data
;
resolve
(
response
.
data
);
}
}).
catch
((
error
:
any
)
=>
{
console
.
log
(
error
);
});
})
}
}
\ No newline at end of file
app_web/src/message/view-message-service.ts
0 → 100644
浏览文件 @
71ace5c0
import
{
ViewMessage
}
from
'@/interface/message'
;
import
EntityService
from
'@/service/entity-service'
;
/**
* 视图消息
*
* @export
* @class ViewMessage
*/
export
default
class
ViewMessageService
{
/**
* 单例变量声明
*
* @private
* @static
* @type {ViewMessageService}
* @memberof ViewMessageService
*/
private
static
ViewMessage
:
ViewMessageService
;
/**
* 实体数据服务对象
*
* @protected
* @type {EntityService}
* @memberof ViewMessageService
*/
protected
entityService
:
EntityService
=
new
EntityService
();
/**
* 视图消息标识
*
* @type {string}
* @memberof ViewMessageService
*/
public
id
:
string
=
""
;
/**
* 视图消息名称
*
* @type {string}
* @memberof ViewMessageService
*/
public
name
:
string
=
""
;
/**
* 视图消息代码名称
*
* @type {string}
* @memberof ViewMessageService
*/
public
codename
:
string
=
""
;
/**
* 视图消息标题
*
* @type {string}
* @memberof ViewMessageService
*/
public
title
:
string
=
""
;
/**
* 视图消息内容
*
* @type {string}
* @memberof ViewMessageService
*/
public
content
:
string
=
""
;
/**
* 视图消息关闭模式(0:无关闭,1:默认关闭,2:本次关闭)
*
* @type {number}
* @memberof ViewMessageService
*/
public
closeMode
:
number
=
0
;
/**
* 视图消息位置
*
* @type {string}
* @memberof ViewMessageService
*/
public
position
:
string
=
""
;
/**
* 视图消息类型
*
* @type {string}
* @memberof ViewMessageService
*/
public
type
:
string
=
"info"
;
/**
* 视图消息是否支持删除
*
* @type {boolean}
* @memberof ViewMessageService
*/
public
isEnableRemove
:
boolean
=
true
;
/**
* 视图消息排序值
*
* @type {boolean}
* @memberof ViewMessageService
*/
public
order
:
number
=
1
;
/**
* 动态模式
*
* @type {string}
* @memberof ViewMessageService
*/
public
dynamicMode
:
string
=
"STATIC"
;
/**
* 消息类型(可选值:TEXT/HTML)
*
* @type {string}
* @memberof ViewMessageService
*/
public
messageType
:
string
=
"TEXT"
;
/**
* 是否含有消息模板
*
* @type {boolean}
* @memberof ViewMessageService
*/
public
hasMessageTemp
:
boolean
=
false
;
/**
* 视图消息缓存(加载中)
*
* @type {Map<string,any>}
* @memberof ViewMessageService
*/
public
static
messageCache
:
Map
<
string
,
any
>
=
new
Map
();
/**
* 视图消息缓存(已完成)
*
* @type {Map<string,any>}
* @memberof ViewMessageService
*/
public
static
messageCached
:
Map
<
string
,
any
>
=
new
Map
();
/**
* 初始化实例
*
* @memberof ViewMessageService
*/
constructor
(
opts
:
any
=
{})
{
this
.
initBasicParam
();
}
/**
* 获取 ViewMessageService 单例对象
*
* @static
* @returns {ViewMessageService}
* @memberof ViewMessageService
*/
public
static
getInstance
():
ViewMessageService
{
if
(
!
ViewMessageService
.
ViewMessage
)
{
ViewMessageService
.
ViewMessage
=
new
ViewMessageService
();
}
return
this
.
ViewMessage
;
}
/**
* 初始化基础参数
*
* @memberof ViewMessageService
*/
public
initBasicParam
(){}
/**
* 获取视图消息服务
*
* @protected
* @param {string} name 视图消息codename
* @returns {Promise<any>}
* @memberof ViewMessageService
*/
public
getService
(
name
:
string
):
Promise
<
any
>
{
return
(
window
as
any
)[
'messageServiceRegister'
].
getService
(
name
);
}
/**
* 通过tag获取视图消息
*
* @param {tag:string} 视图消息标识
* @param {context:any} 导航上下文
* @param {viewparam:any} 导航参数
* @memberof ViewMessageService
*/
public
async
getViewMessageByTag
(
tag
:
string
,
context
:
any
=
{},
viewparam
:
any
=
{}){
let
messageService
:
any
=
await
this
.
getService
(
tag
);
if
(
messageService
.
dynamicMode
&&
Object
.
is
(
messageService
.
dynamicMode
,
"STATIC"
)){
return
messageService
.
getStaticViewMessage
();
}
else
{
return
messageService
.
getDynamicViewMessage
(
tag
,
messageService
,
context
,
viewparam
);
}
}
/**
* 转化消息模板标题和内容
*
* @memberof ViewMessageService
*/
public
translateMessageTemp
(
target
:
any
,
item
?:
any
){
}
/**
* 获取动态模式(静态)类型视图消息
*
* @memberof ViewMessageService
*/
public
getStaticViewMessage
():
Array
<
ViewMessage
>
{
let
returnViewMessage
:
ViewMessage
=
{
id
:
this
.
id
,
name
:
this
.
name
,
codename
:
this
.
codename
,
title
:
this
.
title
,
content
:
this
.
content
,
closeMode
:
this
.
closeMode
,
position
:
this
.
position
,
type
:
this
.
type
,
isEnableRemove
:
this
.
isEnableRemove
,
order
:
this
.
order
,
dynamicMode
:
this
.
dynamicMode
,
messageType
:
this
.
messageType
};
this
.
translateMessageTemp
(
returnViewMessage
);
return
[
returnViewMessage
];
}
/**
* 获取动态模式(实体数据集合)类型视图消息
*
* @param {any} tag 视图消息标识
* @param {any} messageService 消息服务
* @param {string} context
* @returns {Promise<any[]>}
* @memberof ViewMessageService
*/
public
getDynamicViewMessage
(
tag
:
string
,
messageService
:
any
,
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
[]
>
{
if
(
context
&&
context
.
srfsessionid
){
delete
context
.
srfsessionid
;
}
return
new
Promise
((
resolve
:
any
,
reject
:
any
)
=>
{
let
isEnableCache
:
boolean
=
messageService
.
isEnableCache
;
let
cacheTimeout
:
any
=
messageService
.
cacheTimeout
;
// 启用缓存
if
(
isEnableCache
){
const
callback
:
Function
=
(
context
:
any
=
{},
data
:
any
=
{},
tag
:
string
,
promise
:
Promise
<
any
>
)
=>
{
promise
.
then
((
result
:
any
)
=>
{
if
(
result
.
length
>
0
){
ViewMessageService
.
messageCached
.
set
(
`
${
JSON
.
stringify
(
context
)}
-
${
JSON
.
stringify
(
data
)}
-
${
tag
}
`
,{
items
:
result
});
ViewMessageService
.
messageCache
.
delete
(
`
${
JSON
.
stringify
(
context
)}
-
${
JSON
.
stringify
(
data
)}
-
${
tag
}
`
);
return
resolve
(
result
);
}
else
{
return
resolve
([]);
}
}).
catch
((
result
:
any
)
=>
{
return
reject
(
result
);
})
}
// 加载完成,从本地缓存获取
if
(
ViewMessageService
.
messageCached
.
get
(
`
${
JSON
.
stringify
(
context
)}
-
${
JSON
.
stringify
(
data
)}
-
${
tag
}
`
)){
let
items
:
any
=
ViewMessageService
.
messageCached
.
get
(
`
${
JSON
.
stringify
(
context
)}
-
${
JSON
.
stringify
(
data
)}
-
${
tag
}
`
).
items
;
if
(
items
.
length
>
0
){
if
(
new
Date
().
getTime
()
<=
messageService
.
getExpirationTime
()){
return
resolve
(
items
);
}
}
}
if
(
messageService
)
{
// 加载中,UI又需要数据,解决连续加载同一代码表问题
if
(
ViewMessageService
.
messageCache
.
get
(
`
${
JSON
.
stringify
(
context
)}
-
${
JSON
.
stringify
(
data
)}
-
${
tag
}
`
)){
callback
(
context
,
data
,
tag
,
ViewMessageService
.
messageCache
.
get
(
`
${
JSON
.
stringify
(
context
)}
-
${
JSON
.
stringify
(
data
)}
-
${
tag
}
`
));
}
else
{
let
result
:
Promise
<
any
>
=
messageService
.
getItems
(
context
,
data
,
isloading
);
ViewMessageService
.
messageCache
.
set
(
`
${
JSON
.
stringify
(
context
)}
-
${
JSON
.
stringify
(
data
)}
-
${
tag
}
`
,
result
);
messageService
.
setExpirationTime
(
new
Date
().
getTime
()
+
cacheTimeout
);
callback
(
context
,
data
,
tag
,
result
);
}
}
}
else
{
if
(
messageService
)
{
messageService
.
getItems
(
context
,
data
,
isloading
).
then
((
result
:
any
)
=>
{
resolve
(
result
);
}).
catch
((
error
:
any
)
=>
{
Promise
.
reject
([]);
})
}
else
{
return
Promise
.
reject
([]);
}
}
})
}
}
\ No newline at end of file
app_web/src/mock/viewconfig/viewconfig.ts
浏览文件 @
71ace5c0
...
...
@@ -33,3 +33,10 @@ mock.onGet('./assets/json/view-config.json').reply((config: any) => {
}
}];
});
// 获取视图消息分组信息
mock
.
onGet
(
'./assets/json/view-message-group.json'
).
reply
((
config
:
any
)
=>
{
let
status
=
MockAdapter
.
mockStatus
(
config
);
return
[
status
,{
}];
});
\ No newline at end of file
app_web/src/model/form-detail/form-item.ts
浏览文件 @
71ace5c0
...
...
@@ -38,6 +38,14 @@ export class FormItemModel extends FormDetailModel {
*/
public
enableCond
:
number
|
0
|
1
|
2
|
3
=
3
;
/**
* 是否必填
*
* @type {boolean}
* @memberof FormItemModel
*/
public
required
:
boolean
=
false
;
/**
* Creates an instance of FormItemModel.
* FormItemModel 实例
...
...
@@ -49,6 +57,7 @@ export class FormItemModel extends FormDetailModel {
super
(
opts
);
this
.
disabled
=
opts
.
disabled
?
true
:
false
;
this
.
enableCond
=
opts
.
enableCond
;
this
.
required
=
opts
.
required
;
}
/**
...
...
app_web/src/pages/disk/sdfile-edit-view/sdfile-edit-view-base.vue
浏览文件 @
71ace5c0
...
...
@@ -250,7 +250,9 @@ export default class SDFileEditViewBase extends Vue {
for
(
let
key
in
this
.
viewparams
){
delete
this
.
viewparams
[
key
];
}
if
(
typeof
this
.
viewparams
==
'string'
)
{
Object
.
assign
(
this
.
viewparams
,
JSON
.
parse
(
this
.
viewparam
));
}
}
}
...
...
@@ -271,7 +273,7 @@ export default class SDFileEditViewBase extends Vue {
_this
.
engine
.
load
();
});
}
else
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
refresh
()
&&
Object
.
is
(
_this
.
$util
.
typeOf
(
_this
.
refresh
()),
'function'
)
)
{
}
else
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
refresh
&&
_this
.
refresh
instanceof
Function
)
{
_this
.
refresh
();
}
}
...
...
@@ -439,7 +441,9 @@ export default class SDFileEditViewBase extends Vue {
Object
.
assign
(
this
.
context
,
this
.
$store
.
getters
.
getAppData
().
context
);
}
if
(
!
this
.
viewDefaultUsage
&&
this
.
viewdata
&&
!
Object
.
is
(
this
.
viewdata
,
''
))
{
if
(
typeof
this
.
viewdata
==
'string'
)
{
Object
.
assign
(
this
.
context
,
JSON
.
parse
(
this
.
viewdata
));
}
if
(
this
.
context
&&
this
.
context
.
srfparentdename
){
Object
.
assign
(
this
.
viewparams
,{
srfparentdename
:
this
.
context
.
srfparentdename
});
}
...
...
app_web/src/pages/disk/sdfile-grid-view/sdfile-grid-view-base.vue
浏览文件 @
71ace5c0
...
...
@@ -158,7 +158,7 @@ import GridViewEngine from '@engine/view/grid-view-engine';
import
SDFileUIService
from
'@/uiservice/sdfile/sdfile-ui-service'
;
import
CodeListService
from
"@
service/app
/codelist-service"
;
import
CodeListService
from
"@
/codelist
/codelist-service"
;
@
Component
({
...
...
@@ -280,7 +280,9 @@ export default class SDFileGridViewBase extends Vue {
for
(
let
key
in
this
.
viewparams
){
delete
this
.
viewparams
[
key
];
}
if
(
typeof
this
.
viewparams
==
'string'
)
{
Object
.
assign
(
this
.
viewparams
,
JSON
.
parse
(
this
.
viewparam
));
}
}
}
...
...
@@ -301,7 +303,7 @@ export default class SDFileGridViewBase extends Vue {
_this
.
engine
.
load
();
});
}
else
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
refresh
()
&&
Object
.
is
(
_this
.
$util
.
typeOf
(
_this
.
refresh
()),
'function'
)
)
{
}
else
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
refresh
&&
_this
.
refresh
instanceof
Function
)
{
_this
.
refresh
();
}
}
...
...
@@ -474,7 +476,9 @@ export default class SDFileGridViewBase extends Vue {
Object
.
assign
(
this
.
context
,
this
.
$store
.
getters
.
getAppData
().
context
);
}
if
(
!
this
.
viewDefaultUsage
&&
this
.
viewdata
&&
!
Object
.
is
(
this
.
viewdata
,
''
))
{
if
(
typeof
this
.
viewdata
==
'string'
)
{
Object
.
assign
(
this
.
context
,
JSON
.
parse
(
this
.
viewdata
));
}
if
(
this
.
context
&&
this
.
context
.
srfparentdename
){
Object
.
assign
(
this
.
viewparams
,{
srfparentdename
:
this
.
context
.
srfparentdename
});
}
...
...
app_web/src/pages/disk/sdindex-view/main.ts
浏览文件 @
71ace5c0
...
...
@@ -5,6 +5,7 @@ import App from '@/App.vue';
import
ElementUi
from
'element-ui'
;
import
ViewUI
from
'view-design'
;
import
ibizLab
from
'ibiz-vue-lib'
;
import
axios
from
"axios"
;
import
{
Interceptors
}
from
'@/utils'
;
import
{
Print
}
from
'@/utils/print'
;
import
i18n
from
'@/locale'
...
...
@@ -27,13 +28,18 @@ import { PortletComponent } from '@/portlet-register';
import
store
from
'@/store'
;
import
router
from
'./router'
;
const
win
:
any
=
window
;
win
.
axios
=
axios
;
Vue
.
config
.
errorHandler
=
function
(
err
:
any
,
vm
:
any
,
info
:
any
)
{
console
.
log
(
err
);
}
Vue
.
config
.
productionTip
=
false
;
Vue
.
use
(
Print
);
Vue
.
use
(
ibizLab
);
Vue
.
use
(
Vuex
);
Vue
.
use
(
win
.
AVUE
);
Vue
.
use
(
VueRouter
);;
Vue
.
use
(
ElementUi
,
{
i18n
:
(
key
:
any
,
value
:
any
)
=>
i18n
.
t
(
key
,
value
)
...
...
app_web/src/pages/disk/sdindex-view/sdindex-view-base.vue
浏览文件 @
71ace5c0
...
...
@@ -170,7 +170,9 @@ export default class SDIndexViewBase extends Vue {
for
(
let
key
in
this
.
viewparams
){
delete
this
.
viewparams
[
key
];
}
if
(
typeof
this
.
viewparams
==
'string'
)
{
Object
.
assign
(
this
.
viewparams
,
JSON
.
parse
(
this
.
viewparam
));
}
}
}
...
...
@@ -191,7 +193,7 @@ export default class SDIndexViewBase extends Vue {
_this
.
engine
.
load
();
});
}
else
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
refresh
()
&&
Object
.
is
(
_this
.
$util
.
typeOf
(
_this
.
refresh
()),
'function'
)
)
{
}
else
if
(
!
Object
.
is
(
newVal
,
oldVal
)
&&
_this
.
refresh
&&
_this
.
refresh
instanceof
Function
)
{
_this
.
refresh
();
}
}
...
...
@@ -307,7 +309,9 @@ export default class SDIndexViewBase extends Vue {
Object
.
assign
(
this
.
context
,
this
.
$store
.
getters
.
getAppData
().
context
);
}
if
(
!
this
.
viewDefaultUsage
&&
this
.
viewdata
&&
!
Object
.
is
(
this
.
viewdata
,
''
))
{
if
(
typeof
this
.
viewdata
==
'string'
)
{
Object
.
assign
(
this
.
context
,
JSON
.
parse
(
this
.
viewdata
));
}
if
(
this
.
context
&&
this
.
context
.
srfparentdename
){
Object
.
assign
(
this
.
viewparams
,{
srfparentdename
:
this
.
context
.
srfparentdename
});
}
...
...
app_web/src/service/entity-service.ts
浏览文件 @
71ace5c0
import
{
Http
}
from
'@/utils'
;
import
CodeListService
from
"@
service/app
/codelist-service"
;
import
CodeListService
from
"@
/codelist
/codelist-service"
;
/**
* 实体服务基类
...
...
app_web/src/store/getters.ts
浏览文件 @
71ace5c0
...
...
@@ -47,7 +47,13 @@ export const getLocalData = (state: any) => () => {
* @param state
*/
export
const
getAppData
=
(
state
:
any
)
=>
()
=>
{
return
state
.
appdata
;
let
result
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
state
.
appdata
));
if
(
state
.
localdata
&&
Object
.
keys
(
state
.
localdata
).
length
>
0
){
let
copyContext
:
any
=
result
.
context
?
result
.
context
:{};
Object
.
assign
(
copyContext
,
state
.
localdata
);
result
.
context
=
copyContext
;
}
return
result
;
}
/**
...
...
@@ -105,3 +111,13 @@ export const getDepData = (state: any) => (srfkey: string) => {
let
depData
=
state
.
depDataMap
[
srfkey
];
return
depData
;
}
/**
* 获取视图信息
*
* @param state
*/
export
const
getViewMessage
=
(
state
:
any
)
=>
(
tag
:
string
)
=>
{
let
id
=
state
.
viewMessage
[
tag
];
return
id
;
}
\ No newline at end of file
app_web/src/store/mutations.ts
浏览文件 @
71ace5c0
...
...
@@ -29,8 +29,8 @@ export const addCodeLists = (state: any, codelists: any) => {
* @param localdata
*/
export
const
addLocalData
=
(
state
:
any
,
localdata
:
any
=
{})
=>
{
state
.
localdata
=
{};
Object
.
assign
(
state
.
localdata
,
localdata
);
localStorage
.
setItem
(
'localdata'
,
JSON
.
stringify
(
state
.
localdata
));
}
/**
...
...
@@ -292,3 +292,15 @@ export const addDepData = (state: any, args: {srfkey: string,depData: any}) => {
state
.
depDataMap
[
args
.
srfkey
]
=
JSON
.
parse
(
JSON
.
stringify
(
args
.
depData
));
}
}
/**
* 添加视图信息
*
* @param state
* @param args
*/
export
const
addViewMessage
=
(
state
:
any
,
args
:
{
tag
:
string
,
id
:
any
})
=>
{
if
(
args
&&
args
.
tag
&&
args
.
id
)
{
state
.
viewMessage
[
args
.
tag
]
=
args
.
id
;
}
}
\ No newline at end of file
app_web/src/store/state.ts
浏览文件 @
71ace5c0
...
...
@@ -16,4 +16,5 @@ export const rootstate: any = {
viewSplit
:
{},
orgDataMap
:{},
depDataMap
:{},
viewMessage
:
{},
}
\ No newline at end of file
app_web/src/styles/default.less
浏览文件 @
71ace5c0
@import '../../node_modules/font-awesome/less/font-awesome.less';
@import'/assets/styles/index.css';
@import '../theme/blue.theme.less';
@import '../theme/dark-blue.theme.less';
@import '../theme/default.theme.less';
...
...
app_web/src/template.html
浏览文件 @
71ace5c0
...
...
@@ -13,5 +13,6 @@
</noscript>
<div
id=
"app"
></div>
<script
src=
"./environments/environment.js"
></script>
<script
src=
"../assets/js/avue.min.js"
></script>
</body>
</html>
app_web/src/uiservice/sdfile/sdfile-ui-service-base.ts
浏览文件 @
71ace5c0
...
...
@@ -203,13 +203,13 @@ export default class SDFileUIServiceBase extends UIService {
}
})
for
(
let
i
=
0
;
i
<=
1
;
i
++
)
{
let
strTag
:
string
=
(
curData
[
this
.
mainStateFields
[
0
]])?(
i
==
0
)
?
curData
[
this
.
mainStateFields
[
0
]]
:
""
:
""
;
let
strTag
:
string
=
(
curData
[
this
.
mainStateFields
[
0
]])?(
i
==
0
)
?
`
${
curData
[
this
.
mainStateFields
[
0
]]}
`
:
""
:
""
;
if
(
this
.
mainStateFields
.
length
>=
2
)
{
for
(
let
j
=
0
;
j
<=
1
;
j
++
)
{
let
strTag2
:
string
=
(
curData
[
this
.
mainStateFields
[
1
]])?
`
${
strTag
}
__
${(
j
==
0
)
?
curData
[
this
.
mainStateFields
[
1
]]
:
""
}
`
:
strTag
;
let
strTag2
:
string
=
(
curData
[
this
.
mainStateFields
[
1
]])?
`
${
strTag
}
__
${(
j
==
0
)
?
`
${
curData
[
this
.
mainStateFields
[
1
]]}
`
:
""
}
`
:
strTag
;
if
(
this
.
mainStateFields
.
length
>=
3
)
{
for
(
let
k
=
0
;
k
<=
1
;
k
++
)
{
let
strTag3
:
string
=
(
curData
[
this
.
mainStateFields
[
2
]])?
`
${
strTag2
}
__
${(
k
==
0
)
?
curData
[
this
.
mainStateFields
[
2
]]
:
""
}
`
:
strTag2
;
let
strTag3
:
string
=
(
curData
[
this
.
mainStateFields
[
2
]])?
`
${
strTag2
}
__
${(
k
==
0
)
?
`
${
curData
[
this
.
mainStateFields
[
2
]]}
`
:
""
}
`
:
strTag2
;
// 判断是否存在
return
this
.
allDeMainStateMap
.
get
(
strTag3
);
}
...
...
app_web/src/utils/auth-guard/auth-guard.ts
浏览文件 @
71ace5c0
...
...
@@ -41,10 +41,11 @@ export class AuthGuard {
private
constructor
()
{
}
/**
*
post请求
*
获取应用数据
*
* @param {string} url url 请求路径
* @param {*} [params={}] 请求参数
* @param {*} [router] 路由对象
* @returns {Promise<any>} 请求相响应对象
* @memberof AuthGuard
*/
...
...
@@ -65,6 +66,9 @@ export class AuthGuard {
}
data
=
JSON
.
parse
(
JSON
.
stringify
(
localAppData
));
}
if
(
localStorage
.
getItem
(
'localdata'
)){
router
.
app
.
$store
.
commit
(
'addLocalData'
,
JSON
.
parse
(
localStorage
.
getItem
(
'localdata'
)
as
string
));
}
router
.
app
.
$store
.
commit
(
'addAppData'
,
data
);
// 提交统一资源数据
router
.
app
.
$store
.
dispatch
(
'authresource/commitAuthData'
,
data
);
...
...
app_web/src/widgets/app/sdindex-view-appmenu/sdindex-view-appmenu-base.vue
浏览文件 @
71ace5c0
...
...
@@ -122,6 +122,7 @@ import AppCenterService from "@service/app/app-center-service";
import
SDIndexViewService
from
'./sdindex-view-appmenu-service'
;
import
SDIndexViewModel
from
'./sdindex-view-appmenu-model'
;
import
{
Environment
}
from
'@/environments/environment'
;
import
AuthService
from
'@/authservice/auth-service'
;
@
Component
({
...
...
@@ -386,6 +387,15 @@ export default class SDIndexViewBase extends Vue implements ControlInterface {
* @memberof SDIndexViewBase
*/
public
counterdata
:
any
=
{};
/**
* 建构权限服务对象
*
* @type {AuthService}
* @memberof SDIndexViewBase
*/
public
authService
:
AuthService
=
new
AuthService
({
$store
:
this
.
$store
});
/**
* vue 生命周期
*
...
...
@@ -649,7 +659,7 @@ export default class SDIndexViewBase extends Vue implements ControlInterface {
*/
public
computedEffectiveMenus
(
inputMenus
:
Array
<
any
>
){
inputMenus
.
forEach
((
_item
:
any
)
=>
{
if
(
!
this
.
$store
.
getters
[
'authresource/getAuthMenu'
]
(
_item
)){
if
(
!
this
.
authService
.
getMenusPermission
(
_item
)){
_item
.
hidden
=
true
;
if
(
_item
.
items
&&
_item
.
items
.
length
>
0
)
{
this
.
computedEffectiveMenus
(
_item
.
items
);
...
...
app_web/src/widgets/control-service.ts
浏览文件 @
71ace5c0
import
{
Store
}
from
'vuex'
;
import
{
Util
}
from
'@/utils/util/util'
;
import
CodeListService
from
"@
service/app
/codelist-service"
;
import
CodeListService
from
"@
/codelist
/codelist-service"
;
/**
* 部件服务基类
...
...
app_web/src/widgets/sdfile/default-searchform/default-searchform-base.vue
浏览文件 @
71ace5c0
...
...
@@ -277,6 +277,19 @@ export default class DefaultBase extends Vue implements ControlInterface {
n_filename_like
:
null
,
};
/**
* 详情模型集合
*
* @type {*}
* @memberof DefaultBase
*/
public
detailsModel
:
any
=
{
formpage1
:
new
FormPageModel
({
caption
:
'常规条件'
,
detailType
:
'FORMPAGE'
,
name
:
'formpage1'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
})
,
n_filename_like
:
new
FormItemModel
({
caption
:
'名称(文本包含(%))'
,
detailType
:
'FORMITEM'
,
name
:
'n_filename_like'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
};
/**
* 属性值规则
*
...
...
@@ -287,24 +300,11 @@ export default class DefaultBase extends Vue implements ControlInterface {
n_filename_like
:
[
{
type
:
'string'
,
message
:
'名称(文本包含(%)) 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
'名称(文本包含(%)) 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
'名称(文本包含(%)) 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
'名称(文本包含(%)) 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
n_filename_like
.
required
,
type
:
'string'
,
message
:
'名称(文本包含(%)) 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
n_filename_like
.
required
,
type
:
'string'
,
message
:
'名称(文本包含(%)) 值不能为空'
,
trigger
:
'blur'
},
],
}
/**
* 详情模型集合
*
* @type {*}
* @memberof DefaultBase
*/
public
detailsModel
:
any
=
{
formpage1
:
new
FormPageModel
({
caption
:
'常规条件'
,
detailType
:
'FORMPAGE'
,
name
:
'formpage1'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
})
,
n_filename_like
:
new
FormItemModel
({
caption
:
'名称(文本包含(%))'
,
detailType
:
'FORMITEM'
,
name
:
'n_filename_like'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
disabled
:
false
,
enableCond
:
3
})
,
};
/**
* 监控表单属性 n_filename_like 值
*
...
...
app_web/src/widgets/sdfile/default-searchform/default-searchform-service.ts
浏览文件 @
71ace5c0
...
...
@@ -363,6 +363,10 @@ export default class DefaultService extends ControlService {
}
else
{
if
(
item
&&
item
.
prop
){
requestData
[
item
.
prop
]
=
data
[
item
.
name
];
}
else
{
if
(
item
.
dataType
&&
Object
.
is
(
item
.
dataType
,
"FORMPART"
)){
Object
.
assign
(
requestData
,
data
[
item
.
name
]);
}
}
}
});
...
...
@@ -395,4 +399,40 @@ export default class DefaultService extends ControlService {
return
itemName
.
trim
();
}
/**
* 重写处理返回数据
*
* @param {string} action
* @param {*} response
* @memberof DefaultService
*/
public
handleResponseData
(
action
:
string
,
data
:
any
=
{},
isCreate
?:
boolean
,
codelistArray
?:
any
){
let
model
:
any
=
this
.
getMode
();
if
(
!
model
&&
model
.
getDataItems
instanceof
Function
)
{
return
data
;
}
let
item
:
any
=
{};
let
dataItems
:
any
[]
=
model
.
getDataItems
();
dataItems
.
forEach
(
dataitem
=>
{
let
val
=
data
.
hasOwnProperty
(
dataitem
.
prop
)
?
data
[
dataitem
.
prop
]
:
null
;
if
(
val
===
null
)
{
val
=
data
.
hasOwnProperty
(
dataitem
.
name
)
?
data
[
dataitem
.
name
]
:
null
;
}
if
((
isCreate
===
undefined
||
isCreate
===
null
)
&&
Object
.
is
(
dataitem
.
dataType
,
'GUID'
)
&&
Object
.
is
(
dataitem
.
name
,
'srfkey'
)
&&
(
val
&&
!
Object
.
is
(
val
,
''
))){
isCreate
=
true
;
}
item
[
dataitem
.
name
]
=
val
;
// 转化代码表
if
(
codelistArray
&&
dataitem
.
codelist
){
if
(
codelistArray
.
get
(
dataitem
.
codelist
.
tag
)
&&
codelistArray
.
get
(
dataitem
.
codelist
.
tag
).
get
(
val
)){
item
[
dataitem
.
name
]
=
codelistArray
.
get
(
dataitem
.
codelist
.
tag
).
get
(
val
);
}
}
});
item
.
srfuf
=
data
.
srfuf
?
data
.
srfuf
:
(
isCreate
?
"0"
:
"1"
);
item
=
Object
.
assign
(
data
,
item
);
return
item
;
}
}
\ No newline at end of file
app_web/src/widgets/sdfile/main-form/main-form-base.vue
浏览文件 @
71ace5c0
...
...
@@ -498,6 +498,14 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public
oldData
:
any
=
{};
/**
* 混入表单数据对象
*
* @type {*}
* @memberof MainBase
*/
public
mixinData
:
any
=
{};
/**
* 表单数据对象
*
...
...
@@ -573,134 +581,134 @@ export default class MainBase extends Vue implements ControlInterface {
srfupdatedate
:
[
{
type
:
'string'
,
message
:
'更新时间 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
'更新时间 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
'更新时间 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
'更新时间 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
srfupdatedate
.
required
,
type
:
'string'
,
message
:
'更新时间 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
srfupdatedate
.
required
,
type
:
'string'
,
message
:
'更新时间 值不能为空'
,
trigger
:
'blur'
},
],
srforikey
:
[
{
type
:
'string'
,
message
:
' 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
' 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
srforikey
.
required
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
srforikey
.
required
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'blur'
},
],
srfkey
:
[
{
type
:
'string'
,
message
:
'标识 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
'标识 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
'标识 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
'标识 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
srfkey
.
required
,
type
:
'string'
,
message
:
'标识 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
srfkey
.
required
,
type
:
'string'
,
message
:
'标识 值不能为空'
,
trigger
:
'blur'
},
],
srfmajortext
:
[
{
type
:
'string'
,
message
:
'名称 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
'名称 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
'名称 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
'名称 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
srfmajortext
.
required
,
type
:
'string'
,
message
:
'名称 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
srfmajortext
.
required
,
type
:
'string'
,
message
:
'名称 值不能为空'
,
trigger
:
'blur'
},
],
srftempmode
:
[
{
type
:
'string'
,
message
:
' 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
' 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
srftempmode
.
required
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
srftempmode
.
required
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'blur'
},
],
srfuf
:
[
{
type
:
'string'
,
message
:
' 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
' 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
srfuf
.
required
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
srfuf
.
required
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'blur'
},
],
srfdeid
:
[
{
type
:
'string'
,
message
:
' 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
' 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
srfdeid
.
required
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
srfdeid
.
required
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'blur'
},
],
srfsourcekey
:
[
{
type
:
'string'
,
message
:
' 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
' 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
srfsourcekey
.
required
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
srfsourcekey
.
required
,
type
:
'string'
,
message
:
' 值不能为空'
,
trigger
:
'blur'
},
],
filename
:
[
{
type
:
'string'
,
message
:
'名称 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
'名称 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
'名称 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
'名称 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
filename
.
required
,
type
:
'string'
,
message
:
'名称 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
filename
.
required
,
type
:
'string'
,
message
:
'名称 值不能为空'
,
trigger
:
'blur'
},
],
filepath
:
[
{
type
:
'string'
,
message
:
'路径 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
'路径 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
'路径 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
'路径 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
filepath
.
required
,
type
:
'string'
,
message
:
'路径 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
filepath
.
required
,
type
:
'string'
,
message
:
'路径 值不能为空'
,
trigger
:
'blur'
},
],
filesize
:
[
{
type
:
'number'
,
message
:
'文件大小 值必须为数值类型'
,
trigger
:
'change'
},
{
type
:
'number'
,
message
:
'文件大小 值必须为数值类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'number'
,
message
:
'文件大小 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'number'
,
message
:
'文件大小 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
filesize
.
required
,
type
:
'number'
,
message
:
'文件大小 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
filesize
.
required
,
type
:
'number'
,
message
:
'文件大小 值不能为空'
,
trigger
:
'blur'
},
],
fileext
:
[
{
type
:
'string'
,
message
:
'扩展名 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
'扩展名 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
'扩展名 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
'扩展名 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
fileext
.
required
,
type
:
'string'
,
message
:
'扩展名 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
fileext
.
required
,
type
:
'string'
,
message
:
'扩展名 值不能为空'
,
trigger
:
'blur'
},
],
folder
:
[
{
type
:
'string'
,
message
:
'特定目录 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
'特定目录 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
'特定目录 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
'特定目录 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
folder
.
required
,
type
:
'string'
,
message
:
'特定目录 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
folder
.
required
,
type
:
'string'
,
message
:
'特定目录 值不能为空'
,
trigger
:
'blur'
},
],
digestcode
:
[
{
type
:
'string'
,
message
:
'签名 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
'签名 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
'签名 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
'签名 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
digestcode
.
required
,
type
:
'string'
,
message
:
'签名 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
digestcode
.
required
,
type
:
'string'
,
message
:
'签名 值不能为空'
,
trigger
:
'blur'
},
],
ownerid
:
[
{
type
:
'string'
,
message
:
'所属主体 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
'所属主体 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
'所属主体 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
'所属主体 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
ownerid
.
required
,
type
:
'string'
,
message
:
'所属主体 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
ownerid
.
required
,
type
:
'string'
,
message
:
'所属主体 值不能为空'
,
trigger
:
'blur'
},
],
ownertype
:
[
{
type
:
'string'
,
message
:
'所属类型 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
'所属类型 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
'所属类型 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
'所属类型 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
ownertype
.
required
,
type
:
'string'
,
message
:
'所属类型 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
ownertype
.
required
,
type
:
'string'
,
message
:
'所属类型 值不能为空'
,
trigger
:
'blur'
},
],
memo
:
[
{
type
:
'string'
,
message
:
'备注 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
'备注 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
'备注 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
'备注 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
memo
.
required
,
type
:
'string'
,
message
:
'备注 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
memo
.
required
,
type
:
'string'
,
message
:
'备注 值不能为空'
,
trigger
:
'blur'
},
],
createman
:
[
{
type
:
'string'
,
message
:
'创建人 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
'创建人 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
'创建人 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
'创建人 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
createman
.
required
,
type
:
'string'
,
message
:
'创建人 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
createman
.
required
,
type
:
'string'
,
message
:
'创建人 值不能为空'
,
trigger
:
'blur'
},
],
createdate
:
[
{
type
:
'string'
,
message
:
'创建日期 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
'创建日期 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
'创建日期 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
'创建日期 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
createdate
.
required
,
type
:
'string'
,
message
:
'创建日期 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
createdate
.
required
,
type
:
'string'
,
message
:
'创建日期 值不能为空'
,
trigger
:
'blur'
},
],
updateman
:
[
{
type
:
'string'
,
message
:
'更新人 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
'更新人 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
'更新人 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
'更新人 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
updateman
.
required
,
type
:
'string'
,
message
:
'更新人 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
updateman
.
required
,
type
:
'string'
,
message
:
'更新人 值不能为空'
,
trigger
:
'blur'
},
],
updatedate
:
[
{
type
:
'string'
,
message
:
'更新时间 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
'更新时间 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
'更新时间 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
'更新时间 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
updatedate
.
required
,
type
:
'string'
,
message
:
'更新时间 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
updatedate
.
required
,
type
:
'string'
,
message
:
'更新时间 值不能为空'
,
trigger
:
'blur'
},
],
fileid
:
[
{
type
:
'string'
,
message
:
'标识 值必须为字符串类型'
,
trigger
:
'change'
},
{
type
:
'string'
,
message
:
'标识 值必须为字符串类型'
,
trigger
:
'blur'
},
{
required
:
false
,
type
:
'string'
,
message
:
'标识 值不能为空'
,
trigger
:
'change'
},
{
required
:
false
,
type
:
'string'
,
message
:
'标识 值不能为空'
,
trigger
:
'blur'
},
{
required
:
this
.
detailsModel
.
fileid
.
required
,
type
:
'string'
,
message
:
'标识 值不能为空'
,
trigger
:
'change'
},
{
required
:
this
.
detailsModel
.
fileid
.
required
,
type
:
'string'
,
message
:
'标识 值不能为空'
,
trigger
:
'blur'
},
],
}
}
...
...
@@ -794,49 +802,49 @@ export default class MainBase extends Vue implements ControlInterface {
,
formpage1
:
new
FormPageModel
({
caption
:
'基本信息'
,
detailType
:
'FORMPAGE'
,
name
:
'formpage1'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
})
,
srfupdatedate
:
new
FormItemModel
({
caption
:
'更新时间'
,
detailType
:
'FORMITEM'
,
name
:
'srfupdatedate'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
srfupdatedate
:
new
FormItemModel
({
caption
:
'更新时间'
,
detailType
:
'FORMITEM'
,
name
:
'srfupdatedate'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
srforikey
:
new
FormItemModel
({
caption
:
''
,
detailType
:
'FORMITEM'
,
name
:
'srforikey'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
srforikey
:
new
FormItemModel
({
caption
:
''
,
detailType
:
'FORMITEM'
,
name
:
'srforikey'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
srfkey
:
new
FormItemModel
({
caption
:
'标识'
,
detailType
:
'FORMITEM'
,
name
:
'srfkey'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
srfkey
:
new
FormItemModel
({
caption
:
'标识'
,
detailType
:
'FORMITEM'
,
name
:
'srfkey'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
srfmajortext
:
new
FormItemModel
({
caption
:
'名称'
,
detailType
:
'FORMITEM'
,
name
:
'srfmajortext'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
srfmajortext
:
new
FormItemModel
({
caption
:
'名称'
,
detailType
:
'FORMITEM'
,
name
:
'srfmajortext'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
srftempmode
:
new
FormItemModel
({
caption
:
''
,
detailType
:
'FORMITEM'
,
name
:
'srftempmode'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
srftempmode
:
new
FormItemModel
({
caption
:
''
,
detailType
:
'FORMITEM'
,
name
:
'srftempmode'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
srfuf
:
new
FormItemModel
({
caption
:
''
,
detailType
:
'FORMITEM'
,
name
:
'srfuf'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
srfuf
:
new
FormItemModel
({
caption
:
''
,
detailType
:
'FORMITEM'
,
name
:
'srfuf'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
srfdeid
:
new
FormItemModel
({
caption
:
''
,
detailType
:
'FORMITEM'
,
name
:
'srfdeid'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
srfdeid
:
new
FormItemModel
({
caption
:
''
,
detailType
:
'FORMITEM'
,
name
:
'srfdeid'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
srfsourcekey
:
new
FormItemModel
({
caption
:
''
,
detailType
:
'FORMITEM'
,
name
:
'srfsourcekey'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
srfsourcekey
:
new
FormItemModel
({
caption
:
''
,
detailType
:
'FORMITEM'
,
name
:
'srfsourcekey'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
filename
:
new
FormItemModel
({
caption
:
'名称'
,
detailType
:
'FORMITEM'
,
name
:
'filename'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
filename
:
new
FormItemModel
({
caption
:
'名称'
,
detailType
:
'FORMITEM'
,
name
:
'filename'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
filepath
:
new
FormItemModel
({
caption
:
'路径'
,
detailType
:
'FORMITEM'
,
name
:
'filepath'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
filepath
:
new
FormItemModel
({
caption
:
'路径'
,
detailType
:
'FORMITEM'
,
name
:
'filepath'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
filesize
:
new
FormItemModel
({
caption
:
'文件大小'
,
detailType
:
'FORMITEM'
,
name
:
'filesize'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
filesize
:
new
FormItemModel
({
caption
:
'文件大小'
,
detailType
:
'FORMITEM'
,
name
:
'filesize'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
fileext
:
new
FormItemModel
({
caption
:
'扩展名'
,
detailType
:
'FORMITEM'
,
name
:
'fileext'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
fileext
:
new
FormItemModel
({
caption
:
'扩展名'
,
detailType
:
'FORMITEM'
,
name
:
'fileext'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
folder
:
new
FormItemModel
({
caption
:
'特定目录'
,
detailType
:
'FORMITEM'
,
name
:
'folder'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
folder
:
new
FormItemModel
({
caption
:
'特定目录'
,
detailType
:
'FORMITEM'
,
name
:
'folder'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
digestcode
:
new
FormItemModel
({
caption
:
'签名'
,
detailType
:
'FORMITEM'
,
name
:
'digestcode'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
digestcode
:
new
FormItemModel
({
caption
:
'签名'
,
detailType
:
'FORMITEM'
,
name
:
'digestcode'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
ownerid
:
new
FormItemModel
({
caption
:
'所属主体'
,
detailType
:
'FORMITEM'
,
name
:
'ownerid'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
ownerid
:
new
FormItemModel
({
caption
:
'所属主体'
,
detailType
:
'FORMITEM'
,
name
:
'ownerid'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
ownertype
:
new
FormItemModel
({
caption
:
'所属类型'
,
detailType
:
'FORMITEM'
,
name
:
'ownertype'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
ownertype
:
new
FormItemModel
({
caption
:
'所属类型'
,
detailType
:
'FORMITEM'
,
name
:
'ownertype'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
memo
:
new
FormItemModel
({
caption
:
'备注'
,
detailType
:
'FORMITEM'
,
name
:
'memo'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
memo
:
new
FormItemModel
({
caption
:
'备注'
,
detailType
:
'FORMITEM'
,
name
:
'memo'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
createman
:
new
FormItemModel
({
caption
:
'创建人'
,
detailType
:
'FORMITEM'
,
name
:
'createman'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
createman
:
new
FormItemModel
({
caption
:
'创建人'
,
detailType
:
'FORMITEM'
,
name
:
'createman'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
createdate
:
new
FormItemModel
({
caption
:
'创建日期'
,
detailType
:
'FORMITEM'
,
name
:
'createdate'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
createdate
:
new
FormItemModel
({
caption
:
'创建日期'
,
detailType
:
'FORMITEM'
,
name
:
'createdate'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
updateman
:
new
FormItemModel
({
caption
:
'更新人'
,
detailType
:
'FORMITEM'
,
name
:
'updateman'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
updateman
:
new
FormItemModel
({
caption
:
'更新人'
,
detailType
:
'FORMITEM'
,
name
:
'updateman'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
updatedate
:
new
FormItemModel
({
caption
:
'更新时间'
,
detailType
:
'FORMITEM'
,
name
:
'updatedate'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
updatedate
:
new
FormItemModel
({
caption
:
'更新时间'
,
detailType
:
'FORMITEM'
,
name
:
'updatedate'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
fileid
:
new
FormItemModel
({
caption
:
'标识'
,
detailType
:
'FORMITEM'
,
name
:
'fileid'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
disabled
:
false
,
enableCond
:
3
})
fileid
:
new
FormItemModel
({
caption
:
'标识'
,
detailType
:
'FORMITEM'
,
name
:
'fileid'
,
visible
:
true
,
isShowCaption
:
true
,
form
:
this
,
isControlledContent
:
false
,
required
:
false
,
disabled
:
false
,
enableCond
:
3
})
,
};
...
...
@@ -1251,6 +1259,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @memberof MainBase
*/
public
fillForm
(
_datas
:
any
=
{},
action
:
string
):
void
{
this
.
mixinData
=
_datas
;
this
.
ignorefieldvaluechange
=
true
;
Object
.
keys
(
_datas
).
forEach
((
name
:
string
)
=>
{
if
(
this
.
data
.
hasOwnProperty
(
name
))
{
...
...
config.xml
浏览文件 @
71ace5c0
...
...
@@ -37,11 +37,6 @@
git clone -b master $para2 ibzdisk/
export NODE_OPTIONS=--max-old-space-size=4096
cd ibzdisk/
mvn clean package -Papi
cd ibzdisk-provider/ibzdisk-provider-api
mvn -Papi docker:build
mvn -Papi docker:push
docker -H $para1 stack deploy --compose-file=src/main/docker/ibzdisk-provider-api.yaml ibzlab-rt --with-registry-auth
</command>
</hudson.tasks.Shell>
</builders>
...
...
ibzdisk-provider/ibzdisk-provider-api/src/main/docker/Dockerfile
浏览文件 @
71ace5c0
...
...
@@ -12,6 +12,6 @@ CMD echo "The application will start in ${IBIZ_SLEEP}s..." && \
sleep ${IBIZ_SLEEP} && \
java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /ibzdisk-provider-api.jar
EXPOSE
40006
EXPOSE
8081
ADD
ibzdisk-provider-api.jar /ibzdisk-provider-api.jar
ibzdisk-provider/ibzdisk-provider-api/src/main/docker/ibzdisk-provider-api.yaml
浏览文件 @
71ace5c0
...
...
@@ -3,22 +3,9 @@ services:
ibzdisk-provider-api
:
image
:
registry.cn-shanghai.aliyuncs.com/ibizsys/ibzdisk-provider-api:latest
ports
:
-
"
40006:40006
"
-
"
8081:8081
"
networks
:
-
agent_network
environment
:
-
SPRING_CLOUD_NACOS_DISCOVERY_IP=172.16.180.237
-
SERVER_PORT=40006
-
SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR=172.16.102.211:8848
-
SPRING_REDIS_HOST=172.16.100.243
-
SPRING_REDIS_PORT=6379
-
SPRING_REDIS_DATABASE=0
-
SPRING_DATASOURCE_USERNAME=a_A_5d9d78509
-
SPRING_DATASOURCE_PASSWORD=@6dEfb3@
-
SPRING_DATASOURCE_URL=jdbc:mysql://172.16.180.232:3306/a_A_5d9d78509?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true&allowMultiQueries=true
-
SPRING_DATASOURCE_DRIVER-CLASS-NAME=com.mysql.jdbc.Driver
-
SPRING_DATASOURCE_DEFAULTSCHEMA=a_A_5d9d78509
-
NACOS=172.16.102.211:8848
deploy
:
resources
:
limits
:
...
...
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录