Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
I
ibzwf
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
ibiz4jteam
ibzwf
提交
dcaf9043
提交
dcaf9043
编写于
5年前
作者:
ibizdev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ibiz4j 部署微服务应用
上级
90cbaeec
变更
38
显示空白字符变更
内嵌
并排
正在显示
38 个修改的文件
包含
1312 行增加
和
310 行删除
+1312
-310
CHANGELOG.md
app_web/CHANGELOG.md
+19
-0
package.json
app_web/package.json
+4
-2
app-register.ts
app_web/src/app-register.ts
+2
-2
app-department-select.vue
...omponents/app-department-select/app-department-select.vue
+76
-31
app-org-select.vue
app_web/src/components/app-org-select/app-org-select.vue
+57
-15
app-wf-approval.less
app_web/src/components/app-wf-approval/app-wf-approval.less
+92
-0
app-wf-approval.vue
app_web/src/components/app-wf-approval/app-wf-approval.vue
+116
-0
ibiz-group-picker.vue
...eb/src/components/ibiz-group-picker/ibiz-group-picker.vue
+33
-25
ibiz-group-select.vue
...eb/src/components/ibiz-group-select/ibiz-group-select.vue
+79
-38
tab-page-exp.vue
app_web/src/components/tab-page-exp/tab-page-exp.vue
+3
-3
edit-view-engine.ts
app_web/src/engine/view/edit-view-engine.ts
+3
-3
main.ts
app_web/src/pages/workflow/wfindex-view/main.ts
+1
-0
entity-service.ts
app_web/src/service/entity-service.ts
+29
-1
getters.ts
app_web/src/store/getters.ts
+20
-0
mutations.ts
app_web/src/store/mutations.ts
+24
-0
state.ts
app_web/src/store/state.ts
+2
-0
util.d.ts
app_web/src/utils/types/util.d.ts
+11
-0
uiaction-tool.ts
app_web/src/utils/uiaction-tool/uiaction-tool.ts
+1
-1
util.ts
app_web/src/utils/util/util.ts
+20
-0
main-form-base.vue
app_web/src/widgets/wfgroup/main-form/main-form-base.vue
+12
-2
main-grid-base.vue
app_web/src/widgets/wfgroup/main-grid/main-grid-base.vue
+140
-38
main-grid.less
app_web/src/widgets/wfgroup/main-grid/main-grid.less
+4
-0
main-form-base.vue
app_web/src/widgets/wfmember/main-form/main-form-base.vue
+12
-2
main-grid-base.vue
app_web/src/widgets/wfmember/main-grid/main-grid-base.vue
+134
-37
main-grid.less
app_web/src/widgets/wfmember/main-grid/main-grid.less
+4
-0
main-form-base.vue
...widgets/wfprocess-definition/main-form/main-form-base.vue
+12
-2
main-grid-base.vue
...widgets/wfprocess-definition/main-grid/main-grid-base.vue
+152
-40
main-grid.less
...src/widgets/wfprocess-definition/main-grid/main-grid.less
+4
-0
main-form-base.vue
app_web/src/widgets/wfremodel/main-form/main-form-base.vue
+12
-2
main-form-base.vue
app_web/src/widgets/wfuser/main-form/main-form-base.vue
+12
-2
main-grid-base.vue
app_web/src/widgets/wfuser/main-grid/main-grid-base.vue
+140
-38
main-grid.less
app_web/src/widgets/wfuser/main-grid/main-grid.less
+4
-0
yarn.lock
app_web/yarn.lock
+57
-5
config.xml
config.xml
+5
-5
Dockerfile
ibzwf-app/ibzwf-app-web/src/main/docker/Dockerfile
+1
-1
ibzwf-app-web.yaml
ibzwf-app/ibzwf-app-web/src/main/docker/ibzwf-app-web.yaml
+13
-1
Dockerfile
ibzwf-provider/ibzwf-provider-api/src/main/docker/Dockerfile
+1
-1
ibzwf-provider-api.yaml
...bzwf-provider-api/src/main/docker/ibzwf-provider-api.yaml
+1
-13
未找到文件。
app_web/CHANGELOG.md
浏览文件 @
dcaf9043
## v7.0.0-alpha.6 [2020-5-23]
### Bug修复
修复处理快速分组模型动态数据部分
修复列表,数据视图默认排序
### 功能新增及优化
#### 模板
补充单位选择器、部门选择器、人员选择器
#### 基础文件
补充单位选择器、部门选择器、人员选择器
## v7.0.0-alpha.5 [2020-5-21]
### Bug修复
...
...
This diff is collapsed.
Click to expand it.
app_web/package.json
浏览文件 @
dcaf9043
...
...
@@ -18,14 +18,16 @@
"@fullcalendar/list"
:
"^4.4.0"
,
"@fullcalendar/timegrid"
:
"^4.4.0"
,
"@fullcalendar/vue"
:
"^4.4.0"
,
"vuedraggable"
:
"^2.23.2"
,
"async-validator"
:
"^3.3.0"
,
"axios"
:
"^0.19.1"
,
"core-js"
:
"^3.4.4"
,
"echarts"
:
"^4.6.0"
,
"element-ui"
:
"^2.13.0"
,
"file-saver"
:
"^2.0.2"
,
"font-awesome"
:
"^4.7.0"
,
"ibiz-gantt-elastic"
:
"^1.0.1
2
"
,
"ibiz-vue-lib"
:
"^0.1.
4
"
,
"ibiz-gantt-elastic"
:
"^1.0.1
5
"
,
"ibiz-vue-lib"
:
"^0.1.
9
"
,
"interactjs"
:
"^1.9.4"
,
"moment"
:
"^2.24.0"
,
"path-to-regexp"
:
"^6.1.0"
,
...
...
This diff is collapsed.
Click to expand it.
app_web/src/app-register.ts
浏览文件 @
dcaf9043
...
...
@@ -75,8 +75,7 @@ import AppOrgSelect from './components/app-org-select/app-org-select.vue'
import
AppDepartmentSelect
from
'./components/app-department-select/app-department-select.vue'
import
IBizGroupSelect
from
'./components/ibiz-group-select/ibiz-group-select.vue'
import
IBizGroupPicker
from
'./components/ibiz-group-picker/ibiz-group-picker.vue'
import
AppWFApproval
from
'./components/app-wf-approval/app-wf-approval.vue'
// 全局挂载UI实体服务注册中心
window
[
'uiServiceRegister'
]
=
uiServiceRegister
;
...
...
@@ -161,5 +160,6 @@ export const AppComponents = {
v
.
component
(
'app-department-select'
,
AppDepartmentSelect
);
v
.
component
(
'ibiz-group-select'
,
IBizGroupSelect
);
v
.
component
(
'ibiz-group-picker'
,
IBizGroupPicker
);
v
.
component
(
'app-wf-approval'
,
AppWFApproval
);
},
};
\ 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
浏览文件 @
dcaf9043
<
template
>
<div
class=
"app-department-select"
>
<ibiz-select-tree
:NodesData=
"Nodesdata"
:value=
"v
alue"
:multiple=
"multiple"
@
select=
"onSelect"
></ibiz-select-tree>
<ibiz-select-tree
:NodesData=
"Nodesdata"
v-model=
"selectTreeV
alue"
:multiple=
"multiple"
@
select=
"onSelect"
></ibiz-select-tree>
</div>
</
template
>
...
...
@@ -17,7 +17,7 @@ export default class AppDepartmentSelect extends Vue {
* @type {*}
* @memberof AppDepartmentSelect
*/
@
Prop
(
{
default
:
'/ibzorganizations/{orgid}/ibzdepartments/picker'
}
)
public
url
?:
any
;
@
Prop
()
public
url
?:
any
;
/**
* 过滤项
...
...
@@ -43,14 +43,6 @@ export default class AppDepartmentSelect extends Vue {
*/
@
Prop
({
default
:
false
})
public
multiple
?:
any
;
/**
* 表单项名称
*
* @type {*}
* @memberof AppDepartmentSelect
*/
@
Prop
()
public
name
!
:
any
;
/**
* 表单数据
*
...
...
@@ -60,20 +52,20 @@ export default class AppDepartmentSelect extends Vue {
@
Prop
()
public
data
!
:
any
;
/**
*
表单项值
*
上下文变量
*
* @type {*}
* @memberof AppDepartmentSelect
*/
@
Prop
()
public
value
!
:
any
;
@
Prop
()
public
context
!
:
any
;
/**
*
上下文变量
*
选中数值
*
* @type {*}
* @memberof AppDepartmentSelect
*/
@
Prop
()
public
context
!
:
any
;
public
selectTreeValue
:
any
=
""
;
/**
* 树节点数据
...
...
@@ -96,26 +88,40 @@ export default class AppDepartmentSelect extends Vue {
*
* @memberof AppDepartmentSelect
*/
public
searchNodesData
(){
// 处理请求参数
let
param
=
''
public
handleFilter
(){
if
(
this
.
filter
){
if
(
this
.
data
&&
this
.
data
[
this
.
filter
]){
param
=
this
.
data
[
this
.
filter
];
return
this
.
data
[
this
.
filter
];
}
else
if
(
this
.
context
&&
this
.
context
[
this
.
filter
]){
param
=
this
.
context
[
this
.
filter
];
return
this
.
context
[
this
.
filter
];
}
}
else
{
param
=
this
.
context
.
srforgid
;
return
this
.
context
.
srforgid
;
}
}
let
_url
=
this
.
url
.
replace
(
/{orgid}/
,
param
)
/**
* 获取节点数据
*
* @memberof AppDepartmentSelect
*/
public
searchNodesData
(){
// 处理过滤参数,生成url
let
param
=
this
.
handleFilter
();
let
_url
=
this
.
url
.
replace
(
'${orgid}'
,
param
)
if
(
this
.
oldurl
===
_url
){
return
;
}
this
.
oldurl
=
_url
;
// 缓存机制
const
result
:
any
=
this
.
$store
.
getters
.
getCopyData
(
_url
);
if
(
result
){
this
.
Nodesdata
=
result
;
return
;
}
this
.
$http
.
get
(
_url
).
then
((
response
:
any
)
=>
{
console
.
log
(
response
)
this
.
Nodesdata
=
response
.
data
;
this
.
oldurl
=
_url
;
this
.
$store
.
commit
(
'addDepData'
,
{
srfkey
:
this
.
filter
,
orgData
:
response
.
data
})
;
}).
catch
((
response
:
any
)
=>
{
if
(
!
response
||
!
response
.
status
||
!
response
.
data
)
{
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'系统异常!'
});
...
...
@@ -131,9 +137,53 @@ export default class AppDepartmentSelect extends Vue {
* @param {*} oldVal
* @memberof AppDepartmentSelect
*/
@
Watch
(
'data'
,{
deep
:
true
})
@
Watch
(
'data'
,{
immediate
:
true
,
deep
:
true
})
public
onValueChange
(
newVal
:
any
,
oldVal
:
any
)
{
if
(
newVal
){
this
.
computedSelectedData
();
this
.
$nextTick
(()
=>
{
this
.
searchNodesData
();
});
}
}
/**
* 计算选中值
*
* @memberof AppOrgSelect
*/
public
computedSelectedData
(){
// 单选
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
]]});
}
})
this
.
selectTreeValue
=
JSON
.
stringify
([
templateValue
]);
}
}
else
{
// 多选
if
(
this
.
fillMap
&&
Object
.
keys
(
this
.
fillMap
).
length
>
0
){
let
tempArray
:
Array
<
any
>
=
[];
Object
.
keys
(
this
.
fillMap
).
forEach
((
item
:
any
)
=>
{
if
(
this
.
data
&&
this
.
data
[
this
.
fillMap
[
item
]]){
let
tempDataArray
:
Array
<
any
>
=
(
this
.
data
[
this
.
fillMap
[
item
]]).
split
(
","
);
tempDataArray
.
forEach
((
tempData
:
any
,
index
:
number
)
=>
{
if
(
tempArray
.
length
<
tempDataArray
.
length
){
let
singleData
:
any
=
{[
item
]:
tempData
};
tempArray
.
push
(
singleData
);
}
else
{
Object
.
assign
(
tempArray
[
index
],{[
item
]:
tempData
});
}
})
}
})
this
.
selectTreeValue
=
JSON
.
stringify
(
tempArray
);
}
}
}
/**
...
...
@@ -145,17 +195,12 @@ export default class AppDepartmentSelect extends Vue {
public
onSelect
(
$event
:
any
){
// 组件自身抛值事件
let
selectArr
=
JSON
.
parse
(
$event
);
if
(
selectArr
.
length
===
0
){
return
;
}
let
valueArr
=
selectArr
.
map
((
item
:
any
)
=>
{
return
{
id
:
item
.
id
,
label
:
item
.
label
}});
this
.
$emit
(
'select-change'
,
{
name
:
this
.
name
,
value
:
JSON
.
stringify
(
valueArr
)
});
// fillMap抛值事件
if
(
this
.
fillMap
&&
Object
.
keys
(
this
.
fillMap
).
length
>
0
){
Object
.
keys
(
this
.
fillMap
).
forEach
((
attribute
:
string
)
=>
{
let
_name
=
this
.
fillMap
[
attribute
];
let
_value
=
selectArr
.
map
((
item
:
any
)
=>
item
[
attribute
]);
this
.
$emit
(
'select-change'
,{
name
:
_name
,
value
:
_value
.
join
(
","
)})
this
.
$emit
(
'select-change'
,{
name
:
this
.
fillMap
[
attribute
]
,
value
:
_value
.
join
(
","
)})
});
}
...
...
This diff is collapsed.
Click to expand it.
app_web/src/components/app-org-select/app-org-select.vue
浏览文件 @
dcaf9043
<
template
>
<div
class=
"app-org-select"
>
<ibiz-select-tree
:NodesData=
"NodesData"
v-model=
"selectTreeValue"
:multiple=
"
fals
e"
@
select=
"treeSelectChange"
></ibiz-select-tree>
<ibiz-select-tree
:NodesData=
"NodesData"
v-model=
"selectTreeValue"
:multiple=
"
multipl
e"
@
select=
"treeSelectChange"
></ibiz-select-tree>
</div>
</
template
>
<
script
lang =
'ts'
>
...
...
@@ -44,6 +44,13 @@ export default class AppOrgSelect extends Vue {
*/
@
Prop
({
default
:
false
})
public
multiple
?:
boolean
;
/**
* 查询单位路径
*
* @memberof AppOrgSelect
*/
@
Prop
()
public
url
!
:
string
;
/**
* 监听表单数据变化
*
...
...
@@ -57,20 +64,13 @@ export default class AppOrgSelect extends Vue {
let
tempFilterValue
:
any
=
this
.
initBasicData
();
// filter值变化才去请求数据
if
(
tempFilterValue
&&
(
this
.
copyFilterValue
!==
tempFilterValue
)){
this
.
loadTreeData
(
this
.
orgDataU
rl
.
replace
(
'${orgid}'
,
tempFilterValue
));
this
.
loadTreeData
(
this
.
u
rl
.
replace
(
'${orgid}'
,
tempFilterValue
));
this
.
copyFilterValue
=
tempFilterValue
;
}
}
}
}
/**
* 查询单位路径
*
* @memberof AppOrgSelect
*/
public
orgDataUrl
:
string
=
"/ibzorganizations/${orgid}/suborg/picker"
;
/**
* 选择值
*
...
...
@@ -99,7 +99,7 @@ export default class AppOrgSelect extends Vue {
*/
public
created
(){
if
(
!
this
.
filter
){
this
.
loadTreeData
(
this
.
orgDataUrl
.
replace
(
'${orgid}'
,
'alls'
)
);
this
.
loadTreeData
(
this
.
url
);
}
}
...
...
@@ -140,7 +140,23 @@ export default class AppOrgSelect extends Vue {
}
}
else
{
// 多选
if
(
this
.
fillMap
&&
Object
.
keys
(
this
.
fillMap
).
length
>
0
){
let
tempArray
:
Array
<
any
>
=
[];
Object
.
keys
(
this
.
fillMap
).
forEach
((
item
:
any
)
=>
{
if
(
this
.
data
&&
this
.
data
[
this
.
fillMap
[
item
]]){
let
tempDataArray
:
Array
<
any
>
=
(
this
.
data
[
this
.
fillMap
[
item
]]).
split
(
","
);
tempDataArray
.
forEach
((
tempData
:
any
,
index
:
number
)
=>
{
if
(
tempArray
.
length
<
tempDataArray
.
length
){
let
singleData
:
any
=
{[
item
]:
tempData
};
tempArray
.
push
(
singleData
);
}
else
{
Object
.
assign
(
tempArray
[
index
],{[
item
]:
tempData
});
}
})
}
})
this
.
selectTreeValue
=
JSON
.
stringify
(
tempArray
);
}
}
}
...
...
@@ -150,13 +166,22 @@ export default class AppOrgSelect extends Vue {
* @memberof AppOrgSelect
*/
public
loadTreeData
(
requestUrl
:
string
){
if
(
this
.
filter
){
const
result
:
any
=
this
.
$store
.
getters
.
getCopyData
(
this
.
filter
);
if
(
result
){
this
.
NodesData
=
result
;
return
;
}
}
Http
.
getInstance
().
get
(
requestUrl
).
then
((
res
:
any
)
=>
{
if
(
!
res
.
status
&&
res
.
status
!==
200
){
console
.
error
(
"加载数据失败"
);
return
;
}
this
.
NodesData
=
res
.
data
;
console
.
log
(
this
.
NodesData
);
if
(
this
.
filter
){
this
.
$store
.
commit
(
'addOrgData'
,
{
srfkey
:
this
.
filter
,
orgData
:
res
.
data
});
}
})
}
...
...
@@ -168,10 +193,27 @@ export default class AppOrgSelect extends Vue {
public
treeSelectChange
(
$event
:
any
){
// 多选
if
(
this
.
multiple
){
if
(
!
Object
.
is
(
$event
,
'[]'
)){
const
tempValue
:
any
=
JSON
.
parse
(
$event
);
if
(
this
.
fillMap
&&
Object
.
keys
(
this
.
fillMap
).
length
>
0
){
Object
.
keys
(
this
.
fillMap
).
forEach
((
item
:
any
)
=>
{
let
tempResult
:
any
=
""
;
tempValue
.
forEach
((
value
:
any
,
index
:
number
)
=>
{
tempResult
+=
index
>
0
?
`,
${
value
[
item
]}
`
:
`
${
value
[
item
]}
`
;
})
this
.
emitValue
(
this
.
fillMap
[
item
],
tempResult
);
})
}
}
else
{
if
(
this
.
fillMap
&&
Object
.
keys
(
this
.
fillMap
).
length
>
0
){
Object
.
keys
(
this
.
fillMap
).
forEach
((
item
:
any
)
=>
{
this
.
emitValue
(
this
.
fillMap
[
item
],
null
);
})
}
}
}
else
{
// 单选
if
(
$event
){
if
(
!
Object
.
is
(
$event
,
'[]'
)
){
const
tempValue
:
any
=
JSON
.
parse
(
$event
)[
0
];
if
(
this
.
fillMap
&&
Object
.
keys
(
this
.
fillMap
).
length
>
0
){
Object
.
keys
(
this
.
fillMap
).
forEach
((
item
:
any
)
=>
{
...
...
@@ -194,7 +236,7 @@ export default class AppOrgSelect extends Vue {
* @memberof AppOrgSelect
*/
public
emitValue
(
name
:
string
,
value
:
any
){
this
.
$emit
(
'
formitemvalue
change'
,{
name
:
name
,
value
:
value
});
this
.
$emit
(
'
select-
change'
,{
name
:
name
,
value
:
value
});
}
}
...
...
This diff is collapsed.
Click to expand it.
app_web/src/components/app-wf-approval/app-wf-approval.less
0 → 100644
浏览文件 @
dcaf9043
.app-wf-approval{
width:100%;
.app-wf-approval-header{
width: 100%;
text-align: center;
background: #e5eaef;
height: 32px;
line-height: 32px;
font-size: 16px;
border: 1px solid #565656;
.approval-header-left{
margin-right: 24px;
}
}
.app-wf-approval-bottom{
width: 100%;
text-align: center;
background: #e5eaef;
height: 32px;
line-height: 32px;
font-size: 16px;
border-style: solid;
border-width: 0px 1px 1px 1px;
border-color: #565656;
}
.app-wf-approval-content{
border-left: 1px solid #565656;
border-right: 1px solid #565656;
.approval-content-item{
display: flex;
align-items: center;
font-size: 16px;
border-bottom: 1px solid #565656;
.approval-content-item-left{
width: 130px;
padding: 8px;
text-align: center;
}
.approval-content-item-right{
width: calc(100% - 130px);
border-left:1px solid #565656;
.approval-content-item-wait{
padding: 0px 4px;
height: 32px;
line-height: 32px;
font-size: 16px;
border-bottom:1px solid #565656;
background: #d1ef5c;
>span{
font-size: 18px;
color: #000;
font-weight: 600;
}
}
.approval-content-item-info{
.approval-content-item-info-item {
padding: 0px 4px;
height: 32px;
line-height: 32px;
border-bottom:1px solid #565656;
}
.approval-content-item-info-top{
font-size: 16px;
}
.approval-content-item-info-bottom{
font-size: 14px;
text-align: right;
>span{
margin-right:6px;
}
.info-bottom-name{
font-size: 18px;
font-weight: 600;
}
}
> div:nth-last-child(1){
> .approval-content-item-info-item:nth-last-child(1){
border-bottom: 0;
}
}
}
.approval-content-item-memo{
padding: 0px 4px;
.el-textarea__inner{
border: 0px !important;
padding: 0px !important;
}
}
}
}
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app_web/src/components/app-wf-approval/app-wf-approval.vue
0 → 100644
浏览文件 @
dcaf9043
<
template
>
<div
class=
'app-wf-approval'
>
<div
class=
"app-wf-approval-header"
>
<span
class=
"approval-header-left"
>
{{
data
.
startTime
}}
</span>
<span>
{{
data
.
startUserName
}}
提交
</span>
</div>
<div
class=
"app-wf-approval-content"
v-if=
"data.usertasks && data.usertasks.length >0"
>
<div
class=
"approval-content-item"
v-for=
"(usertask,index) in data.usertasks"
:key=
"index"
>
<div
class=
"approval-content-item-left"
>
{{
usertask
.
userTaskName
}}
</div>
<div
class=
"approval-content-item-right"
>
<div
class=
"approval-content-item-wait"
v-if=
"usertask.identitylinks.length >0"
>
等待
<span
v-for=
"(identitylink,inx) in usertask.identitylinks"
:key=
"inx"
>
{{
identitylink
.
displayname
}}
<span
v-if=
"inx >0"
>
、
</span></span>
处理
</div>
<div
class=
"approval-content-item-info"
v-if=
"usertask.comments.length >0"
>
<div
v-for=
"(comment,commentInx) in usertask.comments"
:key=
"commentInx"
>
<div
class=
"approval-content-item-info-item approval-content-item-info-top"
>
{{
`【${comment.type
}
】${comment.fullMessage
}
`
}}
<
/div
>
<
div
class
=
"approval-content-item-info-item approval-content-item-info-bottom"
>
<
span
class
=
"info-bottom-name"
>
{{
comment
.
authorName
}}
<
/span
>
<
span
>
{{
comment
.
time
}}
<
/span
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"approval-content-item-memo"
v
-
if
=
"usertask.userTaskId === viewparams.userTaskId"
>
<
el
-
input
type
=
"textarea"
v
-
model
=
"initmemo"
:
rows
=
"2"
@
blur
=
"handleBlur"
placeholder
=
"请输入内容"
><
/el-input
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"app-wf-approval-bottom"
>
<
span
v
-
if
=
"data.endTime"
>
{{
data
.
endTime
}}
结束
<
/span
>
<
/div
>
<
/div
>
<
/template
>
<
script
lang
=
'ts'
>
import
{
Vue
,
Component
,
Prop
,
Model
}
from
'vue-property-decorator'
;
@
Component
({
}
)
export
default
class
AppWFApproval
extends
Vue
{
/**
* 双向绑定值
*
* @memberof AppWFApproval
*/
@
Model
(
'change'
)
value
!
:
string
;
/**
* 数据
*
* @memberof AppWFApproval
*/
public
data
:
any
=
{
}
;
/**
* 初始化memo
*
* @memberof AppWFApproval
*/
public
initmemo
:
string
=
""
;
/**
* 传入数据服务
*
* @memberof AppWFApproval
*/
@
Prop
()
public
service
:
any
;
/**
* 上下文
*
* @memberof AppWFApproval
*/
@
Prop
()
public
context
:
any
;
/**
* 视图参数
*
* @memberof AppWFApproval
*/
@
Prop
()
public
viewparams
:
any
;
/**
* 初始化数据
*
* @memberof AppWFApproval
*/
public
created
(){
if
(
this
.
service
){
this
.
service
.
GetWFHistory
(
this
.
context
).
then
((
res
:
any
)
=>
{
if
(
res
&&
(
res
.
status
===
200
)){
this
.
data
=
res
.
data
;
}
}
)
}
}
/**
* 抛出wfprocmemo
*
* @memberof AppWFApproval
*/
public
handleBlur
(
$event
:
any
){
this
.
$emit
(
'change'
,
$event
.
target
.
value
);
}
}
<
/script
>
<
style
lang
=
"less"
>
@
import
'./app-wf-approval.less'
;
<
/style>
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app_web/src/components/ibiz-group-picker/ibiz-group-picker.vue
浏览文件 @
dcaf9043
...
...
@@ -2,7 +2,7 @@
<div
class=
"ibiz-group-picker"
>
<div
class=
"ibiz-group-container"
>
<div
v-if=
"showTree"
class=
"ibiz-group-tree"
>
<ibiz-select-tree
:NodesData=
"treeItems"
v-model=
"treeSelectVal"
:
isShowSearchBar=
"fals
e"
@
select=
"treeSelect"
></ibiz-select-tree>
<ibiz-select-tree
:NodesData=
"treeItems"
v-model=
"treeSelectVal"
:
treeOnly=
"true"
:defaultChecked=
"tru
e"
@
select=
"treeSelect"
></ibiz-select-tree>
</div>
<div
class=
"ibiz-group-content"
>
<ibiz-group-card
:data=
"cardItems"
text=
"label"
value=
"id"
groupName=
"group"
:multiple=
"multiple"
:defaultSelect=
"cardSelctVal"
@
select=
"groupSelect"
></ibiz-group-card>
...
...
@@ -47,6 +47,22 @@ export default class IBizGroupPicker extends Vue {
*/
protected
multiple
:
boolean
=
false
;
/**
* 加载树url
*
* @type {*}
* @memberof IBizGroupPicker
*/
protected
treeurl
:
any
;
/**
* 加载人员url
*
* @type {*}
* @memberof IBizGroupPicker
*/
protected
url
:
any
;
/**
* 树数据集
*
...
...
@@ -110,8 +126,8 @@ export default class IBizGroupPicker extends Vue {
* @memberof IBizGroupPicker
*/
get
showTree
()
{
if
(
!
Object
.
is
(
this
.
viewData
.
srforgid
,
this
.
viewParam
.
srforgid
)
)
{
return
t
ru
e
;
if
(
this
.
viewParam
)
{
return
t
his
.
viewParam
.
showtre
e
;
}
}
...
...
@@ -128,8 +144,13 @@ export default class IBizGroupPicker extends Vue {
this
.
viewData
=
JSON
.
parse
(
this
.
viewdata
);
this
.
viewParam
=
JSON
.
parse
(
this
.
viewparam
);
this
.
multiple
=
this
.
viewParam
.
multiple
;
this
.
treeurl
=
this
.
viewParam
.
treeurl
;
this
.
url
=
this
.
viewParam
.
url
;
if
(
this
.
viewParam
.
selects
)
{
this
.
cardSelctVal
=
this
.
viewParam
.
selects
;
this
.
viewParam
.
selects
.
forEach
((
select
:
any
)
=>
{
this
.
selects
.
push
(
select
);
this
.
cardSelctVal
.
push
(
select
.
id
)
})
}
this
.
load
();
}
...
...
@@ -144,7 +165,7 @@ export default class IBizGroupPicker extends Vue {
if
(
this
.
showTree
)
{
this
.
loadTree
();
}
else
{
this
.
loadGroupData
(
this
.
viewParam
.
srforgid
);
this
.
loadGroupData
(
this
.
viewParam
.
filtervalue
);
}
}
...
...
@@ -155,7 +176,9 @@ export default class IBizGroupPicker extends Vue {
* @memberof IBizGroupPicker
*/
public
loadTree
()
{
let
get
=
Http
.
getInstance
().
get
(
`/ibzorganizations/450000/suborg/ibzdepartments/picker`
,
true
);
let
orgid
=
this
.
viewParam
.
filtervalue
;
let
tempTreeUrl
:
string
=
this
.
treeurl
.
replace
(
'${orgid}'
,
orgid
);
let
get
=
Http
.
getInstance
().
get
(
tempTreeUrl
,
true
);
get
.
then
((
response
:
any
)
=>
{
if
(
response
.
status
===
200
)
{
this
.
treeItems
=
response
.
data
;
...
...
@@ -172,7 +195,8 @@ export default class IBizGroupPicker extends Vue {
* @memberof IBizGroupPicker
*/
public
loadGroupData
(
key
:
string
)
{
let
get
=
Http
.
getInstance
().
get
(
`/ibzorganizations/
${
key
}
/ibzemployees/picker`
,
true
);
let
tempUrl
=
this
.
url
.
replace
(
'${selected-orgid}'
,
key
);
let
get
=
Http
.
getInstance
().
get
(
tempUrl
,
true
);
get
.
then
((
response
:
any
)
=>
{
if
(
response
.
status
===
200
)
{
this
.
cardItems
=
response
.
data
;
...
...
@@ -203,7 +227,7 @@ export default class IBizGroupPicker extends Vue {
* @memberof IBizGroupPicker
*/
public
groupSelect
(
event
:
any
)
{
if
(
!
event
||
!
event
.
select
s
)
{
if
(
!
event
||
!
event
.
select
)
{
return
;
}
if
(
!
this
.
multiple
)
{
...
...
@@ -215,7 +239,7 @@ export default class IBizGroupPicker extends Vue {
this
.
selects
.
splice
(
index
,
1
);
}
}
else
{
event
.
select
s
.
forEach
((
key
:
string
)
=>
{
event
.
select
.
forEach
((
key
:
string
)
=>
{
let
index
:
number
=
this
.
selects
.
findIndex
((
item
:
any
)
=>
Object
.
is
(
key
,
item
.
id
));
if
(
index
>=
0
)
{
return
;
...
...
@@ -226,22 +250,6 @@ export default class IBizGroupPicker extends Vue {
}
});
}
// 测试 start
// if(!this.multiple) {
// this.selects = [];
// }
// event.forEach((key: string) => {
// let index: number = this.selects.findIndex((item: any) => Object.is(key, item.id));
// if(index >= 0) {
// return;
// }
// let item: any = this.cardItems.find((item: any) => Object.is(key, item.id));
// if (item) {
// this.selects.push(item);
// }
// });
// 测试 end
}
/**
...
...
This diff is collapsed.
Click to expand it.
app_web/src/components/ibiz-group-select/ibiz-group-select.vue
浏览文件 @
dcaf9043
...
...
@@ -32,13 +32,21 @@ export default class IBizGroupSelect extends Vue {
*/
@
Prop
()
name
!
:
string
;
/**
* 树加载地址
*
* @type {*}
* @memberof IBizGroupSelect
*/
@
Prop
()
treeurl
?:
boolean
;
/**
* 数据接口地址
*
* @type {*}
* @memberof IBizGroupSelect
*/
@
Prop
()
url
?
:
string
;
@
Prop
()
url
!
:
string
;
/**
* 多选
...
...
@@ -62,7 +70,7 @@ export default class IBizGroupSelect extends Vue {
* @type {*}
* @memberof IBizGroupSelect
*/
@
Prop
(
{
default
:
'orgid'
}
)
filter
?:
string
;
@
Prop
()
filter
?:
string
;
/**
* 是否启用
...
...
@@ -96,6 +104,14 @@ export default class IBizGroupSelect extends Vue {
*/
@
Prop
()
valueitem
:
any
;
/**
* 填充属性
*
* @type {*}
* @memberof IBizGroupSelect
*/
@
Prop
()
fillmap
:
any
;
/**
* 选中项集合
*
...
...
@@ -114,17 +130,22 @@ export default class IBizGroupSelect extends Vue {
onValueChange
(
newVal
:
any
)
{
this
.
selects
=
[];
if
(
newVal
)
{
let
vals
:
any
[]
=
newVal
.
split
(
','
)
;
let
vals2
:
any
[]
=
[]
;
let
item
:
any
=
{}
;
item
.
label
=
newVal
.
split
(
','
)
;
if
(
this
.
valueitem
)
{
vals2
=
this
.
data
[
this
.
valueitem
].
split
(
','
)
;
item
.
id
=
this
.
data
[
this
.
valueitem
]
?
this
.
data
[
this
.
valueitem
].
split
(
','
)
:
[]
;
}
console
.
log
(
this
.
data
[
this
.
valueitem
])
vals
.
forEach
((
val
:
string
,
index
:
number
)
=>
{
this
.
selects
.
push
({
label
:
val
,
id
:
vals2
.
length
>
0
?
vals2
[
index
]
:
null
})
if
(
this
.
fillmap
)
{
for
(
let
key
in
this
.
fillmap
)
{
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
)
})
}
}
...
...
@@ -152,16 +173,27 @@ export default class IBizGroupSelect extends Vue {
viewname
:
'ibiz-group-picker'
,
title
:
'分组选择'
};
let
sels
:
any
=
this
.
selects
.
map
((
select
:
any
)
=>
{
return
select
.
id
;
})
const
context
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
));
let
filtervalue
:
string
=
""
;
if
(
this
.
filter
){
if
(
this
.
data
[
this
.
filter
]){
filtervalue
=
this
.
data
[
this
.
filter
];
}
else
if
(
context
[
this
.
filter
]){
filtervalue
=
context
[
this
.
filter
];
}
else
{
filtervalue
=
context
.
srforgid
;
}
}
else
{
filtervalue
=
context
.
srforgid
;
}
const
param
:
any
=
{};
let
orgid
:
any
=
this
.
filter
;
Object
.
assign
(
param
,
{
orgid
:
this
.
data
[
orgid
],
showtree
:
this
.
treeurl
?
true
:
false
,
url
:
this
.
url
,
treeurl
:
this
.
treeurl
,
filtervalue
:
filtervalue
,
multiple
:
this
.
multiple
,
selects
:
sel
s
selects
:
this
.
select
s
});
let
container
:
Subject
<
any
>
=
this
.
$appmodal
.
openModal
(
view
,
context
,
param
);
container
.
subscribe
((
result
:
any
)
=>
{
...
...
@@ -179,15 +211,9 @@ export default class IBizGroupSelect extends Vue {
* @memberof IBizGroupSelect
*/
public
openViewClose
(
result
:
any
)
{
console
.
log
(
result
)
this
.
selects
=
[];
if
(
result
.
datas
&&
result
.
datas
.
length
>
0
)
{
result
.
datas
.
forEach
((
data
:
any
)
=>
{
this
.
selects
.
push
({
id
:
data
.
id
,
label
:
data
.
label
})
});
this
.
selects
=
result
.
datas
}
this
.
setValue
()
}
...
...
@@ -211,26 +237,41 @@ export default class IBizGroupSelect extends Vue {
*/
public
setValue
()
{
let
item
:
any
=
{};
item
[
this
.
name
]
=
null
;
if
(
this
.
valueitem
)
{
item
[
this
.
valueitem
]
=
null
;
}
if
(
this
.
fillmap
)
{
for
(
let
key
in
this
.
fillmap
)
{
item
[
key
]
=
null
;
}
}
if
(
this
.
multiple
)
{
let
label
=
''
;
let
value
=
''
;
this
.
selects
.
forEach
((
select
:
any
)
=>
{
label
+=
','
+
select
.
label
;
value
+=
','
+
select
.
id
;
item
[
this
.
name
]
=
item
[
this
.
name
]
?
`
${
item
[
this
.
name
]}
,
${
select
.
label
}
`
:
select
.
label
;
if
(
this
.
valueitem
)
{
item
[
this
.
valueitem
]
=
item
[
this
.
valueitem
]
?
`
${
item
[
this
.
valueitem
]}
,
${
select
.
id
}
`
:
select
.
id
;
}
if
(
this
.
fillmap
)
{
for
(
let
key
in
this
.
fillmap
)
{
item
[
key
]
=
item
[
key
]
?
`
${
item
[
key
]}
,
${
select
[
this
.
fillmap
[
key
]]}
`
:
select
[
this
.
fillmap
[
key
]];
}
}
});
Object
.
assign
(
item
,
{
label
:
label
?
label
.
substring
(
1
)
:
null
,
id
:
value
?
value
.
substring
(
1
)
:
null
})
}
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
;
}
if
(
this
.
name
)
{
this
.
$emit
(
'formitemvaluechange'
,
{
name
:
this
.
name
,
value
:
item
.
label
});
if
(
this
.
fillmap
)
{
for
(
let
key
in
this
.
fillmap
)
{
item
[
key
]
=
this
.
selects
.
length
>
0
?
this
.
selects
[
0
][
this
.
fillmap
[
key
]]
:
null
;
}
if
(
this
.
valueitem
)
{
this
.
$emit
(
'formitemvaluechange'
,
{
name
:
this
.
valueitem
,
value
:
item
.
id
});
}
}
for
(
let
key
in
item
)
{
this
.
$emit
(
'formitemvaluechange'
,
{
name
:
key
,
value
:
item
[
key
]
});
}
}
}
...
...
This diff is collapsed.
Click to expand it.
app_web/src/components/tab-page-exp/tab-page-exp.vue
浏览文件 @
dcaf9043
...
...
@@ -201,11 +201,11 @@ export default class TabPageExp extends Vue {
* @param {*} caption
* @memberof TabPageExp
*/
public
setCurPageCaption
(
routename
:
string
,
caption
:
any
,
info
:
string
)
{
if
(
!
Object
.
is
(
this
.
$route
.
name
,
routename
))
{
public
setCurPageCaption
(
caption
:
string
,
title
:
any
,
info
:
string
)
{
if
(
this
.
$route
.
meta
&&
(
!
Object
.
is
(
this
.
$route
.
meta
.
caption
,
caption
)
))
{
return
;
}
this
.
$store
.
commit
(
"setCurPageCaption"
,
{
route
:
this
.
$route
,
caption
:
caption
,
info
:
info
});
this
.
$store
.
commit
(
"setCurPageCaption"
,
{
route
:
this
.
$route
,
caption
:
title
,
info
:
info
});
setTimeout
(()
=>
{
this
.
moveToView
(
this
.
$route
);
},
1
);
...
...
This diff is collapsed.
Click to expand it.
app_web/src/engine/view/edit-view-engine.ts
浏览文件 @
dcaf9043
...
...
@@ -247,9 +247,9 @@ export default class EditViewEngine extends ViewEngine {
*/
public
setTabCaption
(
info
:
string
):
void
{
let
viewdata
:
any
=
this
.
view
.
model
;
let
viewParam
=
this
.
view
.
$store
.
getters
[
'viewaction/getAppView'
](
this
.
view
.
viewtag
);
if
(
viewdata
&&
viewParam
&&
info
&&
!
Object
.
is
(
info
,
''
)
&&
this
.
view
.
$tabPageExp
)
{
this
.
view
.
$tabPageExp
.
setCurPageCaption
(
`
${
viewParam
.
viewmodule
}
_
${
viewParam
.
viewname
}
`
.
toLocaleLowerCase
(),
viewdata
.
srfCaption
,
info
)
;
if
(
viewdata
&&
info
&&
!
Object
.
is
(
info
,
''
)
&&
this
.
view
.
$tabPageExp
&&
(
viewdata
.
srfTitle
.
indexOf
(
" - "
)
===
-
1
))
{
this
.
view
.
$tabPageExp
.
setCurPageCaption
(
viewdata
.
srfCaption
,
viewdata
.
srfTitle
,
info
);
this
.
view
.
model
.
srfTitle
=
`
${
this
.
view
.
$t
(
viewdata
.
srfTitle
)}
-
${
viewdata
.
dataInfo
}
`
;
}
}
...
...
This diff is collapsed.
Click to expand it.
app_web/src/pages/workflow/wfindex-view/main.ts
浏览文件 @
dcaf9043
...
...
@@ -11,6 +11,7 @@ import i18n from '@/locale'
import
'element-ui/lib/theme-chalk/index.css'
;
import
'view-design/dist/styles/iview.css'
;
import
'ibiz-vue-lib/lib/ibiz-vue-lib.css'
;
import
'@/styles/default.less'
;
...
...
This diff is collapsed.
Click to expand it.
app_web/src/service/entity-service.ts
浏览文件 @
dcaf9043
...
...
@@ -619,7 +619,22 @@ export default class EntityService {
* @memberof EntityService
*/
public
async
removeBatch
(
context
:
any
=
{},
data
:
any
,
isloading
?:
boolean
):
Promise
<
any
>
{
return
Http
.
getInstance
().
delete
(
`/
${
this
.
APPDENAME
}
/batch`
,
isloading
,
data
);
return
Http
.
getInstance
().
delete
(
`/
${
this
.
APPDENAME
}
/batch`
,
isloading
,
data
[
this
.
APPDEKEY
]);
}
/**
* getDataInfo接口方法
*
* @param {*} [context={}]
* @param {*} [data]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof EntityService
*/
public
async
getDataInfo
(
context
:
any
=
{},
data
:
any
,
isloading
?:
boolean
):
Promise
<
any
>
{
if
(
context
[
this
.
APPLYDEKEY
]){
return
this
.
Get
(
context
,
data
,
isloading
);
}
}
/**
...
...
@@ -765,6 +780,19 @@ export default class EntityService {
return
Http
.
getInstance
().
get
(
`/wfcore/
${
this
.
SYSTEMNAME
}
-app-
${
this
.
APPNAME
}
/
${
this
.
APPDENAME
}
/
${
context
[
this
.
APPLYDEKEY
]}
/usertasks/
${
data
[
'taskDefinitionKey'
]}
/ways`
);
}
/**
* GetWFHistory接口方法(根据业务主键获取工作流程记录)
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof EntityService
*/
public
async
GetWFHistory
(
context
:
any
=
{},
data
:
any
=
{},
isloading
?:
boolean
):
Promise
<
any
>
{
return
Http
.
getInstance
().
get
(
`/wfcore/
${
this
.
SYSTEMNAME
}
-app-
${
this
.
APPNAME
}
/
${
this
.
APPDENAME
}
/
${
context
[
this
.
APPLYDEKEY
]}
/process-instances/alls/history`
);
}
/**
* WFSubmit接口方法
*
...
...
This diff is collapsed.
Click to expand it.
app_web/src/store/getters.ts
浏览文件 @
dcaf9043
...
...
@@ -89,3 +89,23 @@ export const getCopyData = (state: any) => (srfkey: string) => {
}
return
copyData
;
}
/**
* 获取单位数据
*
* @param state
*/
export
const
getOrgData
=
(
state
:
any
)
=>
(
srfkey
:
string
)
=>
{
let
orgData
=
state
.
orgDataMap
[
srfkey
];
return
orgData
;
}
/**
* 获取部门数据
*
* @param state
*/
export
const
getDepData
=
(
state
:
any
)
=>
(
srfkey
:
string
)
=>
{
let
depData
=
state
.
depDataMap
[
srfkey
];
return
depData
;
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app_web/src/store/mutations.ts
浏览文件 @
dcaf9043
...
...
@@ -266,3 +266,27 @@ export const addCopyData = (state: any, args: {srfkey: string,copyData: any}) =>
state
.
copyDataMap
[
args
.
srfkey
]
=
JSON
.
parse
(
JSON
.
stringify
(
args
.
copyData
));
}
}
/**
* 添加单位数据
*
* @param state
* @param args
*/
export
const
addOrgData
=
(
state
:
any
,
args
:
{
srfkey
:
string
,
orgData
:
any
})
=>
{
if
(
args
&&
args
.
srfkey
&&
args
.
orgData
){
state
.
orgDataMap
[
args
.
srfkey
]
=
JSON
.
parse
(
JSON
.
stringify
(
args
.
orgData
));
}
}
/**
* 添加部门数据
*
* @param state
* @param args
*/
export
const
addDepData
=
(
state
:
any
,
args
:
{
srfkey
:
string
,
depData
:
any
})
=>
{
if
(
args
&&
args
.
srfkey
&&
args
.
depData
){
state
.
depDataMap
[
args
.
srfkey
]
=
JSON
.
parse
(
JSON
.
stringify
(
args
.
depData
));
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app_web/src/store/state.ts
浏览文件 @
dcaf9043
...
...
@@ -14,4 +14,6 @@ export const rootstate: any = {
zIndex
:
300
,
viewSplit
:
{},
copyDataMap
:{},
orgDataMap
:{},
depDataMap
:{},
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app_web/src/utils/types/util.d.ts
浏览文件 @
dcaf9043
...
...
@@ -138,6 +138,17 @@ export declare interface Util {
* @memberof Util
*/
dateFormat
(
date
:
any
,
fmt
?:
string
):
string
/**
* 表单项校验
*
* @param property 表单项属性名
* @param data 表单数据
* @param rules 表单值规则
* @returns {Promise}
* @memberof Util
*/
validateItem
(
property
:
string
,
data
:
any
,
rules
:
any
):
Promise
<
any
>
}
declare
module
"vue/types/vue"
{
...
...
This diff is collapsed.
Click to expand it.
app_web/src/utils/uiaction-tool/uiaction-tool.ts
浏览文件 @
dcaf9043
...
...
@@ -73,7 +73,7 @@ export class UIActionTool {
values
.
push
(
value
);
});
}
Object
.
assign
(
_data
,
{
[
name
]:
values
.
length
>
0
?
values
.
join
(
'
;
'
)
:
value
});
Object
.
assign
(
_data
,
{
[
name
]:
values
.
length
>
0
?
values
.
join
(
'
,
'
)
:
value
});
});
}
return
_data
;
...
...
This diff is collapsed.
Click to expand it.
app_web/src/utils/util/util.ts
浏览文件 @
dcaf9043
import
qs
from
'qs'
;
import
{
Route
}
from
'vue-router'
;
import
Schema
from
"async-validator"
;
/**
* 平台工具类
...
...
@@ -362,4 +363,23 @@ export class Util {
return
FirstOBJ
;
}
/**
* 表单项校验
*
* @param property 表单项属性名
* @param data 表单数据
* @param rules 表单值规则
* @returns {Promise}
* @memberof Util
*/
public
static
validateItem
(
property
:
string
,
data
:
any
,
rules
:
any
)
{
// 1.获取数值和规则
const
value
=
data
[
property
];
const
rule
=
rules
[
property
];
// 2.创建校验规则
const
schema
=
new
Schema
({
[
property
]:
rule
})
// 校验返回Promise
return
schema
.
validate
({
[
property
]:
value
})
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app_web/src/widgets/wfgroup/main-form/main-form-base.vue
浏览文件 @
dcaf9043
<
template
>
<i-form
:model=
"this.data"
class=
'app-form'
ref=
'form'
id=
'
form
'
style=
""
>
<i-form
:model=
"this.data"
class=
'app-form'
ref=
'form'
id=
'
wfgroup_main
'
style=
""
>
<input
style=
"display:none;"
/>
<row
>
...
...
@@ -180,6 +180,12 @@ export default class MainBase extends Vue implements ControlInterface {
}
/**
* 工作流审批意见控件绑定值
*
* @memberof Main
*/
public
srfwfmemo
:
string
=
""
;
/**
* 获取多项数据
...
...
@@ -976,7 +982,7 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public
print
(){
let
_this
:
any
=
this
;
_this
.
$print
({
id
:
'
form
'
,
popTitle
:
'主编辑表单'
});
_this
.
$print
({
id
:
'
wfgroup_main
'
,
popTitle
:
'主编辑表单'
});
}
/**
...
...
@@ -1349,6 +1355,10 @@ export default class MainBase extends Vue implements ControlInterface {
if
(
this
.
viewparams
){
Object
.
assign
(
arg
,{
viewparams
:
this
.
viewparams
});
}
// 强制补充srfwfmemo
if
(
this
.
srfwfmemo
){
Object
.
assign
(
arg
,{
srfwfmemo
:
this
.
srfwfmemo
});
}
const
result
:
Promise
<
any
>
=
this
.
service
.
wfsubmit
(
_this
.
WFSubmitAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
arg
,
this
.
showBusyIndicator
,
localdata
);
result
.
then
((
response
:
any
)
=>
{
if
(
!
response
||
response
.
status
!==
200
)
{
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/wfgroup/main-grid/main-grid-base.vue
浏览文件 @
dcaf9043
<
template
>
<div
class=
'grid'
style=
"height:100%;"
>
<i-form>
<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)"
...
...
@@ -23,21 +24,36 @@
</
template
>
<
template
v-if=
"getColumnState('groupid')"
>
<el-table-column
show-overflow-tooltip
:prop=
"'groupid'"
:label=
"$t('entities.wfgroup.main_grid.columns.groupid')"
:width=
"250"
:align=
"'left'"
:sortable=
"'custom'"
>
<template
v-slot=
"
{row,column}">
<template
v-slot:header=
"
{column}">
<span
class=
"column-header "
>
{{
$t
(
'entities.wfgroup.main_grid.columns.groupid'
)
}}
</span>
</
template
>
<
template
v-slot=
"{row,column,$index}"
>
<span>
{{
row
.
groupid
}}
</span>
</
template
>
</el-table-column>
</template>
<
template
v-if=
"getColumnState('groupname')"
>
<el-table-column
show-overflow-tooltip
:prop=
"'groupname'"
:label=
"$t('entities.wfgroup.main_grid.columns.groupname')"
:width=
"250"
:align=
"'left'"
:sortable=
"'custom'"
>
<template
v-slot=
"
{row,column}">
<template
v-slot:header=
"
{column}">
<span
class=
"column-header "
>
{{
$t
(
'entities.wfgroup.main_grid.columns.groupname'
)
}}
</span>
</
template
>
<
template
v-slot=
"{row,column,$index}"
>
<span>
{{
row
.
groupname
}}
</span>
</
template
>
</el-table-column>
</template>
<
template
v-if=
"getColumnState('groupscope')"
>
<el-table-column
show-overflow-tooltip
:prop=
"'groupscope'"
:label=
"$t('entities.wfgroup.main_grid.columns.groupscope')"
:width=
"250"
:align=
"'left'"
:sortable=
"'custom'"
>
<template
v-slot=
"
{row,column}">
<template
v-slot:header=
"
{column}">
<span
class=
"column-header "
>
{{
$t
(
'entities.wfgroup.main_grid.columns.groupscope'
)
}}
</span>
</
template
>
<
template
v-slot=
"{row,column,$index}"
>
<span>
{{
row
.
groupscope
}}
</span>
</
template
>
</el-table-column>
...
...
@@ -46,6 +62,7 @@
<el-table-column></el-table-column>
</
template
>
</el-table>
</i-form>
<row
class=
'grid-pagination'
v-show=
"items.length > 0"
>
<page
class=
'pull-right'
@
on-change=
"pageOnChange($event)"
@
on-page-size-change=
"onPageSizeChange($event)"
...
...
@@ -93,6 +110,7 @@ import WFGroupService from '@/service/wfgroup/wfgroup-service';
import
MainService
from
'./main-grid-service'
;
import
CodeListService
from
"@service/app/codelist-service"
;
import
{
FormItemModel
}
from
'@/model/form-detail'
;
@
Component
({
...
...
@@ -540,6 +558,26 @@ export default class MainBase extends Vue implements ControlInterface {
},
]
/**
* 表格模型集合
*
* @type {*}
* @memberof Main
*/
public
gridItemsModel
:
any
[]
=
[];
/**
* 获取表格行模型
*
* @type {*}
* @memberof Main
*/
public
getGridRowModel
(){
return
{
srfkey
:
new
FormItemModel
(),
}
}
/**
* 属性值规则
*
...
...
@@ -553,6 +591,50 @@ export default class MainBase extends Vue implements ControlInterface {
],
}
/**
* 表格行编辑项校验
*
* @param {string} property 属性名
* @param {*} data 行数据
* @param {number} rowIndex 行索引
* @returns Promise<any>
*
* @memberof Main
*/
public
validate
(
property
:
string
,
data
:
any
,
rowIndex
:
number
):
Promise
<
any
>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
this
.
$util
.
validateItem
(
property
,
data
,
this
.
rules
).
then
(()
=>
{
this
.
gridItemsModel
[
rowIndex
][
property
].
setError
(
null
);
resolve
(
true
);
}).
catch
(({
errors
,
fields
})
=>
{
this
.
gridItemsModel
[
rowIndex
][
property
].
setError
(
errors
[
0
].
message
);
resolve
(
false
);
});
});
}
/**
* 校验所有修改过的编辑项
*
* @returns Promise<any>
* @memberof Main
*/
public
async
validateAll
(){
let
validateState
=
true
;
let
index
=
-
1
;
for
(
let
item
of
this
.
items
){
index
++
;
if
(
item
.
rowDataState
===
"create"
||
item
.
rowDataState
===
"update"
){
for
(
let
property
of
Object
.
keys
(
this
.
rules
)){
if
(
!
await
this
.
validate
(
property
,
item
,
index
)){
validateState
=
false
;
}
}
}
}
return
validateState
;
}
/**
* 表格数据加载
*
...
...
@@ -595,8 +677,10 @@ export default class MainBase extends Vue implements ControlInterface {
const
data
:
any
=
response
.
data
;
this
.
totalrow
=
response
.
total
;
this
.
items
=
JSON
.
parse
(
JSON
.
stringify
(
data
));
// 清空selections
// 清空selections
,gridItemsModel
this
.
selections
=
[];
this
.
gridItemsModel
=
[];
this
.
items
.
forEach
(()
=>
{
this
.
gridItemsModel
.
push
(
this
.
getGridRowModel
())});
this
.
$emit
(
'load'
,
this
.
items
);
// 设置默认选中
let
_this
=
this
;
...
...
@@ -645,6 +729,7 @@ export default class MainBase extends Vue implements ControlInterface {
this
.
items
.
some
((
val
:
any
,
num
:
number
)
=>
{
if
(
JSON
.
stringify
(
val
)
==
JSON
.
stringify
(
record
)){
this
.
items
.
splice
(
num
,
1
);
this
.
gridItemsModel
.
splice
(
num
,
1
);
return
true
;
}
});
...
...
@@ -680,8 +765,9 @@ export default class MainBase extends Vue implements ControlInterface {
keys
.
push
(
data
.
srfkey
);
});
let
_removeAction
=
keys
.
length
>
1
?
'removeBatch'
:
this
.
removeAction
;
let
_keys
=
keys
.
length
>
1
?
keys
:
keys
[
0
]
;
const
context
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
));
const
post
:
Promise
<
any
>
=
this
.
service
.
delete
(
_removeAction
,
Object
.
assign
(
context
,{
wfgroup
:
keys
.
join
(
';'
)
}),
Object
.
assign
({
wfgroup
:
keys
.
join
(
';'
)
},{
viewparams
:
this
.
viewparams
}),
this
.
showBusyIndicator
);
const
post
:
Promise
<
any
>
=
this
.
service
.
delete
(
_removeAction
,
Object
.
assign
(
context
,{
wfgroup
:
_keys
}),
Object
.
assign
({
wfgroup
:
_keys
},{
viewparams
:
this
.
viewparams
}),
this
.
showBusyIndicator
);
return
new
Promise
((
resolve
:
any
,
reject
:
any
)
=>
{
post
.
then
((
response
:
any
)
=>
{
if
(
!
response
||
response
.
status
!==
200
)
{
...
...
@@ -696,6 +782,7 @@ export default class MainBase extends Vue implements ControlInterface {
this
.
items
.
some
((
item
:
any
,
index
:
number
)
=>
{
if
(
Object
.
is
(
item
.
srfkey
,
data
.
srfkey
)){
this
.
items
.
splice
(
index
,
1
);
this
.
gridItemsModel
.
splice
(
index
,
1
);
return
true
;
}
});
...
...
@@ -1258,42 +1345,57 @@ export default class MainBase extends Vue implements ControlInterface {
* 保存
*
* @param {*} $event
* @returns {
void
}
* @returns {
Promise<any>
}
* @memberof Main
*/
public
save
(
args
:
any
[],
params
?:
any
,
$event
?:
any
,
xData
?:
any
):
void
{
public
async
save
(
args
:
any
[],
params
?:
any
,
$event
?:
any
,
xData
?:
any
)
{
let
_this
=
this
;
let
promises
:
any
=
[];
_this
.
items
.
forEach
((
item
:
any
)
=>
{
if
(
!
item
.
rowDataState
){
return
;
}
else
if
(
Object
.
is
(
item
.
rowDataState
,
'create'
)){
if
(
!
await
this
.
validateAll
()){
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'值规则校验异常'
});
return
[];
}
let
successItems
:
any
=
[];
let
errorItems
:
any
=
[];
let
errorMessage
:
any
=
[];
for
(
const
item
of
_this
.
items
)
{
try
{
if
(
Object
.
is
(
item
.
rowDataState
,
'create'
)){
if
(
!
this
.
createAction
){
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'WFGroupGridView视图表格createAction参数未配置'
});
return
;
}
}
else
{
Object
.
assign
(
item
,{
viewparams
:
this
.
viewparams
});
promises
.
push
(
this
.
service
.
add
(
this
.
createAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
item
,
this
.
showBusyIndicator
));
let
response
=
await
this
.
service
.
add
(
this
.
createAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
item
,
this
.
showBusyIndicator
);
successItems
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
response
.
data
)));
}
}
else
if
(
Object
.
is
(
item
.
rowDataState
,
'update'
)){
if
(
!
this
.
updateAction
){
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'WFGroupGridView视图表格updateAction参数未配置'
});
return
;
}
}
else
{
Object
.
assign
(
item
,{
viewparams
:
this
.
viewparams
});
if
(
item
.
wfgroup
){
Object
.
assign
(
this
.
context
,{
wfgroup
:
item
.
wfgroup
})
Object
.
assign
(
this
.
context
,{
wfgroup
:
item
.
wfgroup
});
}
promises
.
push
(
this
.
service
.
add
(
this
.
updateAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
item
,
this
.
showBusyIndicator
));
let
response
=
await
this
.
service
.
add
(
this
.
updateAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
item
,
this
.
showBusyIndicator
);
successItems
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
response
.
data
)));
}
});
Promise
.
all
(
promises
).
then
((
response
:
any
)
=>
{
this
.
$emit
(
'save'
,
response
);
this
.
$Notice
.
success
({
title
:
''
,
desc
:
'保存成功!'
});
}
}
catch
(
error
)
{
errorItems
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
item
)));
errorMessage
.
push
(
error
);
}
}
this
.
$emit
(
'save'
,
successItems
);
this
.
refresh
([]);
}).
catch
((
response
:
any
)
=>
{
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'系统异常'
});
if
(
errorItems
.
length
===
0
){
this
.
$Notice
.
success
({
title
:
''
,
desc
:
'保存成功!'
});
}
else
{
errorItems
.
forEach
((
item
:
any
,
index
:
number
)
=>
{
this
.
$Notice
.
error
({
title
:
'保存失败'
,
desc
:
item
.
majorentityname
+
'保存失败!'
});
console
.
error
(
errorMessage
[
index
]);
});
}
return
successItems
;
}
/**
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/wfgroup/main-grid/main-grid.less
浏览文件 @
dcaf9043
...
...
@@ -25,6 +25,10 @@
overflow: hidden;
word-break: break-all;
}
.el-table-column--selection .cell {
padding-left: 0px;
padding-right: 0px;
}
.app-column-link, .app-format-data{
display: inline;
}
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/wfmember/main-form/main-form-base.vue
浏览文件 @
dcaf9043
<
template
>
<i-form
:model=
"this.data"
class=
'app-form'
ref=
'form'
id=
'
form
'
style=
""
>
<i-form
:model=
"this.data"
class=
'app-form'
ref=
'form'
id=
'
wfmember_main
'
style=
""
>
<input
style=
"display:none;"
/>
<row
>
...
...
@@ -169,6 +169,12 @@ export default class MainBase extends Vue implements ControlInterface {
}
/**
* 工作流审批意见控件绑定值
*
* @memberof Main
*/
public
srfwfmemo
:
string
=
""
;
/**
* 获取多项数据
...
...
@@ -984,7 +990,7 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public
print
(){
let
_this
:
any
=
this
;
_this
.
$print
({
id
:
'
form
'
,
popTitle
:
'主编辑表单'
});
_this
.
$print
({
id
:
'
wfmember_main
'
,
popTitle
:
'主编辑表单'
});
}
/**
...
...
@@ -1357,6 +1363,10 @@ export default class MainBase extends Vue implements ControlInterface {
if
(
this
.
viewparams
){
Object
.
assign
(
arg
,{
viewparams
:
this
.
viewparams
});
}
// 强制补充srfwfmemo
if
(
this
.
srfwfmemo
){
Object
.
assign
(
arg
,{
srfwfmemo
:
this
.
srfwfmemo
});
}
const
result
:
Promise
<
any
>
=
this
.
service
.
wfsubmit
(
_this
.
WFSubmitAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
arg
,
this
.
showBusyIndicator
,
localdata
);
result
.
then
((
response
:
any
)
=>
{
if
(
!
response
||
response
.
status
!==
200
)
{
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/wfmember/main-grid/main-grid-base.vue
浏览文件 @
dcaf9043
<
template
>
<div
class=
'grid'
style=
"height:100%;"
>
<i-form>
<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)"
...
...
@@ -23,14 +24,24 @@
</
template
>
<
template
v-if=
"getColumnState('personname')"
>
<el-table-column
show-overflow-tooltip
:prop=
"'personname'"
:label=
"$t('entities.wfmember.main_grid.columns.personname')"
:width=
"250"
:align=
"'left'"
:sortable=
"'custom'"
>
<template
v-slot=
"
{row,column}">
<template
v-slot:header=
"
{column}">
<span
class=
"column-header "
>
{{
$t
(
'entities.wfmember.main_grid.columns.personname'
)
}}
</span>
</
template
>
<
template
v-slot=
"{row,column,$index}"
>
<span>
{{
row
.
personname
}}
</span>
</
template
>
</el-table-column>
</template>
<
template
v-if=
"getColumnState('groupname')"
>
<el-table-column
show-overflow-tooltip
:prop=
"'groupname'"
:label=
"$t('entities.wfmember.main_grid.columns.groupname')"
:width=
"250"
:align=
"'left'"
:sortable=
"'custom'"
>
<template
v-slot=
"
{row,column}">
<template
v-slot:header=
"
{column}">
<span
class=
"column-header "
>
{{
$t
(
'entities.wfmember.main_grid.columns.groupname'
)
}}
</span>
</
template
>
<
template
v-slot=
"{row,column,$index}"
>
<span>
{{
row
.
groupname
}}
</span>
</
template
>
</el-table-column>
...
...
@@ -39,6 +50,7 @@
<el-table-column></el-table-column>
</
template
>
</el-table>
</i-form>
<row
class=
'grid-pagination'
v-show=
"items.length > 0"
>
<page
class=
'pull-right'
@
on-change=
"pageOnChange($event)"
@
on-page-size-change=
"onPageSizeChange($event)"
...
...
@@ -86,6 +98,7 @@ import WFMemberService from '@/service/wfmember/wfmember-service';
import
MainService
from
'./main-grid-service'
;
import
CodeListService
from
"@service/app/codelist-service"
;
import
{
FormItemModel
}
from
'@/model/form-detail'
;
@
Component
({
...
...
@@ -526,6 +539,26 @@ export default class MainBase extends Vue implements ControlInterface {
},
]
/**
* 表格模型集合
*
* @type {*}
* @memberof Main
*/
public
gridItemsModel
:
any
[]
=
[];
/**
* 获取表格行模型
*
* @type {*}
* @memberof Main
*/
public
getGridRowModel
(){
return
{
srfkey
:
new
FormItemModel
(),
}
}
/**
* 属性值规则
*
...
...
@@ -539,6 +572,50 @@ export default class MainBase extends Vue implements ControlInterface {
],
}
/**
* 表格行编辑项校验
*
* @param {string} property 属性名
* @param {*} data 行数据
* @param {number} rowIndex 行索引
* @returns Promise<any>
*
* @memberof Main
*/
public
validate
(
property
:
string
,
data
:
any
,
rowIndex
:
number
):
Promise
<
any
>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
this
.
$util
.
validateItem
(
property
,
data
,
this
.
rules
).
then
(()
=>
{
this
.
gridItemsModel
[
rowIndex
][
property
].
setError
(
null
);
resolve
(
true
);
}).
catch
(({
errors
,
fields
})
=>
{
this
.
gridItemsModel
[
rowIndex
][
property
].
setError
(
errors
[
0
].
message
);
resolve
(
false
);
});
});
}
/**
* 校验所有修改过的编辑项
*
* @returns Promise<any>
* @memberof Main
*/
public
async
validateAll
(){
let
validateState
=
true
;
let
index
=
-
1
;
for
(
let
item
of
this
.
items
){
index
++
;
if
(
item
.
rowDataState
===
"create"
||
item
.
rowDataState
===
"update"
){
for
(
let
property
of
Object
.
keys
(
this
.
rules
)){
if
(
!
await
this
.
validate
(
property
,
item
,
index
)){
validateState
=
false
;
}
}
}
}
return
validateState
;
}
/**
* 表格数据加载
*
...
...
@@ -581,8 +658,10 @@ export default class MainBase extends Vue implements ControlInterface {
const
data
:
any
=
response
.
data
;
this
.
totalrow
=
response
.
total
;
this
.
items
=
JSON
.
parse
(
JSON
.
stringify
(
data
));
// 清空selections
// 清空selections
,gridItemsModel
this
.
selections
=
[];
this
.
gridItemsModel
=
[];
this
.
items
.
forEach
(()
=>
{
this
.
gridItemsModel
.
push
(
this
.
getGridRowModel
())});
this
.
$emit
(
'load'
,
this
.
items
);
// 设置默认选中
let
_this
=
this
;
...
...
@@ -631,6 +710,7 @@ export default class MainBase extends Vue implements ControlInterface {
this
.
items
.
some
((
val
:
any
,
num
:
number
)
=>
{
if
(
JSON
.
stringify
(
val
)
==
JSON
.
stringify
(
record
)){
this
.
items
.
splice
(
num
,
1
);
this
.
gridItemsModel
.
splice
(
num
,
1
);
return
true
;
}
});
...
...
@@ -666,8 +746,9 @@ export default class MainBase extends Vue implements ControlInterface {
keys
.
push
(
data
.
srfkey
);
});
let
_removeAction
=
keys
.
length
>
1
?
'removeBatch'
:
this
.
removeAction
;
let
_keys
=
keys
.
length
>
1
?
keys
:
keys
[
0
]
;
const
context
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
));
const
post
:
Promise
<
any
>
=
this
.
service
.
delete
(
_removeAction
,
Object
.
assign
(
context
,{
wfmember
:
keys
.
join
(
';'
)
}),
Object
.
assign
({
wfmember
:
keys
.
join
(
';'
)
},{
viewparams
:
this
.
viewparams
}),
this
.
showBusyIndicator
);
const
post
:
Promise
<
any
>
=
this
.
service
.
delete
(
_removeAction
,
Object
.
assign
(
context
,{
wfmember
:
_keys
}),
Object
.
assign
({
wfmember
:
_keys
},{
viewparams
:
this
.
viewparams
}),
this
.
showBusyIndicator
);
return
new
Promise
((
resolve
:
any
,
reject
:
any
)
=>
{
post
.
then
((
response
:
any
)
=>
{
if
(
!
response
||
response
.
status
!==
200
)
{
...
...
@@ -682,6 +763,7 @@ export default class MainBase extends Vue implements ControlInterface {
this
.
items
.
some
((
item
:
any
,
index
:
number
)
=>
{
if
(
Object
.
is
(
item
.
srfkey
,
data
.
srfkey
)){
this
.
items
.
splice
(
index
,
1
);
this
.
gridItemsModel
.
splice
(
index
,
1
);
return
true
;
}
});
...
...
@@ -1244,42 +1326,57 @@ export default class MainBase extends Vue implements ControlInterface {
* 保存
*
* @param {*} $event
* @returns {
void
}
* @returns {
Promise<any>
}
* @memberof Main
*/
public
save
(
args
:
any
[],
params
?:
any
,
$event
?:
any
,
xData
?:
any
):
void
{
public
async
save
(
args
:
any
[],
params
?:
any
,
$event
?:
any
,
xData
?:
any
)
{
let
_this
=
this
;
let
promises
:
any
=
[];
_this
.
items
.
forEach
((
item
:
any
)
=>
{
if
(
!
item
.
rowDataState
){
return
;
}
else
if
(
Object
.
is
(
item
.
rowDataState
,
'create'
)){
if
(
!
await
this
.
validateAll
()){
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'值规则校验异常'
});
return
[];
}
let
successItems
:
any
=
[];
let
errorItems
:
any
=
[];
let
errorMessage
:
any
=
[];
for
(
const
item
of
_this
.
items
)
{
try
{
if
(
Object
.
is
(
item
.
rowDataState
,
'create'
)){
if
(
!
this
.
createAction
){
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'WFMemberGridView视图表格createAction参数未配置'
});
return
;
}
}
else
{
Object
.
assign
(
item
,{
viewparams
:
this
.
viewparams
});
promises
.
push
(
this
.
service
.
add
(
this
.
createAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
item
,
this
.
showBusyIndicator
));
let
response
=
await
this
.
service
.
add
(
this
.
createAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
item
,
this
.
showBusyIndicator
);
successItems
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
response
.
data
)));
}
}
else
if
(
Object
.
is
(
item
.
rowDataState
,
'update'
)){
if
(
!
this
.
updateAction
){
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'WFMemberGridView视图表格updateAction参数未配置'
});
return
;
}
}
else
{
Object
.
assign
(
item
,{
viewparams
:
this
.
viewparams
});
if
(
item
.
wfmember
){
Object
.
assign
(
this
.
context
,{
wfmember
:
item
.
wfmember
})
Object
.
assign
(
this
.
context
,{
wfmember
:
item
.
wfmember
});
}
promises
.
push
(
this
.
service
.
add
(
this
.
updateAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
item
,
this
.
showBusyIndicator
));
let
response
=
await
this
.
service
.
add
(
this
.
updateAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
item
,
this
.
showBusyIndicator
);
successItems
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
response
.
data
)));
}
});
Promise
.
all
(
promises
).
then
((
response
:
any
)
=>
{
this
.
$emit
(
'save'
,
response
);
this
.
$Notice
.
success
({
title
:
''
,
desc
:
'保存成功!'
});
}
}
catch
(
error
)
{
errorItems
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
item
)));
errorMessage
.
push
(
error
);
}
}
this
.
$emit
(
'save'
,
successItems
);
this
.
refresh
([]);
}).
catch
((
response
:
any
)
=>
{
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'系统异常'
});
if
(
errorItems
.
length
===
0
){
this
.
$Notice
.
success
({
title
:
''
,
desc
:
'保存成功!'
});
}
else
{
errorItems
.
forEach
((
item
:
any
,
index
:
number
)
=>
{
this
.
$Notice
.
error
({
title
:
'保存失败'
,
desc
:
item
.
majorentityname
+
'保存失败!'
});
console
.
error
(
errorMessage
[
index
]);
});
}
return
successItems
;
}
/**
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/wfmember/main-grid/main-grid.less
浏览文件 @
dcaf9043
...
...
@@ -25,6 +25,10 @@
overflow: hidden;
word-break: break-all;
}
.el-table-column--selection .cell {
padding-left: 0px;
padding-right: 0px;
}
.app-column-link, .app-format-data{
display: inline;
}
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/wfprocess-definition/main-form/main-form-base.vue
浏览文件 @
dcaf9043
<
template
>
<i-form
:model=
"this.data"
class=
'app-form'
ref=
'form'
id=
'
form
'
style=
""
>
<i-form
:model=
"this.data"
class=
'app-form'
ref=
'form'
id=
'
wfprocessdefinition_main
'
style=
""
>
<input
style=
"display:none;"
/>
<row
>
...
...
@@ -186,6 +186,12 @@ export default class MainBase extends Vue implements ControlInterface {
}
/**
* 工作流审批意见控件绑定值
*
* @memberof Main
*/
public
srfwfmemo
:
string
=
""
;
/**
* 获取多项数据
...
...
@@ -1089,7 +1095,7 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public
print
(){
let
_this
:
any
=
this
;
_this
.
$print
({
id
:
'
form
'
,
popTitle
:
'主编辑表单'
});
_this
.
$print
({
id
:
'
wfprocessdefinition_main
'
,
popTitle
:
'主编辑表单'
});
}
/**
...
...
@@ -1462,6 +1468,10 @@ export default class MainBase extends Vue implements ControlInterface {
if
(
this
.
viewparams
){
Object
.
assign
(
arg
,{
viewparams
:
this
.
viewparams
});
}
// 强制补充srfwfmemo
if
(
this
.
srfwfmemo
){
Object
.
assign
(
arg
,{
srfwfmemo
:
this
.
srfwfmemo
});
}
const
result
:
Promise
<
any
>
=
this
.
service
.
wfsubmit
(
_this
.
WFSubmitAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
arg
,
this
.
showBusyIndicator
,
localdata
);
result
.
then
((
response
:
any
)
=>
{
if
(
!
response
||
response
.
status
!==
200
)
{
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/wfprocess-definition/main-grid/main-grid-base.vue
浏览文件 @
dcaf9043
<
template
>
<div
class=
'grid'
style=
"height:100%;"
>
<i-form>
<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)"
...
...
@@ -23,35 +24,60 @@
</
template
>
<
template
v-if=
"getColumnState('definitionkey')"
>
<el-table-column
show-overflow-tooltip
:prop=
"'definitionkey'"
:label=
"$t('entities.wfprocessdefinition.main_grid.columns.definitionkey')"
:width=
"250"
:align=
"'left'"
:sortable=
"'custom'"
>
<template
v-slot=
"
{row,column}">
<template
v-slot:header=
"
{column}">
<span
class=
"column-header "
>
{{
$t
(
'entities.wfprocessdefinition.main_grid.columns.definitionkey'
)
}}
</span>
</
template
>
<
template
v-slot=
"{row,column,$index}"
>
<span>
{{
row
.
definitionkey
}}
</span>
</
template
>
</el-table-column>
</template>
<
template
v-if=
"getColumnState('definitionname')"
>
<el-table-column
show-overflow-tooltip
:prop=
"'definitionname'"
:label=
"$t('entities.wfprocessdefinition.main_grid.columns.definitionname')"
:width=
"250"
:align=
"'left'"
:sortable=
"'custom'"
>
<template
v-slot=
"
{row,column}">
<template
v-slot:header=
"
{column}">
<span
class=
"column-header "
>
{{
$t
(
'entities.wfprocessdefinition.main_grid.columns.definitionname'
)
}}
</span>
</
template
>
<
template
v-slot=
"{row,column,$index}"
>
<span>
{{
row
.
definitionname
}}
</span>
</
template
>
</el-table-column>
</template>
<
template
v-if=
"getColumnState('pssystemid')"
>
<el-table-column
show-overflow-tooltip
:prop=
"'pssystemid'"
:label=
"$t('entities.wfprocessdefinition.main_grid.columns.pssystemid')"
:width=
"250"
:align=
"'left'"
:sortable=
"'custom'"
>
<template
v-slot=
"
{row,column}">
<template
v-slot:header=
"
{column}">
<span
class=
"column-header "
>
{{
$t
(
'entities.wfprocessdefinition.main_grid.columns.pssystemid'
)
}}
</span>
</
template
>
<
template
v-slot=
"{row,column,$index}"
>
<span>
{{
row
.
pssystemid
}}
</span>
</
template
>
</el-table-column>
</template>
<
template
v-if=
"getColumnState('modelversion')"
>
<el-table-column
show-overflow-tooltip
:prop=
"'modelversion'"
:label=
"$t('entities.wfprocessdefinition.main_grid.columns.modelversion')"
:width=
"150"
:align=
"'left'"
:sortable=
"'custom'"
>
<template
v-slot=
"
{row,column}">
<template
v-slot:header=
"
{column}">
<span
class=
"column-header "
>
{{
$t
(
'entities.wfprocessdefinition.main_grid.columns.modelversion'
)
}}
</span>
</
template
>
<
template
v-slot=
"{row,column,$index}"
>
<span>
{{
row
.
modelversion
}}
</span>
</
template
>
</el-table-column>
</template>
<
template
v-if=
"getColumnState('modelenable')"
>
<el-table-column
show-overflow-tooltip
:prop=
"'modelenable'"
:label=
"$t('entities.wfprocessdefinition.main_grid.columns.modelenable')"
:width=
"250"
:align=
"'left'"
:sortable=
"'custom'"
>
<template
v-slot=
"
{row,column}">
<template
v-slot:header=
"
{column}">
<span
class=
"column-header "
>
{{
$t
(
'entities.wfprocessdefinition.main_grid.columns.modelenable'
)
}}
</span>
</
template
>
<
template
v-slot=
"{row,column,$index}"
>
<template
>
<codelist
:value=
"row.modelenable"
tag=
'YesNo'
codelistType=
'STATIC'
></codelist>
</
template
>
...
...
@@ -62,6 +88,7 @@
<el-table-column></el-table-column>
</
template
>
</el-table>
</i-form>
<row
class=
'grid-pagination'
v-show=
"items.length > 0"
>
<page
class=
'pull-right'
@
on-change=
"pageOnChange($event)"
@
on-page-size-change=
"onPageSizeChange($event)"
...
...
@@ -109,6 +136,7 @@ import WFProcessDefinitionService from '@/service/wfprocess-definition/wfprocess
import
MainService
from
'./main-grid-service'
;
import
CodeListService
from
"@service/app/codelist-service"
;
import
{
FormItemModel
}
from
'@/model/form-detail'
;
@
Component
({
...
...
@@ -570,6 +598,26 @@ export default class MainBase extends Vue implements ControlInterface {
},
]
/**
* 表格模型集合
*
* @type {*}
* @memberof Main
*/
public
gridItemsModel
:
any
[]
=
[];
/**
* 获取表格行模型
*
* @type {*}
* @memberof Main
*/
public
getGridRowModel
(){
return
{
srfkey
:
new
FormItemModel
(),
}
}
/**
* 属性值规则
*
...
...
@@ -583,6 +631,50 @@ export default class MainBase extends Vue implements ControlInterface {
],
}
/**
* 表格行编辑项校验
*
* @param {string} property 属性名
* @param {*} data 行数据
* @param {number} rowIndex 行索引
* @returns Promise<any>
*
* @memberof Main
*/
public
validate
(
property
:
string
,
data
:
any
,
rowIndex
:
number
):
Promise
<
any
>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
this
.
$util
.
validateItem
(
property
,
data
,
this
.
rules
).
then
(()
=>
{
this
.
gridItemsModel
[
rowIndex
][
property
].
setError
(
null
);
resolve
(
true
);
}).
catch
(({
errors
,
fields
})
=>
{
this
.
gridItemsModel
[
rowIndex
][
property
].
setError
(
errors
[
0
].
message
);
resolve
(
false
);
});
});
}
/**
* 校验所有修改过的编辑项
*
* @returns Promise<any>
* @memberof Main
*/
public
async
validateAll
(){
let
validateState
=
true
;
let
index
=
-
1
;
for
(
let
item
of
this
.
items
){
index
++
;
if
(
item
.
rowDataState
===
"create"
||
item
.
rowDataState
===
"update"
){
for
(
let
property
of
Object
.
keys
(
this
.
rules
)){
if
(
!
await
this
.
validate
(
property
,
item
,
index
)){
validateState
=
false
;
}
}
}
}
return
validateState
;
}
/**
* 表格数据加载
*
...
...
@@ -625,8 +717,10 @@ export default class MainBase extends Vue implements ControlInterface {
const
data
:
any
=
response
.
data
;
this
.
totalrow
=
response
.
total
;
this
.
items
=
JSON
.
parse
(
JSON
.
stringify
(
data
));
// 清空selections
// 清空selections
,gridItemsModel
this
.
selections
=
[];
this
.
gridItemsModel
=
[];
this
.
items
.
forEach
(()
=>
{
this
.
gridItemsModel
.
push
(
this
.
getGridRowModel
())});
this
.
$emit
(
'load'
,
this
.
items
);
// 设置默认选中
let
_this
=
this
;
...
...
@@ -675,6 +769,7 @@ export default class MainBase extends Vue implements ControlInterface {
this
.
items
.
some
((
val
:
any
,
num
:
number
)
=>
{
if
(
JSON
.
stringify
(
val
)
==
JSON
.
stringify
(
record
)){
this
.
items
.
splice
(
num
,
1
);
this
.
gridItemsModel
.
splice
(
num
,
1
);
return
true
;
}
});
...
...
@@ -710,8 +805,9 @@ export default class MainBase extends Vue implements ControlInterface {
keys
.
push
(
data
.
srfkey
);
});
let
_removeAction
=
keys
.
length
>
1
?
'removeBatch'
:
this
.
removeAction
;
let
_keys
=
keys
.
length
>
1
?
keys
:
keys
[
0
]
;
const
context
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
));
const
post
:
Promise
<
any
>
=
this
.
service
.
delete
(
_removeAction
,
Object
.
assign
(
context
,{
wfprocessdefinition
:
keys
.
join
(
';'
)
}),
Object
.
assign
({
wfprocessdefinition
:
keys
.
join
(
';'
)
},{
viewparams
:
this
.
viewparams
}),
this
.
showBusyIndicator
);
const
post
:
Promise
<
any
>
=
this
.
service
.
delete
(
_removeAction
,
Object
.
assign
(
context
,{
wfprocessdefinition
:
_keys
}),
Object
.
assign
({
wfprocessdefinition
:
_keys
},{
viewparams
:
this
.
viewparams
}),
this
.
showBusyIndicator
);
return
new
Promise
((
resolve
:
any
,
reject
:
any
)
=>
{
post
.
then
((
response
:
any
)
=>
{
if
(
!
response
||
response
.
status
!==
200
)
{
...
...
@@ -726,6 +822,7 @@ export default class MainBase extends Vue implements ControlInterface {
this
.
items
.
some
((
item
:
any
,
index
:
number
)
=>
{
if
(
Object
.
is
(
item
.
srfkey
,
data
.
srfkey
)){
this
.
items
.
splice
(
index
,
1
);
this
.
gridItemsModel
.
splice
(
index
,
1
);
return
true
;
}
});
...
...
@@ -1296,42 +1393,57 @@ export default class MainBase extends Vue implements ControlInterface {
* 保存
*
* @param {*} $event
* @returns {
void
}
* @returns {
Promise<any>
}
* @memberof Main
*/
public
save
(
args
:
any
[],
params
?:
any
,
$event
?:
any
,
xData
?:
any
):
void
{
public
async
save
(
args
:
any
[],
params
?:
any
,
$event
?:
any
,
xData
?:
any
)
{
let
_this
=
this
;
let
promises
:
any
=
[];
_this
.
items
.
forEach
((
item
:
any
)
=>
{
if
(
!
item
.
rowDataState
){
return
;
}
else
if
(
Object
.
is
(
item
.
rowDataState
,
'create'
)){
if
(
!
await
this
.
validateAll
()){
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'值规则校验异常'
});
return
[];
}
let
successItems
:
any
=
[];
let
errorItems
:
any
=
[];
let
errorMessage
:
any
=
[];
for
(
const
item
of
_this
.
items
)
{
try
{
if
(
Object
.
is
(
item
.
rowDataState
,
'create'
)){
if
(
!
this
.
createAction
){
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'WFProcessDefinitionGridView视图表格createAction参数未配置'
});
return
;
}
}
else
{
Object
.
assign
(
item
,{
viewparams
:
this
.
viewparams
});
promises
.
push
(
this
.
service
.
add
(
this
.
createAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
item
,
this
.
showBusyIndicator
));
let
response
=
await
this
.
service
.
add
(
this
.
createAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
item
,
this
.
showBusyIndicator
);
successItems
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
response
.
data
)));
}
}
else
if
(
Object
.
is
(
item
.
rowDataState
,
'update'
)){
if
(
!
this
.
updateAction
){
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'WFProcessDefinitionGridView视图表格updateAction参数未配置'
});
return
;
}
}
else
{
Object
.
assign
(
item
,{
viewparams
:
this
.
viewparams
});
if
(
item
.
wfprocessdefinition
){
Object
.
assign
(
this
.
context
,{
wfprocessdefinition
:
item
.
wfprocessdefinition
})
Object
.
assign
(
this
.
context
,{
wfprocessdefinition
:
item
.
wfprocessdefinition
});
}
promises
.
push
(
this
.
service
.
add
(
this
.
updateAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
item
,
this
.
showBusyIndicator
));
let
response
=
await
this
.
service
.
add
(
this
.
updateAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
item
,
this
.
showBusyIndicator
);
successItems
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
response
.
data
)));
}
});
Promise
.
all
(
promises
).
then
((
response
:
any
)
=>
{
this
.
$emit
(
'save'
,
response
);
this
.
$Notice
.
success
({
title
:
''
,
desc
:
'保存成功!'
});
}
}
catch
(
error
)
{
errorItems
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
item
)));
errorMessage
.
push
(
error
);
}
}
this
.
$emit
(
'save'
,
successItems
);
this
.
refresh
([]);
}).
catch
((
response
:
any
)
=>
{
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'系统异常'
});
if
(
errorItems
.
length
===
0
){
this
.
$Notice
.
success
({
title
:
''
,
desc
:
'保存成功!'
});
}
else
{
errorItems
.
forEach
((
item
:
any
,
index
:
number
)
=>
{
this
.
$Notice
.
error
({
title
:
'保存失败'
,
desc
:
item
.
majorentityname
+
'保存失败!'
});
console
.
error
(
errorMessage
[
index
]);
});
}
return
successItems
;
}
/**
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/wfprocess-definition/main-grid/main-grid.less
浏览文件 @
dcaf9043
...
...
@@ -25,6 +25,10 @@
overflow: hidden;
word-break: break-all;
}
.el-table-column--selection .cell {
padding-left: 0px;
padding-right: 0px;
}
.app-column-link, .app-format-data{
display: inline;
}
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/wfremodel/main-form/main-form-base.vue
浏览文件 @
dcaf9043
<
template
>
<i-form
:model=
"this.data"
class=
'app-form'
ref=
'form'
id=
'
form
'
style=
""
>
<i-form
:model=
"this.data"
class=
'app-form'
ref=
'form'
id=
'
wfremodel_main
'
style=
""
>
<input
style=
"display:none;"
/>
<row
>
...
...
@@ -150,6 +150,12 @@ export default class MainBase extends Vue implements ControlInterface {
}
/**
* 工作流审批意见控件绑定值
*
* @memberof Main
*/
public
srfwfmemo
:
string
=
""
;
/**
* 获取多项数据
...
...
@@ -921,7 +927,7 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public
print
(){
let
_this
:
any
=
this
;
_this
.
$print
({
id
:
'
form
'
,
popTitle
:
'主编辑表单'
});
_this
.
$print
({
id
:
'
wfremodel_main
'
,
popTitle
:
'主编辑表单'
});
}
/**
...
...
@@ -1294,6 +1300,10 @@ export default class MainBase extends Vue implements ControlInterface {
if
(
this
.
viewparams
){
Object
.
assign
(
arg
,{
viewparams
:
this
.
viewparams
});
}
// 强制补充srfwfmemo
if
(
this
.
srfwfmemo
){
Object
.
assign
(
arg
,{
srfwfmemo
:
this
.
srfwfmemo
});
}
const
result
:
Promise
<
any
>
=
this
.
service
.
wfsubmit
(
_this
.
WFSubmitAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
arg
,
this
.
showBusyIndicator
,
localdata
);
result
.
then
((
response
:
any
)
=>
{
if
(
!
response
||
response
.
status
!==
200
)
{
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/wfuser/main-form/main-form-base.vue
浏览文件 @
dcaf9043
<
template
>
<i-form
:model=
"this.data"
class=
'app-form'
ref=
'form'
id=
'
form
'
style=
""
>
<i-form
:model=
"this.data"
class=
'app-form'
ref=
'form'
id=
'
wfuser_main
'
style=
""
>
<input
style=
"display:none;"
/>
<row
>
...
...
@@ -156,6 +156,12 @@ export default class MainBase extends Vue implements ControlInterface {
}
/**
* 工作流审批意见控件绑定值
*
* @memberof Main
*/
public
srfwfmemo
:
string
=
""
;
/**
* 获取多项数据
...
...
@@ -949,7 +955,7 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public
print
(){
let
_this
:
any
=
this
;
_this
.
$print
({
id
:
'
form
'
,
popTitle
:
'主编辑表单'
});
_this
.
$print
({
id
:
'
wfuser_main
'
,
popTitle
:
'主编辑表单'
});
}
/**
...
...
@@ -1322,6 +1328,10 @@ export default class MainBase extends Vue implements ControlInterface {
if
(
this
.
viewparams
){
Object
.
assign
(
arg
,{
viewparams
:
this
.
viewparams
});
}
// 强制补充srfwfmemo
if
(
this
.
srfwfmemo
){
Object
.
assign
(
arg
,{
srfwfmemo
:
this
.
srfwfmemo
});
}
const
result
:
Promise
<
any
>
=
this
.
service
.
wfsubmit
(
_this
.
WFSubmitAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
arg
,
this
.
showBusyIndicator
,
localdata
);
result
.
then
((
response
:
any
)
=>
{
if
(
!
response
||
response
.
status
!==
200
)
{
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/wfuser/main-grid/main-grid-base.vue
浏览文件 @
dcaf9043
<
template
>
<div
class=
'grid'
style=
"height:100%;"
>
<i-form>
<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)"
...
...
@@ -23,21 +24,36 @@
</
template
>
<
template
v-if=
"getColumnState('userid')"
>
<el-table-column
show-overflow-tooltip
:prop=
"'userid'"
:label=
"$t('entities.wfuser.main_grid.columns.userid')"
:width=
"250"
:align=
"'left'"
:sortable=
"'custom'"
>
<template
v-slot=
"
{row,column}">
<template
v-slot:header=
"
{column}">
<span
class=
"column-header "
>
{{
$t
(
'entities.wfuser.main_grid.columns.userid'
)
}}
</span>
</
template
>
<
template
v-slot=
"{row,column,$index}"
>
<span>
{{
row
.
userid
}}
</span>
</
template
>
</el-table-column>
</template>
<
template
v-if=
"getColumnState('personname')"
>
<el-table-column
show-overflow-tooltip
:prop=
"'personname'"
:label=
"$t('entities.wfuser.main_grid.columns.personname')"
:width=
"250"
:align=
"'left'"
:sortable=
"'custom'"
>
<template
v-slot=
"
{row,column}">
<template
v-slot:header=
"
{column}">
<span
class=
"column-header "
>
{{
$t
(
'entities.wfuser.main_grid.columns.personname'
)
}}
</span>
</
template
>
<
template
v-slot=
"{row,column,$index}"
>
<span>
{{
row
.
personname
}}
</span>
</
template
>
</el-table-column>
</template>
<
template
v-if=
"getColumnState('username')"
>
<el-table-column
show-overflow-tooltip
:prop=
"'username'"
:label=
"$t('entities.wfuser.main_grid.columns.username')"
:width=
"250"
:align=
"'left'"
:sortable=
"'custom'"
>
<template
v-slot=
"
{row,column}">
<template
v-slot:header=
"
{column}">
<span
class=
"column-header "
>
{{
$t
(
'entities.wfuser.main_grid.columns.username'
)
}}
</span>
</
template
>
<
template
v-slot=
"{row,column,$index}"
>
<span>
{{
row
.
username
}}
</span>
</
template
>
</el-table-column>
...
...
@@ -46,6 +62,7 @@
<el-table-column></el-table-column>
</
template
>
</el-table>
</i-form>
<row
class=
'grid-pagination'
v-show=
"items.length > 0"
>
<page
class=
'pull-right'
@
on-change=
"pageOnChange($event)"
@
on-page-size-change=
"onPageSizeChange($event)"
...
...
@@ -93,6 +110,7 @@ import WFUserService from '@/service/wfuser/wfuser-service';
import
MainService
from
'./main-grid-service'
;
import
CodeListService
from
"@service/app/codelist-service"
;
import
{
FormItemModel
}
from
'@/model/form-detail'
;
@
Component
({
...
...
@@ -540,6 +558,26 @@ export default class MainBase extends Vue implements ControlInterface {
},
]
/**
* 表格模型集合
*
* @type {*}
* @memberof Main
*/
public
gridItemsModel
:
any
[]
=
[];
/**
* 获取表格行模型
*
* @type {*}
* @memberof Main
*/
public
getGridRowModel
(){
return
{
srfkey
:
new
FormItemModel
(),
}
}
/**
* 属性值规则
*
...
...
@@ -553,6 +591,50 @@ export default class MainBase extends Vue implements ControlInterface {
],
}
/**
* 表格行编辑项校验
*
* @param {string} property 属性名
* @param {*} data 行数据
* @param {number} rowIndex 行索引
* @returns Promise<any>
*
* @memberof Main
*/
public
validate
(
property
:
string
,
data
:
any
,
rowIndex
:
number
):
Promise
<
any
>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
this
.
$util
.
validateItem
(
property
,
data
,
this
.
rules
).
then
(()
=>
{
this
.
gridItemsModel
[
rowIndex
][
property
].
setError
(
null
);
resolve
(
true
);
}).
catch
(({
errors
,
fields
})
=>
{
this
.
gridItemsModel
[
rowIndex
][
property
].
setError
(
errors
[
0
].
message
);
resolve
(
false
);
});
});
}
/**
* 校验所有修改过的编辑项
*
* @returns Promise<any>
* @memberof Main
*/
public
async
validateAll
(){
let
validateState
=
true
;
let
index
=
-
1
;
for
(
let
item
of
this
.
items
){
index
++
;
if
(
item
.
rowDataState
===
"create"
||
item
.
rowDataState
===
"update"
){
for
(
let
property
of
Object
.
keys
(
this
.
rules
)){
if
(
!
await
this
.
validate
(
property
,
item
,
index
)){
validateState
=
false
;
}
}
}
}
return
validateState
;
}
/**
* 表格数据加载
*
...
...
@@ -595,8 +677,10 @@ export default class MainBase extends Vue implements ControlInterface {
const
data
:
any
=
response
.
data
;
this
.
totalrow
=
response
.
total
;
this
.
items
=
JSON
.
parse
(
JSON
.
stringify
(
data
));
// 清空selections
// 清空selections
,gridItemsModel
this
.
selections
=
[];
this
.
gridItemsModel
=
[];
this
.
items
.
forEach
(()
=>
{
this
.
gridItemsModel
.
push
(
this
.
getGridRowModel
())});
this
.
$emit
(
'load'
,
this
.
items
);
// 设置默认选中
let
_this
=
this
;
...
...
@@ -645,6 +729,7 @@ export default class MainBase extends Vue implements ControlInterface {
this
.
items
.
some
((
val
:
any
,
num
:
number
)
=>
{
if
(
JSON
.
stringify
(
val
)
==
JSON
.
stringify
(
record
)){
this
.
items
.
splice
(
num
,
1
);
this
.
gridItemsModel
.
splice
(
num
,
1
);
return
true
;
}
});
...
...
@@ -680,8 +765,9 @@ export default class MainBase extends Vue implements ControlInterface {
keys
.
push
(
data
.
srfkey
);
});
let
_removeAction
=
keys
.
length
>
1
?
'removeBatch'
:
this
.
removeAction
;
let
_keys
=
keys
.
length
>
1
?
keys
:
keys
[
0
]
;
const
context
:
any
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
));
const
post
:
Promise
<
any
>
=
this
.
service
.
delete
(
_removeAction
,
Object
.
assign
(
context
,{
wfuser
:
keys
.
join
(
';'
)
}),
Object
.
assign
({
wfuser
:
keys
.
join
(
';'
)
},{
viewparams
:
this
.
viewparams
}),
this
.
showBusyIndicator
);
const
post
:
Promise
<
any
>
=
this
.
service
.
delete
(
_removeAction
,
Object
.
assign
(
context
,{
wfuser
:
_keys
}),
Object
.
assign
({
wfuser
:
_keys
},{
viewparams
:
this
.
viewparams
}),
this
.
showBusyIndicator
);
return
new
Promise
((
resolve
:
any
,
reject
:
any
)
=>
{
post
.
then
((
response
:
any
)
=>
{
if
(
!
response
||
response
.
status
!==
200
)
{
...
...
@@ -696,6 +782,7 @@ export default class MainBase extends Vue implements ControlInterface {
this
.
items
.
some
((
item
:
any
,
index
:
number
)
=>
{
if
(
Object
.
is
(
item
.
srfkey
,
data
.
srfkey
)){
this
.
items
.
splice
(
index
,
1
);
this
.
gridItemsModel
.
splice
(
index
,
1
);
return
true
;
}
});
...
...
@@ -1258,42 +1345,57 @@ export default class MainBase extends Vue implements ControlInterface {
* 保存
*
* @param {*} $event
* @returns {
void
}
* @returns {
Promise<any>
}
* @memberof Main
*/
public
save
(
args
:
any
[],
params
?:
any
,
$event
?:
any
,
xData
?:
any
):
void
{
public
async
save
(
args
:
any
[],
params
?:
any
,
$event
?:
any
,
xData
?:
any
)
{
let
_this
=
this
;
let
promises
:
any
=
[];
_this
.
items
.
forEach
((
item
:
any
)
=>
{
if
(
!
item
.
rowDataState
){
return
;
}
else
if
(
Object
.
is
(
item
.
rowDataState
,
'create'
)){
if
(
!
await
this
.
validateAll
()){
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'值规则校验异常'
});
return
[];
}
let
successItems
:
any
=
[];
let
errorItems
:
any
=
[];
let
errorMessage
:
any
=
[];
for
(
const
item
of
_this
.
items
)
{
try
{
if
(
Object
.
is
(
item
.
rowDataState
,
'create'
)){
if
(
!
this
.
createAction
){
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'WFUserGridView视图表格createAction参数未配置'
});
return
;
}
}
else
{
Object
.
assign
(
item
,{
viewparams
:
this
.
viewparams
});
promises
.
push
(
this
.
service
.
add
(
this
.
createAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
item
,
this
.
showBusyIndicator
));
let
response
=
await
this
.
service
.
add
(
this
.
createAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
item
,
this
.
showBusyIndicator
);
successItems
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
response
.
data
)));
}
}
else
if
(
Object
.
is
(
item
.
rowDataState
,
'update'
)){
if
(
!
this
.
updateAction
){
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'WFUserGridView视图表格updateAction参数未配置'
});
return
;
}
}
else
{
Object
.
assign
(
item
,{
viewparams
:
this
.
viewparams
});
if
(
item
.
wfuser
){
Object
.
assign
(
this
.
context
,{
wfuser
:
item
.
wfuser
})
Object
.
assign
(
this
.
context
,{
wfuser
:
item
.
wfuser
});
}
promises
.
push
(
this
.
service
.
add
(
this
.
updateAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
item
,
this
.
showBusyIndicator
));
let
response
=
await
this
.
service
.
add
(
this
.
updateAction
,
JSON
.
parse
(
JSON
.
stringify
(
this
.
context
)),
item
,
this
.
showBusyIndicator
);
successItems
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
response
.
data
)));
}
});
Promise
.
all
(
promises
).
then
((
response
:
any
)
=>
{
this
.
$emit
(
'save'
,
response
);
this
.
$Notice
.
success
({
title
:
''
,
desc
:
'保存成功!'
});
}
}
catch
(
error
)
{
errorItems
.
push
(
JSON
.
parse
(
JSON
.
stringify
(
item
)));
errorMessage
.
push
(
error
);
}
}
this
.
$emit
(
'save'
,
successItems
);
this
.
refresh
([]);
}).
catch
((
response
:
any
)
=>
{
this
.
$Notice
.
error
({
title
:
'错误'
,
desc
:
'系统异常'
});
if
(
errorItems
.
length
===
0
){
this
.
$Notice
.
success
({
title
:
''
,
desc
:
'保存成功!'
});
}
else
{
errorItems
.
forEach
((
item
:
any
,
index
:
number
)
=>
{
this
.
$Notice
.
error
({
title
:
'保存失败'
,
desc
:
item
.
majorentityname
+
'保存失败!'
});
console
.
error
(
errorMessage
[
index
]);
});
}
return
successItems
;
}
/**
...
...
This diff is collapsed.
Click to expand it.
app_web/src/widgets/wfuser/main-grid/main-grid.less
浏览文件 @
dcaf9043
...
...
@@ -25,6 +25,10 @@
overflow: hidden;
word-break: break-all;
}
.el-table-column--selection .cell {
padding-left: 0px;
padding-right: 0px;
}
.app-column-link, .app-format-data{
display: inline;
}
...
...
This diff is collapsed.
Click to expand it.
app_web/yarn.lock
浏览文件 @
dcaf9043
...
...
@@ -2089,6 +2089,11 @@ async-validator@^1.10.0:
resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-1.12.2.tgz#beae671e7174d2938b7b4b69d2fb7e722b7fd72c"
integrity sha512-57EETfCPFiB7M4QscvQzWSGNsmtkjjzZv318SK1CBlstk+hycV72ocjriMOOM48HjvmoAoJGpJNjC7Z76RlnZA==
async-validator@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-3.3.0.tgz#1d92193bbe60d6d6c8b246692c7005e9ed14a8ee"
integrity sha512-cAHGD9EL8aCqWXjnb44q94MWiDFzUo1tMhvLb2WzcpWqGiKugsjWG9cvl+jPgkPca7asNbsBU3fa0cwkI/P+Xg==
async-validator@~1.8.1:
version "1.8.5"
resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-1.8.5.tgz#dc3e08ec1fd0dddb67e60842f02c0cd1cec6d7f0"
...
...
@@ -2157,6 +2162,13 @@ axios@^0.19.1:
dependencies:
follow-redirects "1.5.10"
axios@^0.19.2:
version "0.19.2"
resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27"
integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==
dependencies:
follow-redirects "1.5.10"
babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
...
...
@@ -3258,6 +3270,11 @@ core-js@^3.4.4:
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647"
integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==
core-js@^3.6.4:
version "3.6.5"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a"
integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==
core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
...
...
@@ -4022,6 +4039,18 @@ element-ui@^2.13.0:
resize-observer-polyfill "^1.5.0"
throttle-debounce "^1.0.1"
element-ui@^2.13.2:
version "2.13.2"
resolved "https://registry.yarnpkg.com/element-ui/-/element-ui-2.13.2.tgz#582bf47aaaaaafe23ea1958fae217a687ad06447"
integrity sha512-r761DRPssMPKDiJZWFlG+4e4vr0cRG/atKr3Eqr8Xi0tQMNbtmYU1QXvFnKiFPFFGkgJ6zS6ASkG+sellcoHlQ==
dependencies:
async-validator "~1.8.1"
babel-helper-vue-jsx-merge-props "^2.0.0"
deepmerge "^1.2.0"
normalize-wheel "^1.0.1"
resize-observer-polyfill "^1.5.0"
throttle-debounce "^1.0.1"
elliptic@^6.0.0:
version "6.5.2"
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762"
...
...
@@ -5209,10 +5238,10 @@ human-signals@^1.1.1:
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
ibiz-gantt-elastic@^1.0.1
2
:
version "1.0.1
2
"
resolved "https://registry.yarnpkg.com/ibiz-gantt-elastic/-/ibiz-gantt-elastic-1.0.1
2.tgz#6865ef41e94b8b31f00f4cd1f0f60f132f7398d3
"
integrity sha512-
UHmnTG5q13xUuCKXSf73ZpwN/iOM9M73jFQ+C9wJWAsZcrDVc/36bPaSalMcfRWpfWREtU9wMnONXtFGVvS6pw
==
ibiz-gantt-elastic@^1.0.1
5
:
version "1.0.1
5
"
resolved "https://registry.yarnpkg.com/ibiz-gantt-elastic/-/ibiz-gantt-elastic-1.0.1
5.tgz#e57736254aaf5baea28225bce2d29d8bd8adcc2d
"
integrity sha512-
V3uLoN3BN32BagpV1kLm4nFSs4neJ/Cnykd7OIyLv11rjqTWFAENHBpZekioPFF4k2iCyAdRr5smzZbGJdSQxg
==
dependencies:
dayjs "^1.8.16"
resize-observer-polyfill "^1.5.1"
...
...
@@ -5220,6 +5249,17 @@ ibiz-gantt-elastic@^1.0.12:
vue-slider-component "^3.0.40"
vue-switches "^2.0.1"
ibiz-vue-lib@^0.1.9:
version "0.1.9"
resolved "https://registry.yarnpkg.com/ibiz-vue-lib/-/ibiz-vue-lib-0.1.9.tgz#d7088deb5577af3095887ca897c1710bae174682"
integrity sha512-CotV3xIB04+QUUeMlfsVj5BseVPQ+IHyKdwU+MXGh+2e91Nt7N/z/LElakhAiGkSpaaKoMdlKCOdhD0qqJ3wNQ==
dependencies:
axios "^0.19.2"
core-js "^3.6.4"
element-ui "^2.13.2"
view-design "^4.1.0"
vue "^2.6.11"
iconv-lite@0.4.24:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
...
...
@@ -9068,6 +9108,11 @@ sort-keys@^1.0.0:
dependencies:
is-plain-obj "^1.0.0"
sortablejs@^1.10.1:
version "1.10.2"
resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.10.2.tgz#6e40364d913f98b85a14f6678f92b5c1221f5290"
integrity sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A==
source-list-map@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
...
...
@@ -10185,11 +10230,18 @@ vue-template-es2015-compiler@^1.6.0, vue-template-es2015-compiler@^1.9.0:
resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
vue@^2.2.6, vue@^2.6.10:
vue@^2.2.6, vue@^2.6.10
, vue@^2.6.11
:
version "2.6.11"
resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.11.tgz#76594d877d4b12234406e84e35275c6d514125c5"
integrity sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ==
vuedraggable@^2.23.2:
version "2.23.2"
resolved "https://registry.yarnpkg.com/vuedraggable/-/vuedraggable-2.23.2.tgz#0d95d7fdf4f02f56755a26b3c9dca5c7ca9cfa72"
integrity sha512-PgHCjUpxEAEZJq36ys49HfQmXglattf/7ofOzUrW2/rRdG7tu6fK84ir14t1jYv4kdXewTEa2ieKEAhhEMdwkQ==
dependencies:
sortablejs "^1.10.1"
vuex@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.1.2.tgz#a2863f4005aa73f2587e55c3fadf3f01f69c7d4d"
...
...
This diff is collapsed.
Click to expand it.
config.xml
浏览文件 @
dcaf9043
...
...
@@ -37,11 +37,11 @@
git clone -b master $para2 ibzwf/
export NODE_OPTIONS=--max-old-space-size=4096
cd ibzwf/
mvn clean package -P
api
cd ibzwf-
provider/ibzwf-provider-api
mvn -P
api
docker:build
mvn -P
api
docker:push
docker -H $para1 stack deploy --compose-file=src/main/docker/ibzwf-
provider-api.yaml ibzlab-rt --with-registry-auth
mvn clean package -P
web
cd ibzwf-
app/ibzwf-app-web
mvn -P
web
docker:build
mvn -P
web
docker:push
docker -H $para1 stack deploy --compose-file=src/main/docker/ibzwf-
app-web.yaml ibzlab-rt --with-registry-auth
</command>
</hudson.tasks.Shell>
</builders>
...
...
This diff is collapsed.
Click to expand it.
ibzwf-app/ibzwf-app-web/src/main/docker/Dockerfile
浏览文件 @
dcaf9043
...
...
@@ -9,6 +9,6 @@ CMD echo "The application will start in ${IBZ_SLEEP}s..." && \
sleep ${IBZ_SLEEP} && \
java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /ibzwf-app-web.jar
EXPOSE
8080
EXPOSE
30003
ADD
ibzwf-app-web.jar /ibzwf-app-web.jar
This diff is collapsed.
Click to expand it.
ibzwf-app/ibzwf-app-web/src/main/docker/ibzwf-app-web.yaml
浏览文件 @
dcaf9043
...
...
@@ -3,9 +3,21 @@ services:
ibzwf-app-web
:
image
:
registry.cn-shanghai.aliyuncs.com/ibizsys/ibzwf-app-web:latest
ports
:
-
"
8080:8080
"
-
"
30003:30003
"
networks
:
-
agent_network
environment
:
-
SPRING_CLOUD_NACOS_DISCOVERY_IP=172.16.180.237
-
SERVER_PORT=30003
-
SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR=172.16.102.211:8848
-
SPRING_REDIS_HOST=172.16.100.243
-
SPRING_REDIS_PORT=6379
-
SPRING_REDIS_DATABASE=0
-
SPRING_DATASOURCE_USERNAME=a_A_5d9d78509
-
SPRING_DATASOURCE_PASSWORD=@6dEfb3@
-
SPRING_DATASOURCE_URL=jdbc:mysql://172.16.180.232:3306/a_A_5d9d78509?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true
-
SPRING_DATASOURCE_DRIVER-CLASS-NAME=com.mysql.jdbc.Driver
-
SPRING_DATASOURCE_DEFAULTSCHEMA=a_A_5d9d78509
deploy
:
mode
:
replicated
replicas
:
1
...
...
This diff is collapsed.
Click to expand it.
ibzwf-provider/ibzwf-provider-api/src/main/docker/Dockerfile
浏览文件 @
dcaf9043
...
...
@@ -9,6 +9,6 @@ CMD echo "The application will start in ${IBZ_SLEEP}s..." && \
sleep ${IBZ_SLEEP} && \
java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /ibzwf-provider-api.jar
EXPOSE
40003
EXPOSE
8081
ADD
ibzwf-provider-api.jar /ibzwf-provider-api.jar
This diff is collapsed.
Click to expand it.
ibzwf-provider/ibzwf-provider-api/src/main/docker/ibzwf-provider-api.yaml
浏览文件 @
dcaf9043
...
...
@@ -3,21 +3,9 @@ services:
ibzwf-provider-api
:
image
:
registry.cn-shanghai.aliyuncs.com/ibizsys/ibzwf-provider-api:latest
ports
:
-
"
40003:40003
"
-
"
8081:8081
"
networks
:
-
agent_network
environment
:
-
SPRING_CLOUD_NACOS_DISCOVERY_IP=172.16.180.237
-
SERVER_PORT=40003
-
SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR=172.16.102.211:8848
-
SPRING_REDIS_HOST=172.16.100.243
-
SPRING_REDIS_PORT=6379
-
SPRING_REDIS_DATABASE=0
-
SPRING_DATASOURCE_USERNAME=a_A_5d9d78509
-
SPRING_DATASOURCE_PASSWORD=@6dEfb3@
-
SPRING_DATASOURCE_URL=jdbc:mysql://172.16.180.232:3306/a_A_5d9d78509?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true
-
SPRING_DATASOURCE_DRIVER-CLASS-NAME=com.mysql.jdbc.Driver
-
SPRING_DATASOURCE_DEFAULTSCHEMA=a_A_5d9d78509
deploy
:
mode
:
replicated
replicas
:
1
...
...
This diff is collapsed.
Click to expand it.
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录