Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
I
ibztask
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
ibiz4jteam
ibztask
提交
7dc9d263
提交
7dc9d263
编写于
12月 03, 2020
作者:
ibizdev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ibiz4j 发布系统代码 [ibiz-task,任务调度]
上级
8e1162eb
变更
95
展开全部
隐藏空白字符变更
内嵌
并排
正在显示
95 个修改的文件
包含
3706 行增加
和
499 行删除
+3706
-499
.gitignore
.gitignore
+1
-0
CHANGELOG.md
app_web/CHANGELOG.md
+148
-0
package.json
app_web/package.json
+4
-10
avue.min.js
app_web/public/assets/js/avue.min.js
+3
-3
app-register.ts
app_web/src/app-register.ts
+16
-0
codelist-service.ts
app_web/src/codelist/codelist-service.ts
+24
-0
app-after-time.vue
app_web/src/components/app-after-time/app-after-time.vue
+138
-0
app-alert-group.vue
app_web/src/components/app-alert-group/app-alert-group.vue
+7
-1
app-color-picker.less
...web/src/components/app-color-picker/app-color-picker.less
+24
-0
app-color-picker.vue
app_web/src/components/app-color-picker/app-color-picker.vue
+184
-0
app-color-span.vue
app_web/src/components/app-color-span/app-color-span.vue
+163
-0
app-form-druipart.vue
...eb/src/components/app-form-druipart/app-form-druipart.vue
+42
-1
app-form-item.less
app_web/src/components/app-form-item/app-form-item.less
+3
-1
app-form-item.vue
app_web/src/components/app-form-item/app-form-item.vue
+35
-3
app-input-ip.less
app_web/src/components/app-input-ip/app-input-ip.less
+8
-0
app-input-ip.vue
app_web/src/components/app-input-ip/app-input-ip.vue
+189
-0
app-map-position.less
...web/src/components/app-map-position/app-map-position.less
+54
-0
app-map-position.vue
app_web/src/components/app-map-position/app-map-position.vue
+469
-0
app-panel-field.less
app_web/src/components/app-panel-field/app-panel-field.less
+2
-1
app-picker.vue
app_web/src/components/app-picker/app-picker.vue
+15
-5
app-quick-group.vue
app_web/src/components/app-quick-group/app-quick-group.vue
+1
-1
app-rate.vue
app_web/src/components/app-rate/app-rate.vue
+214
-50
app-sort-bar.less
app_web/src/components/app-sort-bar/app-sort-bar.less
+84
-0
app-sort-bar.vue
app_web/src/components/app-sort-bar/app-sort-bar.vue
+65
-0
app-vue-pivottable.vue
.../src/components/app-vue-pivottable/app-vue-pivottable.vue
+208
-0
codelist.vue
app_web/src/components/codelist/codelist.vue
+61
-3
dropdown-list.vue
app_web/src/components/dropdown-list/dropdown-list.vue
+1
-2
login.vue
app_web/src/components/login/login.vue
+4
-38
menu-icon.less
app_web/src/components/menu-icon/menu-icon.less
+3
-0
menu-icon.tsx
app_web/src/components/menu-icon/menu-icon.tsx
+2
-2
loadding.ts
app_web/src/directive/loadding/loadding.ts
+149
-0
edit-view3-engine.ts
app_web/src/engine/view/edit-view3-engine.ts
+2
-4
edit-view4-engine.ts
app_web/src/engine/view/edit-view4-engine.ts
+2
-2
map-view-engine.ts
app_web/src/engine/view/map-view-engine.ts
+68
-0
map-view9-engine.ts
app_web/src/engine/view/map-view9-engine.ts
+13
-0
tab-exp-view-engine.ts
app_web/src/engine/view/tab-exp-view-engine.ts
+3
-0
view-engine.ts
app_web/src/engine/view/view-engine.ts
+7
-1
wfdyna-edit-view-engine.ts
app_web/src/engine/view/wfdyna-edit-view-engine.ts
+7
-5
components_en_US.ts
app_web/src/locale/lanres/components/components_en_US.ts
+15
-1
components_zh_CN.ts
app_web/src/locale/lanres/components/components_zh_CN.ts
+15
-1
jobs-info-edit-view-base.vue
...ges/task/jobs-info-edit-view/jobs-info-edit-view-base.vue
+2
-2
jobs-info-grid-view-base.vue
...ges/task/jobs-info-grid-view/jobs-info-grid-view-base.vue
+8
-8
jobs-log-grid-view-base.vue
...pages/task/jobs-log-grid-view/jobs-log-grid-view-base.vue
+1
-1
jobs-registry-edit-view-base.vue
.../jobs-registry-edit-view/jobs-registry-edit-view-base.vue
+2
-2
jobs-registry-grid-view-base.vue
.../jobs-registry-grid-view/jobs-registry-grid-view-base.vue
+5
-5
main.ts
app_web/src/pages/task/task-index-view/main.ts
+9
-0
jobs-info-service-base.ts
app_web/src/service/jobs-info/jobs-info-service-base.ts
+14
-0
jobs-lock-service-base.ts
app_web/src/service/jobs-lock/jobs-lock-service-base.ts
+14
-0
jobs-log-service-base.ts
app_web/src/service/jobs-log/jobs-log-service-base.ts
+14
-0
jobs-registry-service-base.ts
...b/src/service/jobs-registry/jobs-registry-service-base.ts
+14
-0
shims-vue.d.ts
app_web/src/shims-vue.d.ts
+3
-1
default.less
app_web/src/styles/default.less
+2
-2
template.html
app_web/src/template.html
+1
-1
http.ts
app_web/src/utils/http/http.ts
+46
-14
interceptor.ts
app_web/src/utils/interceptor/interceptor.ts
+32
-0
util.d.ts
app_web/src/utils/types/util.d.ts
+16
-2
util.ts
app_web/src/utils/util/util.ts
+37
-1
task-index-view-appmenu-base.vue
.../task-index-view-appmenu/task-index-view-appmenu-base.vue
+2
-2
default-searchform-base.vue
.../jobs-info/default-searchform/default-searchform-base.vue
+2
-2
main-form-base.vue
app_web/src/widgets/jobs-info/main-form/main-form-base.vue
+58
-30
main-form.less
app_web/src/widgets/jobs-info/main-form/main-form.less
+1
-0
main-grid-base.vue
app_web/src/widgets/jobs-info/main-grid/main-grid-base.vue
+240
-38
default-searchform-base.vue
...s/jobs-log/default-searchform/default-searchform-base.vue
+2
-2
main-form-base.vue
app_web/src/widgets/jobs-log/main-form/main-form-base.vue
+58
-30
main-form.less
app_web/src/widgets/jobs-log/main-form/main-form.less
+1
-0
main-grid-base.vue
app_web/src/widgets/jobs-log/main-grid/main-grid-base.vue
+238
-38
default-searchform-base.vue
...s-registry/default-searchform/default-searchform-base.vue
+2
-2
main-form-base.vue
...eb/src/widgets/jobs-registry/main-form/main-form-base.vue
+58
-30
main-form.less
app_web/src/widgets/jobs-registry/main-form/main-form.less
+1
-0
main-grid-base.vue
...eb/src/widgets/jobs-registry/main-grid/main-grid-base.vue
+230
-38
config.xml
config.xml
+0
-5
webSecurityConfig.java
...rc/main/java/cn/ibizlab/web/config/webSecurityConfig.java
+4
-4
webApplication.java
...-app-web/src/main/java/cn/ibizlab/web/webApplication.java
+2
-2
DevBootApplication.java
...ask-boot/src/main/java/cn/ibizlab/DevBootApplication.java
+4
-4
DevBootSecurityConfig.java
...rc/main/java/cn/ibizlab/config/DevBootSecurityConfig.java
+2
-2
JobsInfoSearchContext.java
...va/cn/ibizlab/core/task/filter/JobsInfoSearchContext.java
+1
-1
JobsLockSearchContext.java
...va/cn/ibizlab/core/task/filter/JobsLockSearchContext.java
+1
-1
JobsLogSearchContext.java
...ava/cn/ibizlab/core/task/filter/JobsLogSearchContext.java
+1
-1
JobsRegistrySearchContext.java
...n/ibizlab/core/task/filter/JobsRegistrySearchContext.java
+1
-1
JobsInfoServiceImpl.java
...n/ibizlab/core/task/service/impl/JobsInfoServiceImpl.java
+2
-2
systemResource.json
...sk-core/src/main/resources/permission/systemResource.json
+14
-14
ibztask.json
ibztask-core/src/main/resources/sysmodel/ibztask.json
+8
-0
Dockerfile
...-provider/ibztask-provider-api/src/main/docker/Dockerfile
+1
-1
ibztask-provider-api.yaml
...sk-provider-api/src/main/docker/ibztask-provider-api.yaml
+1
-15
apiAutoConfiguration.java
...main/java/cn/ibizlab/api/config/apiAutoConfiguration.java
+1
-1
DTOBase.java
...sk-util/src/main/java/cn/ibizlab/util/domain/DTOBase.java
+43
-4
AuthenticationUserService.java
...va/cn/ibizlab/util/service/AuthenticationUserService.java
+3
-3
IBZConfigService.java
...c/main/java/cn/ibizlab/util/service/IBZConfigService.java
+15
-15
IBZDataAuditService.java
...ain/java/cn/ibizlab/util/service/IBZDataAuditService.java
+2
-2
IBZUAAUserService.java
.../main/java/cn/ibizlab/util/service/IBZUAAUserService.java
+8
-8
IBZUSERServiceImpl.java
...main/java/cn/ibizlab/util/service/IBZUSERServiceImpl.java
+16
-15
RemoteService.java
.../src/main/java/cn/ibizlab/util/service/RemoteService.java
+4
-6
SimpleAuditService.java
...main/java/cn/ibizlab/util/service/SimpleAuditService.java
+1
-1
SimpleFileService.java
.../main/java/cn/ibizlab/util/service/SimpleFileService.java
+1
-1
SearchContextHandlerMethodArgumentResolver.java
.../util/web/SearchContextHandlerMethodArgumentResolver.java
+4
-4
未找到文件。
.gitignore
浏览文件 @
7dc9d263
...
...
@@ -12,3 +12,4 @@
**.iml
*.jar
*.log
.DS_Store
app_web/CHANGELOG.md
浏览文件 @
7dc9d263
此差异已折叠。
点击以展开。
app_web/package.json
浏览文件 @
7dc9d263
...
...
@@ -9,8 +9,7 @@
"dev-build"
:
"node --max_old_space_size=8102 ./node_modules/@vue/cli-service/bin/vue-cli-service build --mode development"
,
"test:unit"
:
"vue-cli-service test:unit"
,
"test:e2e"
:
"vue-cli-service test:e2e"
,
"lint"
:
"vue-cli-service lint"
,
"format-code"
:
"prettier-eslint --write
\"
src/**/*.js
\"
\"
src/**/*.vue
\"
\"
src/**/*.tsx
\"
\"
src/**/*.ts
\"
\"
src/**/*.less
\"
"
"lint"
:
"vue-cli-service lint"
},
"dependencies"
:
{
"@fullcalendar/core"
:
"^4.4.0"
,
...
...
@@ -30,6 +29,7 @@
"font-awesome"
:
"^4.7.0"
,
"ibiz-gantt-elastic"
:
"^1.0.17"
,
"ibiz-vue-lib"
:
"^0.1.13"
,
"ibiz-vue-pivottable"
:
"^1.0.6"
,
"interactjs"
:
"^1.9.4"
,
"moment"
:
"^2.24.0"
,
"path-to-regexp"
:
"^6.1.0"
,
...
...
@@ -38,6 +38,7 @@
"tinymce"
:
"4.8.5"
,
"view-design"
:
"4.2.0"
,
"vue"
:
"^2.6.10"
,
"vue-amap"
:
"^0.5.10"
,
"vue-class-component"
:
"^7.0.2"
,
"vue-grid-layout"
:
"^2.3.7"
,
"vue-i18n"
:
"^8.15.3"
,
...
...
@@ -65,14 +66,7 @@
"less-loader"
:
"^5.0.0"
,
"mockjs"
:
"^1.1.0"
,
"script-loader"
:
"^0.7.2"
,
"typescript"
:
"
~3.5
.3"
,
"typescript"
:
"
^4.0
.3"
,
"vue-template-compiler"
:
"^2.6.10"
},
"eslintConfig"
:
{
"root"
:
true
,
"extends"
:
[
"gitee"
,
"stylelint-config-prettier"
]
}
}
app_web/public/assets/js/avue.min.js
浏览文件 @
7dc9d263
此差异已折叠。
点击以展开。
app_web/src/app-register.ts
浏览文件 @
7dc9d263
...
...
@@ -99,6 +99,14 @@ import AppAlertGroup from './components/app-alert-group/app-alert-group.vue'
import
AppRawItem
from
'./components/app-rawitem/app-rawitem.vue'
import
AppImageRomate
from
'./components/app-image-romate/app-image-romate.vue'
import
{
MenuIcon
}
from
'./components/menu-icon/menu-icon'
import
AppVuePivottable
from
'./components/app-vue-pivottable/app-vue-pivottable.vue'
;
import
AppMapPosition
from
'./components/app-map-position/app-map-position.vue'
;
import
AppSortBar
from
'./components/app-sort-bar/app-sort-bar.vue'
;
import
AppAfterTime
from
'./components/app-after-time/app-after-time.vue'
;
import
AppInputIp
from
'./components/app-input-ip/app-input-ip.vue'
;
import
Loadding
from
'./directive/loadding/loadding'
;
import
AppColorSpan
from
'./components/app-color-span/app-color-span.vue'
;
import
AppColorPicker
from
'./components/app-color-picker/app-color-picker.vue'
;
// 全局挂载UI实体服务注册中心
window
[
'uiServiceRegister'
]
=
uiServiceRegister
;
...
...
@@ -213,5 +221,13 @@ export const AppComponents = {
v
.
component
(
'app-rawitem'
,
AppRawItem
);
v
.
component
(
'app-image-romate'
,
AppImageRomate
);
v
.
component
(
'menu-icon'
,
MenuIcon
);
v
.
component
(
'app-vue-pivottable'
,
AppVuePivottable
);
v
.
component
(
'app-map-position'
,
AppMapPosition
);
v
.
component
(
'app-sort-bar'
,
AppSortBar
);
v
.
component
(
'app-after-time'
,
AppAfterTime
);
v
.
component
(
'app-input-ip'
,
AppInputIp
);
v
.
directive
(
'loading'
,
Loadding
);
v
.
component
(
'app-color-span'
,
AppColorSpan
);
v
.
component
(
'app-color-picker'
,
AppColorPicker
);
},
};
\ No newline at end of file
app_web/src/codelist/codelist-service.ts
浏览文件 @
7dc9d263
...
...
@@ -69,6 +69,30 @@ export default class CodeListService {
return
(
window
as
any
)[
'codeListRegister'
].
getService
(
name
);
}
/**
* 获取代码表数据
*
* @param {string} tag 代码表标识
* @param {*} context
* @param {*} data
* @param {boolean} isloading
* @returns {Promise<any[]>}
* @memberof CodeListService
*/
public
async
getDataItems
(
codelist
:
any
,
context
?:
any
,
data
?:
any
,
isloading
?:
boolean
){
let
dataItems
:
Array
<
any
>
=
[];
try
{
if
(
codelist
.
tag
&&
Object
.
is
(
codelist
.
type
,
"STATIC"
)){
dataItems
=
await
this
.
getStaticItems
(
codelist
.
tag
);
}
else
{
dataItems
=
await
this
.
getItems
(
codelist
.
tag
,
codelist
.
context
,
codelist
.
viewparam
,
codelist
.
isloading
);
}
}
catch
(
error
){
console
.
warn
(
"代码表加载异常"
+
error
);
}
return
dataItems
;
}
/**
* 获取静态代码表
*
...
...
app_web/src/components/app-after-time/app-after-time.vue
0 → 100644
浏览文件 @
7dc9d263
<
template
>
<div
class=
"app-after-time"
>
<span
v-if=
"diffTime =='minutes'"
>
{{
curvalue
}}{{
$t
(
'components.appAfterTime.minutesAgo'
)
}}
</span>
<span
v-if=
"diffTime =='hours'"
>
{{
curvalue
}}{{
$t
(
'components.appAfterTime.hoursAgo'
)
}}
</span>
<span
v-if=
"diffTime =='days'"
>
{{
curvalue
}}{{
$t
(
'components.appAfterTime.dayAgo'
)
}}
</span>
<span
v-if=
"diffTime =='mouth'"
>
{{
curvalue
}}{{
$t
(
'components.appAfterTime.monthsAgo'
)
}}
</span>
<span
v-if=
"diffTime =='years'"
>
{{
curvalue
}}{{
$t
(
'components.appAfterTime.yearsAgo'
)
}}
</span>
<span
v-if=
"!diffTime"
>
</span>
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Vue
,
Component
,
Prop
,
Emit
,
Watch
,
Model
}
from
'vue-property-decorator'
;
import
{
Subject
,
Subscription
}
from
'rxjs'
;
import
moment
from
'moment'
;
@
Component
({})
export
default
class
AppAfterTime
extends
Vue
{
/**
* 属性项名称
*
* @type {string}
* @memberof AppAfterTime
*/
@
Prop
()
public
name
!
:
string
;
/**
* 应用上下文
*
* @type {any}
* @memberof AppAfterTime
*/
@
Prop
()
context
:
any
;
/**
* 视图参数
*
* @type {any}
* @memberof AppAfterTime
*/
@
Prop
()
viewparam
:
any
;
/**
* 表单状态对象
*
* @type {Subject<any>}
* @memberof AppAfterTime
*/
@
Prop
()
public
formState
?:
Subject
<
any
>
;
/**
* 表单绑定数据
*
* @type {any}
* @memberof AppAfterTime
*/
@
Model
(
'change'
)
public
value
:
any
;
/**
* 当前值
*
* @type {any}
* @memberof AppAfterTime
*/
public
curvalue
:
string
=
''
;
/**
* 毫秒差
*
* @type {any}
* @memberof AppAfterTime
*/
public
diffTime
:
any
=
''
;
/**
* 值变化
*
* @param {*} newVal
* @param {*} oldVal
* @memberof AppAfterTime
*/
@
Watch
(
'value'
)
public
onValueChange
(
newVal
:
any
,
oldVal
:
any
)
{
this
.
transTime
();
}
/**
* Vue声明周期(处理组件的输入属性)
*
* @memberof AppAfterTime
*/
public
created
(){
if
(
this
.
formState
){
this
.
formState
.
subscribe
(({
type
,
data
})
=>
{
if
(
Object
.
is
(
'load'
,
type
)){
this
.
transTime
();
}
})
}
this
.
transTime
();
}
/**
* 处理时间
*
* @memberof AppAfterTime
*/
public
transTime
(){
if
(
this
.
value
){
let
dateString
:
any
=
'YYYY年MM月DD日'
||
'YYYY年MM月DD日 HH时mm分ss秒'
||
'YYYY-MM-DD HH:mm:ss'
||
'YYYY-MM-DD'
||
'YYYY/MM/DD HH:mm:ss'
||
'YYYY/MM/DD'
;
let
oldTime
=
moment
(
this
.
value
,
dateString
).
valueOf
();
let
nowTime
=
moment
().
valueOf
();
let
diffTime
=
nowTime
-
oldTime
;
if
(
diffTime
<
3600000
){
this
.
curvalue
=
Math
.
ceil
(
diffTime
/
60000
)
+
''
;
this
.
diffTime
=
'minutes'
;
}
else
if
(
diffTime
<
86400000
){
this
.
curvalue
=
Math
.
ceil
(
diffTime
/
3600000
)
+
''
;
this
.
diffTime
=
'hours'
;
}
else
if
(
diffTime
<
2592000000
){
this
.
curvalue
=
Math
.
floor
(
diffTime
/
86400000
)
+
''
;
this
.
diffTime
=
'days'
;
}
else
if
(
diffTime
<
31104000000
){
this
.
curvalue
=
Math
.
floor
(
diffTime
/
2592000000
)
+
''
;
this
.
diffTime
=
'mouth'
;
}
else
{
this
.
curvalue
=
Math
.
floor
(
diffTime
/
31104000000
)
+
''
;
this
.
diffTime
=
'years'
;
}
}
}
}
</
script
>
<
style
>
.app-after-time
{
margin-left
:
6px
;
}
</
style
>
\ No newline at end of file
app_web/src/components/app-alert-group/app-alert-group.vue
浏览文件 @
7dc9d263
...
...
@@ -110,4 +110,10 @@ export default class AppAlertGroup extends Vue {
});
}
}
</
script
>
\ No newline at end of file
</
script
>
<
style
lang=
"less"
>
.view-body-messages {
margin-bottom: 6px;
}
</
style
>
\ No newline at end of file
app_web/src/components/app-color-picker/app-color-picker.less
0 → 100644
浏览文件 @
7dc9d263
.app-color-picker {
.el-color-picker__trigger {
border: none;
left: 6px;
.el-color-picker__color {
border: 0.5px solid #dcdee2;
cursor: pointer;
top: 20px;
width: 77%;
height: 5px;
left: 3px;
.el-icon-close {
display: none;
}
}
}
.ivu-icon {
font-size: 22px;
position: absolute;
top: 2px;
right: -1px;
cursor: pointer;
}
}
\ No newline at end of file
app_web/src/components/app-color-picker/app-color-picker.vue
0 → 100644
浏览文件 @
7dc9d263
<
template
>
<div
class=
"app-color-picker"
>
<el-input
v-model=
"curVal"
size=
"small"
ref=
"colorPicker"
:disabled=
"disabled"
:placeholder=
"placeholder"
>
<template
slot=
"suffix"
>
<el-color-picker
ref=
"picker"
v-model=
"colorValue"
@
change=
"colorChange"
size=
"small"
>
</el-color-picker>
<Icon
type=
"md-color-palette"
@
click=
"iconClick"
/>
</
template
>
</el-input>
</div>
</template>
<
script
lang=
"ts"
>
import
{
Vue
,
Component
,
Watch
,
Prop
,
Model
}
from
'vue-property-decorator'
;
import
CodeListService
from
'@codelist/codelist-service'
;
import
{
Subject
,
Subscription
}
from
'rxjs'
;
@
Component
({})
export
default
class
AppColorPicker
extends
Vue
{
/**
* 双向绑定表单项数据
*
* @type {*}
* @memberof AppColorPicker
*/
@
Model
(
'change'
)
public
value
:
any
;
/**
* 表单数据
*
* @type {*}
* @memberof AppColorPicker
*/
@
Prop
()
public
data
:
any
;
/**
* 表单通讯对象
*
* @type {*}
* @memberof AppColorPicker
*/
@
Prop
()
public
formState
?:
Subject
<
any
>
;
/**
* 禁用状态
*
* @type {*}
* @memberof AppColorPicker
*/
@
Prop
({
default
:
false
})
public
disabled
?:
boolean
;
/**
* 占位提示
*
* @type {*}
* @memberof AppColorPicker
*/
@
Prop
()
public
placeholder
?:
string
;
/**
* 上下文
*
* @type {*}
* @memberof AppColorPicker
*/
@
Prop
()
public
context
:
any
;
/**
* 视图参数
*
* @type {*}
* @memberof AppColorPicker
*/
@
Prop
()
public
viewparam
:
any
;
/**
* 颜色对应字段值
*
* @type {*}
* @memberof AppColorPicker
*/
@
Prop
()
public
color
:
any
;
/**
* 双向绑定颜色
*
* @type {*}
* @memberof AppColorPicker
*/
public
colorValue
:
any
=
null
;
/**
* 获取输入框值
*
* @type {*}
* @memberof AppColorPicker
*/
get
curVal
()
{
return
this
.
value
;
}
/**
* 设置值
*
* @type {*}
* @memberof AppColorPicker
*/
set
curVal
(
val
:
any
)
{
this
.
$emit
(
'change'
,
val
);
}
/**
* Vue生命周期
*
* @memberof AppColorPicker
*/
public
created
()
{
this
.
handleData
();
}
/**
* 数据处理
*
* @memberof AppColorPicker
*/
@
Watch
(
'value'
)
public
handleData
()
{
if
(
!
this
.
value
&&
!
this
.
color
)
{
return
;
}
this
.
colorValue
=
this
.
data
[
this
.
color
];
this
.
curVal
=
this
.
value
;
this
.
handleInputColor
(
this
.
colorValue
);
}
/**
* 数据处理
*
* @memberof AppColorPicker
*/
public
colorChange
(
color
:
any
)
{
this
.
handleInputColor
(
color
);
this
.
$emit
(
'colorChange'
,
{
name
:
this
.
color
,
value
:
color
});
}
/**
* 设置输入框字体颜色
*
* @memberof AppColorPicker
*/
public
handleInputColor
(
color
:
any
)
{
let
picker
:
any
=
this
.
$refs
.
colorPicker
;
if
(
picker
)
{
let
child
:
any
=
picker
.
$el
.
children
[
0
];
child
.
style
.
color
=
color
;
}
}
/**
* 模拟点击事件
*
* @memberof AppColorPicker
*/
public
iconClick
()
{
let
picker
:
any
=
this
.
$refs
.
picker
;
let
e
:
any
=
document
.
createEvent
(
'MouseEvent'
);
e
.
initEvent
(
'click'
,
true
,
true
);
if
(
picker
)
{
picker
.
$el
.
children
[
0
].
dispatchEvent
(
e
);
}
}
}
</
script
>
<
style
lang=
"less"
>
@import './app-color-picker.less';
</
style
>
app_web/src/components/app-color-span/app-color-span.vue
0 → 100644
浏览文件 @
7dc9d263
<
template
>
<div
class=
"app-color-span"
>
<span
v-if=
"color"
:style=
"
{ color:textColor }">
{{
text
?
text
:
'---'
}}
</span>
<template
v-else
>
<template
v-if=
"dataValue && dataValue.length > 0"
>
<span
v-for=
"(textItem,index) of dataValue"
:key=
"index"
class=
"text-color"
:style=
"
{ backgroundColor:textItem.color }">
{{
textItem
.
srfmajortext
?
textItem
.
srfmajortext
:
'---'
}}
</span>
</
template
>
<span
v-else
>
---
</span>
</template>
</div>
</template>
<
script
lang=
"ts"
>
import
{
Vue
,
Component
,
Watch
,
Prop
,
Model
}
from
'vue-property-decorator'
;
import
CodeListService
from
'@codelist/codelist-service'
;
import
{
Subject
,
Subscription
}
from
'rxjs'
;
@
Component
({
})
export
default
class
AppColorSpan
extends
Vue
{
/**
* 当前值
*
* @type {*}
* @memberof AppColorSpan
*/
@
Prop
()
public
value
:
any
;
/**
* 当前表单项名称
*
* @type {*}
* @memberof AppColorSpan
*/
@
Prop
()
public
name
?:
any
;
/**
* 代码表类型
*
* @type {string}
* @memberof AppColorSpan
*/
@
Prop
()
public
codelistType
?:
string
;
/**
* 传入表单数据
*
* @type {*}
* @memberof AppColorSpan
*/
@
Prop
()
public
data
?:
any
;
/**
* 局部上下文导航参数
*
* @type {any}
* @memberof AppColorSpan
*/
@
Prop
()
public
localContext
!
:
any
;
/**
* 局部导航参数
*
* @type {any}
* @memberof AppColorSpan
*/
@
Prop
()
public
localParam
!
:
any
;
/**
* 视图上下文
*
* @type {*}
* @memberof AppColorSpan
*/
@
Prop
()
public
context
!
:
any
;
/**
* 视图参数
*
* @type {*}
* @memberof AppColorSpan
*/
@
Prop
()
public
viewparams
!
:
any
;
/**
* 颜色标识
*
* @type {*}
* @memberof AppColorSpan
*/
@
Prop
()
color
:
any
;
/**
* 颜色
*
* @type {*}
* @memberof AppColorSpan
*/
public
textColor
:
any
;
/**
* 显示值
* @type {*}
* @memberof AppColorSpan
*/
public
text
:
any
=
''
;
/**
* 数据数组
*
* @type {*}
* @memberof AppColorSpan
*/
public
dataValue
:
Array
<
any
>
=
[];
/**
* 监听value
*
* @memberof AppColorSpan
*/
@
Watch
(
'value'
)
public
valueChange
(
newVal
:
any
,
oldVal
:
any
){
if
(
newVal
!==
oldVal
){
this
.
load
();
}
}
/**
* 加载数据
*
* @memberof AppColorSpan
*/
public
load
(){
if
(
this
.
color
){
this
.
text
=
this
.
value
;
this
.
textColor
=
this
.
data
[
this
.
color
];
}
else
{
this
.
dataValue
=
JSON
.
parse
(
this
.
value
);
}
}
/**
* vue 生命周期
*
* @memberof AppColorSpan
*/
public
created
()
{
this
.
load
();
}
}
</
script
>
<
style
lang=
"less"
>
.text-color{
padding: 2px;
margin: 6px;
border-radius: 4px;
}
</
style
>
\ No newline at end of file
app_web/src/components/app-form-druipart/app-form-druipart.vue
浏览文件 @
7dc9d263
<
template
>
<div
class=
'form-druipart'
>
<component
ref=
"appFormDruipart"
:is=
"viewname"
class=
"viewcontainer2"
:viewdata =
"viewdata"
...
...
@@ -178,6 +179,14 @@ export default class AppFormDRUIPart extends Vue {
*/
private
formStateEvent
:
Unsubscribable
|
undefined
;
/**
* 定时器实例
*
* @type {[any]}
* @memberof AppFormDRUIPart
*/
protected
timer
?:
any
;
/**
* 监控值
*
...
...
@@ -308,11 +317,43 @@ export default class AppFormDRUIPart extends Vue {
}
if
(
!
this
.
isForbidLoad
){
setTimeout
(()
=>
{
this
.
formDruipart
.
next
({
action
:
'load'
,
data
:{
srfparentdename
:
this
.
parentName
,
srfparentkey
:
_paramitem
}}
);
this
.
partViewEvent
(
'load'
,{
data
:{
srfparentdename
:
this
.
parentName
,
srfparentkey
:
_paramitem
}},
0
);
},
0
);
}
}
/**
* 向关系视图发送事件,采用轮询模式。避免异步视图出现加载慢情况
*
* @param {*} action 触发行为
* @param {*} data 数据
* @param {*} count 轮询计数
* @memberof AppFormDRUIPart
*/
protected
partViewEvent
(
action
:
string
,
data
:
any
,
count
:
number
=
0
):
void
{
if
(
count
>
100
)
{
return
;
}
const
clearResource
:
Function
=
()
=>
{
if
(
this
.
timer
!==
undefined
){
clearTimeout
(
this
.
timer
);
this
.
timer
=
undefined
;
}
}
if
(
count
===
0
)
{
clearResource
();
}
if
(
this
.
$refs
.
appFormDruipart
)
{
this
.
formDruipart
.
next
({
action
:
action
,
data
});
clearResource
();
return
;
}
this
.
timer
=
setTimeout
(()
=>
{
count
++
;
this
.
partViewEvent
(
action
,
data
,
count
);
},
30
);
}
/**
* vue 生命周期
*
...
...
app_web/src/components/app-form-item/app-form-item.less
浏览文件 @
7dc9d263
...
...
@@ -10,7 +10,9 @@
}
.app-form-item-label {
padding: 6px 10px 6px 0px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
...
...
app_web/src/components/app-form-item/app-form-item.vue
浏览文件 @
7dc9d263
...
...
@@ -21,7 +21,7 @@
class=
"editor"
:style=
"slotstyle"
>
<form-item
:prop=
"name"
:error=
"error"
:required=
"required"
:rules=
"rules"
>
<form-item
:prop=
"name"
:error=
"error"
:rules=
"rules"
>
<slot></slot>
</form-item>
</div>
...
...
@@ -31,14 +31,24 @@
:class=
"labelclasses"
>
<span
v-if=
"required"
style=
"color:red;"
>
*
</span>
{{
this
.
isEmptyCaption
?
''
:
this
.
caption
}}
<span
v-if=
"!isEmptyCaption"
>
<el-tooltip
v-if=
"isShowTip"
placement=
"top"
effect=
"light"
>
<span
v-html=
"caption"
></span>
<template
>
<span
slot=
"content"
v-html=
"caption"
></span>
</
template
>
</el-tooltip>
<
template
v-if=
"!isShowTip"
>
<span
v-html=
"caption"
></span>
</
template
>
</span>
</span>
<div
v-if=
"Object.is(this.labelPos,'TOP') || Object.is(this.labelPos,'LEFT') || Object.is(this.labelPos,'RIGHT')"
class=
"editor"
:style=
"slotstyle"
>
<form-item
:prop=
"name"
:error=
"error"
:required=
"required"
:rules=
"rules"
>
<form-item
:prop=
"name"
:error=
"error"
:rules=
"rules"
>
<slot></slot>
</form-item>
</div>
...
...
@@ -136,6 +146,14 @@ export default class AppFormItem extends Vue {
*/
@
Prop
()
public
itemRules
!
:
any
;
/**
* 是否显示表单项Label提示
*
* @memberof AppFormItem
*/
public
isShowTip
:
boolean
=
false
;
/**
* 值规则数组
*
...
...
@@ -266,7 +284,21 @@ export default class AppFormItem extends Vue {
});
}
catch
(
error
)
{}
}
this
.
getShowTip
();
}
/**
* 计算是否显示表单项Label提示
*
* @memberof AppFormItem
*/
public
getShowTip
(){
if
(
this
.
caption
&&
((
this
.
caption
.
length
)
*
14
)
>
this
.
labelWidth
){
this
.
isShowTip
=
true
;
}
}
}
</
script
>
<
style
lang=
'less'
>
...
...
app_web/src/components/app-input-ip/app-input-ip.less
0 → 100644
浏览文件 @
7dc9d263
.app-inpu-ip{
display: flex;
flex-wrap: nowrap;
.el-input{
margin-right: 3px;
margin-left: 3px;
}
}
\ No newline at end of file
app_web/src/components/app-input-ip/app-input-ip.vue
0 → 100644
浏览文件 @
7dc9d263
<
template
>
<div
class=
"app-inpu-ip"
>
<el-input
type=
"text"
size=
"small"
v-model=
"firstIp"
maxlength=
"3"
/>
.
<el-input
type=
"text"
size=
"small"
v-model=
"secIp"
maxlength=
"3"
/>
.
<el-input
type=
"text"
size=
"small"
maxlength=
"3"
v-model=
"thirdIp"
/>
.
<el-input
type=
"text"
size=
"small"
maxlength=
"3"
v-model=
"forIp"
/>
</div>
</
template
>
<
script
lang=
'ts'
>
import
{
Component
,
Vue
,
Prop
,
Model
,
Watch
}
from
'vue-property-decorator'
;
import
{
Subject
,
Subscription
}
from
'rxjs'
;
import
{
debounceTime
,
distinctUntilChanged
}
from
'rxjs/operators'
;
@
Component
({
})
export
default
class
AppInputIp
extends
Vue
{
/**
* 应用上下文
*
* @type {any}
* @memberof AppInputIp
*/
@
Prop
()
context
:
any
;
/**
* 视图参数
*
* @type {any}
* @memberof AppInputIp
*/
@
Prop
()
viewparam
:
any
;
/**
* 表单状态对象
*
* @type {Subject<any>}
* @memberof AppInputIp
*/
@
Prop
()
public
formState
!
:
Subject
<
any
>
;
/**表单数据绑定
*
* @type {string}
* @memberof AppInputIp
*/
@
Model
(
'change'
)
public
ipdata
!
:
string
;
/**
* 获取当前值
*
* @type {string}
* @memberof AppInputIp
*/
public
CurValue
:
any
[]
=
[];
/**
* 第一段ip
*
* @type {any}
* @memberof AppInputIp
*/
public
firstIp
:
any
=
''
;
/**
* 第二段ip
*
* @type {any}
* @memberof AppInputIp
*/
public
secIp
:
any
=
''
;
/**
* 第三段ip
*
* @type {any}
*/
public
thirdIp
:
any
=
''
;
/**
* 第四段ip
*
* @type {any}
* @memberof AppInputIp
*/
public
forIp
:
any
=
''
;
/**
* Vue声明周期(处理组件的输入属性)
*
* @memberof AppInputIp
*/
public
created
(){
if
(
this
.
formState
){
this
.
formState
.
subscribe
(({
type
,
data
})
=>
{
if
(
Object
.
is
(
'load'
,
type
)){
this
.
loadData
();
}
})
}
this
.
loadData
();
}
/**
* 加载数据
*
* @memberof AppInputIp
*/
public
loadData
(){
if
(
this
.
ipdata
){
let
iparr
:
Array
<
any
>
=
this
.
ipdata
.
split
(
'.'
);
this
.
CurValue
=
iparr
;
this
.
firstIp
=
this
.
CurValue
[
0
];
this
.
secIp
=
this
.
CurValue
[
1
];
this
.
thirdIp
=
this
.
CurValue
[
2
];
this
.
forIp
=
this
.
CurValue
[
3
];
}
}
/**
* 监听每段ip变化
*
* @memberof AppInputIp
*/
@
Watch
(
'firstIp'
)
public
FirstIpChange
(
newVal
:
any
,
oldVal
:
any
){
this
.
checkIpVal
(
newVal
,
oldVal
,
'firstIp'
,
0
);
}
@
Watch
(
'secIp'
)
public
SecIpChange
(
newVal
:
any
,
oldVal
:
any
){
this
.
checkIpVal
(
newVal
,
oldVal
,
'secIp'
,
1
);
}
@
Watch
(
'thirdIp'
)
public
ThirdIpChange
(
newVal
:
any
,
oldVal
:
any
){
this
.
checkIpVal
(
newVal
,
oldVal
,
'thirdIp'
,
2
);
}
@
Watch
(
'forIp'
)
public
ForIpChange
(
newVal
:
any
,
oldVal
:
any
){
this
.
checkIpVal
(
newVal
,
oldVal
,
'forIp'
,
3
);
}
/**
* 验证格式
*
* @memberof AppInputIp
*/
public
checkIpVal
(
newVal
:
any
,
oldVal
:
any
,
flag
:
any
,
index
:
number
){
if
(
newVal
===
''
)
return
let
val
=
newVal
;
let
reg
=
/^
(([
0-9
]
|
([
1-9
]\d)
|
(
1
\d\d)
|
(
2
([
0-4
]\d
|5
[
0-5
]))))
$/g
;
if
(
reg
.
test
(
val
)){
this
.
CurValue
[
index
]
=
val
;
}
else
{
if
(
flag
){
let
that
:
any
=
this
;
that
[
flag
]
=
oldVal
;
this
.
CurValue
[
index
]
=
oldVal
;
}
}
if
(
this
.
firstIp
&&
this
.
secIp
&&
this
.
thirdIp
&&
this
.
forIp
){
this
.
$emit
(
'change'
,
this
.
firstIp
+
'.'
+
this
.
secIp
+
'.'
+
this
.
thirdIp
+
'.'
+
this
.
forIp
);
}
}
}
</
script
>
<
style
lang=
'less'
>
@import './app-input-ip.less';
</
style
>
app_web/src/components/app-map-position/app-map-position.less
0 → 100644
浏览文件 @
7dc9d263
.app-map-position {
.map-modal {
.el-dialog {
margin-top: 60px !important;
width: 90%;
.el-dialog__header {
padding: 10px 0px 10px 40px;
}
.el-dialog__body {
padding: 6px 10px;
.search-toolbar {
display: flex;
#map__result {
position: absolute;
z-index: 20;
right: 10px;
top: 110px;
}
.el-vue-search-box-container {
border: 1px solid #DCDFE6;
height: 40px;
margin-right: 20px;
}
}
}
.amap-marker-content {
img {
width: 25px;
height: 34px;
}
.input-map__marker {
position: absolute;
top: -28px;
right: -160px;
color: #fff;
padding: 0px 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;
}
}
}
.el-vue-amap-container {
padding-top: 20px;
height: 640px;
}
}
}
\ No newline at end of file
app_web/src/components/app-map-position/app-map-position.vue
0 → 100644
浏览文件 @
7dc9d263
此差异已折叠。
点击以展开。
app_web/src/components/app-panel-field/app-panel-field.less
浏览文件 @
7dc9d263
...
...
@@ -5,6 +5,7 @@
padding: 0 6px;
.editor{
flex-grow: 1;
line-height: 34px;
.editorstyle{
.ivu-input.ivu-input-default{
border-color: red;
...
...
@@ -16,7 +17,7 @@
}
.app-panel-field-label {
height: 34px !important;
line-height: 2
5
px;
line-height: 2
2
px;
flex-shrink: 0;
padding: 6px 10px 6px 0px;
}
...
...
app_web/src/components/app-picker/app-picker.vue
浏览文件 @
7dc9d263
...
...
@@ -6,7 +6,8 @@
<div
class=
'app-picker'
>
<el-autocomplete
class=
'text-value'
:value-key=
"deMajorField"
:disabled=
"disabled"
v-model=
"curvalue"
size=
'small'
:trigger-on-focus=
"true"
:fetch-suggestions=
"(query, callback) =>
{ this.onSearch(query, callback, true) }" @select="onACSelect"
@input="onInput" @blur="onBlur" style='width:100%;'>
@input="onInput" @blur="onBlur" style='width:100%;'
:placeholder="placeholder">
<template
v-slot:default=
"
{item}">
<!--
<template
v-if=
"item.isNew"
>
<div
v-if=
"linkview"
@
click=
"newAndEdit"
>
{{
$t
(
'components.appPicker.newAndEdit'
)
}}
</div>
...
...
@@ -26,7 +27,7 @@
</div>
<div
v-else-if=
"Object.is(editortype, 'pickup-no-ac')"
class=
'app-picker'
>
<div
class=
'app-picker'
>
<el-input
class=
'text-value'
:value=
"curvalue"
readonly
size=
'small'
:disabled=
"disabled"
>
<el-input
class=
'text-value'
:
placeholder=
"placeholder"
:
value=
"curvalue"
readonly
size=
'small'
:disabled=
"disabled"
>
<
template
slot=
'suffix'
>
<i
v-if=
"curvalue && !disabled"
class=
'el-icon-circle-close'
@
click=
"onClear"
></i>
<i
class=
'el-icon-search'
@
click=
"openView"
></i>
...
...
@@ -38,7 +39,8 @@
<div
v-else-if=
"Object.is(editortype, 'dropdown')"
class=
'app-picker'
>
<el-select
ref=
"appPicker"
remote
:remote-method=
"(query) => this.onSearch(query, null, true)"
:value=
"refvalue"
size=
'small'
filterable
@
change=
"onSelect"
:disabled=
"disabled"
style=
'width:100%;'
clearable
popper-class=
"app-picker-dropdown"
@
clear=
"onClear"
@
visible-change=
"onSelectOpen"
>
@
clear=
"onClear"
@
visible-change=
"onSelectOpen"
:placeholder=
"placeholder"
>
<
template
v-if=
"items"
>
<template
v-for=
"_item in items"
>
<el-option
v-if=
"!_item.tag"
:key=
"_item[deKeyField]"
:value=
"_item[deKeyField]"
:label=
"_item[deMajorField]"
:disabled=
"_item.disabled"
></el-option>
...
...
@@ -222,6 +224,14 @@ export default class AppPicker extends Vue {
*/
@
Model
(
'change'
)
public
value
?:
any
;
/**
* 占位提示
*
* @type {*}
* @memberof AppPicker
*/
@
Prop
()
public
placeholder
?:
string
;
/**
* 当前值
*
...
...
@@ -258,7 +268,7 @@ export default class AppPicker extends Vue {
* @type {string}
* @memberof AppPicker
*/
public
selectValue
=
this
.
value
;
public
selectValue
=
null
;
/**
* 下拉列表节点元素
...
...
@@ -291,6 +301,7 @@ export default class AppPicker extends Vue {
@
Watch
(
'value'
,{
immediate
:
true
})
public
onValueChange
(
newVal
:
any
,
oldVal
:
any
)
{
this
.
curvalue
=
newVal
;
this
.
selectValue
=
newVal
;
if
(
Object
.
is
(
this
.
editortype
,
'dropdown'
)
&&
this
.
valueitem
)
{
const
value
=
this
.
data
[
this
.
valueitem
];
const
index
=
this
.
items
.
findIndex
((
item
:
any
)
=>
Object
.
is
(
item
.
value
,
value
));
...
...
@@ -421,7 +432,6 @@ export default class AppPicker extends Vue {
* @param item
*/
public
onACSelect
(
item
:
any
):
void
{
this
.
selectValue
=
item
[
this
.
deMajorField
];
if
(
this
.
valueitem
)
{
this
.
$emit
(
'formitemvaluechange'
,
{
name
:
this
.
valueitem
,
value
:
item
[
this
.
deKeyField
]
});
}
...
...
app_web/src/components/app-quick-group/app-quick-group.vue
浏览文件 @
7dc9d263
...
...
@@ -144,7 +144,7 @@ export default class AppQuickGroup extends Vue {
* @memberof AppQuickGroup
*/
public
handleClick
(
$event
:
any
,
isswitch
:
boolean
=
true
){
if
(
this
.
selectedUiItem
&&
(
this
.
selectedUiItem
.
id
===
$event
.
id
))
{
if
(
(
this
.
selectedUiItem
&&
(
this
.
selectedUiItem
.
id
===
$event
.
id
))
||
$event
.
children
)
{
return
;
}
this
.
$emit
(
'valuechange'
,
$event
);
...
...
app_web/src/components/app-rate/app-rate.vue
浏览文件 @
7dc9d263
<
template
>
<div>
<el-rate
:value =
"currentVal"
:disabled=
"disabled"
:max=
"max"
@
change=
"change"
>
</el-rate>
</div>
<div>
<el-rate
:value=
"currentVal"
:disabled=
"disabled"
:max=
"maxItem"
@
change=
"change"
>
</el-rate>
</div>
</
template
>
<
script
lang=
'ts'
>
import
{
Component
,
Vue
,
Prop
,
Model
,
Watch
}
from
"vue-property-decorator"
;
<
script
lang=
"ts"
>
import
{
Component
,
Vue
,
Prop
,
Model
,
Watch
}
from
'vue-property-decorator'
;
import
CodeListService
from
'@codelist/codelist-service'
;
@
Component
({})
export
default
class
AppRate
extends
Vue
{
/**
* 传入值
* @type {any}
* @memberof AppRate
*/
@
Prop
()
public
value
?:
any
;
/**
* 是否禁用
* @type {boolean}
* @memberof AppRate
*/
@
Prop
()
public
disabled
?:
boolean
;
/**
* 最大值
* @type {number}
* @memberof AppRate
*/
@
Prop
({
default
:
5
})
public
max
!
:
number
;
/**
* 当前值
*
* @memberof AppRate
*/
get
currentVal
()
{
return
this
.
value
;
}
/**
* change
*/
public
change
(
val
:
any
)
{
this
.
$emit
(
"change"
,
val
);
}
/**
* 传入值
* @type {any}
* @memberof AppRate
*/
@
Prop
()
public
value
?:
any
;
/**
* 是否禁用
* @type {boolean}
* @memberof AppRate
*/
@
Prop
()
public
disabled
?:
boolean
;
/**
* 下发数据
* @type {number}
* @memberof AppRate
*/
@
Prop
()
public
data
?:
any
;
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof AppRate
*/
public
codeListService
:
CodeListService
=
new
CodeListService
({
$store
:
this
.
$store
});
/**
* 传递最大值
* @type {*}
* @memberof AppRate
*/
@
Prop
({
default
:
5
})
public
max
!
:
number
;
/**
* 应用上下文
* @type {*}
* @memberof AppRate
*/
@
Prop
()
context
:
any
;
/**
* 视图参数
* @type {*}
* @memberof AppRate
*/
@
Prop
()
viewparams
:
any
;
/**
* 临时上下文
* @type {*}
* @memberof AppRate
*/
@
Prop
()
localContext
:
any
;
/**
* 临时参数
* @type {*}
* @memberof AppRate
*/
@
Prop
()
localParam
:
any
;
/**
* 代码表标识
* @type {string}
* @memberof AppRate
*/
@
Prop
()
tag
?:
string
;
/**
* 代码表类型
* @type {string}
* @memberof AppRate
*/
@
Prop
()
codelistType
?:
string
;
/**
* 代码表值分隔符
* @type {string}
* @memberof AppRate
*/
@
Prop
({
default
:
','
})
valueSeparator
?:
string
;
/**
* 数据名称
* @type {*}
* @memberof AppRate
*/
@
Prop
()
name
:
any
;
/**
* 最大值
* @type {number}
* @memberof AppRate
*/
public
maxItem
:
number
=
5
;
/**
* 监听数据变化
*
* @memberof AppRate
*/
@
Watch
(
'data'
,{
immediate
:
true
,
deep
:
true
})
onDataChange
(
newVal
:
any
,
oldVal
:
any
)
{
if
(
newVal
){
if
(
this
.
tag
&&
this
.
codelistType
==
'DYNAMIC'
){
// 公共参数处理
let
data
:
any
=
{};
this
.
handlePublicParams
(
data
);
// 参数处理
let
_context
=
data
.
context
;
let
_param
=
data
.
param
;
this
.
codeListService
.
getItems
(
this
.
tag
,
_context
,
_param
).
then
((
res
:
any
)
=>
{
const
items
=
res
;
// 获取最大值
const
maxItem
=
Math
.
max
.
apply
(
Math
,
items
.
map
((
item
:
any
)
=>
{
return
item
.
value
;
}));
this
.
maxItem
=
maxItem
>
5
?
5
:
maxItem
;
}).
catch
((
error
:
any
)
=>
{
console
.
log
(
`----
${
this
.
tag
}
----$t('components.appCheckBox.notExist')`
);
});
}
}
}
/**
* 当前值
*
* @memberof AppRate
*/
get
currentVal
()
{
return
Number
(
this
.
value
);
}
/**
* change
*/
public
change
(
val
:
any
)
{
this
.
$emit
(
'change'
,
val
);
}
/**
* Vue生命周期
* @memberof AppRate
*/
public
created
()
{
if
(
this
.
max
)
{
this
.
maxItem
=
this
.
max
;
}
this
.
handleCodelist
();
}
/**
* 公共参数处理
*
* @param {*} arg
* @returns
* @memberof AppRate
*/
public
handlePublicParams
(
arg
:
any
)
{
// 合并表单参数
arg
.
param
=
this
.
viewparams
?
JSON
.
parse
(
JSON
.
stringify
(
this
.
viewparams
))
:
{};
arg
.
context
=
this
.
context
?
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
))
:
{};
// 附加参数处理
if
(
this
.
localContext
&&
Object
.
keys
(
this
.
localContext
).
length
>
0
)
{
let
_context
=
this
.
$util
.
computedNavData
(
this
.
data
,
arg
.
context
,
arg
.
param
,
this
.
localContext
);
Object
.
assign
(
arg
.
context
,
_context
);
}
if
(
this
.
localParam
&&
Object
.
keys
(
this
.
localParam
).
length
>
0
)
{
let
_param
=
this
.
$util
.
computedNavData
(
this
.
data
,
arg
.
param
,
arg
.
param
,
this
.
localParam
);
Object
.
assign
(
arg
.
param
,
_param
);
}
}
/**
* 根据代码表获取最大值
* @memberof AppRate
*/
public
handleCodelist
()
{
if
(
this
.
tag
&&
Object
.
is
(
this
.
codelistType
,
'STATIC'
))
{
const
codelist
=
this
.
$store
.
getters
.
getCodeList
(
this
.
tag
);
if
(
codelist
)
{
const
items
=
[...
JSON
.
parse
(
JSON
.
stringify
(
codelist
.
items
))];
// 获取最大值
const
maxItem
=
Math
.
max
.
apply
(
Math
,
items
.
map
((
item
:
any
)
=>
{
return
item
.
value
;
}));
this
.
maxItem
=
maxItem
>
5
?
5
:
maxItem
;
}
else
{
console
.
log
(
`----
${
this
.
tag
}
----$t('components.appCheckBox.notExist')`
);
}
}
else
if
(
this
.
tag
&&
Object
.
is
(
this
.
codelistType
,
'DYNAMIC'
))
{
// 公共参数处理
let
data
:
any
=
{};
this
.
handlePublicParams
(
data
);
// 参数处理
let
_context
=
data
.
context
;
let
_param
=
data
.
param
;
this
.
codeListService
.
getItems
(
this
.
tag
,
_context
,
_param
).
then
((
res
:
any
)
=>
{
const
items
=
res
;
// 获取最大值
let
maxItem
=
Math
.
max
.
apply
(
Math
,
items
.
map
((
item
:
any
)
=>
{
return
item
.
value
;
}));
this
.
maxItem
=
maxItem
>
5
?
5
:
maxItem
;
}).
catch
((
error
:
any
)
=>
{
console
.
log
(
`----
${
this
.
tag
}
----$t('components.appCheckBox.notExist')`
);
});
}
}
}
</
script
>
<
style
lang=
'less'
>
@import "./app-rate.less";
</
style
>
\ No newline at end of file
<
style
lang=
"less"
>
@import './app-rate.less';
</
style
>
app_web/src/components/app-sort-bar/app-sort-bar.less
0 → 100644
浏览文件 @
7dc9d263
.app-sort-bar{
padding: 6px 8px;
.ivu-row-flex.page-sort-bar{
width: 100%;
height: 30px;
position: relative;
.ivu-col{
border-radius: 2px;
user-select: none;
text-align: center;
margin: 0px 16px;
display: flex;
align-items: flex-end;
padding-bottom: 4px;
background-color: #FFF;
border: 1px solid #CCC;
margin-left: -1px;
.sort-field-text{
margin-left: 7px;
}
.caret-wrapper{
width: 15px;
display: inline-block;
position: relative;
top: 4px;
padding-bottom: 2px;
.ivu-icon{
display: block;
line-height: 0.5;
color: #c5c8ce;
}
}
}
// 悬浮样式
.ivu-col:hover{
border:1px solid #82bff7;
position:relative;
z-index:2;
.sort-field-text{
color: #82bff7;
}
}
// 选中样式
.sort-ascending, .sort-descending{
border:1px solid #82bff7;
position:relative;
z-index:2;
.sort-field-text{
color:#82bff7;
font-weight: 800;
}
}
.sort-ascending .caret-wrapper .ivu-icon.ivu-icon-md-arrow-dropup,
.sort-descending .caret-wrapper .ivu-icon.ivu-icon-md-arrow-dropdown{
color: #82bff7;
}
.issort {
position: absolute;
cursor: pointer;
top: 4px;
right: 10px;
}
}
}
.slide-in(@x-begin,@x-end,@c-begin,@c-end,@name){
@keyframes @name{
from {
transform: translateX(@x-begin);
background-color: @c-begin;
}
to {
transform: translateX(@x-end);
background-color: @c-end;
}
}
}
.slide-in(1670px,0px,#fff,#EEF2F5,fadein);
.animation(@animation-name,@animation-duration,@animation-timing-function,@animation-delay,@play-state){
animation: @arguments;
};
.open-bar {
.animation(fadein,0.7s,linear,0s,forwards);
};
\ No newline at end of file
app_web/src/components/app-sort-bar/app-sort-bar.vue
0 → 100644
浏览文件 @
7dc9d263
<
template
>
<div
:class=
"['app-sort-bar', isSort ? 'open-bar' : '',]"
>
<row
v-if=
"sortModel && sortModel.length>0"
class=
"page-sort-bar"
:gutter=
"10"
type=
"flex"
justify=
"start"
style=
"margin:0px;"
>
<template
v-for=
"(item, index) in sortModel"
>
<i-col
v-show=
"isSort"
:key=
"index"
:class=
"getSortClass(item)"
>
<div
>
<div
@
click=
"sortItemClick(item)"
>
<span
class=
"sort-field-text"
>
{{
$t
(
'entities.'
+
entityName
+
'.fields.'
+
item
)
}}
</span>
<span
class=
"caret-wrapper"
>
<Icon
type=
"md-arrow-dropup"
/>
<Icon
type=
"md-arrow-dropdown"
/>
</span>
</div>
</div>
</i-col>
</
template
>
<div
class=
"issort"
@
click=
"handleSort"
>
<Icon
v-if=
"isSort"
type=
"ios-funnel-outline"
/>
<Icon
v-else
type=
"ios-funnel"
/>
{{ $t('components.appSortBar.title') }}
</div>
</row>
</div>
</template>
<
script
lang=
'ts'
>
import
{
Component
,
Vue
,
Prop
,
Model
,
Watch
}
from
"vue-property-decorator"
;
@
Component
({})
export
default
class
AppSortBar
extends
Vue
{
@
Prop
()
public
sortModel
!
:
any
[];
@
Prop
()
public
sortField
!
:
any
;
@
Prop
()
public
sortDir
!
:
any
;
@
Prop
()
public
entityName
!
:
string
;
public
isSort
:
boolean
=
false
;
public
getSortClass
(
name
:
any
)
{
if
(
this
.
sortField
!==
name
||
this
.
sortDir
===
''
){
return
''
;
}
else
if
(
this
.
sortDir
===
'asc'
){
return
'sort-ascending'
}
else
if
(
this
.
sortDir
===
'desc'
){
return
'sort-descending'
}
}
public
sortItemClick
(
name
:
string
)
{
this
.
$emit
(
'clickSort'
,
name
);
}
public
handleSort
()
{
this
.
isSort
=
!
this
.
isSort
;
}
}
</
script
>
<
style
lang=
"less"
>
@import './app-sort-bar.less';
</
style
>
\ No newline at end of file
app_web/src/components/app-vue-pivottable/app-vue-pivottable.vue
0 → 100644
浏览文件 @
7dc9d263
<
template
>
<vue-pivottable-ui
class=
"app-vue-pivottable"
:data=
"datas"
:aggregatorName=
"aggregatorName"
:rendererName=
"rendererName"
:columns=
"columns"
:rows=
"rows"
:cols=
"cols"
:vals=
"vals"
:locales=
"locales"
:rowTotal=
"rowTotal"
:colTotal=
"colTotal"
:onChange=
"onChange"
:hiddenFromDragDrop=
"hiddenFromDragDrop"
>
</vue-pivottable-ui>
</
template
>
<
script
lang =
'ts'
>
import
{
Vue
,
Component
,
Prop
}
from
'vue-property-decorator'
;
import
{
VuePivottableUi
}
from
'ibiz-vue-pivottable'
;
import
'ibiz-vue-pivottable/dist/vue-pivottable.css'
;
@
Component
({
components
:
{
VuePivottableUi
}
})
export
default
class
AppVuePivotTable
extends
Vue
{
/**
* 数据集
*
* @type {*}
* @memberof AppVuePivotTable
*/
@
Prop
()
datas
:
any
;
/**
* 列集合
*
* @type {*}
* @memberof AppVuePivotTable
*/
@
Prop
()
allColumns
:
any
;
/**
* 聚合模式
*
* @type {string}
* @memberof AppVuePivotTable
*/
protected
aggregatorName
:
string
=
'Sum'
;
/**
* 渲染模式
*
* @type {string}
* @memberof AppVuePivotTable
*/
protected
rendererName
:
string
=
'Table Heatmap'
;
/**
* 行统计
*
* @type {boolean}
* @memberof AppVuePivotTable
*/
protected
rowTotal
:
boolean
=
true
;
/**
* 列统计
*
* @type {boolean}
* @memberof AppVuePivotTable
*/
protected
colTotal
:
boolean
=
true
;
/**
* 列属性列集合
*
* @type {*}
* @memberof AppVuePivotTable
*/
protected
cols
:
any
[]
=
[];
/**
* 行属性列集合
*
* @type {*}
* @memberof AppVuePivotTable
*/
protected
rows
:
any
[]
=
[];
/**
* 值属性集合
*
* @type {*}
* @memberof AppVuePivotTable
*/
protected
vals
:
any
[]
=
[];
/**
* 隐藏列集合
*
* @type {*}
* @memberof AppVuePivotTable
*/
protected
hiddenFromDragDrop
:
any
[]
=
[];
/**
* 展现列集合
*
* @type {*}
* @memberof AppVuePivotTable
*/
protected
columns
:
any
[]
=
[];
/**
* 语言资源
*
* @type {*}
* @memberof AppVuePivotTable
*/
protected
locales
:
any
=
{
aggregators
:
{
'Count'
:
'Count'
,
'Count Unique Values'
:
'Count Unique Values'
,
'List Unique Values'
:
'List Unique Values'
,
'Sum'
:
'Sum'
,
'Integer Sum'
:
'Integer Sum'
,
'Average'
:
'Average'
,
'Median'
:
'Median'
,
'Sample Variance'
:
'Sample Variance'
,
'Sample Standard Deviation'
:
'Sample Standard Deviation'
,
'Minimum'
:
'Minimum'
,
'Maximum'
:
'Maximum'
,
'First'
:
'First'
,
'Last'
:
'Last'
,
'Sum over Sum'
:
'Sum over Sum'
,
'Sum as Fraction of Total'
:
'Sum as Fraction of Total'
,
'Sum as Fraction of Rows'
:
'Sum as Fraction of Rows'
,
'Sum as Fraction of Columns'
:
'Sum as Fraction of Columns'
,
'Count as Fraction of Total'
:
'Count as Fraction of Total'
,
'Count as Fraction of Rows'
:
'Count as Fraction of Rows'
,
'Count as Fraction of Columns'
:
'Count as Fraction of Columns'
},
renderer
:
{
'Table'
:
'Table'
,
'Table Heatmap'
:
'Table Heatmap'
,
'Table Col Heatmap'
:
'Table Col Heatmap'
,
'Table Row Heatmap'
:
'Table Row Heatmap'
,
'Expor Table TSV'
:
'Expor Table TSV'
,
'Grouped Column Chart'
:
'Grouped Column Chart'
,
'Stacked Column Chart'
:
'Stacked Column Chart'
,
'Grouped Bar Chart'
:
'Grouped Bar Chart'
,
'Stacked Bar Chart'
:
'Stacked Bar Chart'
,
'Line Chart'
:
'Line Chart'
,
'Dot Chart'
:
'Dot Chart'
,
'Area Chart'
:
'Area Chart'
,
'Scatter Chart'
:
'Scatter Chart'
,
'Multiple Pie Chart'
:
'Multiple Pie Chart'
},
'Filter Values'
:
'Filter Values'
,
'Select All'
:
'Select All'
,
'Deselect All'
:
'Deselect All'
,
'Totals'
:
'Totals'
};
/**
* 生命周期
*
* @type {*}
* @memberof AppVuePivotTable
*/
public
created
()
{
if
(
this
.
allColumns
)
{
this
.
allColumns
.
forEach
((
item
:
any
)
=>
{
if
(
!
item
.
show
)
{
this
.
hiddenFromDragDrop
.
push
(
item
.
name
);
}
let
col
:
any
=
{
...
item
};
col
.
prop
=
col
.
name
;
this
.
columns
.
push
(
col
);
});
}
}
/**
* 事件
*
* @type {*}
* @memberof AppVuePivotTable
*/
public
onChange
(
evt
:
any
)
{
console
.
log
(
evt
);
}
}
</
script
>
<
style
lang=
"less"
>
.app-vue-pivottable {
height: calc(100% - 1px);
.pvtTable {
min-width: 100%;
}
}
</
style
>
\ No newline at end of file
app_web/src/components/codelist/codelist.vue
浏览文件 @
7dc9d263
...
...
@@ -3,9 +3,14 @@
<span
v-if=
"ifEmpty"
>
{{
$t
(
'codelist.'
+
tag
+
'.empty'
)
}}
</span>
<template
v-if=
"!ifEmpty"
>
<template
v-for=
"(item, index) in items"
>
<span>
{{
index
!=
0
?
textSeparator
:
''
}}
</span>
<i
v-if=
"item.iconCls"
:class=
"item.iconCls"
></i>
<span
:class=
"item.textCls"
:style=
"
{color:item.color}">
{{
isUseLangres
?
$t
(
item
.
text
)
:
item
.
text
}}
</span>
<div
class=
"codelist-item"
:key=
"index"
>
<i
v-if=
"item.iconcls"
:class=
"item.iconcls"
></i>
<img
v-if=
"item.icon"
:src=
"getIcon(item.icon)"
/>
<span
:class=
"item.class"
:style=
"
{ color: item.color }">
{{
isUseLangres
?
$t
(
item
.
text
)
:
item
.
text
}}
</span>
<span
v-if=
"index != items.length-1"
>
{{
textSeparator
}}
</span>
</div>
</
template
>
</template>
</div>
...
...
@@ -14,6 +19,7 @@
<
script
lang=
"ts"
>
import
{
Vue
,
Component
,
Prop
,
Model
,
Watch
}
from
'vue-property-decorator'
;
import
CodeListService
from
"@/codelist/codelist-service"
;
import
{
Environment
}
from
'@/environments/environment'
;
@
Component
({})
export
default
class
CodeList
extends
Vue
{
...
...
@@ -288,14 +294,66 @@ export default class CodeList extends Vue {
}
}
/**
* 获取图片路径
*
* @param {*} arg
* @returns
* @memberof CodeList
*/
public
getIcon
(
arg
:
any
){
if
(
!
arg
){
return
;
}
if
(
Object
.
prototype
.
toString
.
call
(
arg
)
==
"[object String]"
){
try
{
let
targetData
:
any
=
JSON
.
parse
(
arg
);
if
(
Object
.
prototype
.
toString
.
call
(
targetData
)
==
"[object Array]"
){
if
(
targetData
&&
targetData
.
length
>
0
){
let
fileId
:
string
=
targetData
[
0
]
&&
targetData
[
0
].
id
;
return
Environment
.
BaseUrl
+
Environment
.
ExportFile
+
fileId
;
}
}
else
if
(
Object
.
prototype
.
toString
.
call
(
targetData
)
===
'[object Object]'
){
let
fileId
:
string
=
targetData
&&
targetData
.
id
;
return
Environment
.
BaseUrl
+
Environment
.
ExportFile
+
fileId
;
}
}
catch
(
error
)
{
return
arg
;
}
}
else
if
(
Object
.
prototype
.
toString
.
call
(
arg
)
==
"[object Array]"
){
if
(
arg
&&
arg
.
length
>
0
){
let
fileId
:
string
=
arg
[
0
]
&&
arg
[
0
].
id
;
return
Environment
.
BaseUrl
+
Environment
.
ExportFile
+
fileId
;
}
}
else
if
(
Object
.
prototype
.
toString
.
call
(
arg
)
===
'[object Object]'
){
let
fileId
:
string
=
arg
&&
arg
.
id
;
return
Environment
.
BaseUrl
+
Environment
.
ExportFile
+
fileId
;
}
else
{
return
arg
;
}
}
}
</
script
>
<
style
lang=
'less'
>
.codelist {
display: flex;
white-space: nowrap;
text-overflow: ellipsis;
word-break: break-all;
overflow: hidden;
.codelist-item{
display: flex;
align-items: center;
max-height: 32px;
padding: 0px 3px;
> img{
max-height: 32px;
width: auto;
margin-right: 6px;
border-radius: 50%;
}
}
}
</
style
>
\ No newline at end of file
app_web/src/components/dropdown-list/dropdown-list.vue
浏览文件 @
7dc9d263
...
...
@@ -265,9 +265,8 @@ export default class DropDownList extends Vue {
this
.
loadData
();
}
});
}
else
{
this
.
loadData
();
}
this
.
loadData
();
}
/**
...
...
app_web/src/components/login/login.vue
浏览文件 @
7dc9d263
...
...
@@ -74,7 +74,7 @@
<
script
lang=
"ts"
>
import
{
Vue
,
Component
,
Watch
}
from
'vue-property-decorator'
;
import
{
Environment
}
from
'@/environments/environment'
;
//import Divider from "ibiz-vue-lib/lib/ibiz-vue-lib.common"
;
import
{
Util
}
from
'@/utils'
;
@
Component
({
components
:
{}
...
...
@@ -141,7 +141,7 @@ export default class Login extends Vue {
}
public
mounted
()
{
this
.
getCookie
(
"loginname"
);
Util
.
getCookie
(
"loginname"
);
}
/**
...
...
@@ -181,13 +181,13 @@ export default class Login extends Vue {
const
data
=
response
.
data
;
if
(
data
&&
data
.
token
)
{
localStorage
.
setItem
(
'token'
,
data
.
token
);
this
.
setCookie
(
'ibzuaa-token'
,
data
.
token
,
0
);
Util
.
setCookie
(
'ibzuaa-token'
,
data
.
token
,
0
);
}
if
(
data
&&
data
.
user
){
localStorage
.
setItem
(
'user'
,
JSON
.
stringify
(
data
.
user
));
}
// 设置cookie,保存账号密码7天
this
.
setCookie
(
"loginname"
,
loginname
,
7
);
Util
.
setCookie
(
"loginname"
,
loginname
,
7
);
// 跳转首页
const
url
:
any
=
this
.
$route
.
query
.
redirect
?
this
.
$route
.
query
.
redirect
:
'*'
;
this
.
$router
.
push
({
path
:
url
});
...
...
@@ -223,40 +223,6 @@ export default class Login extends Vue {
_this
.
form
=
{
loginname
:
'ibzadmin'
,
password
:
'123456'
}
}
/**
* 设置cookie
*
* @memberof Login
*/
public
setCookie
(
name
:
any
,
value
:
any
,
day
:
any
)
{
if
(
day
!==
0
)
{
//当设置的时间等于0时,不设置expires属性,cookie在浏览器关闭后删除
let
curDate
=
new
Date
();
let
curTamp
=
curDate
.
getTime
();
let
curWeeHours
=
new
Date
(
curDate
.
toLocaleDateString
()).
getTime
()
-
1
;
let
passedTamp
=
curTamp
-
curWeeHours
;
let
leftTamp
=
24
*
60
*
60
*
1000
-
passedTamp
;
let
leftTime
=
new
Date
();
leftTime
.
setTime
(
leftTamp
+
curTamp
);
document
.
cookie
=
name
+
"="
+
escape
(
value
)
+
";expires="
+
leftTime
.
toUTCString
();
}
else
{
document
.
cookie
=
name
+
"="
+
escape
(
value
);
}
}
/**
* 获取cookie
*
* @memberof Login
*/
public
getCookie
(
name
:
any
):
any
{
let
arr
;
let
reg
=
new
RegExp
(
"(^| )"
+
name
+
"=([^;]*)(;|$)"
);
if
(
arr
=
document
.
cookie
.
match
(
reg
))
return
unescape
(
arr
[
2
]);
else
return
null
;
}
/**
* qq授权登录
* @param thirdpart
...
...
app_web/src/components/menu-icon/menu-icon.less
浏览文件 @
7dc9d263
.menu-icon {
padding-right: 6px;
}
\ No newline at end of file
app_web/src/components/menu-icon/menu-icon.tsx
浏览文件 @
7dc9d263
...
...
@@ -29,10 +29,10 @@ export class MenuIcon extends Vue {
public
render
():
any
{
if
(
this
.
item
)
{
if
(
this
.
item
.
iconcls
)
{
return
<
i
class=
{
this
.
item
.
iconcls
}
/>
return
<
i
class=
{
[
this
.
item
.
iconcls
,
'menu-icon'
]
}
/>
}
if
(
this
.
item
.
icon
)
{
return
<
img
src=
{
this
.
item
.
icon
}
/>
return
<
img
class=
"menu-icon"
src=
{
this
.
item
.
icon
}
/>
}
}
return
<
span
/>
...
...
app_web/src/directive/loadding/loadding.ts
0 → 100644
浏览文件 @
7dc9d263
import
{
Http
}
from
'@/utils'
;
import
{
Subscription
}
from
'rxjs'
;
/**
* 按钮loadding状态服务
*
* @export
* @class LoaddingService
*/
export
class
LoaddingService
{
/**
* 单例变量声明
*
* @private
* @static
* @type {LoaddingService}
* @memberof LoaddingService
*/
private
static
loaddingService
:
LoaddingService
;
/**
* loadding状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof LoaddingService
*/
public
loaddingStateEvent
:
Subscription
|
undefined
;
/**
* 获取 LoaddingService 单例对象
*
* @static
* @returns {LoaddingService}
* @memberof LoaddingService
*/
public
static
getInstance
():
LoaddingService
{
if
(
!
LoaddingService
.
loaddingService
)
{
LoaddingService
.
loaddingService
=
new
LoaddingService
();
}
return
this
.
loaddingService
;
}
/**
* 初始化指令所绑定的元素状态
*
* @param {any} el 指令所绑定的元素
* @param {any} binding 指令附加参数
* @memberof LoaddingService
*/
public
initElement
(
el
:
any
,
binding
:
any
){
if
(
binding
&&
binding
.
arg
){
// 工具栏按钮
if
(
Object
.
is
(
binding
.
arg
,
'i-button'
)){
if
(
el
.
getElementsByTagName
(
'i'
)
&&
el
.
getElementsByTagName
(
'i'
).
length
>
0
){
let
iconElement
:
any
=
el
.
getElementsByTagName
(
'i'
)[
0
];
iconElement
.
setAttribute
(
'ownclassname'
,
iconElement
.
className
);
}
}
}
}
/**
* 设置loadding状态
*
* @param {any} el 指令所绑定的元素
* @param {any} binding 指令附加参数
* @memberof LoaddingService
*/
public
setLoadState
(
el
:
any
,
binding
:
any
){
this
.
loaddingStateEvent
=
Http
.
getInstance
().
getNotifyObject
().
subscribe
((
result
:
any
)
=>
{
if
(
result
&&
result
.
action
&&
Object
.
is
(
result
.
action
,
'setloadstate'
)){
if
(
result
&&
result
.
state
){
this
.
addLoadState
(
el
,
binding
);
}
else
{
this
.
removeLoadState
(
el
,
binding
);
}
}
})
}
/**
* 添加loadding状态
*
* @param {any} el 指令所绑定的元素
* @param {any} binding 指令附加参数
* @memberof LoaddingService
*/
public
addLoadState
(
el
:
any
,
binding
:
any
){
if
(
binding
&&
binding
.
arg
){
el
.
style
.
pointerEvents
=
'none'
;
// 工具栏按钮
if
(
Object
.
is
(
binding
.
arg
,
'i-button'
)){
if
(
el
.
getElementsByTagName
(
'i'
)
&&
el
.
getElementsByTagName
(
'i'
).
length
>
0
){
let
iconElement
:
any
=
el
.
getElementsByTagName
(
'i'
)[
0
];
iconElement
.
className
=
"el-icon-loading"
;
}
}
}
}
/**
* 移除loadding状态
*
* @param {any} el 指令所绑定的元素
* @param {any} binding 指令附加参数
* @memberof LoaddingService
*/
public
removeLoadState
(
el
:
any
,
binding
:
any
){
if
(
binding
&&
binding
.
arg
){
el
.
style
.
pointerEvents
=
''
;
// 工具栏按钮
if
(
Object
.
is
(
binding
.
arg
,
'i-button'
)){
if
(
el
.
getElementsByTagName
(
'i'
)
&&
el
.
getElementsByTagName
(
'i'
).
length
>
0
){
let
iconElement
:
any
=
el
.
getElementsByTagName
(
'i'
)[
0
];
iconElement
.
className
=
iconElement
.
getAttribute
(
'ownclassname'
);
}
}
}
}
/**
* 清除资源(取消订阅)
*
* @param {any} el 指令所绑定的元素
* @param {any} binding 指令附加参数
* @memberof LoaddingService
*/
public
clearResource
(
el
:
any
,
binding
:
any
){
if
(
this
.
loaddingStateEvent
){
this
.
loaddingStateEvent
.
unsubscribe
();
}
}
}
export
default
{
bind
(
el
:
any
,
binding
:
any
)
{
LoaddingService
.
getInstance
().
initElement
(
el
,
binding
);
},
inserted
(
el
:
any
,
binding
:
any
)
{
LoaddingService
.
getInstance
().
setLoadState
(
el
,
binding
);
},
unbind
(
el
:
any
,
binding
:
any
)
{
LoaddingService
.
getInstance
().
clearResource
(
el
,
binding
);
}
}
\ No newline at end of file
app_web/src/engine/view/edit-view3-engine.ts
浏览文件 @
7dc9d263
...
...
@@ -89,10 +89,9 @@ export default class EditView3Engine extends EditViewEngine {
*/
public
onFormLoad
(
arg
:
any
=
{}):
void
{
super
.
onFormLoad
(
arg
);
this
.
view
.
formData
=
arg
;
if
(
this
.
getDrTab
())
{
const
tag
=
this
.
getDrTab
().
name
;
this
.
setViewState2
({
tag
:
tag
,
action
:
'state'
,
viewdata
:
this
.
view
.
viewparams
});
this
.
setViewState2
({
tag
:
tag
,
action
:
'state'
,
viewdata
:
arg
});
}
}
...
...
@@ -104,10 +103,9 @@ export default class EditView3Engine extends EditViewEngine {
*/
public
onFormSave
(
arg
:
any
=
{}):
void
{
super
.
onFormSave
(
arg
);
this
.
view
.
formData
=
arg
;
if
(
this
.
getDrTab
())
{
const
tag
=
this
.
getDrTab
().
name
;
this
.
setViewState2
({
tag
:
tag
,
action
:
'state'
,
viewdata
:
this
.
view
.
viewparams
});
this
.
setViewState2
({
tag
:
tag
,
action
:
'state'
,
viewdata
:
arg
});
}
}
...
...
app_web/src/engine/view/edit-view4-engine.ts
浏览文件 @
7dc9d263
...
...
@@ -91,7 +91,7 @@ export default class EditView4Engine extends EditViewEngine {
super
.
onFormLoad
(
arg
);
if
(
this
.
getDrTab
())
{
const
tag
=
this
.
getDrTab
().
name
;
this
.
setViewState2
({
tag
:
tag
,
action
:
'state'
,
viewdata
:
this
.
view
.
viewparams
});
this
.
setViewState2
({
tag
:
tag
,
action
:
'state'
,
viewdata
:
arg
});
}
}
...
...
@@ -105,7 +105,7 @@ export default class EditView4Engine extends EditViewEngine {
super
.
onFormSave
(
arg
);
if
(
this
.
getDrTab
())
{
const
tag
=
this
.
getDrTab
().
name
;
this
.
setViewState2
({
tag
:
tag
,
action
:
'state'
,
viewdata
:
this
.
view
.
viewparams
});
this
.
setViewState2
({
tag
:
tag
,
action
:
'state'
,
viewdata
:
arg
});
}
}
...
...
app_web/src/engine/view/map-view-engine.ts
0 → 100644
浏览文件 @
7dc9d263
import
MDViewEngine
from
'./md-view-engine'
;
/**
* 视图引擎基础
*
* @export
* @class GridViewEngine
* @extends {MDViewEngine}
*/
export
default
class
MapViewEngine
extends
MDViewEngine
{
/**
* 表格部件
*
* @type {*}
* @memberof GridViewEngine
*/
protected
map
:
any
;
/**
* Creates an instance of GridViewEngine.
* @memberof MapViewEngine
*/
constructor
()
{
super
();
}
/**
* 引擎初始化
*
* @param {*} [options={}]
* @memberof MapViewEngine
*/
public
init
(
options
:
any
=
{}):
void
{
this
.
map
=
options
.
map
;
super
.
init
(
options
);
}
/**
* 引擎加载
*
* @param {*} [opts={}]
* @memberof MapViewEngine
*/
public
load
(
opts
:
any
=
{},
isnotify
:
boolean
=
false
):
void
{
if
(
!
this
.
view
.
isformDruipart
){
super
.
load
(
opts
,
isnotify
);
}
else
{
if
(
isnotify
){
super
.
load
(
opts
,
isnotify
);
}
}
}
/**
* 获取多数据部件
*
* @returns {*}
* @memberof MapViewEngine
*/
public
getMDCtrl
():
any
{
return
this
.
map
;
}
}
\ No newline at end of file
app_web/src/engine/view/map-view9-engine.ts
0 → 100644
浏览文件 @
7dc9d263
import
MapViewEngine
from
'./map-view-engine'
;
/**
* 视图引擎基础
*
* @export
* @class GridViewEngine
* @extends {MDViewEngine}
*/
export
default
class
MapView9Engine
extends
MapViewEngine
{
}
\ No newline at end of file
app_web/src/engine/view/tab-exp-view-engine.ts
浏览文件 @
7dc9d263
...
...
@@ -41,6 +41,9 @@ export default class TabExpViewEngine extends ViewEngine {
if
(
!
Object
.
is
(
_item
.
type
,
'TABEXPPANEL'
))
{
return
;
}
if
(
this
.
view
.
context
&&
this
.
view
.
context
[(
this
.
keyPSDEField
as
string
)]){
return
;
}
this
.
setViewState2
({
tag
:
_item
.
name
,
action
:
'load'
,
viewdata
:
this
.
view
.
context
});
});
}
...
...
app_web/src/engine/view/view-engine.ts
浏览文件 @
7dc9d263
...
...
@@ -197,7 +197,13 @@ export default class ViewEngine {
if
(
_item
&&
_item
[
'dataaccaction'
]
&&
_this
.
view
.
appUIService
){
let
dataActionResult
:
any
;
if
(
_item
.
uiaction
&&
(
Object
.
is
(
_item
.
uiaction
.
target
,
"NONE"
)
||
Object
.
is
(
_item
.
uiaction
.
target
,
""
))){
dataActionResult
=
_this
.
view
.
appUIService
.
getResourceOPPrivs
(
_item
[
'dataaccaction'
]);
if
(
Object
.
is
(
_item
.
uiaction
.
target
,
""
)
&&
Object
.
is
(
_item
.
uiaction
.
tag
,
"Save"
)){
if
(
data
&&
Object
.
keys
(
data
).
length
>
0
){
dataActionResult
=
_this
.
view
.
appUIService
.
getAllOPPrivs
(
data
)[
_item
[
'dataaccaction'
]];
}
}
else
{
dataActionResult
=
_this
.
view
.
appUIService
.
getResourceOPPrivs
(
_item
[
'dataaccaction'
]);
}
}
else
{
if
(
data
&&
Object
.
keys
(
data
).
length
>
0
){
dataActionResult
=
_this
.
view
.
appUIService
.
getAllOPPrivs
(
data
)[
_item
[
'dataaccaction'
]];
...
...
app_web/src/engine/view/wfdyna-edit-view-engine.ts
浏览文件 @
7dc9d263
...
...
@@ -18,13 +18,15 @@ export default class WFDynaEditViewEngine extends EditViewEngine {
}
/**
*
表单加载完成
*
引擎加载
*
* @param {*}
args
* @param {*}
[opts={}]
* @memberof WFDynaEditViewEngine
*/
public
onFormLoad
(
arg
:
any
):
void
{
super
.
onFormLoad
(
arg
);
this
.
view
.
getWFLinkModel
();
public
load
(
opts
:
any
=
{}):
void
{
if
(
this
.
view
.
getWFLinkModel
&&
this
.
view
.
getWFLinkModel
instanceof
Function
){
this
.
view
.
getWFLinkModel
();
}
}
}
\ No newline at end of file
app_web/src/locale/lanres/components/components_en_US.ts
浏览文件 @
7dc9d263
...
...
@@ -375,5 +375,19 @@ export default {
false
:
'False'
,
deleteImageFailure
:
'Image deletion failed'
,
updateFailure
:
'Batch update file failed'
,
}
},
appMapPosition
:
{
submit
:
'Submit'
,
title
:
'Please select address'
},
appSortBar
:
{
title
:
'Sort'
},
appAfterTime
:{
minutesAgo
:
'minutes ago'
,
hoursAgo
:
'hours ago'
,
dayAgo
:
'days ago'
,
monthsAgo
:
'months ago'
,
yearsAgo
:
'years ago'
}
};
\ No newline at end of file
app_web/src/locale/lanres/components/components_zh_CN.ts
浏览文件 @
7dc9d263
...
...
@@ -376,5 +376,19 @@ export default {
false
:
'取消'
,
deleteImageFailure
:
'删除图片失败'
,
updateFailure
:
'批量更新文件失败'
,
}
},
appMapPosition
:
{
submit
:
'确认'
,
title
:
'请选择地址'
},
appSortBar
:
{
title
:
'排序'
},
appAfterTime
:{
minutesAgo
:
'分钟前'
,
hoursAgo
:
'小时前'
,
dayAgo
:
'天前'
,
monthsAgo
:
'月前'
,
yearsAgo
:
'年前'
}
};
\ No newline at end of file
app_web/src/pages/task/jobs-info-edit-view/jobs-info-edit-view-base.vue
浏览文件 @
7dc9d263
...
...
@@ -7,14 +7,14 @@
<span
class=
'caption-info'
>
{{
$t
(
model
.
srfCaption
)
}}
</span>
<div
class=
'toolbar-container'
>
<tooltip
:transfer=
"true"
:max-width=
"600"
>
<i-button
v-show=
"toolBarModels.tbitem3.visabled"
:disabled=
"toolBarModels.tbitem3.disabled"
class=
''
@
click=
"toolbar_click(
{ tag: 'tbitem3' }, $event)">
<i-button
v-show=
"toolBarModels.tbitem3.visabled"
:disabled=
"toolBarModels.tbitem3.disabled"
class=
''
v-loading:i-button
@
click=
"toolbar_click(
{ tag: 'tbitem3' }, $event)">
<i
class=
'fa fa-save'
></i>
<span
class=
'caption'
>
{{
$t
(
'entities.jobsinfo.editviewtoolbar_toolbar.tbitem3.caption'
)
}}
</span>
</i-button>
<div
slot=
'content'
>
{{
$t
(
'entities.jobsinfo.editviewtoolbar_toolbar.tbitem3.tip'
)
}}
</div>
</tooltip>
<tooltip
:transfer=
"true"
:max-width=
"600"
>
<i-button
v-show=
"toolBarModels.deuiaction1.visabled"
:disabled=
"toolBarModels.deuiaction1.disabled"
class=
''
@
click=
"toolbar_click(
{ tag: 'deuiaction1' }, $event)">
<i-button
v-show=
"toolBarModels.deuiaction1.visabled"
:disabled=
"toolBarModels.deuiaction1.disabled"
class=
''
v-loading:i-button
@
click=
"toolbar_click(
{ tag: 'deuiaction1' }, $event)">
<i
class=
'fa fa-sign-out'
></i>
<span
class=
'caption'
>
{{
$t
(
'entities.jobsinfo.editviewtoolbar_toolbar.deuiaction1.caption'
)
}}
</span>
</i-button>
...
...
app_web/src/pages/task/jobs-info-grid-view/jobs-info-grid-view-base.vue
浏览文件 @
7dc9d263
...
...
@@ -9,53 +9,53 @@
</div>
<div
class=
'content-container'
>
<div
style=
'margin-bottom: 6px;'
>
<i-input
v-show=
"!isExpandSearchForm"
v-model=
"query"
search
enter-button
@
on-search=
"onSearch($event)"
class=
'quick-search-input'
style=
'max-width: 400px;'
placeholder=
"执行器任务HANDLER"
/>
<i-input
v-show=
"!isExpandSearchForm"
v-model=
"query"
search
enter-button
@
on-search=
"onSearch($event)"
class=
'quick-search-input'
style=
'max-width: 400px;
padding-left: 24px
'
placeholder=
"执行器任务HANDLER"
/>
<div
class=
'pull-right'
>
<div
class=
'toolbar-container'
>
<tooltip
:transfer=
"true"
:max-width=
"600"
>
<i-button
v-show=
"toolBarModels.deuiaction1.visabled"
:disabled=
"toolBarModels.deuiaction1.disabled"
class=
''
@
click=
"toolbar_click(
{ tag: 'deuiaction1' }, $event)">
<i-button
v-show=
"toolBarModels.deuiaction1.visabled"
:disabled=
"toolBarModels.deuiaction1.disabled"
class=
''
v-loading:i-button
@
click=
"toolbar_click(
{ tag: 'deuiaction1' }, $event)">
<i
class=
'fa fa-play'
></i>
<span
class=
'caption'
>
{{
$t
(
'entities.jobsinfo.gridviewtoolbar_toolbar.deuiaction1.caption'
)
}}
</span>
</i-button>
<div
slot=
'content'
>
{{
$t
(
'entities.jobsinfo.gridviewtoolbar_toolbar.deuiaction1.tip'
)
}}
</div>
</tooltip>
<tooltip
:transfer=
"true"
:max-width=
"600"
>
<i-button
v-show=
"toolBarModels.deuiaction2.visabled"
:disabled=
"toolBarModels.deuiaction2.disabled"
class=
''
@
click=
"toolbar_click(
{ tag: 'deuiaction2' }, $event)">
<i-button
v-show=
"toolBarModels.deuiaction2.visabled"
:disabled=
"toolBarModels.deuiaction2.disabled"
class=
''
v-loading:i-button
@
click=
"toolbar_click(
{ tag: 'deuiaction2' }, $event)">
<i
class=
'fa fa-stop'
></i>
<span
class=
'caption'
>
{{
$t
(
'entities.jobsinfo.gridviewtoolbar_toolbar.deuiaction2.caption'
)
}}
</span>
</i-button>
<div
slot=
'content'
>
{{
$t
(
'entities.jobsinfo.gridviewtoolbar_toolbar.deuiaction2.tip'
)
}}
</div>
</tooltip>
<tooltip
:transfer=
"true"
:max-width=
"600"
>
<i-button
v-show=
"toolBarModels.deuiaction3.visabled"
:disabled=
"toolBarModels.deuiaction3.disabled"
class=
''
@
click=
"toolbar_click(
{ tag: 'deuiaction3' }, $event)">
<i-button
v-show=
"toolBarModels.deuiaction3.visabled"
:disabled=
"toolBarModels.deuiaction3.disabled"
class=
''
v-loading:i-button
@
click=
"toolbar_click(
{ tag: 'deuiaction3' }, $event)">
<i
class=
'fa fa-flash'
></i>
<span
class=
'caption'
>
{{
$t
(
'entities.jobsinfo.gridviewtoolbar_toolbar.deuiaction3.caption'
)
}}
</span>
</i-button>
<div
slot=
'content'
>
{{
$t
(
'entities.jobsinfo.gridviewtoolbar_toolbar.deuiaction3.tip'
)
}}
</div>
</tooltip>
<tooltip
:transfer=
"true"
:max-width=
"600"
>
<i-button
v-show=
"toolBarModels.deuiaction4.visabled"
:disabled=
"toolBarModels.deuiaction4.disabled"
class=
''
@
click=
"toolbar_click(
{ tag: 'deuiaction4' }, $event)">
<i-button
v-show=
"toolBarModels.deuiaction4.visabled"
:disabled=
"toolBarModels.deuiaction4.disabled"
class=
''
v-loading:i-button
@
click=
"toolbar_click(
{ tag: 'deuiaction4' }, $event)">
<i
class=
'fa fa-file-text-o'
></i>
<span
class=
'caption'
>
{{
$t
(
'entities.jobsinfo.gridviewtoolbar_toolbar.deuiaction4.caption'
)
}}
</span>
</i-button>
<div
slot=
'content'
>
{{
$t
(
'entities.jobsinfo.gridviewtoolbar_toolbar.deuiaction4.tip'
)
}}
</div>
</tooltip>
<tooltip
:transfer=
"true"
:max-width=
"600"
>
<i-button
v-show=
"toolBarModels.deuiaction5.visabled"
:disabled=
"toolBarModels.deuiaction5.disabled"
class=
''
@
click=
"toolbar_click(
{ tag: 'deuiaction5' }, $event)">
<i-button
v-show=
"toolBarModels.deuiaction5.visabled"
:disabled=
"toolBarModels.deuiaction5.disabled"
class=
''
v-loading:i-button
@
click=
"toolbar_click(
{ tag: 'deuiaction5' }, $event)">
<i
class=
'fa fa-edit'
></i>
<span
class=
'caption'
>
{{
$t
(
'entities.jobsinfo.gridviewtoolbar_toolbar.deuiaction5.caption'
)
}}
</span>
</i-button>
<div
slot=
'content'
>
{{
$t
(
'entities.jobsinfo.gridviewtoolbar_toolbar.deuiaction5.tip'
)
}}
</div>
</tooltip>
<tooltip
:transfer=
"true"
:max-width=
"600"
>
<i-button
v-show=
"toolBarModels.deuiaction6.visabled"
:disabled=
"toolBarModels.deuiaction6.disabled"
class=
''
@
click=
"toolbar_click(
{ tag: 'deuiaction6' }, $event)">
<i-button
v-show=
"toolBarModels.deuiaction6.visabled"
:disabled=
"toolBarModels.deuiaction6.disabled"
class=
''
v-loading:i-button
@
click=
"toolbar_click(
{ tag: 'deuiaction6' }, $event)">
<i
class=
'fa fa-remove'
></i>
<span
class=
'caption'
>
{{
$t
(
'entities.jobsinfo.gridviewtoolbar_toolbar.deuiaction6.caption'
)
}}
</span>
</i-button>
<div
slot=
'content'
>
{{
$t
(
'entities.jobsinfo.gridviewtoolbar_toolbar.deuiaction6.tip'
)
}}
</div>
</tooltip>
<tooltip
:transfer=
"true"
:max-width=
"600"
>
<i-button
v-show=
"toolBarModels.deuiaction7.visabled"
:disabled=
"toolBarModels.deuiaction7.disabled"
class=
''
@
click=
"toolbar_click(
{ tag: 'deuiaction7' }, $event)">
<i-button
v-show=
"toolBarModels.deuiaction7.visabled"
:disabled=
"toolBarModels.deuiaction7.disabled"
class=
''
v-loading:i-button
@
click=
"toolbar_click(
{ tag: 'deuiaction7' }, $event)">
<i
class=
'fa fa-filter'
></i>
<span
class=
'caption'
>
{{
$t
(
'entities.jobsinfo.gridviewtoolbar_toolbar.deuiaction7.caption'
)
}}
</span>
</i-button>
...
...
app_web/src/pages/task/jobs-log-grid-view/jobs-log-grid-view-base.vue
浏览文件 @
7dc9d263
...
...
@@ -9,7 +9,7 @@
</div>
<div
class=
'content-container'
>
<div
style=
'margin-bottom: 6px;'
>
<i-input
v-show=
"!isExpandSearchForm"
v-model=
"query"
search
enter-button
@
on-search=
"onSearch($event)"
class=
'quick-search-input'
style=
'max-width: 400px;'
placeholder=
"执行器任务HANDLER"
/>
<i-input
v-show=
"!isExpandSearchForm"
v-model=
"query"
search
enter-button
@
on-search=
"onSearch($event)"
class=
'quick-search-input'
style=
'max-width: 400px;
padding-left: 24px
'
placeholder=
"执行器任务HANDLER"
/>
<div
class=
'pull-right'
>
</div>
</div>
...
...
app_web/src/pages/task/jobs-registry-edit-view/jobs-registry-edit-view-base.vue
浏览文件 @
7dc9d263
...
...
@@ -7,14 +7,14 @@
<span
class=
'caption-info'
>
{{
$t
(
model
.
srfCaption
)
}}
</span>
<div
class=
'toolbar-container'
>
<tooltip
:transfer=
"true"
:max-width=
"600"
>
<i-button
v-show=
"toolBarModels.tbitem3.visabled"
:disabled=
"toolBarModels.tbitem3.disabled"
class=
''
@
click=
"toolbar_click(
{ tag: 'tbitem3' }, $event)">
<i-button
v-show=
"toolBarModels.tbitem3.visabled"
:disabled=
"toolBarModels.tbitem3.disabled"
class=
''
v-loading:i-button
@
click=
"toolbar_click(
{ tag: 'tbitem3' }, $event)">
<i
class=
'fa fa-save'
></i>
<span
class=
'caption'
>
{{
$t
(
'entities.jobsregistry.editviewtoolbar_toolbar.tbitem3.caption'
)
}}
</span>
</i-button>
<div
slot=
'content'
>
{{
$t
(
'entities.jobsregistry.editviewtoolbar_toolbar.tbitem3.tip'
)
}}
</div>
</tooltip>
<tooltip
:transfer=
"true"
:max-width=
"600"
>
<i-button
v-show=
"toolBarModels.deuiaction1.visabled"
:disabled=
"toolBarModels.deuiaction1.disabled"
class=
''
@
click=
"toolbar_click(
{ tag: 'deuiaction1' }, $event)">
<i-button
v-show=
"toolBarModels.deuiaction1.visabled"
:disabled=
"toolBarModels.deuiaction1.disabled"
class=
''
v-loading:i-button
@
click=
"toolbar_click(
{ tag: 'deuiaction1' }, $event)">
<i
class=
'fa fa-sign-out'
></i>
<span
class=
'caption'
>
{{
$t
(
'entities.jobsregistry.editviewtoolbar_toolbar.deuiaction1.caption'
)
}}
</span>
</i-button>
...
...
app_web/src/pages/task/jobs-registry-grid-view/jobs-registry-grid-view-base.vue
浏览文件 @
7dc9d263
...
...
@@ -9,32 +9,32 @@
</div>
<div
class=
'content-container'
>
<div
style=
'margin-bottom: 6px;'
>
<i-input
v-show=
"!isExpandSearchForm"
v-model=
"query"
search
enter-button
@
on-search=
"onSearch($event)"
class=
'quick-search-input'
style=
'max-width: 400px;'
placeholder=
"服务名"
/>
<i-input
v-show=
"!isExpandSearchForm"
v-model=
"query"
search
enter-button
@
on-search=
"onSearch($event)"
class=
'quick-search-input'
style=
'max-width: 400px;
padding-left: 24px
'
placeholder=
"服务名"
/>
<div
class=
'pull-right'
>
<div
class=
'toolbar-container'
>
<tooltip
:transfer=
"true"
:max-width=
"600"
>
<i-button
v-show=
"toolBarModels.tbitem3.visabled"
:disabled=
"toolBarModels.tbitem3.disabled"
class=
''
@
click=
"toolbar_click(
{ tag: 'tbitem3' }, $event)">
<i-button
v-show=
"toolBarModels.tbitem3.visabled"
:disabled=
"toolBarModels.tbitem3.disabled"
class=
''
v-loading:i-button
@
click=
"toolbar_click(
{ tag: 'tbitem3' }, $event)">
<i
class=
'fa fa-file-text-o'
></i>
<span
class=
'caption'
>
{{
$t
(
'entities.jobsregistry.gridviewtoolbar_toolbar.tbitem3.caption'
)
}}
</span>
</i-button>
<div
slot=
'content'
>
{{
$t
(
'entities.jobsregistry.gridviewtoolbar_toolbar.tbitem3.tip'
)
}}
</div>
</tooltip>
<tooltip
:transfer=
"true"
:max-width=
"600"
>
<i-button
v-show=
"toolBarModels.tbitem4.visabled"
:disabled=
"toolBarModels.tbitem4.disabled"
class=
''
@
click=
"toolbar_click(
{ tag: 'tbitem4' }, $event)">
<i-button
v-show=
"toolBarModels.tbitem4.visabled"
:disabled=
"toolBarModels.tbitem4.disabled"
class=
''
v-loading:i-button
@
click=
"toolbar_click(
{ tag: 'tbitem4' }, $event)">
<i
class=
'fa fa-edit'
></i>
<span
class=
'caption'
>
{{
$t
(
'entities.jobsregistry.gridviewtoolbar_toolbar.tbitem4.caption'
)
}}
</span>
</i-button>
<div
slot=
'content'
>
{{
$t
(
'entities.jobsregistry.gridviewtoolbar_toolbar.tbitem4.tip'
)
}}
</div>
</tooltip>
<tooltip
:transfer=
"true"
:max-width=
"600"
>
<i-button
v-show=
"toolBarModels.tbitem8.visabled"
:disabled=
"toolBarModels.tbitem8.disabled"
class=
''
@
click=
"toolbar_click(
{ tag: 'tbitem8' }, $event)">
<i-button
v-show=
"toolBarModels.tbitem8.visabled"
:disabled=
"toolBarModels.tbitem8.disabled"
class=
''
v-loading:i-button
@
click=
"toolbar_click(
{ tag: 'tbitem8' }, $event)">
<i
class=
'fa fa-remove'
></i>
<span
class=
'caption'
>
{{
$t
(
'entities.jobsregistry.gridviewtoolbar_toolbar.tbitem8.caption'
)
}}
</span>
</i-button>
<div
slot=
'content'
>
{{
$t
(
'entities.jobsregistry.gridviewtoolbar_toolbar.tbitem8.tip'
)
}}
</div>
</tooltip>
<tooltip
:transfer=
"true"
:max-width=
"600"
>
<i-button
v-show=
"toolBarModels.deuiaction1.visabled"
:disabled=
"toolBarModels.deuiaction1.disabled"
class=
''
@
click=
"toolbar_click(
{ tag: 'deuiaction1' }, $event)">
<i-button
v-show=
"toolBarModels.deuiaction1.visabled"
:disabled=
"toolBarModels.deuiaction1.disabled"
class=
''
v-loading:i-button
@
click=
"toolbar_click(
{ tag: 'deuiaction1' }, $event)">
<i
class=
'fa fa-filter'
></i>
<span
class=
'caption'
>
{{
$t
(
'entities.jobsregistry.gridviewtoolbar_toolbar.deuiaction1.caption'
)
}}
</span>
</i-button>
...
...
app_web/src/pages/task/task-index-view/main.ts
浏览文件 @
7dc9d263
...
...
@@ -15,6 +15,15 @@ import 'view-design/dist/styles/iview.css';
import
'ibiz-vue-lib/lib/ibiz-vue-lib.css'
;
import
'@/styles/default.less'
;
import
VueAMap
from
'vue-amap'
;
Vue
.
use
(
VueAMap
);
VueAMap
.
initAMapApiLoader
({
key
:
'6ab2751103aea67e817c90a5528181b5'
,
plugin
:
[
"AMap.Geolocation"
,
"AMap.PlaceSearch"
,
"AMap.Geocoder"
,
"AMap.Autocomplete"
],
uiVersion
:
'1.1'
});
// 模拟数据
if
(
process
.
env
.
NODE_ENV
===
'development'
)
{
require
(
'@/mock'
);
...
...
app_web/src/service/jobs-info/jobs-info-service-base.ts
浏览文件 @
7dc9d263
...
...
@@ -226,4 +226,18 @@ export default class JobsInfoServiceBase extends EntityService {
let
res
:
any
=
Http
.
getInstance
().
get
(
`/jobsinfos/fetchdefault`
,
tempData
,
isloading
);
return
res
;
}
/**
* searchDefault接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof JobsInfoServiceBase
*/
public
async
searchDefault
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
let
tempData
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
data
));
return
await
Http
.
getInstance
().
post
(
`/jobsinfos/searchdefault`
,
tempData
,
isloading
);
}
}
\ No newline at end of file
app_web/src/service/jobs-lock/jobs-lock-service-base.ts
浏览文件 @
7dc9d263
...
...
@@ -184,4 +184,18 @@ export default class JobsLockServiceBase extends EntityService {
let
res
:
any
=
Http
.
getInstance
().
get
(
`/jobslocks/fetchdefault`
,
tempData
,
isloading
);
return
res
;
}
/**
* searchDefault接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof JobsLockServiceBase
*/
public
async
searchDefault
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
let
tempData
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
data
));
return
await
Http
.
getInstance
().
post
(
`/jobslocks/searchdefault`
,
tempData
,
isloading
);
}
}
\ No newline at end of file
app_web/src/service/jobs-log/jobs-log-service-base.ts
浏览文件 @
7dc9d263
...
...
@@ -184,4 +184,18 @@ export default class JobsLogServiceBase extends EntityService {
let
res
:
any
=
Http
.
getInstance
().
get
(
`/jobslogs/fetchdefault`
,
tempData
,
isloading
);
return
res
;
}
/**
* searchDefault接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof JobsLogServiceBase
*/
public
async
searchDefault
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
let
tempData
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
data
));
return
await
Http
.
getInstance
().
post
(
`/jobslogs/searchdefault`
,
tempData
,
isloading
);
}
}
\ No newline at end of file
app_web/src/service/jobs-registry/jobs-registry-service-base.ts
浏览文件 @
7dc9d263
...
...
@@ -184,4 +184,18 @@ export default class JobsRegistryServiceBase extends EntityService {
let
res
:
any
=
Http
.
getInstance
().
get
(
`/jobsregistries/fetchdefault`
,
tempData
,
isloading
);
return
res
;
}
/**
* searchDefault接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof JobsRegistryServiceBase
*/
public
async
searchDefault
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
let
tempData
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
data
));
return
await
Http
.
getInstance
().
post
(
`/jobsregistries/searchdefault`
,
tempData
,
isloading
);
}
}
\ No newline at end of file
app_web/src/shims-vue.d.ts
浏览文件 @
7dc9d263
...
...
@@ -9,4 +9,6 @@ declare module '@fullcalendar/list';
declare
module
'@fullcalendar/interaction'
;
declare
module
'vue-grid-layout'
;
declare
module
'vue-print-nb'
;
declare
module
'vuedraggable'
;
\ No newline at end of file
declare
module
'vuedraggable'
;
declare
module
'ibiz-vue-pivottable'
;
declare
module
'vue-amap'
;
\ No newline at end of file
app_web/src/styles/default.less
浏览文件 @
7dc9d263
...
...
@@ -97,7 +97,7 @@
border-color: rgb(221, 221, 221);
border-style: solid;
border-width: 0px 0px 1px;
margin: 0px 0px
11
px;
margin: 0px 0px
6
px;
padding: 6px 0px 2px;
> .header-container{
min-height: 42px;
...
...
@@ -246,7 +246,7 @@
}
}
.view-container.degridview, .view-container.degridview9, .view-container.dewfgridview, .view-container.delistview, .view-container.delistview9, .view-container.dedataview, .view-container.dedataview9,.view-container.dechartview,.view-container.dechartview9{
.view-container.degridview, .view-container.degridview9, .view-container.dewfgridview, .view-container.delistview, .view-container.delistview9, .view-container.dedataview, .view-container.dedataview9,.view-container.dechartview,.view-container.dechartview9
,.view-container.decalendarview,.view-container.decalendarview9
{
>.view-card.view-no-caption{
>.ivu-card-body{
height: 100%;
...
...
app_web/src/template.html
浏览文件 @
7dc9d263
...
...
@@ -13,6 +13,6 @@
</noscript>
<div
id=
"app"
></div>
<script
src=
"./environments/environment.js"
></script>
<script
src=
".
.
/assets/js/avue.min.js"
></script>
<script
src=
"./assets/js/avue.min.js"
></script>
</body>
</html>
app_web/src/utils/http/http.ts
浏览文件 @
7dc9d263
...
...
@@ -2,6 +2,8 @@ import axios from 'axios';
import
{
Loading
}
from
'element-ui'
;
import
{
ElLoadingComponent
}
from
'element-ui/types/loading'
;
import
qs
from
'qs'
;
import
{
Subject
}
from
'rxjs'
;
/**
* Http net 对象
* 调用 getInstance() 获取实例
...
...
@@ -10,20 +12,6 @@ import qs from 'qs';
*/
export
class
Http
{
/**
* 获取 Http 单例对象
*
* @static
* @returns {Http}
* @memberof Http
*/
public
static
getInstance
():
Http
{
if
(
!
Http
.
Http
)
{
Http
.
Http
=
new
Http
();
}
return
this
.
Http
;
}
/**
* 单例变量声明
*
...
...
@@ -42,6 +30,28 @@ export class Http {
*/
private
loadingCount
:
number
=
0
;
/**
* 数据传递对象
*
* @type {Subject}
* @memberof Http
*/
private
subject
:
Subject
<
any
>
=
new
Subject
<
any
>
();
/**
* 获取 Http 单例对象
*
* @static
* @returns {Http}
* @memberof Http
*/
public
static
getInstance
():
Http
{
if
(
!
Http
.
Http
)
{
Http
.
Http
=
new
Http
();
}
return
this
.
Http
;
}
/**
* load状态管理器
*
...
...
@@ -227,6 +237,7 @@ export class Http {
body
:
true
,
fullscreen
:
true
,
});
this
.
notifyLoadState
(
true
);
}
this
.
loadingCount
++
;
}
...
...
@@ -244,6 +255,7 @@ export class Http {
setTimeout
(()
=>
{
if
(
this
.
loadingCount
===
0
)
{
this
.
elLoadingComponent
.
close
();
this
.
notifyLoadState
(
false
);
}
},
500
);
}
...
...
@@ -265,4 +277,24 @@ export class Http {
return
data
;
}
/**
* 获取通知对象
*
* @public
* @memberof Http
*/
public
getNotifyObject
(){
return
this
.
subject
;
}
/**
* 通知loadding状态
*
* @private
* @memberof Http
*/
private
notifyLoadState
(
loadingState
:
boolean
){
this
.
subject
.
next
({
action
:
'setloadstate'
,
state
:
loadingState
});
}
}
\ No newline at end of file
app_web/src/utils/interceptor/interceptor.ts
浏览文件 @
7dc9d263
...
...
@@ -3,6 +3,9 @@ import axios from 'axios';
import
Router
from
'vue-router'
;
import
i18n
from
'@/locale'
;
import
{
Environment
}
from
'@/environments/environment'
;
import
{
Http
}
from
'../http/http'
;
import
{
Util
}
from
'../util/util'
;
/**
* 拦截器
*
...
...
@@ -104,6 +107,9 @@ export class Interceptors {
});
axios
.
interceptors
.
response
.
use
((
response
:
any
)
=>
{
if
(
response
.
headers
&&
response
.
headers
[
'refreshtoken'
]
&&
localStorage
.
getItem
(
'token'
)){
this
.
refreshToken
(
response
);
}
return
response
;
},
(
error
:
any
)
=>
{
error
=
error
?
error
:
{
response
:
{}
};
...
...
@@ -174,4 +180,30 @@ export class Interceptors {
}
}
/**
* 刷新token
*
* @private
* @param {*} [data={}]
* @memberof Interceptors
*/
private
refreshToken
(
data
:
any
=
{}):
void
{
if
(
data
&&
data
.
config
&&
(
data
.
config
.
url
==
"/uaa/refreshToken"
)){
return
;
}
Http
.
getInstance
().
post
(
'/uaa/refreshToken'
,
localStorage
.
getItem
(
'token'
),
false
).
then
((
response
:
any
)
=>
{
if
(
response
&&
response
.
status
===
200
)
{
const
data
=
response
.
data
;
if
(
data
)
{
localStorage
.
setItem
(
'token'
,
data
);
Util
.
setCookie
(
'ibzuaa-token'
,
data
,
0
);
}
}
else
{
console
.
log
(
"刷新token出错"
);
}
}).
catch
((
error
:
any
)
=>
{
console
.
log
(
"刷新token出错"
);
});
}
}
\ No newline at end of file
app_web/src/utils/types/util.d.ts
浏览文件 @
7dc9d263
...
...
@@ -153,7 +153,7 @@ export declare interface Util {
* @returns {string}
* @memberof Util
*/
dateFormat
(
date
:
any
,
fmt
?:
string
):
string
dateFormat
(
date
:
any
,
fmt
?:
string
):
string
;
/**
* 表单项校验
...
...
@@ -164,7 +164,21 @@ export declare interface Util {
* @returns {Promise}
* @memberof Util
*/
validateItem
(
property
:
string
,
data
:
any
,
rules
:
any
):
Promise
<
any
>
validateItem
(
property
:
string
,
data
:
any
,
rules
:
any
):
Promise
<
any
>
;
/**
* 设置cookie
*
* @memberof Util
*/
setCookie
(
name
:
any
,
value
:
any
,
day
:
any
):
void
;
/**
* 获取cookie
*
* @memberof Util
*/
getCookie
(
name
:
any
):
any
;
}
declare
module
"vue/types/vue"
{
...
...
app_web/src/utils/util/util.ts
浏览文件 @
7dc9d263
...
...
@@ -258,7 +258,8 @@ export class Util {
*/
public
static
srfFilePath2
(
name
:
string
):
string
{
if
(
!
name
||
(
name
&&
Object
.
is
(
name
,
''
)))
{
throw
new
Error
(
'名称异常'
);
console
.
error
(
"名称异常"
)
return
''
;
}
name
=
name
.
replace
(
/
[
_
]
/g
,
'-'
);
let
state
:
number
=
0
;
...
...
@@ -427,4 +428,39 @@ export class Util {
// 校验返回Promise
return
schema
.
validate
({
[
property
]:
value
})
}
/**
* 设置cookie
*
* @memberof Util
*/
public
static
setCookie
(
name
:
any
,
value
:
any
,
day
:
any
)
{
if
(
day
!==
0
)
{
//当设置的时间等于0时,不设置expires属性,cookie在浏览器关闭后删除
let
curDate
=
new
Date
();
let
curTamp
=
curDate
.
getTime
();
let
curWeeHours
=
new
Date
(
curDate
.
toLocaleDateString
()).
getTime
()
-
1
;
let
passedTamp
=
curTamp
-
curWeeHours
;
let
leftTamp
=
24
*
60
*
60
*
1000
-
passedTamp
;
let
leftTime
=
new
Date
();
leftTime
.
setTime
(
leftTamp
+
curTamp
);
document
.
cookie
=
name
+
"="
+
escape
(
value
)
+
";expires="
+
leftTime
.
toUTCString
();
}
else
{
document
.
cookie
=
name
+
"="
+
escape
(
value
);
}
}
/**
* 获取cookie
*
* @memberof Util
*/
public
static
getCookie
(
name
:
any
):
any
{
let
arr
;
let
reg
=
new
RegExp
(
"(^| )"
+
name
+
"=([^;]*)(;|$)"
);
if
(
arr
=
document
.
cookie
.
match
(
reg
))
return
unescape
(
arr
[
2
]);
else
return
null
;
}
}
\ No newline at end of file
app_web/src/widgets/app/task-index-view-appmenu/task-index-view-appmenu-base.vue
浏览文件 @
7dc9d263
...
...
@@ -154,7 +154,7 @@ export default class TaskIndexViewBase extends Vue implements ControlInterface {
* @type {*}
* @memberof TaskIndexViewBase
*/
@
Prop
()
public
context
:
any
;
@
Prop
()
public
context
!
:
any
;
/**
* 视图参数
...
...
@@ -162,7 +162,7 @@ export default class TaskIndexViewBase extends Vue implements ControlInterface {
* @type {*}
* @memberof TaskIndexViewBase
*/
@
Prop
()
public
viewparams
:
any
;
@
Prop
()
public
viewparams
!
:
any
;
/**
* 视图状态事件
...
...
app_web/src/widgets/jobs-info/default-searchform/default-searchform-base.vue
浏览文件 @
7dc9d263
...
...
@@ -109,7 +109,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* @type {*}
* @memberof DefaultBase
*/
@
Prop
()
public
context
:
any
;
@
Prop
()
public
context
!
:
any
;
/**
* 视图参数
...
...
@@ -117,7 +117,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* @type {*}
* @memberof DefaultBase
*/
@
Prop
()
public
viewparams
:
any
;
@
Prop
()
public
viewparams
!
:
any
;
/**
* 视图状态事件
...
...
app_web/src/widgets/jobs-info/main-form/main-form-base.vue
浏览文件 @
7dc9d263
...
...
@@ -250,7 +250,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {*}
* @memberof MainBase
*/
@
Prop
()
public
context
:
any
;
@
Prop
()
public
context
!
:
any
;
/**
* 视图参数
...
...
@@ -258,7 +258,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {*}
* @memberof MainBase
*/
@
Prop
()
public
viewparams
:
any
;
@
Prop
()
public
viewparams
!
:
any
;
/**
* 视图状态事件
...
...
@@ -367,6 +367,14 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public
formKeyItemName
:
string
=
''
;
/**
* 是否自动加载
*
* @type {boolean}
* @memberof MainBase
*/
@
Prop
({
default
:
false
})
public
isautoload
?:
boolean
;
/**
* 界面UI服务对象
*
...
...
@@ -750,34 +758,40 @@ export default class MainBase extends Vue implements ControlInterface {
startOp
(
true
);
return
falg
;
}
// 常规规则
if
(
item
.
type
==
'SIMPLE'
){
startOp
(
!
this
.
$verify
.
checkFieldSimpleRule
(
dataValue
,
item
.
condOP
,
item
.
paramValue
,
item
.
ruleInfo
,
item
.
paramType
,
this
.
data
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 数值范围
if
(
item
.
type
==
'VALUERANGE2'
){
startOp
(
!
this
.
$verify
.
checkFieldValueRangeRule
(
dataValue
,
item
.
minValue
,
item
.
isIncludeMinValue
,
item
.
maxValue
,
item
.
isIncludeMaxValue
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 正则式
if
(
item
.
type
==
"REGEX"
)
{
startOp
(
!
this
.
$verify
.
checkFieldRegExRule
(
dataValue
,
item
.
regExCode
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 长度
if
(
item
.
type
==
"STRINGLENGTH"
)
{
startOp
(
!
this
.
$verify
.
checkFieldStringLengthRule
(
dataValue
,
item
.
minValue
,
item
.
isIncludeMinValue
,
item
.
maxValue
,
item
.
isIncludeMaxValue
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 系统值规则
if
(
item
.
type
==
"SYSVALUERULE"
)
{
startOp
(
!
this
.
$verify
.
checkFieldSysValueRule
(
dataValue
,
item
.
sysRule
.
regExCode
,
item
.
ruleInfo
,
item
.
isKeyCond
));
try
{
// 常规规则
if
(
item
.
type
==
'SIMPLE'
){
startOp
(
!
this
.
$verify
.
checkFieldSimpleRule
(
dataValue
,
item
.
condOP
,
item
.
paramValue
,
item
.
ruleInfo
,
item
.
paramType
,
this
.
data
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 数值范围
if
(
item
.
type
==
'VALUERANGE2'
){
startOp
(
!
this
.
$verify
.
checkFieldValueRangeRule
(
dataValue
,
item
.
minValue
,
item
.
isIncludeMinValue
,
item
.
maxValue
,
item
.
isIncludeMaxValue
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 正则式
if
(
item
.
type
==
"REGEX"
)
{
startOp
(
!
this
.
$verify
.
checkFieldRegExRule
(
dataValue
,
item
.
regExCode
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 长度
if
(
item
.
type
==
"STRINGLENGTH"
)
{
startOp
(
!
this
.
$verify
.
checkFieldStringLengthRule
(
dataValue
,
item
.
minValue
,
item
.
isIncludeMinValue
,
item
.
maxValue
,
item
.
isIncludeMaxValue
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 系统值规则
if
(
item
.
type
==
"SYSVALUERULE"
)
{
startOp
(
!
this
.
$verify
.
checkFieldSysValueRule
(
dataValue
,
item
.
sysRule
.
regExCode
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
}
catch
(
error
)
{
falg
.
infoMessage
=
item
.
ruleInfo
;
startOp
(
false
);
if
(
!
falg
.
isPast
)
return
falg
;
}
// 分组
...
...
@@ -792,7 +806,7 @@ export default class MainBase extends Vue implements ControlInterface {
if
(
!
falg
.
hasOwnProperty
(
"isPast"
)){
falg
.
isPast
=
true
;
}
if
(
!
this
.
data
[
name
]){
if
(
!
this
.
data
[
name
]
&&
this
.
data
[
name
]
!=
0
){
falg
.
isPast
=
true
;
}
return
falg
;
...
...
@@ -1470,6 +1484,9 @@ export default class MainBase extends Vue implements ControlInterface {
* @memberof MainBase
*/
public
afterCreated
(){
if
(
this
.
isautoload
){
this
.
autoLoad
({
srfkey
:
this
.
context
.
documentcenter
});
}
if
(
this
.
viewState
)
{
this
.
viewStateEvent
=
this
.
viewState
.
subscribe
(({
tag
,
action
,
data
})
=>
{
if
(
!
Object
.
is
(
tag
,
this
.
name
))
{
...
...
@@ -2284,6 +2301,17 @@ export default class MainBase extends Vue implements ControlInterface {
public
updateDefault
(){
}
/**
* 面板数据变化处理事件
* @param {any} item 当前列数据
* @param {any} $event 面板事件数据
*
* @memberof MainBase
*/
public
onPanelDataChange
(
item
:
any
,
$event
:
any
)
{
Object
.
assign
(
item
,
$event
,
{
rowDataState
:
'update'
});
}
}
</
script
>
...
...
app_web/src/widgets/jobs-info/main-form/main-form.less
浏览文件 @
7dc9d263
...
...
@@ -6,6 +6,7 @@
}
.app-form {
overflow: auto;
padding: 6px;
> .ivu-row {
> .ivu-tabs {
height: 100%;
...
...
app_web/src/widgets/jobs-info/main-grid/main-grid-base.vue
浏览文件 @
7dc9d263
此差异已折叠。
点击以展开。
app_web/src/widgets/jobs-log/default-searchform/default-searchform-base.vue
浏览文件 @
7dc9d263
...
...
@@ -102,7 +102,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* @type {*}
* @memberof DefaultBase
*/
@
Prop
()
public
context
:
any
;
@
Prop
()
public
context
!
:
any
;
/**
* 视图参数
...
...
@@ -110,7 +110,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* @type {*}
* @memberof DefaultBase
*/
@
Prop
()
public
viewparams
:
any
;
@
Prop
()
public
viewparams
!
:
any
;
/**
* 视图状态事件
...
...
app_web/src/widgets/jobs-log/main-form/main-form-base.vue
浏览文件 @
7dc9d263
...
...
@@ -170,7 +170,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {*}
* @memberof MainBase
*/
@
Prop
()
public
context
:
any
;
@
Prop
()
public
context
!
:
any
;
/**
* 视图参数
...
...
@@ -178,7 +178,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {*}
* @memberof MainBase
*/
@
Prop
()
public
viewparams
:
any
;
@
Prop
()
public
viewparams
!
:
any
;
/**
* 视图状态事件
...
...
@@ -287,6 +287,14 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public
formKeyItemName
:
string
=
''
;
/**
* 是否自动加载
*
* @type {boolean}
* @memberof MainBase
*/
@
Prop
({
default
:
false
})
public
isautoload
?:
boolean
;
/**
* 界面UI服务对象
*
...
...
@@ -645,34 +653,40 @@ export default class MainBase extends Vue implements ControlInterface {
startOp
(
true
);
return
falg
;
}
// 常规规则
if
(
item
.
type
==
'SIMPLE'
){
startOp
(
!
this
.
$verify
.
checkFieldSimpleRule
(
dataValue
,
item
.
condOP
,
item
.
paramValue
,
item
.
ruleInfo
,
item
.
paramType
,
this
.
data
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 数值范围
if
(
item
.
type
==
'VALUERANGE2'
){
startOp
(
!
this
.
$verify
.
checkFieldValueRangeRule
(
dataValue
,
item
.
minValue
,
item
.
isIncludeMinValue
,
item
.
maxValue
,
item
.
isIncludeMaxValue
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 正则式
if
(
item
.
type
==
"REGEX"
)
{
startOp
(
!
this
.
$verify
.
checkFieldRegExRule
(
dataValue
,
item
.
regExCode
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 长度
if
(
item
.
type
==
"STRINGLENGTH"
)
{
startOp
(
!
this
.
$verify
.
checkFieldStringLengthRule
(
dataValue
,
item
.
minValue
,
item
.
isIncludeMinValue
,
item
.
maxValue
,
item
.
isIncludeMaxValue
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 系统值规则
if
(
item
.
type
==
"SYSVALUERULE"
)
{
startOp
(
!
this
.
$verify
.
checkFieldSysValueRule
(
dataValue
,
item
.
sysRule
.
regExCode
,
item
.
ruleInfo
,
item
.
isKeyCond
));
try
{
// 常规规则
if
(
item
.
type
==
'SIMPLE'
){
startOp
(
!
this
.
$verify
.
checkFieldSimpleRule
(
dataValue
,
item
.
condOP
,
item
.
paramValue
,
item
.
ruleInfo
,
item
.
paramType
,
this
.
data
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 数值范围
if
(
item
.
type
==
'VALUERANGE2'
){
startOp
(
!
this
.
$verify
.
checkFieldValueRangeRule
(
dataValue
,
item
.
minValue
,
item
.
isIncludeMinValue
,
item
.
maxValue
,
item
.
isIncludeMaxValue
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 正则式
if
(
item
.
type
==
"REGEX"
)
{
startOp
(
!
this
.
$verify
.
checkFieldRegExRule
(
dataValue
,
item
.
regExCode
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 长度
if
(
item
.
type
==
"STRINGLENGTH"
)
{
startOp
(
!
this
.
$verify
.
checkFieldStringLengthRule
(
dataValue
,
item
.
minValue
,
item
.
isIncludeMinValue
,
item
.
maxValue
,
item
.
isIncludeMaxValue
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 系统值规则
if
(
item
.
type
==
"SYSVALUERULE"
)
{
startOp
(
!
this
.
$verify
.
checkFieldSysValueRule
(
dataValue
,
item
.
sysRule
.
regExCode
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
}
catch
(
error
)
{
falg
.
infoMessage
=
item
.
ruleInfo
;
startOp
(
false
);
if
(
!
falg
.
isPast
)
return
falg
;
}
// 分组
...
...
@@ -687,7 +701,7 @@ export default class MainBase extends Vue implements ControlInterface {
if
(
!
falg
.
hasOwnProperty
(
"isPast"
)){
falg
.
isPast
=
true
;
}
if
(
!
this
.
data
[
name
]){
if
(
!
this
.
data
[
name
]
&&
this
.
data
[
name
]
!=
0
){
falg
.
isPast
=
true
;
}
return
falg
;
...
...
@@ -1290,6 +1304,9 @@ export default class MainBase extends Vue implements ControlInterface {
* @memberof MainBase
*/
public
afterCreated
(){
if
(
this
.
isautoload
){
this
.
autoLoad
({
srfkey
:
this
.
context
.
documentcenter
});
}
if
(
this
.
viewState
)
{
this
.
viewStateEvent
=
this
.
viewState
.
subscribe
(({
tag
,
action
,
data
})
=>
{
if
(
!
Object
.
is
(
tag
,
this
.
name
))
{
...
...
@@ -2104,6 +2121,17 @@ export default class MainBase extends Vue implements ControlInterface {
public
updateDefault
(){
}
/**
* 面板数据变化处理事件
* @param {any} item 当前列数据
* @param {any} $event 面板事件数据
*
* @memberof MainBase
*/
public
onPanelDataChange
(
item
:
any
,
$event
:
any
)
{
Object
.
assign
(
item
,
$event
,
{
rowDataState
:
'update'
});
}
}
</
script
>
...
...
app_web/src/widgets/jobs-log/main-form/main-form.less
浏览文件 @
7dc9d263
...
...
@@ -6,6 +6,7 @@
}
.app-form {
overflow: auto;
padding: 6px;
> .ivu-row {
> .ivu-tabs {
height: 100%;
...
...
app_web/src/widgets/jobs-log/main-grid/main-grid-base.vue
浏览文件 @
7dc9d263
此差异已折叠。
点击以展开。
app_web/src/widgets/jobs-registry/default-searchform/default-searchform-base.vue
浏览文件 @
7dc9d263
...
...
@@ -95,7 +95,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* @type {*}
* @memberof DefaultBase
*/
@
Prop
()
public
context
:
any
;
@
Prop
()
public
context
!
:
any
;
/**
* 视图参数
...
...
@@ -103,7 +103,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* @type {*}
* @memberof DefaultBase
*/
@
Prop
()
public
viewparams
:
any
;
@
Prop
()
public
viewparams
!
:
any
;
/**
* 视图状态事件
...
...
app_web/src/widgets/jobs-registry/main-form/main-form-base.vue
浏览文件 @
7dc9d263
...
...
@@ -111,7 +111,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {*}
* @memberof MainBase
*/
@
Prop
()
public
context
:
any
;
@
Prop
()
public
context
!
:
any
;
/**
* 视图参数
...
...
@@ -119,7 +119,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {*}
* @memberof MainBase
*/
@
Prop
()
public
viewparams
:
any
;
@
Prop
()
public
viewparams
!
:
any
;
/**
* 视图状态事件
...
...
@@ -228,6 +228,14 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public
formKeyItemName
:
string
=
''
;
/**
* 是否自动加载
*
* @type {boolean}
* @memberof MainBase
*/
@
Prop
({
default
:
false
})
public
isautoload
?:
boolean
;
/**
* 界面UI服务对象
*
...
...
@@ -556,34 +564,40 @@ export default class MainBase extends Vue implements ControlInterface {
startOp
(
true
);
return
falg
;
}
// 常规规则
if
(
item
.
type
==
'SIMPLE'
){
startOp
(
!
this
.
$verify
.
checkFieldSimpleRule
(
dataValue
,
item
.
condOP
,
item
.
paramValue
,
item
.
ruleInfo
,
item
.
paramType
,
this
.
data
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 数值范围
if
(
item
.
type
==
'VALUERANGE2'
){
startOp
(
!
this
.
$verify
.
checkFieldValueRangeRule
(
dataValue
,
item
.
minValue
,
item
.
isIncludeMinValue
,
item
.
maxValue
,
item
.
isIncludeMaxValue
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 正则式
if
(
item
.
type
==
"REGEX"
)
{
startOp
(
!
this
.
$verify
.
checkFieldRegExRule
(
dataValue
,
item
.
regExCode
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 长度
if
(
item
.
type
==
"STRINGLENGTH"
)
{
startOp
(
!
this
.
$verify
.
checkFieldStringLengthRule
(
dataValue
,
item
.
minValue
,
item
.
isIncludeMinValue
,
item
.
maxValue
,
item
.
isIncludeMaxValue
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 系统值规则
if
(
item
.
type
==
"SYSVALUERULE"
)
{
startOp
(
!
this
.
$verify
.
checkFieldSysValueRule
(
dataValue
,
item
.
sysRule
.
regExCode
,
item
.
ruleInfo
,
item
.
isKeyCond
));
try
{
// 常规规则
if
(
item
.
type
==
'SIMPLE'
){
startOp
(
!
this
.
$verify
.
checkFieldSimpleRule
(
dataValue
,
item
.
condOP
,
item
.
paramValue
,
item
.
ruleInfo
,
item
.
paramType
,
this
.
data
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 数值范围
if
(
item
.
type
==
'VALUERANGE2'
){
startOp
(
!
this
.
$verify
.
checkFieldValueRangeRule
(
dataValue
,
item
.
minValue
,
item
.
isIncludeMinValue
,
item
.
maxValue
,
item
.
isIncludeMaxValue
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 正则式
if
(
item
.
type
==
"REGEX"
)
{
startOp
(
!
this
.
$verify
.
checkFieldRegExRule
(
dataValue
,
item
.
regExCode
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 长度
if
(
item
.
type
==
"STRINGLENGTH"
)
{
startOp
(
!
this
.
$verify
.
checkFieldStringLengthRule
(
dataValue
,
item
.
minValue
,
item
.
isIncludeMinValue
,
item
.
maxValue
,
item
.
isIncludeMaxValue
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
// 系统值规则
if
(
item
.
type
==
"SYSVALUERULE"
)
{
startOp
(
!
this
.
$verify
.
checkFieldSysValueRule
(
dataValue
,
item
.
sysRule
.
regExCode
,
item
.
ruleInfo
,
item
.
isKeyCond
));
falg
.
infoMessage
=
item
.
ruleInfo
;
if
(
!
falg
.
isPast
)
return
falg
;
}
}
catch
(
error
)
{
falg
.
infoMessage
=
item
.
ruleInfo
;
startOp
(
false
);
if
(
!
falg
.
isPast
)
return
falg
;
}
// 分组
...
...
@@ -598,7 +612,7 @@ export default class MainBase extends Vue implements ControlInterface {
if
(
!
falg
.
hasOwnProperty
(
"isPast"
)){
falg
.
isPast
=
true
;
}
if
(
!
this
.
data
[
name
]){
if
(
!
this
.
data
[
name
]
&&
this
.
data
[
name
]
!=
0
){
falg
.
isPast
=
true
;
}
return
falg
;
...
...
@@ -1111,6 +1125,9 @@ export default class MainBase extends Vue implements ControlInterface {
* @memberof MainBase
*/
public
afterCreated
(){
if
(
this
.
isautoload
){
this
.
autoLoad
({
srfkey
:
this
.
context
.
documentcenter
});
}
if
(
this
.
viewState
)
{
this
.
viewStateEvent
=
this
.
viewState
.
subscribe
(({
tag
,
action
,
data
})
=>
{
if
(
!
Object
.
is
(
tag
,
this
.
name
))
{
...
...
@@ -1925,6 +1942,17 @@ export default class MainBase extends Vue implements ControlInterface {
public
updateDefault
(){
}
/**
* 面板数据变化处理事件
* @param {any} item 当前列数据
* @param {any} $event 面板事件数据
*
* @memberof MainBase
*/
public
onPanelDataChange
(
item
:
any
,
$event
:
any
)
{
Object
.
assign
(
item
,
$event
,
{
rowDataState
:
'update'
});
}
}
</
script
>
...
...
app_web/src/widgets/jobs-registry/main-form/main-form.less
浏览文件 @
7dc9d263
...
...
@@ -6,6 +6,7 @@
}
.app-form {
overflow: auto;
padding: 6px;
> .ivu-row {
> .ivu-tabs {
height: 100%;
...
...
app_web/src/widgets/jobs-registry/main-grid/main-grid-base.vue
浏览文件 @
7dc9d263
此差异已折叠。
点击以展开。
config.xml
浏览文件 @
7dc9d263
...
...
@@ -37,11 +37,6 @@
git clone -b master $para2 ibztask/
export NODE_OPTIONS=--max-old-space-size=4096
cd ibztask/
mvn clean package -Papi
cd ibztask-provider/ibztask-provider-api
mvn -Papi docker:build
mvn -Papi docker:push
docker -H $para1 stack deploy --compose-file=src/main/docker/ibztask-provider-api.yaml ibzlab-rt --with-registry-auth
</command>
</hudson.tasks.Shell>
</builders>
...
...
ibztask-app/ibztask-app-web/src/main/java/cn/ibizlab/web/config/webSecurityConfig.java
浏览文件 @
7dc9d263
...
...
@@ -112,10 +112,10 @@ public class webSecurityConfig extends WebSecurityConfigurerAdapter {
"/**/svg/**"
,
"/"
).
permitAll
()
//放行登录请求
.
antMatchers
(
HttpMethod
.
POST
,
"/"
+
loginPath
).
permitAll
()
//放行注销请求
.
antMatchers
(
HttpMethod
.
GET
,
"/"
+
logoutPath
).
permitAll
()
//
放行登录请求
.
antMatchers
(
HttpMethod
.
POST
,
"/"
+
loginPath
).
permitAll
()
//
放行注销请求
.
antMatchers
(
HttpMethod
.
GET
,
"/"
+
logoutPath
).
permitAll
()
// 文件操作
.
antMatchers
(
"/"
+
downloadpath
+
"/**"
).
permitAll
()
.
antMatchers
(
"/"
+
uploadpath
).
permitAll
()
...
...
ibztask-app/ibztask-app-web/src/main/java/cn/ibizlab/web/webApplication.java
浏览文件 @
7dc9d263
...
...
@@ -30,13 +30,13 @@ import java.util.List;
@SpringBootApplication
(
exclude
=
{
org
.
springframework
.
boot
.
autoconfigure
.
security
.
servlet
.
SecurityAutoConfiguration
.
class
,
})
public
class
webApplication
extends
WebMvcConfigurerAdapter
{
public
class
webApplication
extends
WebMvcConfigurerAdapter
{
@Autowired
SearchContextHandlerMethodArgumentResolver
resolver
;
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
webApplication
.
class
,
args
);
SpringApplication
.
run
(
webApplication
.
class
,
args
);
}
@Override
...
...
ibztask-boot/src/main/java/cn/ibizlab/DevBootApplication.java
浏览文件 @
7dc9d263
...
...
@@ -25,8 +25,8 @@ import org.springframework.beans.factory.annotation.Autowired;
@SpringBootApplication
(
exclude
=
{
})
@ComponentScan
(
basePackages
=
{
"cn.ibizlab"
}
// ,excludeFilters
=
{
// @ComponentScan.Filter(type= org.springframework.context.annotation.FilterType.REGEX,pattern="cn.ibizlab.xxx.rest.xxx"),
// ,excludeFilters
=
{
// @ComponentScan.Filter(type= org.springframework.context.annotation.FilterType.REGEX,
pattern="cn.ibizlab.xxx.rest.xxx"),
// }
)
@Import
({
...
...
@@ -34,13 +34,13 @@ import org.springframework.beans.factory.annotation.Autowired;
})
@EnableAsync
@EnableScheduling
public
class
DevBootApplication
extends
WebMvcConfigurerAdapter
{
public
class
DevBootApplication
extends
WebMvcConfigurerAdapter
{
@Autowired
SearchContextHandlerMethodArgumentResolver
resolver
;
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
DevBootApplication
.
class
,
args
);
SpringApplication
.
run
(
DevBootApplication
.
class
,
args
);
}
@Override
...
...
ibztask-boot/src/main/java/cn/ibizlab/config/DevBootSecurityConfig.java
浏览文件 @
7dc9d263
...
...
@@ -110,9 +110,9 @@ public class DevBootSecurityConfig extends WebSecurityConfigurerAdapter {
"/v2/**"
).
permitAll
()
//放行登录请求
.
antMatchers
(
HttpMethod
.
POST
,
"/"
+
loginPath
).
permitAll
()
.
antMatchers
(
HttpMethod
.
POST
,
"/"
+
loginPath
).
permitAll
()
//放行注销请求
.
antMatchers
(
HttpMethod
.
GET
,
"/"
+
logoutPath
).
permitAll
()
.
antMatchers
(
HttpMethod
.
GET
,
"/"
+
logoutPath
).
permitAll
()
// 文件操作
.
antMatchers
(
"/"
+
downloadpath
+
"/**"
).
permitAll
()
.
antMatchers
(
"/"
+
uploadpath
).
permitAll
()
...
...
ibztask-core/src/main/java/cn/ibizlab/core/task/filter/JobsInfoSearchContext.java
浏览文件 @
7dc9d263
...
...
@@ -58,7 +58,7 @@ public class JobsInfoSearchContext extends QueryWrapperContext<JobsInfo> {
this
.
query
=
query
;
if
(!
StringUtils
.
isEmpty
(
query
)){
this
.
getSearchCond
().
and
(
wrapper
->
wrapper
.
like
(
"handler"
,
query
)
wrapper
.
like
(
"handler"
,
query
)
);
}
}
...
...
ibztask-core/src/main/java/cn/ibizlab/core/task/filter/JobsLockSearchContext.java
浏览文件 @
7dc9d263
...
...
@@ -44,7 +44,7 @@ public class JobsLockSearchContext extends QueryWrapperContext<JobsLock> {
this
.
query
=
query
;
if
(!
StringUtils
.
isEmpty
(
query
)){
this
.
getSearchCond
().
and
(
wrapper
->
wrapper
.
like
(
"name"
,
query
)
wrapper
.
like
(
"name"
,
query
)
);
}
}
...
...
ibztask-core/src/main/java/cn/ibizlab/core/task/filter/JobsLogSearchContext.java
浏览文件 @
7dc9d263
...
...
@@ -58,7 +58,7 @@ public class JobsLogSearchContext extends QueryWrapperContext<JobsLog> {
this
.
query
=
query
;
if
(!
StringUtils
.
isEmpty
(
query
)){
this
.
getSearchCond
().
and
(
wrapper
->
wrapper
.
like
(
"handler"
,
query
)
wrapper
.
like
(
"handler"
,
query
)
);
}
}
...
...
ibztask-core/src/main/java/cn/ibizlab/core/task/filter/JobsRegistrySearchContext.java
浏览文件 @
7dc9d263
...
...
@@ -51,7 +51,7 @@ public class JobsRegistrySearchContext extends QueryWrapperContext<JobsRegistry>
this
.
query
=
query
;
if
(!
StringUtils
.
isEmpty
(
query
)){
this
.
getSearchCond
().
and
(
wrapper
->
wrapper
.
like
(
"app"
,
query
)
wrapper
.
like
(
"app"
,
query
)
);
}
}
...
...
ibztask-core/src/main/java/cn/ibizlab/core/task/service/impl/JobsInfoServiceImpl.java
浏览文件 @
7dc9d263
...
...
@@ -160,17 +160,17 @@ public class JobsInfoServiceImpl extends ServiceImpl<JobsInfoMapper, JobsInfo> i
@Override
@Transactional
public
JobsInfo
start
(
JobsInfo
et
)
{
et
.
set
(
"Status"
,
"0"
);
et
.
set
(
"Last_time"
,
"0"
);
et
.
set
(
"Status"
,
"0"
);
update
(
et
);
return
et
;
}
@Override
@Transactional
public
JobsInfo
stop
(
JobsInfo
et
)
{
et
.
set
(
"Next_time"
,
"0"
);
et
.
set
(
"Last_time"
,
"0"
);
et
.
set
(
"Status"
,
"1"
);
et
.
set
(
"Next_time"
,
"0"
);
update
(
et
);
return
et
;
}
...
...
ibztask-core/src/main/resources/permission/systemResource.json
浏览文件 @
7dc9d263
...
...
@@ -4,37 +4,37 @@
],
"entities"
:[
{
"dename"
:
"Jobs
Log
"
,
"delogicname"
:
"任务
调度日志
"
,
"dename"
:
"Jobs
Info
"
,
"delogicname"
:
"任务
信息
"
,
"sysmoudle"
:{
"id"
:
"TASK"
,
"name"
:
"task"
},
"dedataset"
:[{
"id"
:
"Default"
,
"name"
:
"DEFAULT"
}],
"deaction"
:[{
"id"
:
"Create"
,
"name"
:
"Create"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Update"
,
"name"
:
"Update"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Remove"
,
"name"
:
"Remove"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Get"
,
"name"
:
"Get"
,
"type"
:
"BUILTIN"
},{
"id"
:
"GetDraft"
,
"name"
:
"GetDraft"
,
"type"
:
"BUILTIN"
},{
"id"
:
"CheckKey"
,
"name"
:
"CheckKey"
,
"type"
:
"BUILTIN"
},{
"id"
:
"
Save"
,
"name"
:
"Save"
,
"type"
:
"BUILTIN
"
}],
"deaction"
:[{
"id"
:
"Create"
,
"name"
:
"Create"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Update"
,
"name"
:
"Update"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Remove"
,
"name"
:
"Remove"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Get"
,
"name"
:
"Get"
,
"type"
:
"BUILTIN"
},{
"id"
:
"GetDraft"
,
"name"
:
"GetDraft"
,
"type"
:
"BUILTIN"
},{
"id"
:
"CheckKey"
,
"name"
:
"CheckKey"
,
"type"
:
"BUILTIN"
},{
"id"
:
"
Execute"
,
"name"
:
"执行"
,
"type"
:
"USERCUSTOM"
},{
"id"
:
"Save"
,
"name"
:
"Save"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Start"
,
"name"
:
"开始"
,
"type"
:
"USERUPDATE"
},{
"id"
:
"Stop"
,
"name"
:
"停止"
,
"type"
:
"USERUPDATE
"
}],
"datascope"
:[{
"id"
:
"all"
,
"name"
:
"全部数据"
}]
}
}
,
{
"dename"
:
"Jobs
Registry
"
,
"delogicname"
:
"任务
注册信息
"
,
"dename"
:
"Jobs
Lock
"
,
"delogicname"
:
"任务
锁
"
,
"sysmoudle"
:{
"id"
:
"TASK"
,
"name"
:
"task"
},
"dedataset"
:[{
"id"
:
"Default"
,
"name"
:
"DEFAULT"
}],
"deaction"
:[{
"id"
:
"Create"
,
"name"
:
"Create"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Update"
,
"name"
:
"Update"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Remove"
,
"name"
:
"Remove"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Get"
,
"name"
:
"Get"
,
"type"
:
"BUILTIN"
},{
"id"
:
"GetDraft"
,
"name"
:
"GetDraft"
,
"type"
:
"BUILTIN"
},{
"id"
:
"CheckKey"
,
"name"
:
"CheckKey"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Save"
,
"name"
:
"Save"
,
"type"
:
"BUILTIN"
}],
"datascope"
:[{
"id"
:
"all"
,
"name"
:
"全部数据"
}]
}
}
,
{
"dename"
:
"Jobs
Info
"
,
"delogicname"
:
"任务
信息
"
,
"dename"
:
"Jobs
Log
"
,
"delogicname"
:
"任务
调度日志
"
,
"sysmoudle"
:{
"id"
:
"TASK"
,
"name"
:
"task"
},
"dedataset"
:[{
"id"
:
"Default"
,
"name"
:
"DEFAULT"
}],
"deaction"
:[{
"id"
:
"Create"
,
"name"
:
"Create"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Update"
,
"name"
:
"Update"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Remove"
,
"name"
:
"Remove"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Get"
,
"name"
:
"Get"
,
"type"
:
"BUILTIN"
},{
"id"
:
"GetDraft"
,
"name"
:
"GetDraft"
,
"type"
:
"BUILTIN"
},{
"id"
:
"CheckKey"
,
"name"
:
"CheckKey"
,
"type"
:
"BUILTIN"
},{
"id"
:
"
Execute"
,
"name"
:
"执行"
,
"type"
:
"USERCUSTOM"
},{
"id"
:
"Save"
,
"name"
:
"Save"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Start"
,
"name"
:
"开始"
,
"type"
:
"USERUPDATE"
},{
"id"
:
"Stop"
,
"name"
:
"停止"
,
"type"
:
"USERUPDATE
"
}],
"deaction"
:[{
"id"
:
"Create"
,
"name"
:
"Create"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Update"
,
"name"
:
"Update"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Remove"
,
"name"
:
"Remove"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Get"
,
"name"
:
"Get"
,
"type"
:
"BUILTIN"
},{
"id"
:
"GetDraft"
,
"name"
:
"GetDraft"
,
"type"
:
"BUILTIN"
},{
"id"
:
"CheckKey"
,
"name"
:
"CheckKey"
,
"type"
:
"BUILTIN"
},{
"id"
:
"
Save"
,
"name"
:
"Save"
,
"type"
:
"BUILTIN
"
}],
"datascope"
:[{
"id"
:
"all"
,
"name"
:
"全部数据"
}]
}
}
,
{
"dename"
:
"Jobs
Lock
"
,
"delogicname"
:
"任务
锁
"
,
"dename"
:
"Jobs
Registry
"
,
"delogicname"
:
"任务
注册信息
"
,
"sysmoudle"
:{
"id"
:
"TASK"
,
"name"
:
"task"
},
"dedataset"
:[{
"id"
:
"Default"
,
"name"
:
"DEFAULT"
}],
"deaction"
:[{
"id"
:
"Create"
,
"name"
:
"Create"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Update"
,
"name"
:
"Update"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Remove"
,
"name"
:
"Remove"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Get"
,
"name"
:
"Get"
,
"type"
:
"BUILTIN"
},{
"id"
:
"GetDraft"
,
"name"
:
"GetDraft"
,
"type"
:
"BUILTIN"
},{
"id"
:
"CheckKey"
,
"name"
:
"CheckKey"
,
"type"
:
"BUILTIN"
},{
"id"
:
"Save"
,
"name"
:
"Save"
,
"type"
:
"BUILTIN"
}],
"datascope"
:[{
"id"
:
"all"
,
"name"
:
"全部数据"
}]
}
}
],
"appmenus"
:[
...
...
ibztask-core/src/main/resources/sysmodel/ibztask.json
浏览文件 @
7dc9d263
...
...
@@ -9,6 +9,8 @@
"table_name"
:
"JOBS_INFO"
,
"system_id"
:
"ibztask"
,
"system_name"
:
"ibztask"
,
"module_id"
:
"task"
,
"module_name"
:
"task"
,
"fields"
:[
{
"fieldname"
:
"ID"
,
...
...
@@ -229,6 +231,8 @@
"table_name"
:
"JOBS_LOCK"
,
"system_id"
:
"ibztask"
,
"system_name"
:
"ibztask"
,
"module_id"
:
"task"
,
"module_name"
:
"task"
,
"fields"
:[
{
"fieldname"
:
"ID"
,
...
...
@@ -299,6 +303,8 @@
"table_name"
:
"JOBS_LOG"
,
"system_id"
:
"ibztask"
,
"system_name"
:
"ibztask"
,
"module_id"
:
"task"
,
"module_name"
:
"task"
,
"fields"
:[
{
"fieldname"
:
"ID"
,
...
...
@@ -451,6 +457,8 @@
"table_name"
:
"JOBS_REGISTRY"
,
"system_id"
:
"ibztask"
,
"system_name"
:
"ibztask"
,
"module_id"
:
"task"
,
"module_name"
:
"task"
,
"fields"
:[
{
"fieldname"
:
"ID"
,
...
...
ibztask-provider/ibztask-provider-api/src/main/docker/Dockerfile
浏览文件 @
7dc9d263
...
...
@@ -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 /ibztask-provider-api.jar
EXPOSE
40005
EXPOSE
8081
ADD
ibztask-provider-api.jar /ibztask-provider-api.jar
ibztask-provider/ibztask-provider-api/src/main/docker/ibztask-provider-api.yaml
浏览文件 @
7dc9d263
...
...
@@ -3,23 +3,9 @@ services:
ibztask-provider-api
:
image
:
registry.cn-shanghai.aliyuncs.com/ibizsys/ibztask-provider-api:latest
ports
:
-
"
40005:40005
"
-
"
8081:8081
"
networks
:
-
agent_network
environment
:
-
SPRING_CLOUD_NACOS_DISCOVERY_IP=172.16.180.237
-
SERVER_PORT=40005
-
SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR=172.16.100.243: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.100.243:8848
-
SPRING_CLOUD_NACOS_DISCOVERY_GROUP=ibizdev
deploy
:
resources
:
limits
:
...
...
ibztask-provider/ibztask-provider-api/src/main/java/cn/ibizlab/api/config/apiAutoConfiguration.java
浏览文件 @
7dc9d263
...
...
@@ -19,7 +19,7 @@ import org.springframework.context.annotation.Import;
@ConditionalOnClass
(
apiRestConfiguration
.
class
)
@ConditionalOnWebApplication
@EnableConfigurationProperties
(
apiServiceProperties
.
class
)
public
class
apiAutoConfiguration
implements
ApplicationContextAware
{
public
class
apiAutoConfiguration
implements
ApplicationContextAware
{
protected
ApplicationContext
applicationContext
;
...
...
ibztask-util/src/main/java/cn/ibizlab/util/domain/DTOBase.java
浏览文件 @
7dc9d263
package
cn
.
ibizlab
.
util
.
domain
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.fasterxml.jackson.annotation.JsonAnyGetter
;
import
com.fasterxml.jackson.annotation.JsonAnySetter
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
lombok.Data
;
import
cn.ibizlab.util.helper.DEFieldCacheMap
;
import
org.springframework.cglib.beans.BeanMap
;
import
org.springframework.data.annotation.Transient
;
import
org.springframework.util.StringUtils
;
import
java.io.Serializable
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.Map
;
import
java.util.Set
;
import
lombok.Data
;
@Data
public
class
DTOBase
implements
Serializable
{
...
...
@@ -73,9 +77,44 @@ public class DTOBase implements Serializable {
return
extensionparams
;
}
@JsonIgnore
@JSONField
(
serialize
=
false
)
@Transient
private
BeanMap
map
;
private
BeanMap
getMap
()
{
if
(
map
==
null
)
{
map
=
BeanMap
.
create
(
this
);
}
return
map
;
}
public
Object
get
(
String
field
)
{
String
fieldRealName
=
DEFieldCacheMap
.
getFieldRealName
(
this
.
getClass
(),
field
);
if
(!
StringUtils
.
isEmpty
(
fieldRealName
))
{
return
getMap
().
get
(
fieldRealName
);
}
else
{
return
this
.
extensionparams
.
get
(
field
.
toLowerCase
());
}
}
@JsonAnySetter
public
void
set
(
String
name
,
Object
value
)
{
extensionparams
.
put
(
name
.
toLowerCase
(),
value
);
public
void
set
(
String
field
,
Object
value
)
{
field
=
field
.
toLowerCase
();
String
fieldRealName
=
DEFieldCacheMap
.
getFieldRealName
(
this
.
getClass
(),
field
);
if
(!
StringUtils
.
isEmpty
(
fieldRealName
))
{
if
(
value
==
null
)
{
getMap
().
put
(
fieldRealName
,
null
);
}
else
{
getMap
().
put
(
fieldRealName
,
DEFieldCacheMap
.
fieldValueOf
(
this
.
getClass
(),
fieldRealName
,
value
));
}
}
else
{
this
.
extensionparams
.
put
(
field
.
toLowerCase
(),
value
);
}
}
}
ibztask-util/src/main/java/cn/ibizlab/util/service/AuthenticationUserService.java
浏览文件 @
7dc9d263
此差异已折叠。
点击以展开。
ibztask-util/src/main/java/cn/ibizlab/util/service/IBZConfigService.java
浏览文件 @
7dc9d263
此差异已折叠。
点击以展开。
ibztask-util/src/main/java/cn/ibizlab/util/service/IBZDataAuditService.java
浏览文件 @
7dc9d263
此差异已折叠。
点击以展开。
ibztask-util/src/main/java/cn/ibizlab/util/service/IBZUAAUserService.java
浏览文件 @
7dc9d263
此差异已折叠。
点击以展开。
ibztask-util/src/main/java/cn/ibizlab/util/service/IBZUSERServiceImpl.java
浏览文件 @
7dc9d263
此差异已折叠。
点击以展开。
ibztask-util/src/main/java/cn/ibizlab/util/service/RemoteService.java
浏览文件 @
7dc9d263
此差异已折叠。
点击以展开。
ibztask-util/src/main/java/cn/ibizlab/util/service/SimpleAuditService.java
浏览文件 @
7dc9d263
此差异已折叠。
点击以展开。
ibztask-util/src/main/java/cn/ibizlab/util/service/SimpleFileService.java
浏览文件 @
7dc9d263
此差异已折叠。
点击以展开。
ibztask-util/src/main/java/cn/ibizlab/util/web/SearchContextHandlerMethodArgumentResolver.java
浏览文件 @
7dc9d263
此差异已折叠。
点击以展开。
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录