提交 d32da08b 编写于 作者: ibizdev's avatar ibizdev

ibiz4j 发布系统代码

上级 38ee66d3
## v7.0.0-alpha.17 [2020-8-9]
### Bug修复
修复系统级的操作标识异常问题
修复表格新增插件异常问题
修复表格单击行绑定数据异常bug
修复表格合计行样式问题
### 功能新增及优化
#### 模板
新增支持前后端分离部署
新增动态代码表预定义代码表支持
新增数据选择(调用接口)组件
新增部件样式表支持
优化数据服务逻辑
优化代码表服务基类、动态代码表
优化导航参数处理逻辑
优化数据拷贝逻辑
优化组织、部门、人员控件只绑定id逻辑
优化部件关联外键值
#### 基础文件
新增前后端分离部署
新增下拉列表控件支持树状代码表
新增数据选择(调用接口)组件
优化数据拷贝逻辑
优化组织、部门、人员控件只绑定id逻辑
## v7.0.0-alpha.16 [2020-8-2]
### Bug修复
......
......@@ -43,6 +43,7 @@ export class AuthServiceRegister {
this.allAuthService.set('wfmember', () => import('@/authservice/wfmember/wfmember-auth-service'));
this.allAuthService.set('wfgroup', () => import('@/authservice/wfgroup/wfgroup-auth-service'));
this.allAuthService.set('wfuser', () => import('@/authservice/wfuser/wfuser-auth-service'));
this.allAuthService.set('wftask', () => import('@/authservice/wftask/wftask-auth-service'));
this.allAuthService.set('wfprocessdefinition', () => import('@/authservice/wfprocess-definition/wfprocess-definition-auth-service'));
this.allAuthService.set('wfsystem', () => import('@/authservice/wfsystem/wfsystem-auth-service'));
}
......
......@@ -18,7 +18,7 @@ export default class AuthService {
public $store: Store<any> | null = null;
/**
* 默认操作
* 默认操作标识
*
* @public
* @type {(any)}
......
import AuthService from '../auth-service';
/**
* 工作流任务权限服务对象基类
*
* @export
* @class WFTaskAuthServiceBase
* @extends {AuthService}
*/
export default class WFTaskAuthServiceBase extends AuthService {
/**
* Creates an instance of WFTaskAuthServiceBase.
*
* @param {*} [opts={}]
* @memberof WFTaskAuthServiceBase
*/
constructor(opts: any = {}) {
super(opts);
}
/**
* 根据当前数据获取实体操作标识
*
* @param {*} mainSateOPPrivs 传入数据操作标识
* @returns {any}
* @memberof WFTaskAuthServiceBase
*/
public getOPPrivs(mainSateOPPrivs:any):any{
let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs));
if(mainSateOPPrivs){
Object.assign(curDefaultOPPrivs,mainSateOPPrivs);
}
return curDefaultOPPrivs;
}
}
\ No newline at end of file
import WFTaskAuthServiceBase from './wftask-auth-service-base';
/**
* 工作流任务权限服务对象
*
* @export
* @class WFTaskAuthService
* @extends {WFTaskAuthServiceBase}
*/
export default class WFTaskAuthService extends WFTaskAuthServiceBase {
/**
* Creates an instance of WFTaskAuthService.
*
* @param {*} [opts={}]
* @memberof WFTaskAuthService
*/
constructor(opts: any = {}) {
super(opts);
}
}
\ No newline at end of file
......@@ -103,7 +103,7 @@ export default class AppDepartmentSelect extends Vue {
* @type {*}
* @memberof AppDepartmentSelect
*/
public oldurl: any[] = [];
public oldurl: any;
/**
* 获取节点数据
......@@ -136,14 +136,14 @@ export default class AppDepartmentSelect extends Vue {
}
this.oldurl = _url;
// 缓存机制
const result:any = this.$store.getters.getDepData(this.filter);
const result:any = this.$store.getters.getDepData(_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, depData: response.data });
this.$store.commit('addDepData', { srfkey: _url, depData: 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) });
......
......@@ -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>
......
.app-picker {
.app-upicker {
width: 100%;
.el-select {
.el-input__suffix {
right: 20px;
display: none;
}
}
.text-value {
......
......@@ -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.srfTitle.indexOf("-");
let index:number = viewdata.srfCaption.indexOf("-");
if (viewdata && info && !Object.is(info, '')) {
if(index !== -1){
viewdata.srfTitle = viewdata.srfTitle.substr(0,index);
viewdata.srfCaption = viewdata.srfCaption.substr(0,index);
}
// 解决表格视图标题问题
if(this.view.$tabPageExp && this.view.viewDefaultUsage){
this.view.$tabPageExp.setCurPageCaption(this.view.$t(viewdata.srfTitle), this.view.$t(viewdata.srfTitle), info);
this.view.$tabPageExp.setCurPageCaption(this.view.$t(viewdata.srfCaption), this.view.$t(viewdata.srfCaption), info);
}
if(this.view.$route){
this.view.$route.meta.info = info;
}
this.view.model.srfTitle = `${this.view.$t(viewdata.srfTitle)}-${viewdata.dataInfo}`;
this.view.model.srfCaption = `${this.view.$t(viewdata.srfCaption)}-${viewdata.dataInfo}`;
this.view.initNavDataWithRoute(null,isNew);
}
}
......
......@@ -2,6 +2,7 @@ import wfremodel_en_US from '@locale/lanres/entities/wfremodel/wfremodel_en_US';
import wfmember_en_US from '@locale/lanres/entities/wfmember/wfmember_en_US';
import wfgroup_en_US from '@locale/lanres/entities/wfgroup/wfgroup_en_US';
import wfuser_en_US from '@locale/lanres/entities/wfuser/wfuser_en_US';
import wftask_en_US from '@locale/lanres/entities/wftask/wftask_en_US';
import wfprocessdefinition_en_US from '@locale/lanres/entities/wfprocess-definition/wfprocess-definition_en_US';
import wfsystem_en_US from '@locale/lanres/entities/wfsystem/wfsystem_en_US';
import components_en_US from '@locale/lanres/components/components_en_US';
......@@ -224,6 +225,7 @@ export default {
wfmember: wfmember_en_US,
wfgroup: wfgroup_en_US,
wfuser: wfuser_en_US,
wftask: wftask_en_US,
wfprocessdefinition: wfprocessdefinition_en_US,
wfsystem: wfsystem_en_US,
},
......
......@@ -2,6 +2,7 @@ import wfremodel_zh_CN from '@locale/lanres/entities/wfremodel/wfremodel_zh_CN';
import wfmember_zh_CN from '@locale/lanres/entities/wfmember/wfmember_zh_CN';
import wfgroup_zh_CN from '@locale/lanres/entities/wfgroup/wfgroup_zh_CN';
import wfuser_zh_CN from '@locale/lanres/entities/wfuser/wfuser_zh_CN';
import wftask_zh_CN from '@locale/lanres/entities/wftask/wftask_zh_CN';
import wfprocessdefinition_zh_CN from '@locale/lanres/entities/wfprocess-definition/wfprocess-definition_zh_CN';
import wfsystem_zh_CN from '@locale/lanres/entities/wfsystem/wfsystem_zh_CN';
import components_zh_CN from '@locale/lanres/components/components_zh_CN';
......@@ -223,6 +224,7 @@ export default {
wfmember: wfmember_zh_CN,
wfgroup: wfgroup_zh_CN,
wfuser: wfuser_zh_CN,
wftask: wftask_zh_CN,
wfprocessdefinition: wfprocessdefinition_zh_CN,
wfsystem: wfsystem_zh_CN,
},
......
......@@ -6,7 +6,6 @@ export default {
modelversion: "模型版本",
modelenable: "模型是否启用",
pssystemid: "系统标识",
taskprocessdefinitionkey: "TaskDefinitionKey",
md5check: "校验",
bpmnfile: "BPMN",
deploykey: "DeployKey",
......
......@@ -5,7 +5,6 @@ export default {
modelversion: "模型版本",
modelenable: "模型是否启用",
pssystemid: "系统标识",
taskprocessdefinitionkey: "TaskDefinitionKey",
md5check: "校验",
bpmnfile: "BPMN",
deploykey: "DeployKey",
......
export default {
fields: {
id: "任务标识",
name: "状态",
processdefinitionid: "DefinitionId",
processdefinitionkey: "DefinitionKey",
processdefinitionname: "流程",
taskdefinitionkey: "TaskDefinitionKey",
description: "待办事项",
createtime: "发起时间",
processinstanceid: "实例标识",
processinstancebusinesskey: "业务键值",
},
};
\ No newline at end of file
export default {
fields: {
id: "任务标识",
name: "状态",
processdefinitionid: "DefinitionId",
processdefinitionkey: "DefinitionKey",
processdefinitionname: "流程",
taskdefinitionkey: "TaskDefinitionKey",
description: "待办事项",
createtime: "发起时间",
processinstanceid: "实例标识",
processinstancebusinesskey: "业务键值",
},
};
\ No newline at end of file
此差异已折叠。
......@@ -11,5 +11,6 @@ import './entity/wfremodels/wfremodels';
import './entity/wfmembers/wfmembers';
import './entity/wfgroups/wfgroups';
import './entity/wfusers/wfusers';
import './entity/wftasks/wftasks';
import './entity/wfprocess-definitions/wfprocess-definitions';
import './entity/wfsystems/wfsystems';
<template>
<div class="view-container deeditview wfgroup-edit-view">
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="wfgroupeditview"></app-studioaction>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="wfgroupeditview"></app-studioaction>
<card class='view-card ' :disHover="true" :bordered="false">
<div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfTitle)}}</span>
<span class='caption-info'>{{$t(model.srfCaption)}}</span>
<div class='toolbar-container'>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem3.visabled" :disabled="toolBarModels.tbitem3.disabled" class='' @click="toolbar_click({ tag: 'tbitem3' }, $event)">
......@@ -556,7 +556,7 @@ export default class WFGroupEditViewBase 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:'wfgroup-edit-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfgroup,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
this.navDataService.addNavData({id:'wfgroup-edit-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfgroup,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
}
}
......@@ -567,7 +567,7 @@ export default class WFGroupEditViewBase 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:'wfgroup-edit-view',tag:this.viewtag,srfkey:this.context.wfgroup,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
this.navDataService.addNavDataByOnly({id:'wfgroup-edit-view',tag:this.viewtag,srfkey:this.context.wfgroup,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
}
}
......
<template>
<div class='view-container degridview wfgroup-grid-view'>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="wfgroupgridview"></app-studioaction>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="wfgroupgridview"></app-studioaction>
<card class='view-card ' :dis-hover="true" :bordered="false">
<div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfTitle)}}</span>
<span class='caption-info'>{{$t(model.srfCaption)}}</span>
</div>
<div class='content-container'>
<div class='view-top-messages'>
......@@ -590,7 +590,7 @@ export default class WFGroupGridViewBase 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:'wfgroup-grid-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfgroup,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
this.navDataService.addNavData({id:'wfgroup-grid-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfgroup,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
}
}
......@@ -601,7 +601,7 @@ export default class WFGroupGridViewBase 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:'wfgroup-grid-view',tag:this.viewtag,srfkey:this.context.wfgroup,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
this.navDataService.addNavDataByOnly({id:'wfgroup-grid-view',tag:this.viewtag,srfkey:this.context.wfgroup,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
}
}
......
<template>
<div class="view-container dempickupview wfgroup-mpickup-view">
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="wfgroupmpickupview"></app-studioaction>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="wfgroupmpickupview"></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">
<div class="translate-contant">
......@@ -472,7 +472,7 @@ export default class WFGroupMPickupViewBase 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:'wfgroup-mpickup-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfgroup,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
this.navDataService.addNavData({id:'wfgroup-mpickup-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfgroup,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
}
}
......@@ -483,7 +483,7 @@ export default class WFGroupMPickupViewBase 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:'wfgroup-mpickup-view',tag:this.viewtag,srfkey:this.context.wfgroup,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
this.navDataService.addNavDataByOnly({id:'wfgroup-mpickup-view',tag:this.viewtag,srfkey:this.context.wfgroup,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
}
}
......
<template>
<div class='view-container depickupgridview wfgroup-pickup-grid-view'>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="wfgrouppickupgridview"></app-studioaction>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="wfgrouppickupgridview"></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 WFGroupPickupGridViewBase 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:'wfgroup-pickup-grid-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfgroup,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
this.navDataService.addNavData({id:'wfgroup-pickup-grid-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfgroup,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
}
}
......@@ -457,7 +457,7 @@ export default class WFGroupPickupGridViewBase 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:'wfgroup-pickup-grid-view',tag:this.viewtag,srfkey:this.context.wfgroup,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
this.navDataService.addNavDataByOnly({id:'wfgroup-pickup-grid-view',tag:this.viewtag,srfkey:this.context.wfgroup,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
}
}
......
<template>
<div class="view-container depickupview wfgroup-pickup-view">
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="wfgrouppickupview"></app-studioaction>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="wfgrouppickupview"></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 WFGroupPickupViewBase 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:'wfgroup-pickup-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfgroup,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
this.navDataService.addNavData({id:'wfgroup-pickup-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfgroup,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
}
}
......@@ -450,7 +450,7 @@ export default class WFGroupPickupViewBase 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:'wfgroup-pickup-view',tag:this.viewtag,srfkey:this.context.wfgroup,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
this.navDataService.addNavDataByOnly({id:'wfgroup-pickup-view',tag:this.viewtag,srfkey:this.context.wfgroup,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
}
}
......
......@@ -412,7 +412,7 @@ export default class WFIndexViewBase 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:'wfindex-view',tag:this.viewtag,srfkey:isNew ? null : null,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
this.navDataService.addNavData({id:'wfindex-view',tag:this.viewtag,srfkey:isNew ? null : null,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
}
}
......@@ -423,7 +423,7 @@ export default class WFIndexViewBase 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:'wfindex-view',tag:this.viewtag,srfkey:null,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
this.navDataService.addNavDataByOnly({id:'wfindex-view',tag:this.viewtag,srfkey:null,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
}
}
......
<template>
<div class="view-container deeditview wfmember-edit-view">
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="wfmembereditview"></app-studioaction>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="wfmembereditview"></app-studioaction>
<card class='view-card ' :disHover="true" :bordered="false">
<div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfTitle)}}</span>
<span class='caption-info'>{{$t(model.srfCaption)}}</span>
<div class='toolbar-container'>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem3.visabled" :disabled="toolBarModels.tbitem3.disabled" class='' @click="toolbar_click({ tag: 'tbitem3' }, $event)">
......@@ -556,7 +556,7 @@ export default class WFMemberEditViewBase 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:'wfmember-edit-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfmember,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
this.navDataService.addNavData({id:'wfmember-edit-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfmember,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
}
}
......@@ -567,7 +567,7 @@ export default class WFMemberEditViewBase 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:'wfmember-edit-view',tag:this.viewtag,srfkey:this.context.wfmember,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
this.navDataService.addNavDataByOnly({id:'wfmember-edit-view',tag:this.viewtag,srfkey:this.context.wfmember,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
}
}
......
<template>
<div class='view-container degridview wfmember-grid-view'>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="wfmembergridview"></app-studioaction>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="wfmembergridview"></app-studioaction>
<card class='view-card ' :dis-hover="true" :bordered="false">
<div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfTitle)}}</span>
<span class='caption-info'>{{$t(model.srfCaption)}}</span>
</div>
<div class='content-container'>
<div class='view-top-messages'>
......@@ -590,7 +590,7 @@ export default class WFMemberGridViewBase 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:'wfmember-grid-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfmember,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
this.navDataService.addNavData({id:'wfmember-grid-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfmember,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
}
}
......@@ -601,7 +601,7 @@ export default class WFMemberGridViewBase 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:'wfmember-grid-view',tag:this.viewtag,srfkey:this.context.wfmember,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
this.navDataService.addNavDataByOnly({id:'wfmember-grid-view',tag:this.viewtag,srfkey:this.context.wfmember,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
}
}
......
<template>
<div class="view-container deeditview wfprocess-definition-edit-view">
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="wfprocessdefinitioneditview"></app-studioaction>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="wfprocessdefinitioneditview"></app-studioaction>
<card class='view-card ' :disHover="true" :bordered="false">
<div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfTitle)}}</span>
<span class='caption-info'>{{$t(model.srfCaption)}}</span>
<div class='toolbar-container'>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem3.visabled" :disabled="toolBarModels.tbitem3.disabled" class='' @click="toolbar_click({ tag: 'tbitem3' }, $event)">
......@@ -556,7 +556,7 @@ export default class WFProcessDefinitionEditViewBase 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:'wfprocess-definition-edit-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfprocessdefinition,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
this.navDataService.addNavData({id:'wfprocess-definition-edit-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfprocessdefinition,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
}
}
......@@ -567,7 +567,7 @@ export default class WFProcessDefinitionEditViewBase 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:'wfprocess-definition-edit-view',tag:this.viewtag,srfkey:this.context.wfprocessdefinition,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
this.navDataService.addNavDataByOnly({id:'wfprocess-definition-edit-view',tag:this.viewtag,srfkey:this.context.wfprocessdefinition,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
}
}
......
<template>
<div class='view-container degridview wfprocess-definition-grid-view'>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="wfprocessdefinitiongridview"></app-studioaction>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="wfprocessdefinitiongridview"></app-studioaction>
<card class='view-card ' :dis-hover="true" :bordered="false">
<div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfTitle)}}</span>
<span class='caption-info'>{{$t(model.srfCaption)}}</span>
</div>
<div class='content-container'>
<div class='view-top-messages'>
......@@ -590,7 +590,7 @@ export default class WFProcessDefinitionGridViewBase 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:'wfprocess-definition-grid-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfprocessdefinition,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
this.navDataService.addNavData({id:'wfprocess-definition-grid-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfprocessdefinition,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
}
}
......@@ -601,7 +601,7 @@ export default class WFProcessDefinitionGridViewBase 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:'wfprocess-definition-grid-view',tag:this.viewtag,srfkey:this.context.wfprocessdefinition,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
this.navDataService.addNavDataByOnly({id:'wfprocess-definition-grid-view',tag:this.viewtag,srfkey:this.context.wfprocessdefinition,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
}
}
......
<template>
<div class="view-container deeditview wfremodel-edit-view">
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="wfremodeleditview"></app-studioaction>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="wfremodeleditview"></app-studioaction>
<card class='view-card ' :disHover="true" :bordered="false">
<div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfTitle)}}</span>
<span class='caption-info'>{{$t(model.srfCaption)}}</span>
<div class='toolbar-container'>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem1.visabled" :disabled="toolBarModels.tbitem1.disabled" class='' @click="toolbar_click({ tag: 'tbitem1' }, $event)">
......@@ -461,7 +461,7 @@ export default class WFREModelEditViewBase 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:'wfremodel-edit-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfremodel,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
this.navDataService.addNavData({id:'wfremodel-edit-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfremodel,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
}
}
......@@ -472,7 +472,7 @@ export default class WFREModelEditViewBase 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:'wfremodel-edit-view',tag:this.viewtag,srfkey:this.context.wfremodel,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
this.navDataService.addNavDataByOnly({id:'wfremodel-edit-view',tag:this.viewtag,srfkey:this.context.wfremodel,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
}
}
......
<template>
<div class="view-container deeditview wfuser-edit-view">
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="wfusereditview"></app-studioaction>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="wfusereditview"></app-studioaction>
<card class='view-card ' :disHover="true" :bordered="false">
<div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfTitle)}}</span>
<span class='caption-info'>{{$t(model.srfCaption)}}</span>
<div class='toolbar-container'>
<tooltip :transfer="true" :max-width="600">
<i-button v-show="toolBarModels.tbitem3.visabled" :disabled="toolBarModels.tbitem3.disabled" class='' @click="toolbar_click({ tag: 'tbitem3' }, $event)">
......@@ -556,7 +556,7 @@ export default class WFUserEditViewBase 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:'wfuser-edit-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfuser,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
this.navDataService.addNavData({id:'wfuser-edit-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfuser,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
}
}
......@@ -567,7 +567,7 @@ export default class WFUserEditViewBase 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:'wfuser-edit-view',tag:this.viewtag,srfkey:this.context.wfuser,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
this.navDataService.addNavDataByOnly({id:'wfuser-edit-view',tag:this.viewtag,srfkey:this.context.wfuser,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
}
}
......
<template>
<div class='view-container degridview wfuser-grid-view'>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="wfusergridview"></app-studioaction>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="wfusergridview"></app-studioaction>
<card class='view-card ' :dis-hover="true" :bordered="false">
<div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfTitle)}}</span>
<span class='caption-info'>{{$t(model.srfCaption)}}</span>
</div>
<div class='content-container'>
<div class='view-top-messages'>
......@@ -590,7 +590,7 @@ export default class WFUserGridViewBase 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:'wfuser-grid-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfuser,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
this.navDataService.addNavData({id:'wfuser-grid-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfuser,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
}
}
......@@ -601,7 +601,7 @@ export default class WFUserGridViewBase 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:'wfuser-grid-view',tag:this.viewtag,srfkey:this.context.wfuser,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
this.navDataService.addNavDataByOnly({id:'wfuser-grid-view',tag:this.viewtag,srfkey:this.context.wfuser,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
}
}
......
<template>
<div class="view-container dempickupview wfuser-mpickup-view">
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="wfusermpickupview"></app-studioaction>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="wfusermpickupview"></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">
<div class="translate-contant">
......@@ -472,7 +472,7 @@ export default class WFUserMPickupViewBase 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:'wfuser-mpickup-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfuser,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
this.navDataService.addNavData({id:'wfuser-mpickup-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfuser,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
}
}
......@@ -483,7 +483,7 @@ export default class WFUserMPickupViewBase 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:'wfuser-mpickup-view',tag:this.viewtag,srfkey:this.context.wfuser,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
this.navDataService.addNavDataByOnly({id:'wfuser-mpickup-view',tag:this.viewtag,srfkey:this.context.wfuser,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
}
}
......
<template>
<div class='view-container depickupgridview wfuser-pickup-grid-view'>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="wfuserpickupgridview"></app-studioaction>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="wfuserpickupgridview"></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 WFUserPickupGridViewBase 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:'wfuser-pickup-grid-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfuser,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
this.navDataService.addNavData({id:'wfuser-pickup-grid-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfuser,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
}
}
......@@ -457,7 +457,7 @@ export default class WFUserPickupGridViewBase 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:'wfuser-pickup-grid-view',tag:this.viewtag,srfkey:this.context.wfuser,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
this.navDataService.addNavDataByOnly({id:'wfuser-pickup-grid-view',tag:this.viewtag,srfkey:this.context.wfuser,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
}
}
......
<template>
<div class="view-container depickupview wfuser-pickup-view">
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="wfuserpickupview"></app-studioaction>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="wfuserpickupview"></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 WFUserPickupViewBase 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:'wfuser-pickup-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfuser,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
this.navDataService.addNavData({id:'wfuser-pickup-view',tag:this.viewtag,srfkey:isNew ? null : this.context.wfuser,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath});
}
}
......@@ -450,7 +450,7 @@ export default class WFUserPickupViewBase 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:'wfuser-pickup-view',tag:this.viewtag,srfkey:this.context.wfuser,title:this.$t(this.model.srfTitle),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
this.navDataService.addNavDataByOnly({id:'wfuser-pickup-view',tag:this.viewtag,srfkey:this.context.wfuser,title:this.$t(this.model.srfCaption),data:data,context:this.context,viewparams:this.viewparams,path:this.$route.fullPath},isOnlyAdd);
}
}
......
......@@ -43,6 +43,7 @@ export class EntityServiceRegister {
this.allEntityService.set('wfmember', () => import('@/service/wfmember/wfmember-service'));
this.allEntityService.set('wfgroup', () => import('@/service/wfgroup/wfgroup-service'));
this.allEntityService.set('wfuser', () => import('@/service/wfuser/wfuser-service'));
this.allEntityService.set('wftask', () => import('@/service/wftask/wftask-service'));
this.allEntityService.set('wfprocessdefinition', () => import('@/service/wfprocess-definition/wfprocess-definition-service'));
this.allEntityService.set('wfsystem', () => import('@/service/wfsystem/wfsystem-service'));
}
......
import { Http,Util } from '@/utils';
import EntityService from '../entity-service';
/**
* 工作流任务服务对象基类
*
* @export
* @class WFTaskServiceBase
* @extends {EntityServie}
*/
export default class WFTaskServiceBase extends EntityService {
/**
* Creates an instance of WFTaskServiceBase.
*
* @param {*} [opts={}]
* @memberof WFTaskServiceBase
*/
constructor(opts: any = {}) {
super(opts);
}
/**
* 初始化基础数据
*
* @memberof WFTaskServiceBase
*/
public initBasicData(){
this.APPLYDEKEY ='wftask';
this.APPDEKEY = 'id';
this.APPDENAME = 'wftasks';
this.APPDETEXT = 'name';
this.APPNAME = 'web';
this.SYSTEMNAME = 'ibzwf';
}
// 实体接口
/**
* Select接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof WFTaskServiceBase
*/
public async Select(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let res:any = Http.getInstance().get(`/wftasks/${context.wftask}/select`,isloading);
return res;
}
/**
* Create接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof WFTaskServiceBase
*/
public async Create(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let masterData:any = {};
Object.assign(data,masterData);
if(!data.srffrontuf || data.srffrontuf !== "1"){
data[this.APPDEKEY] = null;
}
if(data.srffrontuf){
delete data.srffrontuf;
}
let tempContext:any = JSON.parse(JSON.stringify(context));
let res:any = await Http.getInstance().post(`/wftasks`,data,isloading);
return res;
}
/**
* Update接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof WFTaskServiceBase
*/
public async Update(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let masterData:any = {};
Object.assign(data,masterData);
let res:any = await Http.getInstance().put(`/wftasks/${context.wftask}`,data,isloading);
return res;
}
/**
* Remove接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof WFTaskServiceBase
*/
public async Remove(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let res:any = Http.getInstance().delete(`/wftasks/${context.wftask}`,isloading);
return res;
}
/**
* Get接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof WFTaskServiceBase
*/
public async Get(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let res:any = await Http.getInstance().get(`/wftasks/${context.wftask}`,isloading);
return res;
}
/**
* GetDraft接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof WFTaskServiceBase
*/
public async GetDraft(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let res:any = await Http.getInstance().get(`/wftasks/getdraft`,isloading);
res.data.wftask = data.wftask;
return res;
}
/**
* CheckKey接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof WFTaskServiceBase
*/
public async CheckKey(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let res:any = Http.getInstance().post(`/wftasks/${context.wftask}/checkkey`,data,isloading);
return res;
}
/**
* Save接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof WFTaskServiceBase
*/
public async Save(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let masterData:any = {};
Object.assign(data,masterData);
let res:any = await Http.getInstance().post(`/wftasks/${context.wftask}/save`,data,isloading);
return res;
}
/**
* FetchDefault接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof WFTaskServiceBase
*/
public async FetchDefault(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let tempData:any = JSON.parse(JSON.stringify(data));
let res:any = Http.getInstance().get(`/wftasks/fetchdefault`,tempData,isloading);
return res;
}
}
\ No newline at end of file
import { Http,Util } from '@/utils';
import WFTaskServiceBase from './wftask-service-base';
/**
* 工作流任务服务对象
*
* @export
* @class WFTaskService
* @extends {WFTaskServiceBase}
*/
export default class WFTaskService extends WFTaskServiceBase {
/**
* Creates an instance of WFTaskService.
*
* @param {*} [opts={}]
* @memberof WFTaskService
*/
constructor(opts: any = {}) {
super(opts);
}
}
\ No newline at end of file
......@@ -43,6 +43,7 @@ export class UIServiceRegister {
this.allUIService.set('wfmember', () => import('@/uiservice/wfmember/wfmember-ui-service'));
this.allUIService.set('wfgroup', () => import('@/uiservice/wfgroup/wfgroup-ui-service'));
this.allUIService.set('wfuser', () => import('@/uiservice/wfuser/wfuser-ui-service'));
this.allUIService.set('wftask', () => import('@/uiservice/wftask/wftask-ui-service'));
this.allUIService.set('wfprocessdefinition', () => import('@/uiservice/wfprocess-definition/wfprocess-definition-ui-service'));
this.allUIService.set('wfsystem', () => import('@/uiservice/wfsystem/wfsystem-ui-service'));
}
......
import { Environment } from '@/environments/environment';
import { UIActionTool,Util } from '@/utils';
import UIService from '../ui-service';
import { Subject } from 'rxjs';
import WFTaskService from '@/service/wftask/wftask-service';
import WFTaskAuthService from '@/authservice/wftask/wftask-auth-service';
/**
* 工作流任务UI服务对象基类
*
* @export
* @class WFTaskUIServiceBase
*/
export default class WFTaskUIServiceBase extends UIService {
/**
* 是否支持工作流
*
* @memberof WFTaskUIServiceBase
*/
public isEnableWorkflow:boolean = false;
/**
* 当前UI服务对应的数据服务对象
*
* @memberof WFTaskUIServiceBase
*/
public dataService:WFTaskService = new WFTaskService();
/**
* 所有关联视图
*
* @memberof WFTaskUIServiceBase
*/
public allViewMap: Map<string, Object> = new Map();
/**
* 状态值
*
* @memberof WFTaskUIServiceBase
*/
public stateValue: number = 0;
/**
* 状态属性
*
* @memberof WFTaskUIServiceBase
*/
public stateField: string = "";
/**
* 主状态属性集合
*
* @memberof WFTaskUIServiceBase
*/
public mainStateFields:Array<any> = [];
/**
* 主状态集合Map
*
* @memberof WFTaskUIServiceBase
*/
public allDeMainStateMap:Map<string,string> = new Map();
/**
* 主状态操作标识Map
*
* @memberof WFTaskUIServiceBase
*/
public allDeMainStateOPPrivsMap:Map<string,any> = new Map();
/**
* Creates an instance of WFTaskUIServiceBase.
*
* @param {*} [opts={}]
* @memberof WFTaskUIServiceBase
*/
constructor(opts: any = {}) {
super(opts);
this.authService = new WFTaskAuthService(opts);
this.initViewMap();
this.initDeMainStateMap();
this.initDeMainStateOPPrivsMap();
}
/**
* 初始化视图Map
*
* @memberof WFTaskUIServiceBase
*/
public initViewMap(){
}
/**
* 初始化主状态集合
*
* @memberof WFTaskUIServiceBase
*/
public initDeMainStateMap(){
}
/**
* 初始化主状态操作标识
*
* @memberof WFTaskUIServiceBase
*/
public initDeMainStateOPPrivsMap(){
}
/**
* 获取指定数据的重定向页面
*
* @param srfkey 数据主键
* @param isEnableWorkflow 重定向视图是否需要处理流程中的数据
* @memberof WFTaskUIServiceBase
*/
public async getRDAppView(srfkey:string,isEnableWorkflow:boolean){
this.isEnableWorkflow = isEnableWorkflow;
// 进行数据查询
let result:any = await this.dataService.Get({wftask:srfkey});
const curData:any = result.data;
//判断当前数据模式,默认为true,todo
const iRealDEModel:boolean = true;
let bDataInWF:boolean = false;
let bWFMode:any = false;
// 计算数据模式
if (this.isEnableWorkflow) {
bDataInWF = await this.dataService.testDataInWF({stateValue:this.stateValue,stateField:this.stateField},curData);
if (bDataInWF) {
bDataInWF = true;
bWFMode = await this.dataService.testUserExistWorklist(null,curData);
}
}
let strPDTViewParam:string = await this.getDESDDEViewPDTParam(curData, bDataInWF, bWFMode);
//若不是当前数据模式,处理strPDTViewParam,todo
//查找视图
//返回视图
return this.allViewMap.get(strPDTViewParam);
}
/**
* 获取实际的数据类型
*
* @memberof WFTaskUIServiceBase
*/
public getRealDEType(entity:any){
}
/**
* 获取实体单数据实体视图预定义参数
*
* @param curData 当前数据
* @param bDataInWF 是否有数据在工作流中
* @param bWFMode 是否工作流模式
* @memberof WFTaskUIServiceBase
*/
public async getDESDDEViewPDTParam(curData:any, bDataInWF:boolean, bWFMode:boolean){
let strPDTParam:string = '';
if (bDataInWF) {
// 判断数据是否在流程中
}
//多表单,todo
const isEnableMultiForm:boolean = false;
const multiFormDEField:string|null =null;
if (isEnableMultiForm && multiFormDEField) {
const objFormValue:string = curData[multiFormDEField];
if(!Environment.isAppMode){
return 'MOBEDITVIEW'+objFormValue;
}
return 'EDITVIEW'+objFormValue;
}
if(!Environment.isAppMode){
if(this.getDEMainStateTag(curData)){
return `MOBEDITVIEW:MSTAG:${ this.getDEMainStateTag(curData)}`;
}
return 'MOBEDITVIEW:';
}
if(this.getDEMainStateTag(curData)){
return `EDITVIEW:MSTAG:${ this.getDEMainStateTag(curData)}`;
}
return 'EDITVIEW:';
}
/**
* 获取数据对象的主状态标识
*
* @param curData 当前数据
* @memberof WFTaskUIServiceBase
*/
public getDEMainStateTag(curData:any){
if(this.mainStateFields.length === 0) return null;
this.mainStateFields.forEach((singleMainField:any) =>{
if(!(singleMainField in curData)){
console.warn(`当前数据对象不包含属性${singleMainField},可能会发生错误`);
}
})
for (let i = 0; i <= 1; i++) {
let strTag:string = (curData[this.mainStateFields[0]])?(i == 0) ? curData[this.mainStateFields[0]] : "":"";
if (this.mainStateFields.length >= 2) {
for (let j = 0; j <= 1; j++) {
let strTag2:string = (curData[this.mainStateFields[1]])?`${strTag}__${(j == 0) ? curData[this.mainStateFields[1]] : ""}`:strTag;
if (this.mainStateFields.length >= 3) {
for (let k = 0; k <= 1; k++) {
let strTag3:string = (curData[this.mainStateFields[2]])?`${strTag2}__${(k == 0) ? curData[this.mainStateFields[2]] : ""}`:strTag2;
// 判断是否存在
return this.allDeMainStateMap.get(strTag3);
}
}else{
return this.allDeMainStateMap.get(strTag2);
}
}
}else{
return this.allDeMainStateMap.get(strTag);
}
}
return null;
}
/**
* 获取数据对象当前操作标识
*
* @param data 当前数据
* @memberof WFTaskUIServiceBase
*/
public getDEMainStateOPPrivs(data:any){
if(this.getDEMainStateTag(data)){
return this.allDeMainStateOPPrivsMap.get((this.getDEMainStateTag(data) as string));
}else{
return null;
}
}
/**
* 获取数据对象所有的操作标识
*
* @param data 当前数据
* @memberof WFTaskUIServiceBase
*/
public getAllOPPrivs(data:any){
return this.authService.getOPPrivs(this.getDEMainStateOPPrivs(data));
}
}
\ No newline at end of file
import WFTaskUIServiceBase from './wftask-ui-service-base';
/**
* 工作流任务UI服务对象
*
* @export
* @class WFTaskUIService
*/
export default class WFTaskUIService extends WFTaskUIServiceBase {
/**
* Creates an instance of WFTaskUIService.
*
* @param {*} [opts={}]
* @memberof WFTaskUIService
*/
constructor(opts: any = {}) {
super(opts);
}
}
\ No newline at end of file
......@@ -28,6 +28,7 @@
</i-col>
</row>
</i-form>
</template>
<script lang='tsx'>
import { Vue, Component, Prop, Provide, Emit, Watch, Model,Inject } from 'vue-property-decorator';
......
......@@ -585,6 +585,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;
}
......
<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)"
......@@ -1255,7 +1255,7 @@ export default class MainBase extends Vue implements ControlInterface {
}
// 已选中则删除,没选中则添加
let selectIndex = this.selections.findIndex((item:any)=>{
return Object.is(item.wf_group,$event.wf_group);
return Object.is(item.wfgroup,$event.wfgroup);
});
if (Object.is(selectIndex,-1)){
this.selections.push(JSON.parse(JSON.stringify($event)));
......
......@@ -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;
......
......@@ -28,6 +28,7 @@
</i-col>
</row>
</i-form>
</template>
<script lang='tsx'>
import { Vue, Component, Prop, Provide, Emit, Watch, Model,Inject } from 'vue-property-decorator';
......
......@@ -632,6 +632,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;
}
......
<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)"
......@@ -1275,7 +1275,7 @@ export default class MainBase extends Vue implements ControlInterface {
}
// 已选中则删除,没选中则添加
let selectIndex = this.selections.findIndex((item:any)=>{
return Object.is(item.wf_group_member,$event.wf_group_member);
return Object.is(item.wfmember,$event.wfmember);
});
if (Object.is(selectIndex,-1)){
this.selections.push(JSON.parse(JSON.stringify($event)));
......
......@@ -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;
......
......@@ -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';
......
......@@ -663,6 +663,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;
}
......
<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)"
......@@ -1305,7 +1305,7 @@ export default class MainBase extends Vue implements ControlInterface {
}
// 已选中则删除,没选中则添加
let selectIndex = this.selections.findIndex((item:any)=>{
return Object.is(item.wf_definition,$event.wf_definition);
return Object.is(item.wfprocessdefinition,$event.wfprocessdefinition);
});
if (Object.is(selectIndex,-1)){
this.selections.push(JSON.parse(JSON.stringify($event)));
......
......@@ -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;
......
......@@ -530,6 +530,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;
}
......
......@@ -28,6 +28,7 @@
</i-col>
</row>
</i-form>
</template>
<script lang='tsx'>
import { Vue, Component, Prop, Provide, Emit, Watch, Model,Inject } from 'vue-property-decorator';
......
......@@ -558,6 +558,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;
}
......
<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)"
......@@ -1295,7 +1295,7 @@ export default class MainBase extends Vue implements ControlInterface {
}
// 已选中则删除,没选中则添加
let selectIndex = this.selections.findIndex((item:any)=>{
return Object.is(item.wf_user,$event.wf_user);
return Object.is(item.wfuser,$event.wfuser);
});
if (Object.is(selectIndex,-1)){
this.selections.push(JSON.parse(JSON.stringify($event)));
......
......@@ -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;
......
......@@ -23,6 +23,10 @@ zuul:
path: /wfusers/**
serviceId: ${ibiz.ref.service.ibzwf-api:ibzwf-api}
stripPrefix: false
wf_task:
path: /wftasks/**
serviceId: ${ibiz.ref.service.ibzwf-api:ibzwf-api}
stripPrefix: false
wf_definition:
path: /wfprocessdefinitions/**
serviceId: ${ibiz.ref.service.ibzwf-api:ibzwf-api}
......
......@@ -76,14 +76,6 @@ public class WFProcessDefinition extends EntityMP implements Serializable {
@JSONField(name = "pssystemid")
@JsonProperty("pssystemid")
private String pssystemid;
/**
* TaskDefinitionKey
*/
@DEField(name = "taskdefinitionkey")
@TableField(value = "taskdefinitionkey")
@JSONField(name = "taskprocessdefinitionkey")
@JsonProperty("taskprocessdefinitionkey")
private String taskprocessdefinitionkey;
/**
* 校验
*/
......@@ -140,14 +132,6 @@ public class WFProcessDefinition extends EntityMP implements Serializable {
this.modify("pssystemid",pssystemid);
}
/**
* 设置 [TaskDefinitionKey]
*/
public void setTaskprocessdefinitionkey(String taskprocessdefinitionkey){
this.taskprocessdefinitionkey = taskprocessdefinitionkey ;
this.modify("taskdefinitionkey",taskprocessdefinitionkey);
}
/**
* 设置 [校验]
*/
......
......@@ -66,6 +66,13 @@ public class WFProcessNode extends EntityBase implements Serializable {
@JsonProperty("processDefinitionName")
private String processdefinitionname;
/**
* 数量
*/
@JSONField(name = "cnt")
@JsonProperty("cnt")
private Integer cnt;
......
......@@ -43,13 +43,21 @@ public class WFTask extends EntityBase implements Serializable {
private String id;
/**
* 任务名称
* 状态
*/
@DEField(name = "taskname")
@JSONField(name = "name")
@JsonProperty("name")
private String name;
/**
* DefinitionId
*/
@DEField(name = "definitionid")
@JSONField(name = "processDefinitionId")
@JsonProperty("processDefinitionId")
private String processdefinitionid;
/**
* DefinitionKey
*/
......@@ -58,6 +66,36 @@ public class WFTask extends EntityBase implements Serializable {
@JsonProperty("processDefinitionKey")
private String processdefinitionkey;
/**
* 流程
*/
@DEField(name = "definitionname")
@JSONField(name = "processDefinitionName")
@JsonProperty("processDefinitionName")
private String processdefinitionname;
/**
* TaskDefinitionKey
*/
@JSONField(name = "taskDefinitionKey")
@JsonProperty("taskDefinitionKey")
private String taskdefinitionkey;
/**
* 待办事项
*/
@JSONField(name = "description")
@JsonProperty("description")
private String description;
/**
* 发起时间
*/
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", locale = "zh" , timezone="GMT+8")
@JSONField(name = "createTime" , format="yyyy-MM-dd HH:mm:ss")
@JsonProperty("createTime")
private Timestamp createtime;
/**
* 实例标识
*/
......@@ -74,17 +112,19 @@ public class WFTask extends EntityBase implements Serializable {
@JsonProperty("processInstanceBusinessKey")
private String processinstancebusinesskey;
/**
* TaskDefinitionKey
*/
@DEField(name = "taskdefinitionkey")
@JSONField(name = "taskProcessDefinitionKey")
@JsonProperty("taskProcessDefinitionKey")
private String taskprocessdefinitionkey;
/**
* 格式化日期 [发起时间]
*/
public String formatCreatetime(){
if (this.createtime == null) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(createtime);
}
}
......@@ -60,10 +60,9 @@ public class WFTaskWay extends EntityBase implements Serializable {
/**
* TaskDefinitionKey
*/
@DEField(name = "taskdefinitionkey")
@JSONField(name = "taskProcessDefinitionKey")
@JsonProperty("taskProcessDefinitionKey")
private String taskprocessdefinitionkey;
@JSONField(name = "taskDefinitionKey")
@JsonProperty("taskDefinitionKey")
private String taskdefinitionkey;
/**
* 实例标识
......
......@@ -25,8 +25,12 @@ import cn.ibizlab.util.filter.SearchContextBase;
@Slf4j
@Data
public class WFProcessNodeSearchContext extends SearchContextBase {
private String n_nodeid_eq;//[节点标识]
private String n_nodename_like;//[节点名称]
private String n_definitionkey_leftlike;//[DefinitionKey]
}
......@@ -25,7 +25,27 @@ import cn.ibizlab.util.filter.SearchContextBase;
@Slf4j
@Data
public class WFTaskSearchContext extends SearchContextBase {
private String n_taskname_like;//[任务名称]
private String n_taskname_like;//[状态]
private String n_definitionkey_leftlike;//[DefinitionKey]
private String n_definitionkey_like;//[DefinitionKey]
private String n_definitionname_like;//[流程]
private String n_taskdefinitionkey_like;//[TaskDefinitionKey]
private String n_description_like;//[待办事项]
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
@JSONField(format="yyyy-MM-dd HH:mm:ss")
private Timestamp n_createtime_gtandeq;//[发起时间]
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
@JSONField(format="yyyy-MM-dd HH:mm:ss")
private Timestamp n_createtime_ltandeq;//[发起时间]
private String n_businesskey_eq;//[业务键值]
}
......
......@@ -36,7 +36,7 @@
<!--输出实体[WF_DEFINITION]数据结构 -->
<changeSet author="a_A_5d9d78509" id="tab-wf_definition-57-3">
<changeSet author="a_A_5d9d78509" id="tab-wf_definition-58-3">
<createTable tableName="IBZWFDEFINITION">
<column name="DEFINITIONKEY" remarks="" type="VARCHAR(100)">
<constraints primaryKey="true" primaryKeyName="PK_WF_DEFINITION_DEFINITIONKEY"/>
......@@ -49,8 +49,6 @@
</column>
<column name="PSSYSTEMID" remarks="" type="VARCHAR(100)">
</column>
<column name="TASKDEFINITIONKEY" remarks="" type="VARCHAR(100)">
</column>
<column name="MD5CHECK" remarks="" type="VARCHAR(100)">
</column>
<column name="BPMNFILE" remarks="" type="VARCHAR(1000)">
......
......@@ -5,7 +5,7 @@
<!--该方法用于重写mybatis中selectById方法,以实现查询逻辑属性-->
<select id="selectById" resultMap="WFProcessDefinitionResultMap" databaseId="mysql">
<![CDATA[select t1.* from (SELECT t1.`BPMNFILE`, t1.`DEFINITIONKEY`, t1.`DEFINITIONNAME`, t1.`DEPLOYKEY`, t1.`MD5CHECK`, t1.`MODELENABLE`, t1.`MODELVERSION`, t1.`PSSYSTEMID`, t1.`TASKDEFINITIONKEY` FROM `IBZWFDEFINITION` t1 ) t1 where definitionkey=#{id}]]>
<![CDATA[select t1.* from (SELECT t1.`BPMNFILE`, t1.`DEFINITIONKEY`, t1.`DEFINITIONNAME`, t1.`DEPLOYKEY`, t1.`MD5CHECK`, t1.`MODELENABLE`, t1.`MODELVERSION`, t1.`PSSYSTEMID` FROM `IBZWFDEFINITION` t1 ) t1 where definitionkey=#{id}]]>
</select>
<select id="selectById" resultMap="WFProcessDefinitionResultMap" databaseId="oracle">
<![CDATA[select t1.* from (SELECT t1.BPMNFILE, t1.DEFINITIONKEY, t1.DEFINITIONNAME, t1.DEPLOYKEY, t1.MD5CHECK, t1.MODELENABLE, t1.MODELVERSION, t1.PSSYSTEMID, t1.TASKDEFINITIONKEY FROM IBZWFDEFINITION t1 ) t1 where definitionkey=#{id}]]>
......@@ -17,7 +17,6 @@
<!--通过mybatis将查询结果注入到entity中,通过配置autoMapping="true"由mybatis自动处理映射关系 -->
<resultMap id="WFProcessDefinitionResultMap" type="cn.ibizlab.core.workflow.domain.WFProcessDefinition" autoMapping="true">
<id property="definitionkey" column="definitionkey" /><!--主键字段映射-->
<result property="taskprocessdefinitionkey" column="taskdefinitionkey" />
</resultMap>
......@@ -34,7 +33,7 @@
<!--数据查询[Default]-->
<sql id="Default" databaseId="mysql">
<![CDATA[ SELECT t1.`BPMNFILE`, t1.`DEFINITIONKEY`, t1.`DEFINITIONNAME`, t1.`DEPLOYKEY`, t1.`MD5CHECK`, t1.`MODELENABLE`, t1.`MODELVERSION`, t1.`PSSYSTEMID`, t1.`TASKDEFINITIONKEY` FROM `IBZWFDEFINITION` t1
<![CDATA[ SELECT t1.`BPMNFILE`, t1.`DEFINITIONKEY`, t1.`DEFINITIONNAME`, t1.`DEPLOYKEY`, t1.`MD5CHECK`, t1.`MODELENABLE`, t1.`MODELVERSION`, t1.`PSSYSTEMID` FROM `IBZWFDEFINITION` t1
]]>
</sql>
<!--数据查询[Default]-->
......@@ -49,7 +48,7 @@
</sql>
<!--数据查询[View]-->
<sql id="View" databaseId="mysql">
<![CDATA[ SELECT t1.`BPMNFILE`, t1.`DEFINITIONKEY`, t1.`DEFINITIONNAME`, t1.`DEPLOYKEY`, t1.`MD5CHECK`, t1.`MODELENABLE`, t1.`MODELVERSION`, t1.`PSSYSTEMID`, t1.`TASKDEFINITIONKEY` FROM `IBZWFDEFINITION` t1
<![CDATA[ SELECT t1.`BPMNFILE`, t1.`DEFINITIONKEY`, t1.`DEFINITIONNAME`, t1.`DEPLOYKEY`, t1.`MD5CHECK`, t1.`MODELENABLE`, t1.`MODELVERSION`, t1.`PSSYSTEMID` FROM `IBZWFDEFINITION` t1
]]>
</sql>
<!--数据查询[View]-->
......
......@@ -36,6 +36,14 @@
"datascope":[{"id":"all","name":"全部数据"}, {"id":"curorg","name":"当前单位"},{"id":"porg","name":"上级单位"},{"id":"sorg","name":"下级单位"} ]
}
, {
"dename":"WFTask",
"delogicname":"工作流任务",
"sysmoudle":{"id":"WORKFLOW","name":"workflow"},
"dedataset":[{"id":"Default" , "name":"DEFAULT"}],
"deaction":[{"id":"Create" , "name":"Create" , "type":"BUILTIN" },{"id":"Update" , "name":"Update" , "type":"BUILTIN" },{"id":"Remove" , "name":"Remove" , "type":"BUILTIN" },{"id":"Get" , "name":"Get" , "type":"BUILTIN" },{"id":"GetDraft" , "name":"GetDraft" , "type":"BUILTIN" },{"id":"CheckKey" , "name":"CheckKey" , "type":"BUILTIN" },{"id":"Save" , "name":"Save" , "type":"BUILTIN" }],
"datascope":[{"id":"all","name":"全部数据"}]
}
, {
"dename":"WFProcessDefinition",
"delogicname":"流程定义",
"sysmoudle":{"id":"WORKFLOW","name":"workflow"},
......
......@@ -64,14 +64,6 @@ public class WFProcessDefinitionDTO extends DTOBase implements Serializable {
@JsonProperty("pssystemid")
private String pssystemid;
/**
* 属性 [TASKDEFINITIONKEY]
*
*/
@JSONField(name = "taskprocessdefinitionkey")
@JsonProperty("taskprocessdefinitionkey")
private String taskprocessdefinitionkey;
/**
* 属性 [MD5CHECK]
*
......@@ -129,14 +121,6 @@ public class WFProcessDefinitionDTO extends DTOBase implements Serializable {
this.modify("pssystemid",pssystemid);
}
/**
* 设置 [TASKDEFINITIONKEY]
*/
public void setTaskprocessdefinitionkey(String taskprocessdefinitionkey){
this.taskprocessdefinitionkey = taskprocessdefinitionkey ;
this.modify("taskdefinitionkey",taskprocessdefinitionkey);
}
/**
* 设置 [MD5CHECK]
*/
......
package cn.ibizlab.api.dto;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.math.BigInteger;
import java.util.Map;
import java.util.HashMap;
import java.io.Serializable;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.fastjson.annotation.JSONField;
import cn.ibizlab.util.domain.DTOBase;
import cn.ibizlab.util.domain.DTOClient;
import lombok.Data;
/**
* 服务DTO对象[WFTaskDTO]
*/
@Data
public class WFTaskDTO extends DTOBase implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 属性 [TASKID]
*
*/
@JSONField(name = "id")
@JsonProperty("id")
private String id;
/**
* 属性 [TASKNAME]
*
*/
@JSONField(name = "name")
@JsonProperty("name")
private String name;
/**
* 属性 [DEFINITIONID]
*
*/
@JSONField(name = "processdefinitionid")
@JsonProperty("processdefinitionid")
private String processdefinitionid;
/**
* 属性 [DEFINITIONKEY]
*
*/
@JSONField(name = "processdefinitionkey")
@JsonProperty("processdefinitionkey")
private String processdefinitionkey;
/**
* 属性 [DEFINITIONNAME]
*
*/
@JSONField(name = "processdefinitionname")
@JsonProperty("processdefinitionname")
private String processdefinitionname;
/**
* 属性 [TASKDEFINITIONKEY]
*
*/
@JSONField(name = "taskdefinitionkey")
@JsonProperty("taskdefinitionkey")
private String taskdefinitionkey;
/**
* 属性 [DESCRIPTION]
*
*/
@JSONField(name = "description")
@JsonProperty("description")
private String description;
/**
* 属性 [CREATETIME]
*
*/
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", locale = "zh" , timezone="GMT+8")
@JSONField(name = "createtime" , format="yyyy-MM-dd HH:mm:ss")
@JsonProperty("createtime")
private Timestamp createtime;
/**
* 属性 [INSTANCEID]
*
*/
@JSONField(name = "processinstanceid")
@JsonProperty("processinstanceid")
private String processinstanceid;
/**
* 属性 [BUSINESSKEY]
*
*/
@JSONField(name = "processinstancebusinesskey")
@JsonProperty("processinstancebusinesskey")
private String processinstancebusinesskey;
/**
* 设置 [TASKNAME]
*/
public void setName(String name){
this.name = name ;
this.modify("taskname",name);
}
/**
* 设置 [DEFINITIONID]
*/
public void setProcessdefinitionid(String processdefinitionid){
this.processdefinitionid = processdefinitionid ;
this.modify("definitionid",processdefinitionid);
}
/**
* 设置 [DEFINITIONKEY]
*/
public void setProcessdefinitionkey(String processdefinitionkey){
this.processdefinitionkey = processdefinitionkey ;
this.modify("definitionkey",processdefinitionkey);
}
/**
* 设置 [DEFINITIONNAME]
*/
public void setProcessdefinitionname(String processdefinitionname){
this.processdefinitionname = processdefinitionname ;
this.modify("definitionname",processdefinitionname);
}
/**
* 设置 [TASKDEFINITIONKEY]
*/
public void setTaskdefinitionkey(String taskdefinitionkey){
this.taskdefinitionkey = taskdefinitionkey ;
this.modify("taskdefinitionkey",taskdefinitionkey);
}
/**
* 设置 [DESCRIPTION]
*/
public void setDescription(String description){
this.description = description ;
this.modify("description",description);
}
/**
* 设置 [CREATETIME]
*/
public void setCreatetime(Timestamp createtime){
this.createtime = createtime ;
this.modify("createtime",createtime);
}
/**
* 设置 [INSTANCEID]
*/
public void setProcessinstanceid(String processinstanceid){
this.processinstanceid = processinstanceid ;
this.modify("instanceid",processinstanceid);
}
/**
* 设置 [BUSINESSKEY]
*/
public void setProcessinstancebusinesskey(String processinstancebusinesskey){
this.processinstancebusinesskey = processinstancebusinesskey ;
this.modify("businesskey",processinstancebusinesskey);
}
}
package cn.ibizlab.api.mapping;
import org.mapstruct.*;
import cn.ibizlab.core.workflow.domain.WFTask;
import cn.ibizlab.api.dto.WFTaskDTO;
import cn.ibizlab.util.domain.MappingBase;
import org.mapstruct.factory.Mappers;
@Mapper(componentModel = "spring", uses = {},implementationName="apiWFTaskMapping",
nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE,
nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface WFTaskMapping extends MappingBase<WFTaskDTO, WFTask> {
}
package cn.ibizlab.api.rest;
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 lombok.extern.slf4j.Slf4j;
import com.alibaba.fastjson.JSONObject;
import javax.servlet.ServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cglib.beans.BeanCopier;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.http.HttpStatus;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.util.StringUtils;
import org.springframework.context.annotation.Lazy;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.access.prepost.PostAuthorize;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import cn.ibizlab.api.dto.*;
import cn.ibizlab.api.mapping.*;
import cn.ibizlab.core.workflow.domain.WFTask;
import cn.ibizlab.core.workflow.service.IWFTaskService;
import cn.ibizlab.core.workflow.filter.WFTaskSearchContext;
import cn.ibizlab.util.annotation.VersionCheck;
@Slf4j
@Api(tags = {"工作流任务" })
@RestController("api-wftask")
@RequestMapping("")
public class WFTaskResource {
@Autowired
public IWFTaskService wftaskService;
@Autowired
@Lazy
public WFTaskMapping wftaskMapping;
@ApiOperation(value = "新建工作流任务", tags = {"工作流任务" }, notes = "新建工作流任务")
@RequestMapping(method = RequestMethod.POST, value = "/wftasks")
@Transactional
public ResponseEntity<WFTaskDTO> create(@RequestBody WFTaskDTO wftaskdto) {
WFTask domain = wftaskMapping.toDomain(wftaskdto);
wftaskService.create(domain);
WFTaskDTO dto = wftaskMapping.toDto(domain);
return ResponseEntity.status(HttpStatus.OK).body(dto);
}
@ApiOperation(value = "批量新建工作流任务", tags = {"工作流任务" }, notes = "批量新建工作流任务")
@RequestMapping(method = RequestMethod.POST, value = "/wftasks/batch")
public ResponseEntity<Boolean> createBatch(@RequestBody List<WFTaskDTO> wftaskdtos) {
wftaskService.createBatch(wftaskMapping.toDomain(wftaskdtos));
return ResponseEntity.status(HttpStatus.OK).body(true);
}
@ApiOperation(value = "更新工作流任务", tags = {"工作流任务" }, notes = "更新工作流任务")
@RequestMapping(method = RequestMethod.PUT, value = "/wftasks/{wftask_id}")
@Transactional
public ResponseEntity<WFTaskDTO> update(@PathVariable("wftask_id") String wftask_id, @RequestBody WFTaskDTO wftaskdto) {
WFTask domain = wftaskMapping.toDomain(wftaskdto);
domain .setId(wftask_id);
wftaskService.update(domain );
WFTaskDTO dto = wftaskMapping.toDto(domain );
return ResponseEntity.status(HttpStatus.OK).body(dto);
}
@ApiOperation(value = "批量更新工作流任务", tags = {"工作流任务" }, notes = "批量更新工作流任务")
@RequestMapping(method = RequestMethod.PUT, value = "/wftasks/batch")
public ResponseEntity<Boolean> updateBatch(@RequestBody List<WFTaskDTO> wftaskdtos) {
wftaskService.updateBatch(wftaskMapping.toDomain(wftaskdtos));
return ResponseEntity.status(HttpStatus.OK).body(true);
}
@ApiOperation(value = "删除工作流任务", tags = {"工作流任务" }, notes = "删除工作流任务")
@RequestMapping(method = RequestMethod.DELETE, value = "/wftasks/{wftask_id}")
@Transactional
public ResponseEntity<Boolean> remove(@PathVariable("wftask_id") String wftask_id) {
return ResponseEntity.status(HttpStatus.OK).body(wftaskService.remove(wftask_id));
}
@ApiOperation(value = "批量删除工作流任务", tags = {"工作流任务" }, notes = "批量删除工作流任务")
@RequestMapping(method = RequestMethod.DELETE, value = "/wftasks/batch")
public ResponseEntity<Boolean> removeBatch(@RequestBody List<String> ids) {
wftaskService.removeBatch(ids);
return ResponseEntity.status(HttpStatus.OK).body(true);
}
@ApiOperation(value = "获取工作流任务", tags = {"工作流任务" }, notes = "获取工作流任务")
@RequestMapping(method = RequestMethod.GET, value = "/wftasks/{wftask_id}")
public ResponseEntity<WFTaskDTO> get(@PathVariable("wftask_id") String wftask_id) {
WFTask domain = wftaskService.get(wftask_id);
WFTaskDTO dto = wftaskMapping.toDto(domain);
return ResponseEntity.status(HttpStatus.OK).body(dto);
}
@ApiOperation(value = "获取工作流任务草稿", tags = {"工作流任务" }, notes = "获取工作流任务草稿")
@RequestMapping(method = RequestMethod.GET, value = "/wftasks/getdraft")
public ResponseEntity<WFTaskDTO> getDraft() {
return ResponseEntity.status(HttpStatus.OK).body(wftaskMapping.toDto(wftaskService.getDraft(new WFTask())));
}
@ApiOperation(value = "检查工作流任务", tags = {"工作流任务" }, notes = "检查工作流任务")
@RequestMapping(method = RequestMethod.POST, value = "/wftasks/checkkey")
public ResponseEntity<Boolean> checkKey(@RequestBody WFTaskDTO wftaskdto) {
return ResponseEntity.status(HttpStatus.OK).body(wftaskService.checkKey(wftaskMapping.toDomain(wftaskdto)));
}
@ApiOperation(value = "保存工作流任务", tags = {"工作流任务" }, notes = "保存工作流任务")
@RequestMapping(method = RequestMethod.POST, value = "/wftasks/save")
public ResponseEntity<Boolean> save(@RequestBody WFTaskDTO wftaskdto) {
return ResponseEntity.status(HttpStatus.OK).body(wftaskService.save(wftaskMapping.toDomain(wftaskdto)));
}
@ApiOperation(value = "批量保存工作流任务", tags = {"工作流任务" }, notes = "批量保存工作流任务")
@RequestMapping(method = RequestMethod.POST, value = "/wftasks/savebatch")
public ResponseEntity<Boolean> saveBatch(@RequestBody List<WFTaskDTO> wftaskdtos) {
wftaskService.saveBatch(wftaskMapping.toDomain(wftaskdtos));
return ResponseEntity.status(HttpStatus.OK).body(true);
}
@ApiOperation(value = "获取DEFAULT", tags = {"工作流任务" } ,notes = "获取DEFAULT")
@RequestMapping(method= RequestMethod.GET , value="/wftasks/fetchdefault")
public ResponseEntity<List<WFTaskDTO>> fetchDefault(WFTaskSearchContext context) {
Page<WFTask> domains = wftaskService.searchDefault(context) ;
List<WFTaskDTO> list = wftaskMapping.toDto(domains.getContent());
return ResponseEntity.status(HttpStatus.OK)
.header("x-page", String.valueOf(context.getPageable().getPageNumber()))
.header("x-per-page", String.valueOf(context.getPageable().getPageSize()))
.header("x-total", String.valueOf(domains.getTotalElements()))
.body(list);
}
@ApiOperation(value = "查询DEFAULT", tags = {"工作流任务" } ,notes = "查询DEFAULT")
@RequestMapping(method= RequestMethod.POST , value="/wftasks/searchdefault")
public ResponseEntity<Page<WFTaskDTO>> searchDefault(@RequestBody WFTaskSearchContext context) {
Page<WFTask> domains = wftaskService.searchDefault(context) ;
return ResponseEntity.status(HttpStatus.OK)
.body(new PageImpl(wftaskMapping.toDto(domains.getContent()), context.getPageable(), domains.getTotalElements()));
}
}
......@@ -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{
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册