Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
I
ibznotify
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
ibiz4jteam
ibznotify
提交
94b656de
提交
94b656de
编写于
4年前
作者:
ibizdev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ibiz4j 发布系统代码
上级
e58f4427
变更
51
展开全部
隐藏空白字符变更
内嵌
并排
正在显示
51 个修改的文件
包含
1696 行增加
和
186 行删除
+1696
-186
CHANGELOG.md
app_web/CHANGELOG.md
+48
-0
app-register.ts
app_web/src/app-register.ts
+5
-0
auth-service.ts
app_web/src/authservice/auth-service.ts
+1
-1
codelist-register.ts
app_web/src/codelist/codelist-register.ts
+79
-0
app-department-select.vue
...omponents/app-department-select/app-department-select.vue
+75
-7
app-group-select.vue
app_web/src/components/app-group-select/app-group-select.vue
+64
-12
app-org-select.vue
app_web/src/components/app-org-select/app-org-select.vue
+80
-10
app-upicker.less
app_web/src/components/app-upicker/app-upicker.less
+23
-0
app-upicker.vue
app_web/src/components/app-upicker/app-upicker.vue
+383
-0
edit-view-engine.ts
app_web/src/engine/view/edit-view-engine.ts
+4
-4
index.d.ts
app_web/src/index.d.ts
+3
-2
en-US.ts
app_web/src/locale/lang/en-US.ts
+1
-0
zh-CN.ts
app_web/src/locale/lang/zh-CN.ts
+1
-0
notify-index-view-appmenu.ts
...pp/notify-index-view-appmenu/notify-index-view-appmenu.ts
+2
-2
msg-open-access-edit-view-base.vue
...-open-access-edit-view/msg-open-access-edit-view-base.vue
+4
-4
msg-open-access-grid-view-base.vue
...-open-access-grid-view/msg-open-access-grid-view-base.vue
+4
-4
msg-open-access-pickup-grid-view-base.vue
...ickup-grid-view/msg-open-access-pickup-grid-view-base.vue
+3
-3
msg-open-access-pickup-view-base.vue
...n-access-pickup-view/msg-open-access-pickup-view-base.vue
+3
-3
msg-template-edit-view-base.vue
...fy/msg-template-edit-view/msg-template-edit-view-base.vue
+4
-4
msg-template-grid-view-base.vue
...fy/msg-template-grid-view/msg-template-grid-view-base.vue
+4
-4
notify-index-view-base.vue
...pages/notify/notify-index-view/notify-index-view-base.vue
+2
-2
router.ts
app_web/src/pages/notify/notify-index-view/router.ts
+13
-13
codelist-service.ts
app_web/src/service/app/codelist-service.ts
+143
-58
entity-service.ts
app_web/src/service/entity-service.ts
+15
-31
notify-index-view-appmenu-base.vue
...ify-index-view-appmenu/notify-index-view-appmenu-base.vue
+6
-6
notify-index-view-appmenu-model.ts
...ify-index-view-appmenu/notify-index-view-appmenu-model.ts
+2
-2
default-searchform-base.vue
...pen-access/default-searchform/default-searchform-base.vue
+1
-0
main-form-base.vue
.../src/widgets/msg-open-access/main-form/main-form-base.vue
+50
-0
main-grid-base.vue
.../src/widgets/msg-open-access/main-grid/main-grid-base.vue
+2
-2
main-grid.less
app_web/src/widgets/msg-open-access/main-grid/main-grid.less
+10
-1
default-searchform-base.vue
...g-template/default-searchform/default-searchform-base.vue
+1
-0
main-form-base.vue
...web/src/widgets/msg-template/main-form/main-form-base.vue
+50
-0
main-grid-base.vue
...web/src/widgets/msg-template/main-grid/main-grid-base.vue
+2
-2
main-grid.less
app_web/src/widgets/msg-template/main-grid/main-grid.less
+10
-1
webApplication.java
...-app-web/src/main/java/cn/ibizlab/web/webApplication.java
+6
-1
application-web-prod.yml
...otify-app-web/src/main/resources/application-web-prod.yml
+5
-1
DevBootApplication.java
...ify-boot/src/main/java/cn/ibizlab/DevBootApplication.java
+6
-1
application-dev.yml
ibznotify-boot/src/main/resources/application-dev.yml
+5
-1
MsgUserAccount.java
...in/java/cn/ibizlab/core/notify/domain/MsgUserAccount.java
+134
-0
MsgUserAccountSearchContext.java
...izlab/core/notify/filter/MsgUserAccountSearchContext.java
+43
-0
MsgTemplateMapper.java
...java/cn/ibizlab/core/notify/mapper/MsgTemplateMapper.java
+5
-0
MsgUserAccountMapper.java
...a/cn/ibizlab/core/notify/mapper/MsgUserAccountMapper.java
+65
-0
IMsgTemplateService.java
...a/cn/ibizlab/core/notify/service/IMsgTemplateService.java
+5
-0
IMsgUserAccountService.java
...n/ibizlab/core/notify/service/IMsgUserAccountService.java
+57
-0
MsgUserAccountServiceImpl.java
...b/core/notify/service/impl/MsgUserAccountServiceImpl.java
+187
-0
h2_table.xml
ibznotify-core/src/main/resources/liquibase/h2_table.xml
+20
-1
MsgUserAccountMapper.xml
...ces/mapper/notify/msguseraccount/MsgUserAccountMapper.xml
+40
-0
ibznotifyapiApplication.java
...src/main/java/cn/ibizlab/api/ibznotifyapiApplication.java
+6
-1
DTOClient.java
...-util/src/main/java/cn/ibizlab/util/domain/DTOClient.java
+1
-1
PermissionSyncJob.java
.../src/main/java/cn/ibizlab/util/job/PermissionSyncJob.java
+4
-1
SearchContextHandlerMethodArgumentResolver.java
.../util/web/SearchContextHandlerMethodArgumentResolver.java
+9
-0
未找到文件。
app_web/CHANGELOG.md
浏览文件 @
94b656de
## v7.0.0-alpha.17 [2020-8-9]
### Bug修复
修复系统级的操作标识异常问题
修复表格新增插件异常问题
修复表格单击行绑定数据异常bug
修复表格合计行样式问题
### 功能新增及优化
#### 模板
新增支持前后端分离部署
新增动态代码表预定义代码表支持
新增数据选择(调用接口)组件
新增部件样式表支持
优化数据服务逻辑
优化代码表服务基类、动态代码表
优化导航参数处理逻辑
优化数据拷贝逻辑
优化组织、部门、人员控件只绑定id逻辑
优化部件关联外键值
#### 基础文件
新增前后端分离部署
新增下拉列表控件支持树状代码表
新增数据选择(调用接口)组件
优化数据拷贝逻辑
优化组织、部门、人员控件只绑定id逻辑
## v7.0.0-alpha.16 [2020-8-2]
### Bug修复
...
...
This diff is collapsed.
Click to expand it.
app_web/src/app-register.ts
浏览文件 @
94b656de
...
...
@@ -12,6 +12,7 @@ import { authServiceRegister } from '@/authservice/auth-service-register';
import
{
utilServiceRegister
}
from
'@/utilservice/util-service-register'
;
import
{
entityServiceRegister
}
from
'@/service/entity-service-register'
;
import
{
counterServiceRegister
}
from
'@/counter/counter-service-register'
;
import
{
codeListRegister
}
from
'@codelist/codelist-register'
;
import
InputBox
from
'./components/input-box/input-box.vue'
import
AppKeepAlive
from
'./components/app-keep-alive/app-keep-alive.vue'
...
...
@@ -38,6 +39,7 @@ import AppFormGroup from './components/app-form-group/app-form-group.vue'
import
AppFormItem
from
'./components/app-form-item/app-form-item.vue'
import
AppPicker
from
'./components/app-picker/app-picker.vue'
import
AppMpicker
from
'./components/app-mpicker/app-mpicker.vue'
import
AppUpicker
from
'./components/app-upicker/app-upicker.vue'
import
AppFormGroup2
from
'./components/app-form-group2/app-form-group2.vue'
import
AppFormItem2
from
'./components/app-form-item2/app-form-item2.vue'
import
CodeList
from
'./components/codelist/codelist.vue'
...
...
@@ -89,6 +91,8 @@ window['utilServiceRegister'] = utilServiceRegister;
window
[
'entityServiceRegister'
]
=
entityServiceRegister
;
// 全局挂载计数器服务注册中心
window
[
'counterServiceRegister'
]
=
counterServiceRegister
;
// 全局挂载代码表服务注册中心
window
[
'codeListRegister'
]
=
codeListRegister
;
export
const
AppComponents
=
{
install
(
v
:
any
,
opt
:
any
)
{
...
...
@@ -127,6 +131,7 @@ export const AppComponents = {
v
.
component
(
'app-form-item'
,
AppFormItem
);
v
.
component
(
'app-picker'
,
AppPicker
);
v
.
component
(
'app-mpicker'
,
AppMpicker
);
v
.
component
(
'app-upicker'
,
AppUpicker
);
v
.
component
(
'app-form-group2'
,
AppFormGroup2
);
v
.
component
(
'app-form-item2'
,
AppFormItem2
);
v
.
component
(
'codelist'
,
CodeList
);
...
...
This diff is collapsed.
Click to expand it.
app_web/src/authservice/auth-service.ts
浏览文件 @
94b656de
...
...
@@ -18,7 +18,7 @@ export default class AuthService {
public
$store
:
Store
<
any
>
|
null
=
null
;
/**
* 默认操作
符
* 默认操作
标识
*
* @public
* @type {(any)}
...
...
This diff is collapsed.
Click to expand it.
app_web/src/codelist/codelist-register.ts
0 → 100644
浏览文件 @
94b656de
/**
* 代码表服务注册中心
*
* @export
* @class CodeListRegister
*/
export
class
CodeListRegister
{
/**
* 所有实体数据服务Map
*
* @protected
* @type {*}
* @memberof CodeListRegister
*/
protected
allCodeList
:
Map
<
string
,
()
=>
Promise
<
any
>>
=
new
Map
();
/**
* 已加载实体数据服务Map缓存
*
* @protected
* @type {Map<string, any>}
* @memberof CodeListRegister
*/
protected
serviceCache
:
Map
<
string
,
any
>
=
new
Map
();
/**
* Creates an instance of CodeListRegister.
* @memberof CodeListRegister
*/
constructor
()
{
this
.
init
();
}
/**
* 初始化
*
* @protected
* @memberof CodeListRegister
*/
protected
init
():
void
{
}
/**
* 加载实体数据服务
*
* @protected
* @param {string} serviceName
* @returns {Promise<any>}
* @memberof CodeListRegister
*/
protected
async
loadService
(
serviceName
:
string
):
Promise
<
any
>
{
const
service
=
this
.
allCodeList
.
get
(
serviceName
);
if
(
service
)
{
return
service
();
}
}
/**
* 获取应用实体数据服务
*
* @param {string} name
* @returns {Promise<any>}
* @memberof CodeListRegister
*/
public
async
getService
(
name
:
string
):
Promise
<
any
>
{
if
(
this
.
serviceCache
.
has
(
name
))
{
return
this
.
serviceCache
.
get
(
name
);
}
const
CodeList
:
any
=
await
this
.
loadService
(
name
);
if
(
CodeList
&&
CodeList
.
default
)
{
const
instance
:
any
=
new
CodeList
.
default
();
this
.
serviceCache
.
set
(
name
,
instance
);
return
instance
;
}
}
}
export
const
codeListRegister
:
CodeListRegister
=
new
CodeListRegister
();
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app_web/src/components/app-department-select/app-department-select.vue
浏览文件 @
94b656de
...
...
@@ -6,6 +6,7 @@
<
script
lang=
"ts"
>
import
{
Vue
,
Component
,
Watch
,
Prop
,
Model
}
from
'vue-property-decorator'
;
import
CodeListService
from
'@/service/app/codelist-service'
;
@
Component
({
})
export
default
class
AppDepartmentSelect
extends
Vue
{
...
...
@@ -18,6 +19,20 @@ export default class AppDepartmentSelect extends Vue {
*/
@
Prop
()
public
url
?:
any
;
/**
* 代码表标识
*
* @memberof AppDepartmentSelect
*/
@
Prop
()
public
tag
?:
string
;
/**
* 代码表类型
*
* @memberof AppDepartmentSelect
*/
@
Prop
()
public
codelistType
?:
string
;
/**
* 过滤项
*
...
...
@@ -88,7 +103,7 @@ export default class AppDepartmentSelect extends Vue {
* @type {*}
* @memberof AppDepartmentSelect
*/
public
oldurl
:
any
[]
=
[]
;
public
oldurl
:
any
;
/**
* 获取节点数据
...
...
@@ -121,14 +136,14 @@ export default class AppDepartmentSelect extends Vue {
}
this
.
oldurl
=
_url
;
// 缓存机制
const
result
:
any
=
this
.
$store
.
getters
.
get
Copy
Data
(
_url
);
const
result
:
any
=
this
.
$store
.
getters
.
get
Dep
Data
(
_url
);
if
(
result
){
this
.
Nodesdata
=
result
;
return
;
}
this
.
$http
.
get
(
_url
).
then
((
response
:
any
)
=>
{
this
.
Nodesdata
=
response
.
data
;
this
.
$store
.
commit
(
'addDepData'
,
{
srfkey
:
this
.
filter
,
org
Data
:
response
.
data
});
this
.
$store
.
commit
(
'addDepData'
,
{
srfkey
:
_url
,
dep
Data
:
response
.
data
});
}).
catch
((
response
:
any
)
=>
{
if
(
!
response
||
!
response
.
status
||
!
response
.
data
)
{
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.error'
)
as
string
),
desc
:
(
this
.
$t
(
'app.commonWords.sysException'
)
as
string
)
});
...
...
@@ -163,13 +178,19 @@ export default class AppDepartmentSelect extends Vue {
// 单选
if
(
!
this
.
multiple
){
if
(
this
.
fillMap
&&
Object
.
keys
(
this
.
fillMap
).
length
>
0
){
let
templateValue
=
{};
let
templateValue
:
any
=
{};
Object
.
keys
(
this
.
fillMap
).
forEach
((
item
:
any
)
=>
{
if
(
this
.
data
&&
this
.
data
[
this
.
fillMap
[
item
]]){
Object
.
assign
(
templateValue
,{[
item
]:
this
.
data
[
this
.
fillMap
[
item
]]});
}
})
this
.
selectTreeValue
=
JSON
.
stringify
([
templateValue
]);
if
(
!
templateValue
.
label
&&
templateValue
.
id
&&
this
.
tag
&&
this
.
codelistType
&&
Object
.
is
(
this
.
codelistType
,
"DYNAMIC"
)){
this
.
fillLabel
(
templateValue
,
templateValue
.
id
,(
templateValue
:
any
)
=>
{
this
.
selectTreeValue
=
JSON
.
stringify
([
templateValue
]);
});
}
else
{
this
.
selectTreeValue
=
JSON
.
stringify
([
templateValue
]);
}
}
}
else
{
// 多选
...
...
@@ -188,8 +209,30 @@ export default class AppDepartmentSelect extends Vue {
})
}
})
this
.
selectTreeValue
=
JSON
.
stringify
(
tempArray
);
let
tempflag
:
boolean
=
false
;
if
(
tempArray
.
length
>
0
&&
tempArray
.
length
>
0
){
tempArray
.
forEach
((
item
:
any
)
=>
{
if
(
!
item
.
label
)
tempflag
=
true
;
})
}
if
(
tempflag
&&
this
.
tag
&&
this
.
codelistType
&&
Object
.
is
(
this
.
codelistType
,
"DYNAMIC"
)){
let
tempStatus
:
number
=
0
;
tempArray
.
forEach
((
item
:
any
)
=>
{
if
(
!
item
.
label
){
tempStatus
+=
1
;
this
.
fillLabel
(
item
,
item
.
id
,(
result
:
any
)
=>
{
item
=
result
;
tempStatus
-=
1
;
if
(
tempStatus
===
0
){
this
.
selectTreeValue
=
JSON
.
stringify
(
tempArray
);
}
})
}
})
}
else
{
this
.
selectTreeValue
=
JSON
.
stringify
(
tempArray
);
}
}
}
}
...
...
@@ -208,10 +251,35 @@ export default class AppDepartmentSelect extends Vue {
let
_name
=
this
.
fillMap
[
attribute
];
let
values
=
selectArr
.
map
((
item
:
any
)
=>
item
[
attribute
]);
let
_value
=
$event
===
"[]"
?
null
:
values
.
join
(
","
);
this
.
$emit
(
'select-change'
,{
name
:
this
.
fillMap
[
attribute
],
value
:
_value
})
setTimeout
(()
=>
{
this
.
$emit
(
'select-change'
,{
name
:
this
.
fillMap
[
attribute
],
value
:
_value
});
},
0
);
});
}
}
/**
* 填充label
*
* @memberof AppOrgSelect
*/
public
fillLabel
(
tempObject
:
any
,
valueItem
:
any
,
callback
:
any
){
if
(
!
tempObject
.
label
&&
tempObject
.
id
&&
this
.
tag
&&
this
.
codelistType
&&
Object
.
is
(
this
.
codelistType
,
"DYNAMIC"
)){
let
codeListService
:
CodeListService
=
new
CodeListService
();
codeListService
.
getItems
(
this
.
tag
).
then
((
items
:
any
)
=>
{
if
(
items
&&
items
.
length
>
0
){
let
result
:
any
=
items
.
find
((
item
:
any
)
=>
{
return
item
.
id
===
valueItem
;
})
Object
.
assign
(
tempObject
,{
label
:
result
.
label
});
}
callback
(
tempObject
);
}).
catch
((
error
:
any
)
=>
{
console
.
log
(
error
);
})
}
}
}
</
script
>
...
...
This diff is collapsed.
Click to expand it.
app_web/src/components/app-group-select/app-group-select.vue
浏览文件 @
94b656de
...
...
@@ -21,6 +21,7 @@
<
script
lang=
"ts"
>
import
{
Component
,
Vue
,
Prop
,
Watch
}
from
'vue-property-decorator'
;
import
{
Subject
}
from
'rxjs'
;
import
CodeListService
from
'@/service/app/codelist-service'
;
@
Component
({})
export
default
class
AppGroupSelect
extends
Vue
{
...
...
@@ -64,6 +65,20 @@ export default class AppGroupSelect extends Vue {
*/
@
Prop
()
data
:
any
;
/**
* 代码表标识
*
* @memberof AppGroupSelect
*/
@
Prop
()
public
tag
?:
string
;
/**
* 代码表类型
*
* @memberof AppGroupSelect
*/
@
Prop
()
public
codelistType
?:
string
;
/**
* 过滤属性标识
*
...
...
@@ -126,12 +141,12 @@ export default class AppGroupSelect extends Vue {
* @type {*}
* @memberof AppGroupSelect
*/
@
Watch
(
'
value'
)
onValueChange
(
newVal
:
any
)
{
@
Watch
(
'
data'
,{
immediate
:
true
,
deep
:
true
}
)
onValueChange
(
newVal
:
any
,
oldVal
:
any
)
{
this
.
selects
=
[];
if
(
newVal
)
{
let
item
:
any
=
{};
item
.
label
=
newVal
.
split
(
','
)
;
item
.
label
=
this
.
data
[
this
.
name
]?
this
.
data
[
this
.
name
].
split
(
','
):[]
;
if
(
this
.
valueitem
)
{
item
.
id
=
this
.
data
[
this
.
valueitem
]
?
this
.
data
[
this
.
valueitem
].
split
(
','
)
:
[];
}
...
...
@@ -140,13 +155,24 @@ export default class AppGroupSelect extends Vue {
item
[
this
.
fillmap
[
key
]]
=
this
.
data
[
key
]
?
this
.
data
[
key
].
split
(
','
)
:
[];
}
}
item
.
label
.
forEach
((
val
:
string
,
index
:
number
)
=>
{
let
_item
:
any
=
{};
for
(
let
key
in
item
)
{
_item
[
key
]
=
item
[
key
][
index
]
?
item
[
key
][
index
]
:
null
;
}
this
.
selects
.
push
(
_item
)
})
const
callback
:
any
=
(
item
:
any
)
=>
{
item
.
label
.
forEach
((
val
:
string
,
index
:
number
)
=>
{
let
_item
:
any
=
{};
for
(
let
key
in
item
)
{
_item
[
key
]
=
item
[
key
][
index
]
?
item
[
key
][
index
]
:
null
;
}
this
.
selects
.
push
(
_item
)
})
}
if
(
item
.
label
.
length
==
0
&&
item
.
id
.
length
>
0
){
this
.
fillLabel
(
item
,
item
.
id
,(
result
:
any
)
=>
{
item
.
label
=
result
.
label
;
callback
(
item
);
});
}
else
{
callback
(
item
);
}
}
}
...
...
@@ -259,7 +285,6 @@ export default class AppGroupSelect extends Vue {
}
});
}
else
{
item
=
this
.
selects
.
length
>
0
?
this
.
selects
[
0
]
:
{};
item
[
this
.
name
]
=
this
.
selects
.
length
>
0
?
this
.
selects
[
0
].
label
:
null
;
if
(
this
.
valueitem
)
{
item
[
this
.
valueitem
]
=
this
.
selects
.
length
>
0
?
this
.
selects
[
0
].
id
:
null
;
...
...
@@ -273,7 +298,34 @@ export default class AppGroupSelect extends Vue {
for
(
let
key
in
item
)
{
this
.
$emit
(
'formitemvaluechange'
,
{
name
:
key
,
value
:
item
[
key
]
});
}
}
}
/**
* 填充label
*
* @memberof AppGroupSelect
*/
public
fillLabel
(
tempObject
:
any
,
valueItem
:
Array
<
any
>
,
callback
:
any
){
if
(
tempObject
.
label
.
length
===
0
&&
tempObject
.
id
.
length
>
0
&&
this
.
tag
&&
this
.
codelistType
&&
Object
.
is
(
this
.
codelistType
,
"DYNAMIC"
)){
let
codeListService
:
CodeListService
=
new
CodeListService
();
codeListService
.
getItems
(
this
.
tag
).
then
((
items
:
any
)
=>
{
if
(
items
&&
items
.
length
>
0
&&
valueItem
.
length
>
0
){
let
tempLabel
:
Array
<
any
>
=
[];
valueItem
.
forEach
((
value
:
any
)
=>
{
let
result
:
any
=
items
.
find
((
item
:
any
)
=>
{
return
item
.
id
===
value
;
})
tempLabel
.
push
(
result
.
label
);
})
Object
.
assign
(
tempObject
,{
label
:
tempLabel
});
}
callback
(
tempObject
);
}).
catch
((
error
:
any
)
=>
{
console
.
log
(
error
);
})
}
}
}
</
script
>
...
...
This diff is collapsed.
Click to expand it.
app_web/src/components/app-org-select/app-org-select.vue
浏览文件 @
94b656de
...
...
@@ -6,6 +6,8 @@
<
script
lang =
'ts'
>
import
{
Vue
,
Component
,
Prop
,
Watch
}
from
"vue-property-decorator"
;
import
{
Http
}
from
'@/utils'
;
import
CodeListService
from
"@service/app/codelist-service"
;
import
{
observable
}
from
'rxjs'
;
@
Component
({})
export
default
class
AppOrgSelect
extends
Vue
{
...
...
@@ -37,6 +39,20 @@ export default class AppOrgSelect extends Vue {
*/
@
Prop
()
public
filter
?:
string
;
/**
* 代码表标识
*
* @memberof AppOrgSelect
*/
@
Prop
()
public
tag
?:
string
;
/**
* 代码表类型
*
* @memberof AppOrgSelect
*/
@
Prop
()
public
codelistType
?:
string
;
/**
* 是否多选
*
...
...
@@ -138,13 +154,19 @@ export default class AppOrgSelect extends Vue {
// 单选
if
(
!
this
.
multiple
){
if
(
this
.
fillMap
&&
Object
.
keys
(
this
.
fillMap
).
length
>
0
){
let
templateValue
=
{};
Object
.
keys
(
this
.
fillMap
).
forEach
((
item
:
any
)
=>
{
if
(
this
.
data
&&
this
.
data
[
this
.
fillMap
[
item
]]){
Object
.
assign
(
templateValue
,{[
item
]:
this
.
data
[
this
.
fillMap
[
item
]]});
let
templateValue
:
any
=
{};
Object
.
keys
(
this
.
fillMap
).
forEach
((
item
:
any
)
=>
{
if
(
this
.
data
&&
this
.
data
[
this
.
fillMap
[
item
]]){
Object
.
assign
(
templateValue
,{[
item
]:
this
.
data
[
this
.
fillMap
[
item
]]});
}
})
if
(
!
templateValue
.
label
&&
templateValue
.
id
&&
this
.
tag
&&
this
.
codelistType
&&
Object
.
is
(
this
.
codelistType
,
"DYNAMIC"
)){
this
.
fillLabel
(
templateValue
,
templateValue
.
id
,(
templateValue
:
any
)
=>
{
this
.
selectTreeValue
=
JSON
.
stringify
([
templateValue
]);
});
}
else
{
this
.
selectTreeValue
=
JSON
.
stringify
([
templateValue
]);
}
})
this
.
selectTreeValue
=
JSON
.
stringify
([
templateValue
]);
}
}
else
{
// 多选
...
...
@@ -163,8 +185,30 @@ export default class AppOrgSelect extends Vue {
})
}
})
this
.
selectTreeValue
=
JSON
.
stringify
(
tempArray
);
let
tempflag
:
boolean
=
false
;
if
(
tempArray
.
length
>
0
&&
tempArray
.
length
>
0
){
tempArray
.
forEach
((
item
:
any
)
=>
{
if
(
!
item
.
label
)
tempflag
=
true
;
})
}
if
(
tempflag
&&
this
.
tag
&&
this
.
codelistType
&&
Object
.
is
(
this
.
codelistType
,
"DYNAMIC"
)){
let
tempStatus
:
number
=
0
;
tempArray
.
forEach
((
item
:
any
)
=>
{
if
(
!
item
.
label
){
tempStatus
+=
1
;
this
.
fillLabel
(
item
,
item
.
id
,(
result
:
any
)
=>
{
item
=
result
;
tempStatus
-=
1
;
if
(
tempStatus
===
0
){
this
.
selectTreeValue
=
JSON
.
stringify
(
tempArray
);
}
})
}
})
}
else
{
this
.
selectTreeValue
=
JSON
.
stringify
(
tempArray
);
}
}
}
}
...
...
@@ -175,7 +219,7 @@ export default class AppOrgSelect extends Vue {
*/
public
loadTreeData
(
requestUrl
:
string
){
if
(
this
.
filter
){
const
result
:
any
=
this
.
$store
.
getters
.
get
Copy
Data
(
this
.
filter
);
const
result
:
any
=
this
.
$store
.
getters
.
get
Org
Data
(
this
.
filter
);
if
(
result
){
this
.
NodesData
=
result
;
return
;
...
...
@@ -209,7 +253,9 @@ export default class AppOrgSelect extends Vue {
tempValue
.
forEach
((
value
:
any
,
index
:
number
)
=>
{
tempResult
+=
index
>
0
?
`,
${
value
[
item
]}
`
:
`
${
value
[
item
]}
`
;
})
this
.
emitValue
(
this
.
fillMap
[
item
],
tempResult
);
setTimeout
(()
=>
{
this
.
emitValue
(
this
.
fillMap
[
item
],
tempResult
);
},
0
);
})
}
}
else
{
...
...
@@ -225,7 +271,9 @@ export default class AppOrgSelect extends Vue {
const
tempValue
:
any
=
JSON
.
parse
(
$event
)[
0
];
if
(
this
.
fillMap
&&
Object
.
keys
(
this
.
fillMap
).
length
>
0
){
Object
.
keys
(
this
.
fillMap
).
forEach
((
item
:
any
)
=>
{
this
.
emitValue
(
this
.
fillMap
[
item
],
tempValue
[
item
]);
setTimeout
(()
=>
{
this
.
emitValue
(
this
.
fillMap
[
item
],
tempValue
[
item
]);
},
0
);
})
}
}
else
{
...
...
@@ -247,6 +295,28 @@ export default class AppOrgSelect extends Vue {
this
.
$emit
(
'select-change'
,{
name
:
name
,
value
:
value
});
}
/**
* 填充label
*
* @memberof AppOrgSelect
*/
public
fillLabel
(
tempObject
:
any
,
valueItem
:
any
,
callback
:
any
){
if
(
!
tempObject
.
label
&&
tempObject
.
id
&&
this
.
tag
&&
this
.
codelistType
&&
Object
.
is
(
this
.
codelistType
,
"DYNAMIC"
)){
let
codeListService
:
CodeListService
=
new
CodeListService
();
codeListService
.
getItems
(
this
.
tag
).
then
((
items
:
any
)
=>
{
if
(
items
&&
items
.
length
>
0
){
let
result
:
any
=
items
.
find
((
item
:
any
)
=>
{
return
item
.
id
===
valueItem
;
})
Object
.
assign
(
tempObject
,{
label
:
result
.
label
});
}
callback
(
tempObject
);
}).
catch
((
error
:
any
)
=>
{
console
.
log
(
error
);
})
}
}
}
</
script
>
...
...
This diff is collapsed.
Click to expand it.
app_web/src/components/app-upicker/app-upicker.less
0 → 100644
浏览文件 @
94b656de
.app-upicker {
width: 100%;
.el-select {
.el-input__suffix {
display: none;
}
}
.text-value {
.el-icon-circle-close {
display: none;
}
}
.text-value:hover {
.el-icon-circle-close {
display: inline-block;
}
}
.ivu-icon-ios-open-outline {
margin-top: -2px;
margin-left: 5px;
font-size: 15px;
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app_web/src/components/app-upicker/app-upicker.vue
0 → 100644
浏览文件 @
94b656de
<
template
>
<div
class=
'app-upicker'
>
<el-select
ref=
"appUpicker"
:value=
"refvalue"
size=
'small'
filterable
@
change=
"onSelect"
:disabled=
"disabled"
style=
'width:100%;'
clearable
@
clear=
"onClear"
@
visible-change=
"onSelectOpen"
>
<template
v-if=
"items"
>
<el-option
v-for=
"(_item,index) in items"
:key=
"index"
:value=
"_item.value"
:label=
"_item.label"
></el-option>
</
template
>
</el-select>
<span
style=
'position: absolute;right: 5px;color: #c0c4cc;top:0;font-size: 13px;'
>
<i
v-show=
"open"
class=
'el-icon-arrow-up'
@
click=
"closeDropdown"
></i>
<i
v-show=
"!open"
class=
'el-icon-arrow-down'
@
click=
"openDropdown"
></i>
</span>
</div>
</template>
<
script
lang =
'ts'
>
import
{
Component
,
Vue
,
Prop
,
Model
,
Watch
}
from
'vue-property-decorator'
;
import
{
Subject
}
from
'rxjs'
;
import
{
AppModal
}
from
'@/utils'
;
@
Component
({
})
export
default
class
AppUpicker
extends
Vue
{
/**
* 请求到的数据
* @type {any[]}
* @memberof AppUpicker
*/
public
itemList
:
any
[]
=
[]
/**
* 列表项请求路径
*
* @type {string}
* @memberof AppUpicker
*/
public
url
:
string
=
''
;
/**
* 请求参数和请求数据的映射关系
*
* @type {*}
* @memberof AppUpicker
*/
public
interaction
:
any
=
{};
/**
* 编辑器参数
*
* @type {*}
* @memberof AppUpicker
*/
@
Prop
()
public
itemParams
?:
any
;
/**
* 视图上下文
*
* @type {*}
* @memberof AppUpicker
*/
@
Prop
()
public
context
!
:
any
;
/**
* 视图参数
*
* @type {*}
* @memberof AppUpicker
*/
@
Prop
()
public
viewparams
!
:
any
;
/**
* 表单数据
*
* @type {*}
* @memberof AppUpicker
*/
@
Prop
()
public
data
!
:
any
;
/**
* 属性项名称
*
* @type {string}
* @memberof AppUpicker
*/
@
Prop
()
public
name
!
:
string
;
/**
* 是否启用
*
* @type {boolean}
* @memberof AppUpicker
*/
@
Prop
()
public
disabled
?:
boolean
;
/**
* 是否显示按钮
*
* @type {boolean}
* @memberof AppUpicker
*/
@
Prop
({
default
:
true
})
public
showButton
?:
boolean
;
/**
* 局部上下文导航参数
*
* @type {any}
* @memberof AppUpicker
*/
@
Prop
()
public
localContext
!
:
any
;
/**
* 局部导航参数
*
* @type {any}
* @memberof AppUpicker
*/
@
Prop
()
public
localParam
!
:
any
;
/**
* 值项名称
*
* @type {string}
* @memberof AppUpicker
*/
@
Prop
()
public
valueitem
!
:
string
;
/**
* 排序
*
* @type {string}
* @memberof AppUpicker
*/
@
Prop
()
public
sort
?:
string
;
/**
* 值
*
* @type {*}
* @memberof AppUpicker
*/
@
Model
(
'change'
)
public
value
?:
any
;
/**
* 当前值
*
* @type {string}
* @memberof AppUpicker
*/
public
curvalue
:
string
=
''
;
/**
* 下拉数组
* @type {any[]}
* @memberof AppUpicker
*/
public
items
:
any
[]
=
[];
/**
* 下拉图标指向状态管理
* @type {boolean}
* @memberof AppUpicker
*/
public
open
:
boolean
=
false
;
/**
* 输入状态
*
* @type {boolean}
* @memberof AppUpicker
*/
public
inputState
:
boolean
=
false
;
/**
* vue 生命周期
*
* @memberof AppUpicker
*/
public
created
()
{
this
.
analysis
(
this
.
itemParams
);
}
/**
* 获取关联数据项值
*
* @readonly
* @memberof AppUpicker
*/
get
refvalue
()
{
if
(
this
.
valueitem
&&
this
.
data
)
{
return
this
.
data
[
this
.
valueitem
];
}
return
this
.
curvalue
;
}
/**
* 展开下拉
*
* @memberof AppUpicker
*/
public
openDropdown
()
{
const
appUpicker
:
any
=
this
.
$refs
.
appUpicker
;
if
(
appUpicker
)
{
appUpicker
.
focus
();
}
}
/**
* 收起下拉
*
* @memberof AppUpicker
*/
public
closeDropdown
()
{
const
appUpicker
:
any
=
this
.
$refs
.
appUpicker
;
if
(
appUpicker
)
{
appUpicker
.
blur
();
}
}
/**
* 下拉切换回调
* @param flag
*
* @memberof AppUpicker
*/
public
onSelectOpen
(
flag
:
boolean
):
void
{
this
.
open
=
flag
;
if
(
this
.
open
)
{
this
.
fectchItemList
(
this
.
url
);
}
}
/**
* 下拉选中
*
* @param {string} val
* @memberof AppUpicker
*/
public
onSelect
(
val
:
string
)
{
let
index
=
this
.
items
.
findIndex
((
item
)
=>
Object
.
is
(
item
.
value
,
val
));
if
(
index
>=
0
)
{
let
item
:
any
=
this
.
items
[
index
];
if
(
this
.
valueitem
)
{
this
.
$emit
(
'formitemvaluechange'
,
{
name
:
this
.
valueitem
,
value
:
item
.
value
});
}
if
(
this
.
name
)
{
this
.
$emit
(
'formitemvaluechange'
,
{
name
:
this
.
name
,
value
:
item
.
label
});
}
}
}
/**
* 清除
*
* @memberof AppUpicker
*/
public
onClear
(
$event
:
any
):
void
{
if
(
this
.
valueitem
)
{
this
.
$emit
(
'formitemvaluechange'
,
{
name
:
this
.
valueitem
,
value
:
''
});
}
if
(
this
.
name
)
{
this
.
$emit
(
'formitemvaluechange'
,
{
name
:
this
.
name
,
value
:
''
});
}
this
.
$forceUpdate
();
}
/**
* 值变化
*
* @param {*} newVal
* @param {*} oldVal
* @memberof AppUpicker
*/
@
Watch
(
'value'
,{
immediate
:
true
})
public
onValueChange
(
newVal
:
any
,
oldVal
:
any
)
{
this
.
analysis
(
this
.
itemParams
);
if
(
newVal
){
this
.
curvalue
=
newVal
;
const
value
=
this
.
data
[
this
.
valueitem
];
const
index
=
this
.
items
.
findIndex
((
item
:
any
)
=>
Object
.
is
(
item
.
value
,
value
));
if
(
index
!==
-
1
)
{
return
;
}
this
.
items
=
[];
if
(
value
)
{
this
.
items
.
push
({
text
:
newVal
,
value
:
value
});
}
}
}
/**
* 解析编辑器参数
* @param {*} itemparams
*
* @memberof AppUpicker
*/
public
analysis
(
itemparams
:
any
)
{
Object
.
keys
(
itemparams
).
forEach
((
param
)
=>
{
if
(
param
===
'path'
){
this
.
url
=
itemparams
[
param
]
}
else
{
this
.
interaction
[
param
]
=
itemparams
[
param
]
}
})
}
/**
* 请求下拉列表数据
* @param {string} url
*
* @memberof AppUpicker
*/
public
fectchItemList
(
url
:
string
)
{
let
arg
:
any
=
{};
this
.
handlePublicParams
(
arg
);
this
.
$http
.
get
(
url
,
arg
.
param
)
.
then
((
response
:
any
)
=>
{
if
(
response
&&
response
.
status
==
200
&&
response
.
data
)
{
this
.
itemList
=
response
.
data
;
// 提取需要的值(value,label)
this
.
extractItem
(
this
.
itemList
,
this
.
items
);
}
})
.
catch
((
response
:
any
)
=>
{
if
(
!
response
||
!
response
.
status
||
!
response
.
data
)
{
this
.
$Notice
.
error
({
title
:
this
.
$t
(
"app.commonWords.error"
)
as
string
,
desc
:
this
.
$t
(
"app.commonWords.sysException"
)
as
string
,
});
return
;
}
});
}
/**
* 解析下拉列表数据
* @param {any[]} itemList 请求到的数据
* @param {any[]} items 下拉数组
*
* @memberof AppUpicker
*/
public
extractItem
(
itemList
:
any
[],
items
:
any
[])
{
this
.
items
=
[];
itemList
.
forEach
((
item
)
=>
{
this
.
items
.
push
({
label
:
item
[
this
.
interaction
.
label
],
value
:
item
[
this
.
interaction
.
value
],
});
});
}
/**
* 公共参数处理
*
* @param {*} arg
* @returns
* @memberof AppUpicker
*/
public
handlePublicParams
(
arg
:
any
):
boolean
{
if
(
!
this
.
data
)
{
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'components.appPicker.error'
)
as
any
),
desc
:
(
this
.
$t
(
'components.appPicker.formdataException'
)
as
any
)
});
return
false
;
}
// 合并表单参数
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
);
}
return
true
;
}
}
</
script
>
<
style
lang=
"less"
>
@import './app-upicker.less';
</
style
>
This diff is collapsed.
Click to expand it.
app_web/src/engine/view/edit-view-engine.ts
浏览文件 @
94b656de
...
...
@@ -193,19 +193,19 @@ export default class EditViewEngine extends ViewEngine {
*/
public
setTabCaption
(
info
:
string
,
isNew
:
boolean
):
void
{
let
viewdata
:
any
=
this
.
view
.
model
;
let
index
:
number
=
viewdata
.
srf
Title
.
indexOf
(
"-"
);
let
index
:
number
=
viewdata
.
srf
Caption
.
indexOf
(
"-"
);
if
(
viewdata
&&
info
&&
!
Object
.
is
(
info
,
''
))
{
if
(
index
!==
-
1
){
viewdata
.
srf
Title
=
viewdata
.
srfTitle
.
substr
(
0
,
index
);
viewdata
.
srf
Caption
=
viewdata
.
srfCaption
.
substr
(
0
,
index
);
}
// 解决表格视图标题问题
if
(
this
.
view
.
$tabPageExp
&&
this
.
view
.
viewDefaultUsage
){
this
.
view
.
$tabPageExp
.
setCurPageCaption
(
this
.
view
.
$t
(
viewdata
.
srf
Title
),
this
.
view
.
$t
(
viewdata
.
srfTitle
),
info
);
this
.
view
.
$tabPageExp
.
setCurPageCaption
(
this
.
view
.
$t
(
viewdata
.
srf
Caption
),
this
.
view
.
$t
(
viewdata
.
srfCaption
),
info
);
}
if
(
this
.
view
.
$route
){
this
.
view
.
$route
.
meta
.
info
=
info
;
}
this
.
view
.
model
.
srf
Title
=
`
${
this
.
view
.
$t
(
viewdata
.
srfTitle
)}
-
${
viewdata
.
dataInfo
}
`
;
this
.
view
.
model
.
srf
Caption
=
`
${
this
.
view
.
$t
(
viewdata
.
srfCaption
)}
-
${
viewdata
.
dataInfo
}
`
;
this
.
view
.
initNavDataWithRoute
(
null
,
isNew
);
}
}
...
...
This diff is collapsed.
Click to expand it.
app_web/src/index.d.ts
浏览文件 @
94b656de
...
...
@@ -3,13 +3,14 @@ import { AuthServiceRegister } from '@/authservice/auth-service-register';
import
{
UtilServiceRegister
}
from
'@/utilservice/util-service-register'
;
import
{
EntityServiceRegister
}
from
'@/service/entity-service-register'
;
import
{
CounterServiceRegister
}
from
'@/counter/counter-service-register'
;
import
{
CodeListRegister
}
from
'@codelist/codelist-register'
;
declare
global
{
interface
Window
{
uiServiceRegister
:
UIServiceRegister
,
authServiceRegister
:
AuthServiceRegister
,
utilServiceRegister
:
UtilServiceRegister
,
entityServiceRegister
:
EntityServiceRegister
,
counterServiceRegister
:
CounterServiceRegister
counterServiceRegister
:
CounterServiceRegister
,
codeListRegister
:
CodeListRegister
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app_web/src/locale/lang/en-US.ts
浏览文件 @
94b656de
...
...
@@ -194,6 +194,7 @@ export default {
back
:
"Back"
,
next
:
"Next"
,
complete
:
"Complete"
,
preactionmessage
:
"The calculation of the previous behavior is not configured"
},
viewLayoutPanel
:
{
appLogoutView
:
{
...
...
This diff is collapsed.
Click to expand it.
app_web/src/locale/lang/zh-CN.ts
浏览文件 @
94b656de
...
...
@@ -193,6 +193,7 @@ export default {
back
:
"上一步"
,
next
:
"下一步"
,
complete
:
"完成"
,
preactionmessage
:
"未配置计算上一步行为"
},
viewLayoutPanel
:
{
appLogoutView
:
{
...
...
This diff is collapsed.
Click to expand it.
app_web/src/mock/app/notify-index-view-appmenu/notify-index-view-appmenu.ts
浏览文件 @
94b656de
...
...
@@ -25,7 +25,7 @@ mock.onGet('v7/notify-index-viewappmenu').reply((config: any) => {
iconcls
:
'fa fa-ioxhost'
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
'
_3
'
,
appfunctag
:
'
Auto2
'
,
resourcetag
:
''
,
},
{
...
...
@@ -43,7 +43,7 @@ mock.onGet('v7/notify-index-viewappmenu').reply((config: any) => {
iconcls
:
'fa fa-list-alt'
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
'
_2
'
,
appfunctag
:
'
Auto1
'
,
resourcetag
:
''
,
},
],
...
...
This diff is collapsed.
Click to expand it.
app_web/src/pages/notify/msg-open-access-edit-view/msg-open-access-edit-view-base.vue
浏览文件 @
94b656de
<
template
>
<div
class=
"view-container deeditview msg-open-access-edit-view"
>
<app-studioaction
:viewTitle=
"$t(model.srf
Title
)"
viewName=
"msgopenaccesseditview"
></app-studioaction>
<app-studioaction
:viewTitle=
"$t(model.srf
Caption
)"
viewName=
"msgopenaccesseditview"
></app-studioaction>
<card
class=
'view-card '
:disHover=
"true"
:bordered=
"false"
>
<div
slot=
'title'
class=
"header-container"
>
<span
class=
'caption-info'
>
{{
$t
(
model
.
srf
Title
)
}}
</span>
<span
class=
'caption-info'
>
{{
$t
(
model
.
srf
Caption
)
}}
</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)">
...
...
@@ -556,7 +556,7 @@ export default class MsgOpenAccessEditViewBase extends Vue {
*/
public
initNavDataWithRoute
(
data
:
any
=
null
,
isNew
:
boolean
=
false
,
isAlways
:
boolean
=
false
){
if
(
isAlways
||
(
this
.
viewDefaultUsage
&&
Object
.
is
(
this
.
navModel
,
"route"
))
){
this
.
navDataService
.
addNavData
({
id
:
'msg-open-access-edit-view'
,
tag
:
this
.
viewtag
,
srfkey
:
isNew
?
null
:
this
.
context
.
msgopenaccess
,
title
:
this
.
$t
(
this
.
model
.
srf
Title
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
});
this
.
navDataService
.
addNavData
({
id
:
'msg-open-access-edit-view'
,
tag
:
this
.
viewtag
,
srfkey
:
isNew
?
null
:
this
.
context
.
msgopenaccess
,
title
:
this
.
$t
(
this
.
model
.
srf
Caption
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
});
}
}
...
...
@@ -567,7 +567,7 @@ export default class MsgOpenAccessEditViewBase extends Vue {
*/
public
initNavDataWithTab
(
data
:
any
=
null
,
isOnlyAdd
:
boolean
=
true
,
isAlways
:
boolean
=
false
){
if
(
isAlways
||
(
this
.
viewDefaultUsage
&&
!
Object
.
is
(
this
.
navModel
,
"route"
))
){
this
.
navDataService
.
addNavDataByOnly
({
id
:
'msg-open-access-edit-view'
,
tag
:
this
.
viewtag
,
srfkey
:
this
.
context
.
msgopenaccess
,
title
:
this
.
$t
(
this
.
model
.
srf
Title
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
},
isOnlyAdd
);
this
.
navDataService
.
addNavDataByOnly
({
id
:
'msg-open-access-edit-view'
,
tag
:
this
.
viewtag
,
srfkey
:
this
.
context
.
msgopenaccess
,
title
:
this
.
$t
(
this
.
model
.
srf
Caption
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
},
isOnlyAdd
);
}
}
...
...
This diff is collapsed.
Click to expand it.
app_web/src/pages/notify/msg-open-access-grid-view/msg-open-access-grid-view-base.vue
浏览文件 @
94b656de
<
template
>
<div
class=
'view-container degridview msg-open-access-grid-view'
>
<app-studioaction
:viewTitle=
"$t(model.srf
Title
)"
viewName=
"msgopenaccessgridview"
></app-studioaction>
<app-studioaction
:viewTitle=
"$t(model.srf
Caption
)"
viewName=
"msgopenaccessgridview"
></app-studioaction>
<card
class=
'view-card '
:dis-hover=
"true"
:bordered=
"false"
>
<div
slot=
'title'
class=
"header-container"
>
<span
class=
'caption-info'
>
{{
$t
(
model
.
srf
Title
)
}}
</span>
<span
class=
'caption-info'
>
{{
$t
(
model
.
srf
Caption
)
}}
</span>
</div>
<div
class=
'content-container'
>
<div
class=
'view-top-messages'
>
...
...
@@ -590,7 +590,7 @@ export default class MsgOpenAccessGridViewBase extends Vue {
*/
public
initNavDataWithRoute
(
data
:
any
=
null
,
isNew
:
boolean
=
false
,
isAlways
:
boolean
=
false
){
if
(
isAlways
||
(
this
.
viewDefaultUsage
&&
Object
.
is
(
this
.
navModel
,
"route"
))
){
this
.
navDataService
.
addNavData
({
id
:
'msg-open-access-grid-view'
,
tag
:
this
.
viewtag
,
srfkey
:
isNew
?
null
:
this
.
context
.
msgopenaccess
,
title
:
this
.
$t
(
this
.
model
.
srf
Title
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
});
this
.
navDataService
.
addNavData
({
id
:
'msg-open-access-grid-view'
,
tag
:
this
.
viewtag
,
srfkey
:
isNew
?
null
:
this
.
context
.
msgopenaccess
,
title
:
this
.
$t
(
this
.
model
.
srf
Caption
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
});
}
}
...
...
@@ -601,7 +601,7 @@ export default class MsgOpenAccessGridViewBase extends Vue {
*/
public
initNavDataWithTab
(
data
:
any
=
null
,
isOnlyAdd
:
boolean
=
true
,
isAlways
:
boolean
=
false
){
if
(
isAlways
||
(
this
.
viewDefaultUsage
&&
!
Object
.
is
(
this
.
navModel
,
"route"
))
){
this
.
navDataService
.
addNavDataByOnly
({
id
:
'msg-open-access-grid-view'
,
tag
:
this
.
viewtag
,
srfkey
:
this
.
context
.
msgopenaccess
,
title
:
this
.
$t
(
this
.
model
.
srf
Title
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
},
isOnlyAdd
);
this
.
navDataService
.
addNavDataByOnly
({
id
:
'msg-open-access-grid-view'
,
tag
:
this
.
viewtag
,
srfkey
:
this
.
context
.
msgopenaccess
,
title
:
this
.
$t
(
this
.
model
.
srf
Caption
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
},
isOnlyAdd
);
}
}
...
...
This diff is collapsed.
Click to expand it.
app_web/src/pages/notify/msg-open-access-pickup-grid-view/msg-open-access-pickup-grid-view-base.vue
浏览文件 @
94b656de
<
template
>
<div
class=
'view-container depickupgridview msg-open-access-pickup-grid-view'
>
<app-studioaction
:viewTitle=
"$t(model.srf
Title
)"
viewName=
"msgopenaccesspickupgridview"
></app-studioaction>
<app-studioaction
:viewTitle=
"$t(model.srf
Caption
)"
viewName=
"msgopenaccesspickupgridview"
></app-studioaction>
<card
class=
'view-card view-no-caption view-no-toolbar'
:dis-hover=
"true"
:bordered=
"false"
>
<div
class=
'content-container pickup-grid-view'
>
<view
_searchform
...
...
@@ -446,7 +446,7 @@ export default class MsgOpenAccessPickupGridViewBase extends Vue {
*/
public
initNavDataWithRoute
(
data
:
any
=
null
,
isNew
:
boolean
=
false
,
isAlways
:
boolean
=
false
){
if
(
isAlways
||
(
this
.
viewDefaultUsage
&&
Object
.
is
(
this
.
navModel
,
"route"
))
){
this
.
navDataService
.
addNavData
({
id
:
'msg-open-access-pickup-grid-view'
,
tag
:
this
.
viewtag
,
srfkey
:
isNew
?
null
:
this
.
context
.
msgopenaccess
,
title
:
this
.
$t
(
this
.
model
.
srf
Title
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
});
this
.
navDataService
.
addNavData
({
id
:
'msg-open-access-pickup-grid-view'
,
tag
:
this
.
viewtag
,
srfkey
:
isNew
?
null
:
this
.
context
.
msgopenaccess
,
title
:
this
.
$t
(
this
.
model
.
srf
Caption
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
});
}
}
...
...
@@ -457,7 +457,7 @@ export default class MsgOpenAccessPickupGridViewBase extends Vue {
*/
public
initNavDataWithTab
(
data
:
any
=
null
,
isOnlyAdd
:
boolean
=
true
,
isAlways
:
boolean
=
false
){
if
(
isAlways
||
(
this
.
viewDefaultUsage
&&
!
Object
.
is
(
this
.
navModel
,
"route"
))
){
this
.
navDataService
.
addNavDataByOnly
({
id
:
'msg-open-access-pickup-grid-view'
,
tag
:
this
.
viewtag
,
srfkey
:
this
.
context
.
msgopenaccess
,
title
:
this
.
$t
(
this
.
model
.
srf
Title
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
},
isOnlyAdd
);
this
.
navDataService
.
addNavDataByOnly
({
id
:
'msg-open-access-pickup-grid-view'
,
tag
:
this
.
viewtag
,
srfkey
:
this
.
context
.
msgopenaccess
,
title
:
this
.
$t
(
this
.
model
.
srf
Caption
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
},
isOnlyAdd
);
}
}
...
...
This diff is collapsed.
Click to expand it.
app_web/src/pages/notify/msg-open-access-pickup-view/msg-open-access-pickup-view-base.vue
浏览文件 @
94b656de
<
template
>
<div
class=
"view-container depickupview msg-open-access-pickup-view"
>
<app-studioaction
:viewTitle=
"$t(model.srf
Title
)"
viewName=
"msgopenaccesspickupview"
></app-studioaction>
<app-studioaction
:viewTitle=
"$t(model.srf
Caption
)"
viewName=
"msgopenaccesspickupview"
></app-studioaction>
<card
class=
'view-card view-no-caption view-no-toolbar'
:dis-hover=
"true"
:padding=
"0"
:bordered=
"false"
>
<div
class=
"content-container pickup-view"
>
<view
_pickupviewpanel
...
...
@@ -439,7 +439,7 @@ export default class MsgOpenAccessPickupViewBase extends Vue {
*/
public
initNavDataWithRoute
(
data
:
any
=
null
,
isNew
:
boolean
=
false
,
isAlways
:
boolean
=
false
){
if
(
isAlways
||
(
this
.
viewDefaultUsage
&&
Object
.
is
(
this
.
navModel
,
"route"
))
){
this
.
navDataService
.
addNavData
({
id
:
'msg-open-access-pickup-view'
,
tag
:
this
.
viewtag
,
srfkey
:
isNew
?
null
:
this
.
context
.
msgopenaccess
,
title
:
this
.
$t
(
this
.
model
.
srf
Title
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
});
this
.
navDataService
.
addNavData
({
id
:
'msg-open-access-pickup-view'
,
tag
:
this
.
viewtag
,
srfkey
:
isNew
?
null
:
this
.
context
.
msgopenaccess
,
title
:
this
.
$t
(
this
.
model
.
srf
Caption
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
});
}
}
...
...
@@ -450,7 +450,7 @@ export default class MsgOpenAccessPickupViewBase extends Vue {
*/
public
initNavDataWithTab
(
data
:
any
=
null
,
isOnlyAdd
:
boolean
=
true
,
isAlways
:
boolean
=
false
){
if
(
isAlways
||
(
this
.
viewDefaultUsage
&&
!
Object
.
is
(
this
.
navModel
,
"route"
))
){
this
.
navDataService
.
addNavDataByOnly
({
id
:
'msg-open-access-pickup-view'
,
tag
:
this
.
viewtag
,
srfkey
:
this
.
context
.
msgopenaccess
,
title
:
this
.
$t
(
this
.
model
.
srf
Title
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
},
isOnlyAdd
);
this
.
navDataService
.
addNavDataByOnly
({
id
:
'msg-open-access-pickup-view'
,
tag
:
this
.
viewtag
,
srfkey
:
this
.
context
.
msgopenaccess
,
title
:
this
.
$t
(
this
.
model
.
srf
Caption
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
},
isOnlyAdd
);
}
}
...
...
This diff is collapsed.
Click to expand it.
app_web/src/pages/notify/msg-template-edit-view/msg-template-edit-view-base.vue
浏览文件 @
94b656de
<
template
>
<div
class=
"view-container deeditview msg-template-edit-view"
>
<app-studioaction
:viewTitle=
"$t(model.srf
Title
)"
viewName=
"msgtemplateeditview"
></app-studioaction>
<app-studioaction
:viewTitle=
"$t(model.srf
Caption
)"
viewName=
"msgtemplateeditview"
></app-studioaction>
<card
class=
'view-card '
:disHover=
"true"
:bordered=
"false"
>
<div
slot=
'title'
class=
"header-container"
>
<span
class=
'caption-info'
>
{{
$t
(
model
.
srf
Title
)
}}
</span>
<span
class=
'caption-info'
>
{{
$t
(
model
.
srf
Caption
)
}}
</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)">
...
...
@@ -556,7 +556,7 @@ export default class MsgTemplateEditViewBase extends Vue {
*/
public
initNavDataWithRoute
(
data
:
any
=
null
,
isNew
:
boolean
=
false
,
isAlways
:
boolean
=
false
){
if
(
isAlways
||
(
this
.
viewDefaultUsage
&&
Object
.
is
(
this
.
navModel
,
"route"
))
){
this
.
navDataService
.
addNavData
({
id
:
'msg-template-edit-view'
,
tag
:
this
.
viewtag
,
srfkey
:
isNew
?
null
:
this
.
context
.
msgtemplate
,
title
:
this
.
$t
(
this
.
model
.
srf
Title
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
});
this
.
navDataService
.
addNavData
({
id
:
'msg-template-edit-view'
,
tag
:
this
.
viewtag
,
srfkey
:
isNew
?
null
:
this
.
context
.
msgtemplate
,
title
:
this
.
$t
(
this
.
model
.
srf
Caption
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
});
}
}
...
...
@@ -567,7 +567,7 @@ export default class MsgTemplateEditViewBase extends Vue {
*/
public
initNavDataWithTab
(
data
:
any
=
null
,
isOnlyAdd
:
boolean
=
true
,
isAlways
:
boolean
=
false
){
if
(
isAlways
||
(
this
.
viewDefaultUsage
&&
!
Object
.
is
(
this
.
navModel
,
"route"
))
){
this
.
navDataService
.
addNavDataByOnly
({
id
:
'msg-template-edit-view'
,
tag
:
this
.
viewtag
,
srfkey
:
this
.
context
.
msgtemplate
,
title
:
this
.
$t
(
this
.
model
.
srf
Title
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
},
isOnlyAdd
);
this
.
navDataService
.
addNavDataByOnly
({
id
:
'msg-template-edit-view'
,
tag
:
this
.
viewtag
,
srfkey
:
this
.
context
.
msgtemplate
,
title
:
this
.
$t
(
this
.
model
.
srf
Caption
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
},
isOnlyAdd
);
}
}
...
...
This diff is collapsed.
Click to expand it.
app_web/src/pages/notify/msg-template-grid-view/msg-template-grid-view-base.vue
浏览文件 @
94b656de
<
template
>
<div
class=
'view-container degridview msg-template-grid-view'
>
<app-studioaction
:viewTitle=
"$t(model.srf
Title
)"
viewName=
"msgtemplategridview"
></app-studioaction>
<app-studioaction
:viewTitle=
"$t(model.srf
Caption
)"
viewName=
"msgtemplategridview"
></app-studioaction>
<card
class=
'view-card '
:dis-hover=
"true"
:bordered=
"false"
>
<div
slot=
'title'
class=
"header-container"
>
<span
class=
'caption-info'
>
{{
$t
(
model
.
srf
Title
)
}}
</span>
<span
class=
'caption-info'
>
{{
$t
(
model
.
srf
Caption
)
}}
</span>
</div>
<div
class=
'content-container'
>
<div
class=
'view-top-messages'
>
...
...
@@ -590,7 +590,7 @@ export default class MsgTemplateGridViewBase extends Vue {
*/
public
initNavDataWithRoute
(
data
:
any
=
null
,
isNew
:
boolean
=
false
,
isAlways
:
boolean
=
false
){
if
(
isAlways
||
(
this
.
viewDefaultUsage
&&
Object
.
is
(
this
.
navModel
,
"route"
))
){
this
.
navDataService
.
addNavData
({
id
:
'msg-template-grid-view'
,
tag
:
this
.
viewtag
,
srfkey
:
isNew
?
null
:
this
.
context
.
msgtemplate
,
title
:
this
.
$t
(
this
.
model
.
srf
Title
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
});
this
.
navDataService
.
addNavData
({
id
:
'msg-template-grid-view'
,
tag
:
this
.
viewtag
,
srfkey
:
isNew
?
null
:
this
.
context
.
msgtemplate
,
title
:
this
.
$t
(
this
.
model
.
srf
Caption
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
});
}
}
...
...
@@ -601,7 +601,7 @@ export default class MsgTemplateGridViewBase extends Vue {
*/
public
initNavDataWithTab
(
data
:
any
=
null
,
isOnlyAdd
:
boolean
=
true
,
isAlways
:
boolean
=
false
){
if
(
isAlways
||
(
this
.
viewDefaultUsage
&&
!
Object
.
is
(
this
.
navModel
,
"route"
))
){
this
.
navDataService
.
addNavDataByOnly
({
id
:
'msg-template-grid-view'
,
tag
:
this
.
viewtag
,
srfkey
:
this
.
context
.
msgtemplate
,
title
:
this
.
$t
(
this
.
model
.
srf
Title
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
},
isOnlyAdd
);
this
.
navDataService
.
addNavDataByOnly
({
id
:
'msg-template-grid-view'
,
tag
:
this
.
viewtag
,
srfkey
:
this
.
context
.
msgtemplate
,
title
:
this
.
$t
(
this
.
model
.
srf
Caption
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
},
isOnlyAdd
);
}
}
...
...
This diff is collapsed.
Click to expand it.
app_web/src/pages/notify/notify-index-view/notify-index-view-base.vue
浏览文件 @
94b656de
...
...
@@ -412,7 +412,7 @@ export default class NotifyIndexViewBase extends Vue {
*/
public
initNavDataWithRoute
(
data
:
any
=
null
,
isNew
:
boolean
=
false
,
isAlways
:
boolean
=
false
){
if
(
isAlways
||
(
this
.
viewDefaultUsage
&&
Object
.
is
(
this
.
navModel
,
"route"
))
){
this
.
navDataService
.
addNavData
({
id
:
'notify-index-view'
,
tag
:
this
.
viewtag
,
srfkey
:
isNew
?
null
:
null
,
title
:
this
.
$t
(
this
.
model
.
srf
Title
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
});
this
.
navDataService
.
addNavData
({
id
:
'notify-index-view'
,
tag
:
this
.
viewtag
,
srfkey
:
isNew
?
null
:
null
,
title
:
this
.
$t
(
this
.
model
.
srf
Caption
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
});
}
}
...
...
@@ -423,7 +423,7 @@ export default class NotifyIndexViewBase extends Vue {
*/
public
initNavDataWithTab
(
data
:
any
=
null
,
isOnlyAdd
:
boolean
=
true
,
isAlways
:
boolean
=
false
){
if
(
isAlways
||
(
this
.
viewDefaultUsage
&&
!
Object
.
is
(
this
.
navModel
,
"route"
))
){
this
.
navDataService
.
addNavDataByOnly
({
id
:
'notify-index-view'
,
tag
:
this
.
viewtag
,
srfkey
:
null
,
title
:
this
.
$t
(
this
.
model
.
srf
Title
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
},
isOnlyAdd
);
this
.
navDataService
.
addNavDataByOnly
({
id
:
'notify-index-view'
,
tag
:
this
.
viewtag
,
srfkey
:
null
,
title
:
this
.
$t
(
this
.
model
.
srf
Caption
),
data
:
data
,
context
:
this
.
context
,
viewparams
:
this
.
viewparams
,
path
:
this
.
$route
.
fullPath
},
isOnlyAdd
);
}
}
...
...
This diff is collapsed.
Click to expand it.
app_web/src/pages/notify/notify-index-view/router.ts
浏览文件 @
94b656de
...
...
@@ -25,7 +25,7 @@ const router = new Router({
});
},
meta
:
{
caption
:
'app.views.notifyindexview.
title
'
,
caption
:
'app.views.notifyindexview.
caption
'
,
info
:
''
,
viewType
:
'APPINDEX'
,
parameters
:
[
...
...
@@ -38,7 +38,7 @@ const router = new Router({
{
path
:
'msgopenaccesses/:msgopenaccess?/editview/:editview?'
,
meta
:
{
caption
:
'entities.msgopenaccess.views.editview.
title
'
,
caption
:
'entities.msgopenaccess.views.editview.
caption
'
,
info
:
''
,
parameters
:
[
{
pathName
:
'notifyindexview'
,
parameterName
:
'notifyindexview'
},
...
...
@@ -52,7 +52,7 @@ const router = new Router({
{
path
:
'msgtemplates/:msgtemplate?/gridview/:gridview?'
,
meta
:
{
caption
:
'entities.msgtemplate.views.gridview.
title
'
,
caption
:
'entities.msgtemplate.views.gridview.
caption
'
,
info
:
''
,
parameters
:
[
{
pathName
:
'notifyindexview'
,
parameterName
:
'notifyindexview'
},
...
...
@@ -66,7 +66,7 @@ const router = new Router({
{
path
:
'msgopenaccesses/:msgopenaccess?/pickupgridview/:pickupgridview?'
,
meta
:
{
caption
:
'entities.msgopenaccess.views.pickupgridview.
title
'
,
caption
:
'entities.msgopenaccess.views.pickupgridview.
caption
'
,
info
:
''
,
parameters
:
[
{
pathName
:
'notifyindexview'
,
parameterName
:
'notifyindexview'
},
...
...
@@ -80,7 +80,7 @@ const router = new Router({
{
path
:
'msgopenaccesses/:msgopenaccess?/pickupview/:pickupview?'
,
meta
:
{
caption
:
'entities.msgopenaccess.views.pickupview.
title
'
,
caption
:
'entities.msgopenaccess.views.pickupview.
caption
'
,
info
:
''
,
parameters
:
[
{
pathName
:
'notifyindexview'
,
parameterName
:
'notifyindexview'
},
...
...
@@ -94,7 +94,7 @@ const router = new Router({
{
path
:
'msgtemplates/:msgtemplate?/editview/:editview?'
,
meta
:
{
caption
:
'entities.msgtemplate.views.editview.
title
'
,
caption
:
'entities.msgtemplate.views.editview.
caption
'
,
info
:
''
,
parameters
:
[
{
pathName
:
'notifyindexview'
,
parameterName
:
'notifyindexview'
},
...
...
@@ -108,7 +108,7 @@ const router = new Router({
{
path
:
'msgopenaccesses/:msgopenaccess?/gridview/:gridview?'
,
meta
:
{
caption
:
'entities.msgopenaccess.views.gridview.
title
'
,
caption
:
'entities.msgopenaccess.views.gridview.
caption
'
,
info
:
''
,
parameters
:
[
{
pathName
:
'notifyindexview'
,
parameterName
:
'notifyindexview'
},
...
...
@@ -125,7 +125,7 @@ const router = new Router({
{
path
:
'/msgopenaccesses/:msgopenaccess?/editview/:editview?'
,
meta
:
{
caption
:
'entities.msgopenaccess.views.editview.
title
'
,
caption
:
'entities.msgopenaccess.views.editview.
caption
'
,
info
:
''
,
parameters
:
[
{
pathName
:
'msgopenaccesses'
,
parameterName
:
'msgopenaccess'
},
...
...
@@ -138,7 +138,7 @@ const router = new Router({
{
path
:
'/msgtemplates/:msgtemplate?/gridview/:gridview?'
,
meta
:
{
caption
:
'entities.msgtemplate.views.gridview.
title
'
,
caption
:
'entities.msgtemplate.views.gridview.
caption
'
,
info
:
''
,
parameters
:
[
{
pathName
:
'msgtemplates'
,
parameterName
:
'msgtemplate'
},
...
...
@@ -151,7 +151,7 @@ const router = new Router({
{
path
:
'/msgopenaccesses/:msgopenaccess?/pickupview/:pickupview?'
,
meta
:
{
caption
:
'entities.msgopenaccess.views.pickupview.
title
'
,
caption
:
'entities.msgopenaccess.views.pickupview.
caption
'
,
info
:
''
,
parameters
:
[
{
pathName
:
'msgopenaccesses'
,
parameterName
:
'msgopenaccess'
},
...
...
@@ -164,7 +164,7 @@ const router = new Router({
{
path
:
'/msgopenaccesses/:msgopenaccess?/pickupgridview/:pickupgridview?'
,
meta
:
{
caption
:
'entities.msgopenaccess.views.pickupgridview.
title
'
,
caption
:
'entities.msgopenaccess.views.pickupgridview.
caption
'
,
info
:
''
,
parameters
:
[
{
pathName
:
'msgopenaccesses'
,
parameterName
:
'msgopenaccess'
},
...
...
@@ -177,7 +177,7 @@ const router = new Router({
{
path
:
'/msgopenaccesses/:msgopenaccess?/gridview/:gridview?'
,
meta
:
{
caption
:
'entities.msgopenaccess.views.gridview.
title
'
,
caption
:
'entities.msgopenaccess.views.gridview.
caption
'
,
info
:
''
,
parameters
:
[
{
pathName
:
'msgopenaccesses'
,
parameterName
:
'msgopenaccess'
},
...
...
@@ -190,7 +190,7 @@ const router = new Router({
{
path
:
'/msgtemplates/:msgtemplate?/editview/:editview?'
,
meta
:
{
caption
:
'entities.msgtemplate.views.editview.
title
'
,
caption
:
'entities.msgtemplate.views.editview.
caption
'
,
info
:
''
,
parameters
:
[
{
pathName
:
'msgtemplates'
,
parameterName
:
'msgtemplate'
},
...
...
This diff is collapsed.
Click to expand it.
app_web/src/service/app/codelist-service.ts
浏览文件 @
94b656de
此差异已折叠。
点击以展开。
app_web/src/service/entity-service.ts
浏览文件 @
94b656de
import
{
Store
}
from
'vuex'
;
import
{
Http
}
from
'@/utils'
;
import
CodeListService
from
"@service/app/codelist-service"
;
...
...
@@ -10,15 +9,6 @@ import CodeListService from "@service/app/codelist-service";
*/
export
default
class
EntityService
{
/**
* Vue 状态管理器
*
* @private
* @type {(any | null)}
* @memberof EntityService
*/
private
$store
:
Store
<
any
>
|
null
=
null
;
/**
* 获取实体数据服务
*
...
...
@@ -101,21 +91,10 @@ export default class EntityService {
* @memberof EntityService
*/
constructor
(
opts
:
any
=
{})
{
this
.
$store
=
opts
.
$store
;
this
.
tempStorage
=
localStorage
;
this
.
initBasicData
();
}
/**
* 获取状态管理器
*
* @returns {(any | null)}
* @memberof EntityService
*/
public
getStore
():
Store
<
any
>
|
null
{
return
this
.
$store
;
}
/**
* 获取代码表
*
...
...
@@ -123,22 +102,16 @@ export default class EntityService {
*/
public
getCodeList
(
tag
:
string
,
codelistType
:
string
,
context
:
any
=
{},
param
:
any
=
{}){
return
new
Promise
((
resolve
:
any
,
reject
:
any
)
=>
{
let
codeListService
=
new
CodeListService
();
if
(
tag
&&
Object
.
is
(
codelistType
,
"STATIC"
)){
let
returnItems
:
Array
<
any
>
=
[];
const
codelist
=
(
this
.
getStore
()
as
Store
<
any
>
).
getters
.
getCodeList
(
tag
);
if
(
codelist
)
{
returnItems
=
[...
JSON
.
parse
(
JSON
.
stringify
(
codelist
.
items
))];
}
else
{
console
.
log
(
`----
${
tag
}
----代码表不存在`
);
}
resolve
(
returnItems
);
codeListService
.
getStaticItems
(
tag
).
then
((
items
:
any
)
=>
{
resolve
(
items
);
})
}
else
if
(
tag
&&
Object
.
is
(
codelistType
,
"DYNAMIC"
)){
let
codeListService
=
new
CodeListService
({
$store
:
this
.
$store
});
codeListService
.
getItems
(
tag
,
context
,
param
).
then
((
res
:
any
)
=>
{
resolve
(
res
);
}).
catch
((
error
:
any
)
=>
{
reject
(
`
${
tag
}
代码表不存在`
);
console
.
log
(
`----
${
tag
}
----代码表不存在`
);
});
}
})
...
...
@@ -988,4 +961,15 @@ export default class EntityService {
return
Http
.
getInstance
().
post
(
`/v7/changepwd`
,
data
,
isloading
);
}
/**
* 获取数字字典
*
* @param tag
* @param data
* @param isloading
*/
public
async
getPredefinedCodelist
(
tag
:
string
,
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
return
Http
.
getInstance
().
get
(
`/dictionarys/codelist/
${
tag
}
`
,
data
,
isloading
);
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app_web/src/widgets/app/notify-index-view-appmenu/notify-index-view-appmenu-base.vue
浏览文件 @
94b656de
...
...
@@ -504,11 +504,11 @@ export default class NotifyIndexViewBase extends Vue implements ControlInterface
navDataService
.
removeNavData
(
this
.
viewtag
);
}
switch
(
item
.
appfunctag
)
{
case
'
_3
'
:
this
.
click
_3
(
item
);
case
'
Auto2
'
:
this
.
click
Auto2
(
item
);
return
;
case
'
_2
'
:
this
.
click
_2
(
item
);
case
'
Auto1
'
:
this
.
click
Auto1
(
item
);
return
;
default
:
console
.
warn
(
'未指定应用功能'
);
...
...
@@ -523,7 +523,7 @@ export default class NotifyIndexViewBase extends Vue implements ControlInterface
* @param {*} [item={}]
* @memberof NotifyIndexView
*/
public
click
_3
(
item
:
any
=
{})
{
public
click
Auto2
(
item
:
any
=
{})
{
const
viewparam
:
any
=
{};
Object
.
assign
(
viewparam
,
{});
const
deResParameters
:
any
[]
=
[];
...
...
@@ -546,7 +546,7 @@ export default class NotifyIndexViewBase extends Vue implements ControlInterface
* @param {*} [item={}]
* @memberof NotifyIndexView
*/
public
click
_2
(
item
:
any
=
{})
{
public
click
Auto1
(
item
:
any
=
{})
{
const
viewparam
:
any
=
{};
Object
.
assign
(
viewparam
,
{});
const
deResParameters
:
any
[]
=
[];
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/app/notify-index-view-appmenu/notify-index-view-appmenu-model.ts
浏览文件 @
94b656de
...
...
@@ -29,7 +29,7 @@ export default class NotifyIndexViewModel {
iconcls
:
'fa fa-ioxhost'
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
'
_3
'
,
appfunctag
:
'
Auto2
'
,
resourcetag
:
''
,
authtag
:
'web-NotifyIndexView-menuitem1'
,
},
...
...
@@ -48,7 +48,7 @@ export default class NotifyIndexViewModel {
iconcls
:
'fa fa-list-alt'
,
icon
:
''
,
textcls
:
''
,
appfunctag
:
'
_2
'
,
appfunctag
:
'
Auto1
'
,
resourcetag
:
''
,
authtag
:
'web-NotifyIndexView-menuitem2'
,
},
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/msg-open-access/default-searchform/default-searchform-base.vue
浏览文件 @
94b656de
...
...
@@ -48,6 +48,7 @@
</i-col>
</row>
</i-form>
</
template
>
<
script
lang=
'tsx'
>
import
{
Vue
,
Component
,
Prop
,
Provide
,
Emit
,
Watch
,
Model
,
Inject
}
from
'vue-property-decorator'
;
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/msg-open-access/main-form/main-form-base.vue
浏览文件 @
94b656de
...
...
@@ -655,6 +655,9 @@ export default class MainBase extends Vue implements ControlInterface {
if
(
!
falg
.
hasOwnProperty
(
"isPast"
)){
falg
.
isPast
=
true
;
}
if
(
!
this
.
data
[
name
]){
falg
.
isPast
=
true
;
}
return
falg
;
}
...
...
@@ -1233,6 +1236,9 @@ export default class MainBase extends Vue implements ControlInterface {
if
(
Object
.
is
(
'refresh'
,
action
))
{
this
.
refresh
(
data
);
}
if
(
Object
.
is
(
'panelaction'
,
action
))
{
this
.
panelAction
(
data
.
action
,
data
.
emitAction
,
data
);
}
});
}
this
.
dataChang
...
...
@@ -1724,6 +1730,50 @@ export default class MainBase extends Vue implements ControlInterface {
})
}
/**
* 面板行为
*
* @param {string} [action] 调用的实体行为
* @param {string} [emitAction] 抛出行为
* @param {*} [data={}] 传入数据
* @param {boolean} [showloading] 是否显示加载状态
*
* @memberof MainBase
*/
public
panelAction
(
action
:
string
,
emitAction
:
string
,
data
:
any
=
{},
showloading
?:
boolean
):
void
{
if
(
!
action
||
(
action
&&
Object
.
is
(
action
,
''
)))
{
return
;
}
const
arg
:
any
=
{
...
data
};
const
formdata
=
this
.
getValues
();
Object
.
assign
(
arg
,
formdata
);
Object
.
assign
(
arg
,
this
.
viewparams
);
const
post
:
Promise
<
any
>
=
this
.
service
.
frontLogic
(
action
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
arg
,
showloading
);
post
.
then
((
response
:
any
)
=>
{
if
(
!
response
.
status
||
response
.
status
!==
200
)
{
if
(
response
.
data
)
{
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
response
.
data
.
message
});
}
return
;
}
const
data
=
response
.
data
;
this
.
onFormLoad
(
data
,
emitAction
);
this
.
$emit
(
emitAction
,
data
);
this
.
$nextTick
(()
=>
{
this
.
formState
.
next
({
type
:
emitAction
,
data
:
data
});
});
}).
catch
((
response
:
any
)
=>
{
if
(
response
&&
response
.
status
&&
response
.
data
)
{
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
response
.
data
.
message
});
return
;
}
if
(
!
response
||
!
response
.
status
||
!
response
.
data
)
{
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
(
this
.
$t
(
'app.commonWords.sysException'
)
as
string
)
});
return
;
}
});
}
/**
* 表单项更新
*
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/msg-open-access/main-grid/main-grid-base.vue
浏览文件 @
94b656de
<
template
>
<div
class=
'grid'
style=
"height:100%"
>
<i-form
style=
"height:100%;display:flex;flex-direction: column;justify-content: space-between"
>
<i-form
style=
"height:100%;display:flex;flex-direction: column;justify-content: space-between"
>
<el-table
v-if=
"isDisplay === true"
:default-sort=
"
{ prop: minorSortPSDEF, order: Object.is(minorSortDir, 'ASC') ? 'ascending' : Object.is(minorSortDir, 'DESC') ? 'descending' : '' }"
@sort-change="onSortChange($event)"
...
...
@@ -1285,7 +1285,7 @@ export default class MainBase extends Vue implements ControlInterface {
}
// 已选中则删除,没选中则添加
let
selectIndex
=
this
.
selections
.
findIndex
((
item
:
any
)
=>
{
return
Object
.
is
(
item
.
msg
_open_access
,
$event
.
msg_open_
access
);
return
Object
.
is
(
item
.
msg
openaccess
,
$event
.
msgopen
access
);
});
if
(
Object
.
is
(
selectIndex
,
-
1
)){
this
.
selections
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
$event
)));
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/msg-open-access/main-grid/main-grid.less
浏览文件 @
94b656de
...
...
@@ -36,7 +36,7 @@
height: 100%;
display:flex;
flex-direction: column;
justify-content: start;
justify-content:
flex-
start;
.el-table__row{
.grid-uiaction-divider {
padding:0 10px 0 10px;
...
...
@@ -66,6 +66,15 @@
margin-bottom: 20px;
}
}
.el-table__header-wrapper{
display: contents;
}
.el-table__body-wrapper{
height: auto !important;
}
.el-table__footer-wrapper{
display: contents;
}
}
.grid-pagination {
height: 50px;
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/msg-template/default-searchform/default-searchform-base.vue
浏览文件 @
94b656de
...
...
@@ -42,6 +42,7 @@
</i-col>
</row>
</i-form>
</
template
>
<
script
lang=
'tsx'
>
import
{
Vue
,
Component
,
Prop
,
Provide
,
Emit
,
Watch
,
Model
,
Inject
}
from
'vue-property-decorator'
;
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/msg-template/main-form/main-form-base.vue
浏览文件 @
94b656de
...
...
@@ -679,6 +679,9 @@ export default class MainBase extends Vue implements ControlInterface {
if
(
!
falg
.
hasOwnProperty
(
"isPast"
)){
falg
.
isPast
=
true
;
}
if
(
!
this
.
data
[
name
]){
falg
.
isPast
=
true
;
}
return
falg
;
}
...
...
@@ -1275,6 +1278,9 @@ export default class MainBase extends Vue implements ControlInterface {
if
(
Object
.
is
(
'refresh'
,
action
))
{
this
.
refresh
(
data
);
}
if
(
Object
.
is
(
'panelaction'
,
action
))
{
this
.
panelAction
(
data
.
action
,
data
.
emitAction
,
data
);
}
});
}
this
.
dataChang
...
...
@@ -1766,6 +1772,50 @@ export default class MainBase extends Vue implements ControlInterface {
})
}
/**
* 面板行为
*
* @param {string} [action] 调用的实体行为
* @param {string} [emitAction] 抛出行为
* @param {*} [data={}] 传入数据
* @param {boolean} [showloading] 是否显示加载状态
*
* @memberof MainBase
*/
public
panelAction
(
action
:
string
,
emitAction
:
string
,
data
:
any
=
{},
showloading
?:
boolean
):
void
{
if
(
!
action
||
(
action
&&
Object
.
is
(
action
,
''
)))
{
return
;
}
const
arg
:
any
=
{
...
data
};
const
formdata
=
this
.
getValues
();
Object
.
assign
(
arg
,
formdata
);
Object
.
assign
(
arg
,
this
.
viewparams
);
const
post
:
Promise
<
any
>
=
this
.
service
.
frontLogic
(
action
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
arg
,
showloading
);
post
.
then
((
response
:
any
)
=>
{
if
(
!
response
.
status
||
response
.
status
!==
200
)
{
if
(
response
.
data
)
{
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
response
.
data
.
message
});
}
return
;
}
const
data
=
response
.
data
;
this
.
onFormLoad
(
data
,
emitAction
);
this
.
$emit
(
emitAction
,
data
);
this
.
$nextTick
(()
=>
{
this
.
formState
.
next
({
type
:
emitAction
,
data
:
data
});
});
}).
catch
((
response
:
any
)
=>
{
if
(
response
&&
response
.
status
&&
response
.
data
)
{
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
response
.
data
.
message
});
return
;
}
if
(
!
response
||
!
response
.
status
||
!
response
.
data
)
{
this
.
$Notice
.
error
({
title
:
(
this
.
$t
(
'app.commonWords.wrong'
)
as
string
),
desc
:
(
this
.
$t
(
'app.commonWords.sysException'
)
as
string
)
});
return
;
}
});
}
/**
* 表单项更新
*
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/msg-template/main-grid/main-grid-base.vue
浏览文件 @
94b656de
<
template
>
<div
class=
'grid'
style=
"height:100%"
>
<i-form
style=
"height:100%;display:flex;flex-direction: column;justify-content: space-between"
>
<i-form
style=
"height:100%;display:flex;flex-direction: column;justify-content: space-between"
>
<el-table
v-if=
"isDisplay === true"
:default-sort=
"
{ prop: minorSortPSDEF, order: Object.is(minorSortDir, 'ASC') ? 'ascending' : Object.is(minorSortDir, 'DESC') ? 'descending' : '' }"
@sort-change="onSortChange($event)"
...
...
@@ -1315,7 +1315,7 @@ export default class MainBase extends Vue implements ControlInterface {
}
// 已选中则删除,没选中则添加
let
selectIndex
=
this
.
selections
.
findIndex
((
item
:
any
)
=>
{
return
Object
.
is
(
item
.
msg
_template
,
$event
.
msg_
template
);
return
Object
.
is
(
item
.
msg
template
,
$event
.
msg
template
);
});
if
(
Object
.
is
(
selectIndex
,
-
1
)){
this
.
selections
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
$event
)));
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/msg-template/main-grid/main-grid.less
浏览文件 @
94b656de
...
...
@@ -36,7 +36,7 @@
height: 100%;
display:flex;
flex-direction: column;
justify-content: start;
justify-content:
flex-
start;
.el-table__row{
.grid-uiaction-divider {
padding:0 10px 0 10px;
...
...
@@ -66,6 +66,15 @@
margin-bottom: 20px;
}
}
.el-table__header-wrapper{
display: contents;
}
.el-table__body-wrapper{
height: auto !important;
}
.el-table__footer-wrapper{
display: contents;
}
}
.grid-pagination {
height: 50px;
...
...
This diff is collapsed.
Click to expand it.
ibznotify-app/ibznotify-app-web/src/main/java/cn/ibizlab/web/webApplication.java
浏览文件 @
94b656de
...
...
@@ -13,6 +13,8 @@ import org.mybatis.spring.annotation.MapperScan;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.web.method.support.HandlerMethodArgumentResolver
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
;
import
cn.ibizlab.util.web.SearchContextHandlerMethodArgumentResolver
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
java.util.List
;
@Slf4j
...
...
@@ -30,6 +32,9 @@ import java.util.List;
})
public
class
webApplication
extends
WebMvcConfigurerAdapter
{
@Autowired
SearchContextHandlerMethodArgumentResolver
resolver
;
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
webApplication
.
class
,
args
);
}
...
...
@@ -37,6 +42,6 @@ public class webApplication extends WebMvcConfigurerAdapter{
@Override
public
void
addArgumentResolvers
(
List
<
HandlerMethodArgumentResolver
>
argumentResolvers
)
{
super
.
addArgumentResolvers
(
argumentResolvers
);
argumentResolvers
.
add
(
new
cn
.
ibizlab
.
util
.
web
.
SearchContextHandlerMethodArgumentResolver
()
);
argumentResolvers
.
add
(
resolver
);
}
}
This diff is collapsed.
Click to expand it.
ibznotify-app/ibznotify-app-web/src/main/resources/application-web-prod.yml
浏览文件 @
94b656de
...
...
@@ -36,9 +36,13 @@ zuul:
serviceId
:
${ibiz.ref.service.ou:ibzou-api}
stripPrefix
:
false
oudict
:
path
:
/dictionarys/**/
i
bzou**
path
:
/dictionarys/**/
I
bzou**
serviceId
:
${ibiz.ref.service.ou:ibzou-api}
stripPrefix
:
false
uaadict
:
path
:
/dictionarys/**/SysOperator
serviceId
:
${ibiz.ref.service.uaa:ibzuaa-api}
stripPrefix
:
false
dict
:
path
:
/dictionarys/**
serviceId
:
${ibiz.ref.service.dict:ibzdict-api}
...
...
This diff is collapsed.
Click to expand it.
ibznotify-boot/src/main/java/cn/ibizlab/DevBootApplication.java
浏览文件 @
94b656de
...
...
@@ -14,6 +14,8 @@ import org.springframework.context.annotation.ComponentScan;
import
org.springframework.scheduling.annotation.EnableAsync
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
java.util.List
;
import
cn.ibizlab.util.web.SearchContextHandlerMethodArgumentResolver
;
import
org.springframework.beans.factory.annotation.Autowired
;
@Slf4j
@EnableDiscoveryClient
...
...
@@ -34,6 +36,9 @@ import java.util.List;
@EnableScheduling
public
class
DevBootApplication
extends
WebMvcConfigurerAdapter
{
@Autowired
SearchContextHandlerMethodArgumentResolver
resolver
;
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
DevBootApplication
.
class
,
args
);
}
...
...
@@ -41,6 +46,6 @@ public class DevBootApplication extends WebMvcConfigurerAdapter{
@Override
public
void
addArgumentResolvers
(
List
<
HandlerMethodArgumentResolver
>
argumentResolvers
)
{
super
.
addArgumentResolvers
(
argumentResolvers
);
argumentResolvers
.
add
(
new
cn
.
ibizlab
.
util
.
web
.
SearchContextHandlerMethodArgumentResolver
()
);
argumentResolvers
.
add
(
resolver
);
}
}
This diff is collapsed.
Click to expand it.
ibznotify-boot/src/main/resources/application-dev.yml
浏览文件 @
94b656de
...
...
@@ -25,9 +25,13 @@ zuul:
serviceId
:
${ibiz.ref.service.ou:ibzou-api}
stripPrefix
:
false
oudict
:
path
:
/dictionarys/**/
i
bzou**
path
:
/dictionarys/**/
I
bzou**
serviceId
:
${ibiz.ref.service.ou:ibzou-api}
stripPrefix
:
false
uaadict
:
path
:
/dictionarys/**/SysOperator
serviceId
:
${ibiz.ref.service.uaa:ibzuaa-api}
stripPrefix
:
false
dict
:
path
:
/dictionarys/**
serviceId
:
${ibiz.ref.service.dict:ibzdict-api}
...
...
This diff is collapsed.
Click to expand it.
ibznotify-core/src/main/java/cn/ibizlab/core/notify/domain/MsgUserAccount.java
0 → 100644
浏览文件 @
94b656de
package
cn
.
ibizlab
.
core
.
notify
.
domain
;
import
java.sql.Timestamp
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.math.BigInteger
;
import
java.util.HashMap
;
import
java.math.BigDecimal
;
import
java.text.SimpleDateFormat
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.DigestUtils
;
import
cn.ibizlab.util.domain.EntityBase
;
import
cn.ibizlab.util.annotation.DEField
;
import
cn.ibizlab.util.enums.DEPredefinedFieldType
;
import
cn.ibizlab.util.enums.DEFieldDefaultValueType
;
import
java.io.Serializable
;
import
lombok.*
;
import
org.springframework.data.annotation.Transient
;
import
cn.ibizlab.util.annotation.Audit
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
com.baomidou.mybatisplus.annotation.*
;
import
cn.ibizlab.util.domain.EntityMP
;
/**
* 实体[绑定消息账号]
*/
@Getter
@Setter
@NoArgsConstructor
@JsonIgnoreProperties
(
value
=
"handler"
)
@TableName
(
value
=
"IBZUSERAUTH"
,
resultMap
=
"MsgUserAccountResultMap"
)
public
class
MsgUserAccount
extends
EntityMP
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 标识
*/
@DEField
(
name
=
"authid"
,
isKeyField
=
true
)
@TableId
(
value
=
"authid"
,
type
=
IdType
.
ASSIGN_UUID
)
@JSONField
(
name
=
"id"
)
@JsonProperty
(
"id"
)
private
String
id
;
/**
* 用户标识
*/
@TableField
(
value
=
"userid"
)
@JSONField
(
name
=
"userid"
)
@JsonProperty
(
"userid"
)
private
String
userid
;
/**
* 认证类型
*/
@DEField
(
name
=
"identity_type"
)
@TableField
(
value
=
"identity_type"
)
@JSONField
(
name
=
"identity_type"
)
@JsonProperty
(
"identity_type"
)
private
String
identityType
;
/**
* 认证标识
*/
@TableField
(
value
=
"identifier"
)
@JSONField
(
name
=
"identifier"
)
@JsonProperty
(
"identifier"
)
private
String
identifier
;
/**
* 凭据
*/
@TableField
(
value
=
"credential"
)
@JSONField
(
name
=
"credential"
)
@JsonProperty
(
"credential"
)
private
String
credential
;
/**
* 设置 [用户标识]
*/
public
void
setUserid
(
String
userid
){
this
.
userid
=
userid
;
this
.
modify
(
"userid"
,
userid
);
}
/**
* 设置 [认证类型]
*/
public
void
setIdentityType
(
String
identityType
){
this
.
identityType
=
identityType
;
this
.
modify
(
"identity_type"
,
identityType
);
}
/**
* 设置 [认证标识]
*/
public
void
setIdentifier
(
String
identifier
){
this
.
identifier
=
identifier
;
this
.
modify
(
"identifier"
,
identifier
);
}
/**
* 设置 [凭据]
*/
public
void
setCredential
(
String
credential
){
this
.
credential
=
credential
;
this
.
modify
(
"credential"
,
credential
);
}
/**
* 获取 [标识]
*/
public
String
getId
(){
if
(
ObjectUtils
.
isEmpty
(
id
)){
id
=(
String
)
getDefaultKey
(
true
);
}
return
id
;
}
@Override
public
Serializable
getDefaultKey
(
boolean
gen
)
{
if
((!
ObjectUtils
.
isEmpty
(
this
.
getUserid
()))&&(!
ObjectUtils
.
isEmpty
(
this
.
getIdentityType
())))
return
DigestUtils
.
md5DigestAsHex
(
String
.
format
(
"%s||%s"
,
this
.
getUserid
(),
this
.
getIdentityType
()).
getBytes
());
return
null
;
}
}
This diff is collapsed.
Click to expand it.
ibznotify-core/src/main/java/cn/ibizlab/core/notify/filter/MsgUserAccountSearchContext.java
0 → 100644
浏览文件 @
94b656de
package
cn
.
ibizlab
.
core
.
notify
.
filter
;
import
java.math.BigDecimal
;
import
java.math.BigInteger
;
import
java.sql.Timestamp
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.HashMap
;
import
lombok.*
;
import
lombok.extern.slf4j.Slf4j
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.StringUtils
;
import
cn.ibizlab.util.filter.QueryWrapperContext
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
cn.ibizlab.core.notify.domain.MsgUserAccount
;
/**
* 关系型数据实体[MsgUserAccount] 查询条件对象
*/
@Slf4j
@Data
public
class
MsgUserAccountSearchContext
extends
QueryWrapperContext
<
MsgUserAccount
>
{
/**
* 启用快速搜索
*/
public
void
setQuery
(
String
query
)
{
this
.
query
=
query
;
if
(!
StringUtils
.
isEmpty
(
query
)){
}
}
}
This diff is collapsed.
Click to expand it.
ibznotify-core/src/main/java/cn/ibizlab/core/notify/mapper/MsgTemplateMapper.java
浏览文件 @
94b656de
...
...
@@ -21,14 +21,19 @@ public interface MsgTemplateMapper extends BaseMapper<MsgTemplate>{
Page
<
MsgTemplate
>
searchDefault
(
IPage
page
,
@Param
(
"srf"
)
MsgTemplateSearchContext
context
,
@Param
(
"ew"
)
Wrapper
<
MsgTemplate
>
wrapper
)
;
@Override
@Cacheable
(
value
=
"msgtemplate"
,
key
=
"'row:'+#p0"
)
MsgTemplate
selectById
(
Serializable
id
);
@Override
@CacheEvict
(
value
=
"msgtemplate"
,
key
=
"'row:'+#p0.tid"
)
int
insert
(
MsgTemplate
entity
);
@Override
@CacheEvict
(
value
=
"msgtemplate"
,
key
=
"'row:'+#p0.tid"
)
int
updateById
(
@Param
(
Constants
.
ENTITY
)
MsgTemplate
entity
);
@Override
@CacheEvict
(
value
=
"msgtemplate"
,
key
=
"'row:'+#p0.tid"
)
int
update
(
@Param
(
Constants
.
ENTITY
)
MsgTemplate
entity
,
@Param
(
"ew"
)
Wrapper
<
MsgTemplate
>
updateWrapper
);
@Override
@CacheEvict
(
value
=
"msgtemplate"
,
key
=
"'row:'+#p0"
)
int
deleteById
(
Serializable
id
);
/**
* 自定义查询SQL
...
...
This diff is collapsed.
Click to expand it.
ibznotify-core/src/main/java/cn/ibizlab/core/notify/mapper/MsgUserAccountMapper.java
0 → 100644
浏览文件 @
94b656de
package
cn
.
ibizlab
.
core
.
notify
.
mapper
;
import
java.util.List
;
import
org.apache.ibatis.annotations.*
;
import
java.util.Map
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.conditions.Wrapper
;
import
java.util.HashMap
;
import
org.apache.ibatis.annotations.Select
;
import
cn.ibizlab.core.notify.domain.MsgUserAccount
;
import
cn.ibizlab.core.notify.filter.MsgUserAccountSearchContext
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.cache.annotation.Cacheable
;
import
java.io.Serializable
;
import
com.baomidou.mybatisplus.core.toolkit.Constants
;
import
com.alibaba.fastjson.JSONObject
;
public
interface
MsgUserAccountMapper
extends
BaseMapper
<
MsgUserAccount
>{
Page
<
MsgUserAccount
>
searchDefault
(
IPage
page
,
@Param
(
"srf"
)
MsgUserAccountSearchContext
context
,
@Param
(
"ew"
)
Wrapper
<
MsgUserAccount
>
wrapper
)
;
@Override
MsgUserAccount
selectById
(
Serializable
id
);
@Override
int
insert
(
MsgUserAccount
entity
);
@Override
int
updateById
(
@Param
(
Constants
.
ENTITY
)
MsgUserAccount
entity
);
@Override
int
update
(
@Param
(
Constants
.
ENTITY
)
MsgUserAccount
entity
,
@Param
(
"ew"
)
Wrapper
<
MsgUserAccount
>
updateWrapper
);
@Override
int
deleteById
(
Serializable
id
);
/**
* 自定义查询SQL
* @param sql
* @return
*/
@Select
(
"${sql}"
)
List
<
JSONObject
>
selectBySQL
(
@Param
(
"sql"
)
String
sql
,
@Param
(
"et"
)
Map
param
);
/**
* 自定义更新SQL
* @param sql
* @return
*/
@Update
(
"${sql}"
)
boolean
updateBySQL
(
@Param
(
"sql"
)
String
sql
,
@Param
(
"et"
)
Map
param
);
/**
* 自定义插入SQL
* @param sql
* @return
*/
@Insert
(
"${sql}"
)
boolean
insertBySQL
(
@Param
(
"sql"
)
String
sql
,
@Param
(
"et"
)
Map
param
);
/**
* 自定义删除SQL
* @param sql
* @return
*/
@Delete
(
"${sql}"
)
boolean
deleteBySQL
(
@Param
(
"sql"
)
String
sql
,
@Param
(
"et"
)
Map
param
);
}
This diff is collapsed.
Click to expand it.
ibznotify-core/src/main/java/cn/ibizlab/core/notify/service/IMsgTemplateService.java
浏览文件 @
94b656de
...
...
@@ -26,18 +26,23 @@ import com.baomidou.mybatisplus.extension.service.IService;
public
interface
IMsgTemplateService
extends
IService
<
MsgTemplate
>{
boolean
create
(
MsgTemplate
et
)
;
@CacheEvict
(
value
=
"msgtemplate"
,
allEntries
=
true
)
void
createBatch
(
List
<
MsgTemplate
>
list
)
;
boolean
update
(
MsgTemplate
et
)
;
@CacheEvict
(
value
=
"msgtemplate"
,
allEntries
=
true
)
void
updateBatch
(
List
<
MsgTemplate
>
list
)
;
boolean
remove
(
String
key
)
;
@CacheEvict
(
value
=
"msgtemplate"
,
allEntries
=
true
)
void
removeBatch
(
Collection
<
String
>
idList
)
;
MsgTemplate
get
(
String
key
)
;
MsgTemplate
getDraft
(
MsgTemplate
et
)
;
boolean
checkKey
(
MsgTemplate
et
)
;
boolean
save
(
MsgTemplate
et
)
;
@CacheEvict
(
value
=
"msgtemplate"
,
allEntries
=
true
)
void
saveBatch
(
List
<
MsgTemplate
>
list
)
;
Page
<
MsgTemplate
>
searchDefault
(
MsgTemplateSearchContext
context
)
;
List
<
MsgTemplate
>
selectByAccessId
(
String
id
)
;
@CacheEvict
(
value
=
"msgtemplate"
,
allEntries
=
true
)
void
removeByAccessId
(
String
id
)
;
/**
*自定义查询SQL
...
...
This diff is collapsed.
Click to expand it.
ibznotify-core/src/main/java/cn/ibizlab/core/notify/service/IMsgUserAccountService.java
0 → 100644
浏览文件 @
94b656de
package
cn
.
ibizlab
.
core
.
notify
.
service
;
import
java.io.Serializable
;
import
java.sql.Timestamp
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.HashMap
;
import
java.util.Collection
;
import
java.math.BigInteger
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
com.alibaba.fastjson.JSONObject
;
import
org.springframework.cache.annotation.CacheEvict
;
import
cn.ibizlab.core.notify.domain.MsgUserAccount
;
import
cn.ibizlab.core.notify.filter.MsgUserAccountSearchContext
;
import
com.baomidou.mybatisplus.extension.service.IService
;
/**
* 实体[MsgUserAccount] 服务对象接口
*/
public
interface
IMsgUserAccountService
extends
IService
<
MsgUserAccount
>{
boolean
create
(
MsgUserAccount
et
)
;
void
createBatch
(
List
<
MsgUserAccount
>
list
)
;
boolean
update
(
MsgUserAccount
et
)
;
void
updateBatch
(
List
<
MsgUserAccount
>
list
)
;
boolean
remove
(
String
key
)
;
void
removeBatch
(
Collection
<
String
>
idList
)
;
MsgUserAccount
get
(
String
key
)
;
MsgUserAccount
getDraft
(
MsgUserAccount
et
)
;
boolean
checkKey
(
MsgUserAccount
et
)
;
boolean
save
(
MsgUserAccount
et
)
;
void
saveBatch
(
List
<
MsgUserAccount
>
list
)
;
Page
<
MsgUserAccount
>
searchDefault
(
MsgUserAccountSearchContext
context
)
;
/**
*自定义查询SQL
* @param sql select * from table where id =#{et.param}
* @param param 参数列表 param.put("param","1");
* @return select * from table where id = '1'
*/
List
<
JSONObject
>
select
(
String
sql
,
Map
param
);
/**
*自定义SQL
* @param sql update table set name ='test' where id =#{et.param}
* @param param 参数列表 param.put("param","1");
* @return update table set name ='test' where id = '1'
*/
boolean
execute
(
String
sql
,
Map
param
);
}
This diff is collapsed.
Click to expand it.
ibznotify-core/src/main/java/cn/ibizlab/core/notify/service/impl/MsgUserAccountServiceImpl.java
0 → 100644
浏览文件 @
94b656de
package
cn
.
ibizlab
.
core
.
notify
.
service
.
impl
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.Map
;
import
java.util.HashSet
;
import
java.util.HashMap
;
import
java.util.Collection
;
import
java.util.Objects
;
import
java.util.Optional
;
import
java.math.BigInteger
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cglib.beans.BeanCopier
;
import
org.springframework.stereotype.Service
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageImpl
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.context.annotation.Lazy
;
import
cn.ibizlab.core.notify.domain.MsgUserAccount
;
import
cn.ibizlab.core.notify.filter.MsgUserAccountSearchContext
;
import
cn.ibizlab.core.notify.service.IMsgUserAccountService
;
import
cn.ibizlab.util.helper.CachedBeanCopier
;
import
cn.ibizlab.util.helper.DEFieldCacheMap
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
cn.ibizlab.core.notify.mapper.MsgUserAccountMapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.Wrapper
;
import
com.alibaba.fastjson.JSONObject
;
import
org.springframework.util.StringUtils
;
/**
* 实体[绑定消息账号] 服务对象接口实现
*/
@Slf4j
@Service
(
"MsgUserAccountServiceImpl"
)
public
class
MsgUserAccountServiceImpl
extends
ServiceImpl
<
MsgUserAccountMapper
,
MsgUserAccount
>
implements
IMsgUserAccountService
{
protected
int
batchSize
=
500
;
@Override
@Transactional
public
boolean
create
(
MsgUserAccount
et
)
{
if
(!
this
.
retBool
(
this
.
baseMapper
.
insert
(
et
)))
return
false
;
CachedBeanCopier
.
copy
(
get
(
et
.
getId
()),
et
);
return
true
;
}
@Override
public
void
createBatch
(
List
<
MsgUserAccount
>
list
)
{
this
.
saveOrUpdateBatch
(
list
,
batchSize
);
}
@Override
@Transactional
public
boolean
update
(
MsgUserAccount
et
)
{
if
(!
update
(
et
,(
Wrapper
)
et
.
getUpdateWrapper
(
true
).
eq
(
"authid"
,
et
.
getId
())))
return
false
;
CachedBeanCopier
.
copy
(
get
(
et
.
getId
()),
et
);
return
true
;
}
@Override
public
void
updateBatch
(
List
<
MsgUserAccount
>
list
)
{
updateBatchById
(
list
,
batchSize
);
}
@Override
@Transactional
public
boolean
remove
(
String
key
)
{
boolean
result
=
removeById
(
key
);
return
result
;
}
@Override
public
void
removeBatch
(
Collection
<
String
>
idList
)
{
removeByIds
(
idList
);
}
@Override
@Transactional
public
MsgUserAccount
get
(
String
key
)
{
MsgUserAccount
et
=
getById
(
key
);
if
(
et
==
null
){
et
=
new
MsgUserAccount
();
et
.
setId
(
key
);
}
else
{
}
return
et
;
}
@Override
public
MsgUserAccount
getDraft
(
MsgUserAccount
et
)
{
return
et
;
}
@Override
public
boolean
checkKey
(
MsgUserAccount
et
)
{
return
(!
ObjectUtils
.
isEmpty
(
et
.
getId
()))&&(!
Objects
.
isNull
(
this
.
getById
(
et
.
getId
())));
}
@Override
@Transactional
public
boolean
save
(
MsgUserAccount
et
)
{
if
(!
saveOrUpdate
(
et
))
return
false
;
return
true
;
}
@Override
@Transactional
public
boolean
saveOrUpdate
(
MsgUserAccount
et
)
{
if
(
null
==
et
)
{
return
false
;
}
else
{
return
checkKey
(
et
)
?
this
.
update
(
et
)
:
this
.
create
(
et
);
}
}
@Override
public
boolean
saveBatch
(
Collection
<
MsgUserAccount
>
list
)
{
saveOrUpdateBatch
(
list
,
batchSize
);
return
true
;
}
@Override
public
void
saveBatch
(
List
<
MsgUserAccount
>
list
)
{
saveOrUpdateBatch
(
list
,
batchSize
);
}
/**
* 查询集合 DEFAULT
*/
@Override
public
Page
<
MsgUserAccount
>
searchDefault
(
MsgUserAccountSearchContext
context
)
{
com
.
baomidou
.
mybatisplus
.
extension
.
plugins
.
pagination
.
Page
<
MsgUserAccount
>
pages
=
baseMapper
.
searchDefault
(
context
.
getPages
(),
context
,
context
.
getSelectCond
());
return
new
PageImpl
<
MsgUserAccount
>(
pages
.
getRecords
(),
context
.
getPageable
(),
pages
.
getTotal
());
}
@Override
public
List
<
JSONObject
>
select
(
String
sql
,
Map
param
){
return
this
.
baseMapper
.
selectBySQL
(
sql
,
param
);
}
@Override
@Transactional
public
boolean
execute
(
String
sql
,
Map
param
){
if
(
sql
==
null
||
sql
.
isEmpty
())
{
return
false
;
}
if
(
sql
.
toLowerCase
().
trim
().
startsWith
(
"insert"
))
{
return
this
.
baseMapper
.
insertBySQL
(
sql
,
param
);
}
if
(
sql
.
toLowerCase
().
trim
().
startsWith
(
"update"
))
{
return
this
.
baseMapper
.
updateBySQL
(
sql
,
param
);
}
if
(
sql
.
toLowerCase
().
trim
().
startsWith
(
"delete"
))
{
return
this
.
baseMapper
.
deleteBySQL
(
sql
,
param
);
}
log
.
warn
(
"暂未支持的SQL语法"
);
return
true
;
}
}
This diff is collapsed.
Click to expand it.
ibznotify-core/src/main/resources/liquibase/h2_table.xml
浏览文件 @
94b656de
...
...
@@ -32,7 +32,7 @@
<!--输出实体[MSG_TEMPLATE]数据结构 -->
<changeSet
author=
"a_A_5d9d78509"
id=
"tab-msg_template-9
5
-2"
>
<changeSet
author=
"a_A_5d9d78509"
id=
"tab-msg_template-9
7
-2"
>
<createTable
tableName=
"IBZMSGTEMPL"
>
<column
name=
"TID"
remarks=
""
type=
"VARCHAR(100)"
>
<constraints
primaryKey=
"true"
primaryKeyName=
"PK_MSG_TEMPLATE_TID"
/>
...
...
@@ -56,7 +56,26 @@
</createTable>
</changeSet>
<!--输出实体[MSG_USER_ACCOUNT]数据结构 -->
<changeSet
author=
"a_A_5d9d78509"
id=
"tab-msg_user_account-9-3"
>
<createTable
tableName=
"IBZUSERAUTH"
>
<column
name=
"AUTHID"
remarks=
""
type=
"VARCHAR(100)"
>
<constraints
primaryKey=
"true"
primaryKeyName=
"PK_MSG_USER_ACCOUNT_AUTHID"
/>
</column>
<column
name=
"USERID"
remarks=
""
type=
"VARCHAR(100)"
>
</column>
<column
name=
"IDENTITY_TYPE"
remarks=
""
type=
"VARCHAR(100)"
>
</column>
<column
name=
"IDENTIFIER"
remarks=
""
type=
"VARCHAR(200)"
>
</column>
<column
name=
"CREDENTIAL"
remarks=
""
type=
"VARCHAR(500)"
>
</column>
</createTable>
</changeSet>
<!--输出实体[MSG_OPEN_ACCESS]外键关系 -->
<!--输出实体[MSG_TEMPLATE]外键关系 -->
<!--输出实体[MSG_USER_ACCOUNT]外键关系 -->
</databaseChangeLog>
This diff is collapsed.
Click to expand it.
ibznotify-core/src/main/resources/mapper/notify/msguseraccount/MsgUserAccountMapper.xml
0 → 100644
浏览文件 @
94b656de
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"cn.ibizlab.core.notify.mapper.MsgUserAccountMapper"
>
<!--该方法用于重写mybatis中selectById方法,以实现查询逻辑属性-->
<select
id=
"selectById"
resultMap=
"MsgUserAccountResultMap"
databaseId=
"mysql"
>
<![CDATA[select t1.* from (SELECT t1.`AUTHID`, t1.`CREDENTIAL`, t1.`IDENTIFIER`, t1.`IDENTITY_TYPE`, t1.`USERID` FROM `IBZUSERAUTH` t1 ) t1 where authid=#{id}]]>
</select>
<!--通过mybatis将查询结果注入到entity中,通过配置autoMapping="true"由mybatis自动处理映射关系 -->
<resultMap
id=
"MsgUserAccountResultMap"
type=
"cn.ibizlab.core.notify.domain.MsgUserAccount"
autoMapping=
"true"
>
<id
property=
"id"
column=
"authid"
/>
<!--主键字段映射-->
<result
property=
"identityType"
column=
"identity_type"
/>
</resultMap>
<!--数据集合[Default]-->
<select
id=
"searchDefault"
parameterType=
"cn.ibizlab.core.notify.filter.MsgUserAccountSearchContext"
resultMap=
"MsgUserAccountResultMap"
>
select t1.* from (
<include
refid=
"Default"
/>
)t1
<where><if
test=
"ew!=null and ew.sqlSegment!=null and !ew.emptyOfWhere"
>
${ew.sqlSegment}
</if></where>
<if
test=
"ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere"
>
${ew.sqlSegment}
</if>
</select>
<!--数据查询[Default]-->
<sql
id=
"Default"
databaseId=
"mysql"
>
<![CDATA[ SELECT t1.`AUTHID`, t1.`CREDENTIAL`, t1.`IDENTIFIER`, t1.`IDENTITY_TYPE`, t1.`USERID` FROM `IBZUSERAUTH` t1
]]>
</sql>
<!--数据查询[View]-->
<sql
id=
"View"
databaseId=
"mysql"
>
<![CDATA[ SELECT t1.`AUTHID`, t1.`CREDENTIAL`, t1.`IDENTIFIER`, t1.`IDENTITY_TYPE`, t1.`USERID` FROM `IBZUSERAUTH` t1
]]>
</sql>
</mapper>
This diff is collapsed.
Click to expand it.
ibznotify-provider/ibznotify-provider-api/src/main/java/cn/ibizlab/api/ibznotifyapiApplication.java
浏览文件 @
94b656de
...
...
@@ -15,6 +15,8 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
import
org.springframework.cloud.openfeign.EnableFeignClients
;
import
org.springframework.scheduling.annotation.EnableAsync
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
cn.ibizlab.util.web.SearchContextHandlerMethodArgumentResolver
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
java.util.List
;
@Slf4j
...
...
@@ -40,6 +42,9 @@ import java.util.List;
@EnableScheduling
public
class
ibznotifyapiApplication
extends
WebMvcConfigurerAdapter
{
@Autowired
SearchContextHandlerMethodArgumentResolver
resolver
;
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
ibznotifyapiApplication
.
class
,
args
);
}
...
...
@@ -47,6 +52,6 @@ public class ibznotifyapiApplication extends WebMvcConfigurerAdapter{
@Override
public
void
addArgumentResolvers
(
List
<
HandlerMethodArgumentResolver
>
argumentResolvers
)
{
super
.
addArgumentResolvers
(
argumentResolvers
);
argumentResolvers
.
add
(
new
cn
.
ibizlab
.
util
.
web
.
SearchContextHandlerMethodArgumentResolver
()
);
argumentResolvers
.
add
(
resolver
);
}
}
This diff is collapsed.
Click to expand it.
ibznotify-util/src/main/java/cn/ibizlab/util/domain/DTOClient.java
浏览文件 @
94b656de
...
...
@@ -4,9 +4,9 @@ public class DTOClient extends DTOBase {
@Override
public
void
modify
(
String
field
,
Object
val
)
{
getExtensionparams
().
put
(
"dirtyflagenable"
,
true
);
if
(
val
==
null
){
this
.
getFocusNull
().
add
(
field
.
toLowerCase
());
getExtensionparams
().
put
(
"dirtyflagenable"
,
true
);
getExtensionparams
().
put
(
field
.
toLowerCase
()+
"dirtyflag"
,
true
);
}
else
{
...
...
This diff is collapsed.
Click to expand it.
ibznotify-util/src/main/java/cn/ibizlab/util/job/PermissionSyncJob.java
浏览文件 @
94b656de
...
...
@@ -29,6 +29,9 @@ public class PermissionSyncJob implements ApplicationRunner {
@Value
(
"${ibiz.systemid:ibznotify}"
)
private
String
systemId
;
@Value
(
"${ibiz.systemname:ibznotify}"
)
private
String
systemName
;
@Override
...
...
@@ -39,7 +42,7 @@ public class PermissionSyncJob implements ApplicationRunner {
String
permissionResult
=
IOUtils
.
toString
(
permission
,
"UTF-8"
);
JSONObject
system
=
new
JSONObject
();
system
.
put
(
"pssystemid"
,
systemId
);
system
.
put
(
"pssystemname"
,
system
Id
);
system
.
put
(
"pssystemname"
,
system
Name
);
system
.
put
(
"sysstructure"
,
JSONObject
.
parseObject
(
permissionResult
));
system
.
put
(
"md5check"
,
DigestUtils
.
md5DigestAsHex
(
permissionResult
.
getBytes
()));
if
(
client
.
syncSysAuthority
(
system
)){
...
...
This diff is collapsed.
Click to expand it.
ibznotify-util/src/main/java/cn/ibizlab/util/web/SearchContextHandlerMethodArgumentResolver.java
浏览文件 @
94b656de
...
...
@@ -10,10 +10,16 @@ import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import
org.springframework.web.method.support.ModelAndViewContainer
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Configuration
;
@Slf4j
@Configuration
public
class
SearchContextHandlerMethodArgumentResolver
implements
HandlerMethodArgumentResolver
{
@Value
(
"${ibiz.pageLimit:1000}"
)
private
int
pageLimit
=
1000
;
private
static
ObjectMapper
objectMapper
=
new
ObjectMapper
();
@Override
...
...
@@ -29,6 +35,9 @@ public class SearchContextHandlerMethodArgumentResolver implements HandlerMethod
for
(
String
key
:
params
.
keySet
())
{
set
.
put
(
key
,
params
.
get
(
key
)[
0
]);
}
if
((!
set
.
containsKey
(
"size"
))
){
set
.
put
(
"size"
,
pageLimit
);
}
String
json
=
objectMapper
.
writeValueAsString
(
set
);
return
objectMapper
.
readValue
(
json
,
parameter
.
getParameterType
());
}
...
...
This diff is collapsed.
Click to expand it.
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录