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

zhouweidong 发布系统代码 [ibz-wf,统一工作流]

上级 c632e620
......@@ -47,6 +47,14 @@
"viewname": "WFREModelEditView",
"viewtag": "5856bfb8b576cc2ee743801b23e58299"
},
"wfprocessnodepickupview": {
"title": "流程定义节点数据选择视图",
"caption": "流程定义节点",
"viewtype": "DEPICKUPVIEW",
"viewmodule": "workflow",
"viewname": "WFProcessNodePickupView",
"viewtag": "598d910e2d38250d2cdd0f9ad61100ca"
},
"wfuserpickupview": {
"title": "用户数据选择视图",
"caption": "用户",
......@@ -127,6 +135,14 @@
"viewname": "WFUserGridView",
"viewtag": "cf0fdabd8378e07ca72ac167b1406756"
},
"wfprocessnodepickupgridview": {
"title": "流程定义节点选择表格视图",
"caption": "流程定义节点",
"viewtype": "DEPICKUPGRIDVIEW",
"viewmodule": "workflow",
"viewname": "WFProcessNodePickupGridView",
"viewtag": "d7789706dc5ffcdab06b7088b8bfc3eb"
},
"wftaskeditview": {
"title": "工作流任务编辑视图",
"caption": "工作流任务",
......
......@@ -43,6 +43,7 @@ export class AuthServiceRegister {
this.allAuthService.set('wfmember', () => import('@/authservice/wfmember/wfmember-auth-service'));
this.allAuthService.set('wfuser', () => import('@/authservice/wfuser/wfuser-auth-service'));
this.allAuthService.set('wfprocessinstance', () => import('@/authservice/wfprocess-instance/wfprocess-instance-auth-service'));
this.allAuthService.set('wfprocessnode', () => import('@/authservice/wfprocess-node/wfprocess-node-auth-service'));
this.allAuthService.set('wfgroup', () => import('@/authservice/wfgroup/wfgroup-auth-service'));
this.allAuthService.set('wfremodel', () => import('@/authservice/wfremodel/wfremodel-auth-service'));
this.allAuthService.set('wfsystem', () => import('@/authservice/wfsystem/wfsystem-auth-service'));
......
import AuthService from '../auth-service';
/**
* 流程定义节点权限服务对象基类
*
* @export
* @class WFProcessNodeAuthServiceBase
* @extends {AuthService}
*/
export default class WFProcessNodeAuthServiceBase extends AuthService {
/**
* Creates an instance of WFProcessNodeAuthServiceBase.
*
* @param {*} [opts={}]
* @memberof WFProcessNodeAuthServiceBase
*/
constructor(opts: any = {}) {
super(opts);
}
/**
* 根据当前数据获取实体操作标识
*
* @param {*} mainSateOPPrivs 传入数据操作标识
* @returns {any}
* @memberof WFProcessNodeAuthServiceBase
*/
public getOPPrivs(mainSateOPPrivs:any):any{
let curDefaultOPPrivs:any = this.getSysOPPrivs();
let copyDefaultOPPrivs:any = JSON.parse(JSON.stringify(curDefaultOPPrivs));
if(mainSateOPPrivs){
Object.assign(curDefaultOPPrivs,mainSateOPPrivs);
}
// 统一资源优先
Object.keys(curDefaultOPPrivs).forEach((name:string) => {
if(this.sysOPPrivsMap.get(name) && copyDefaultOPPrivs[name] === 0){
curDefaultOPPrivs[name] = copyDefaultOPPrivs[name];
}
});
return curDefaultOPPrivs;
}
}
\ No newline at end of file
import WFProcessNodeAuthServiceBase from './wfprocess-node-auth-service-base';
/**
* 流程定义节点权限服务对象
*
* @export
* @class WFProcessNodeAuthService
* @extends {WFProcessNodeAuthServiceBase}
*/
export default class WFProcessNodeAuthService extends WFProcessNodeAuthServiceBase {
/**
* Creates an instance of WFProcessNodeAuthService.
*
* @param {*} [opts={}]
* @memberof WFProcessNodeAuthService
*/
constructor(opts: any = {}) {
super(opts);
}
}
\ No newline at end of file
......@@ -2,6 +2,7 @@ import wftask_BO_CN from '@locale/lanres/entities/wftask/wftask_BO_CN';
import wfmember_BO_CN from '@locale/lanres/entities/wfmember/wfmember_BO_CN';
import wfuser_BO_CN from '@locale/lanres/entities/wfuser/wfuser_BO_CN';
import wfprocessinstance_BO_CN from '@locale/lanres/entities/wfprocess-instance/wfprocess-instance_BO_CN';
import wfprocessnode_BO_CN from '@locale/lanres/entities/wfprocess-node/wfprocess-node_BO_CN';
import wfgroup_BO_CN from '@locale/lanres/entities/wfgroup/wfgroup_BO_CN';
import wfremodel_BO_CN from '@locale/lanres/entities/wfremodel/wfremodel_BO_CN';
import wfsystem_BO_CN from '@locale/lanres/entities/wfsystem/wfsystem_BO_CN';
......@@ -239,6 +240,7 @@ function getAppLocale(){
wfmember: wfmember_BO_CN(),
wfuser: wfuser_BO_CN(),
wfprocessinstance: wfprocessinstance_BO_CN(),
wfprocessnode: wfprocessnode_BO_CN(),
wfgroup: wfgroup_BO_CN(),
wfremodel: wfremodel_BO_CN(),
wfsystem: wfsystem_BO_CN(),
......
......@@ -2,6 +2,7 @@ import wftask_en_US from '@locale/lanres/entities/wftask/wftask_en_US';
import wfmember_en_US from '@locale/lanres/entities/wfmember/wfmember_en_US';
import wfuser_en_US from '@locale/lanres/entities/wfuser/wfuser_en_US';
import wfprocessinstance_en_US from '@locale/lanres/entities/wfprocess-instance/wfprocess-instance_en_US';
import wfprocessnode_en_US from '@locale/lanres/entities/wfprocess-node/wfprocess-node_en_US';
import wfgroup_en_US from '@locale/lanres/entities/wfgroup/wfgroup_en_US';
import wfremodel_en_US from '@locale/lanres/entities/wfremodel/wfremodel_en_US';
import wfsystem_en_US from '@locale/lanres/entities/wfsystem/wfsystem_en_US';
......@@ -248,6 +249,7 @@ function getAppLocale(){
wfmember: wfmember_en_US(),
wfuser: wfuser_en_US(),
wfprocessinstance: wfprocessinstance_en_US(),
wfprocessnode: wfprocessnode_en_US(),
wfgroup: wfgroup_en_US(),
wfremodel: wfremodel_en_US(),
wfsystem: wfsystem_en_US(),
......
......@@ -2,6 +2,7 @@ import wftask_zh_CN from '@locale/lanres/entities/wftask/wftask_zh_CN';
import wfmember_zh_CN from '@locale/lanres/entities/wfmember/wfmember_zh_CN';
import wfuser_zh_CN from '@locale/lanres/entities/wfuser/wfuser_zh_CN';
import wfprocessinstance_zh_CN from '@locale/lanres/entities/wfprocess-instance/wfprocess-instance_zh_CN';
import wfprocessnode_zh_CN from '@locale/lanres/entities/wfprocess-node/wfprocess-node_zh_CN';
import wfgroup_zh_CN from '@locale/lanres/entities/wfgroup/wfgroup_zh_CN';
import wfremodel_zh_CN from '@locale/lanres/entities/wfremodel/wfremodel_zh_CN';
import wfsystem_zh_CN from '@locale/lanres/entities/wfsystem/wfsystem_zh_CN';
......@@ -247,6 +248,7 @@ function getAppLocale(){
wfmember: wfmember_zh_CN(),
wfuser: wfuser_zh_CN(),
wfprocessinstance: wfprocessinstance_zh_CN(),
wfprocessnode: wfprocessnode_zh_CN(),
wfgroup: wfgroup_zh_CN(),
wfremodel: wfremodel_zh_CN(),
wfsystem: wfsystem_zh_CN(),
......
import WFProcessNode_BO_CN_Base from './wfprocess-node_BO_CN_base';
function getLocaleResource(){
const WFProcessNode_BO_CN_OwnData = {};
const targetData = Object.assign(WFProcessNode_BO_CN_Base(), WFProcessNode_BO_CN_OwnData);
return targetData;
}
export default getLocaleResource;
\ No newline at end of file
import commonLogic from '@/locale/logic/common/common-logic';
function getLocaleResourceBase(){
const data:any = {
fields: {
usertaskid: commonLogic.appcommonhandle("节点标识",null),
usertaskname: commonLogic.appcommonhandle("节点名称",null),
processdefinitionkey: commonLogic.appcommonhandle("DefinitionKey",null),
processdefinitionname: commonLogic.appcommonhandle("流程定义名称",null),
version: commonLogic.appcommonhandle("版本",null),
cnt: commonLogic.appcommonhandle("数量",null),
},
views: {
pickupview: {
caption: commonLogic.appcommonhandle("流程定义节点",null),
title: commonLogic.appcommonhandle("流程定义节点数据选择视图",null),
},
pickupgridview: {
caption: commonLogic.appcommonhandle("流程定义节点",null),
title: commonLogic.appcommonhandle("流程定义节点选择表格视图",null),
},
},
main_grid: {
columns: {
},
nodata:commonLogic.appcommonhandle("",null),
uiactions: {
},
},
default_searchform: {
details: {
formpage1: commonLogic.appcommonhandle("常规条件",null),
},
uiactions: {
},
},
};
return data;
}
export default getLocaleResourceBase;
\ No newline at end of file
import WFProcessNode_en_US_Base from './wfprocess-node_en_US_base';
function getLocaleResource(){
const WFProcessNode_en_US_OwnData = {};
const targetData = Object.assign(WFProcessNode_en_US_Base(), WFProcessNode_en_US_OwnData);
return targetData;
}
export default getLocaleResource;
\ No newline at end of file
import commonLogic from '@/locale/logic/common/common-logic';
function getLocaleResourceBase(){
const data:any = {
fields: {
usertaskid: commonLogic.appcommonhandle("节点标识",null),
usertaskname: commonLogic.appcommonhandle("节点名称",null),
processdefinitionkey: commonLogic.appcommonhandle("DefinitionKey",null),
processdefinitionname: commonLogic.appcommonhandle("流程定义名称",null),
version: commonLogic.appcommonhandle("版本",null),
cnt: commonLogic.appcommonhandle("数量",null),
},
views: {
pickupview: {
caption: commonLogic.appcommonhandle("流程定义节点",null),
title: commonLogic.appcommonhandle("流程定义节点数据选择视图",null),
},
pickupgridview: {
caption: commonLogic.appcommonhandle("流程定义节点",null),
title: commonLogic.appcommonhandle("流程定义节点选择表格视图",null),
},
},
main_grid: {
columns: {
},
nodata:commonLogic.appcommonhandle("",null),
uiactions: {
},
},
default_searchform: {
details: {
formpage1: commonLogic.appcommonhandle("常规条件",null),
},
uiactions: {
},
},
};
return data;
}
export default getLocaleResourceBase;
\ No newline at end of file
import WFProcessNode_zh_CN_Base from './wfprocess-node_zh_CN_base';
function getLocaleResource(){
const WFProcessNode_zh_CN_OwnData = {};
const targetData = Object.assign(WFProcessNode_zh_CN_Base(), WFProcessNode_zh_CN_OwnData);
return targetData;
}
export default getLocaleResource;
\ No newline at end of file
import commonLogic from '@/locale/logic/common/common-logic';
function getLocaleResourceBase(){
const data:any = {
fields: {
usertaskid: commonLogic.appcommonhandle("节点标识",null),
usertaskname: commonLogic.appcommonhandle("节点名称",null),
processdefinitionkey: commonLogic.appcommonhandle("DefinitionKey",null),
processdefinitionname: commonLogic.appcommonhandle("流程定义名称",null),
version: commonLogic.appcommonhandle("版本",null),
cnt: commonLogic.appcommonhandle("数量",null),
},
views: {
pickupview: {
caption: commonLogic.appcommonhandle("流程定义节点",null),
title: commonLogic.appcommonhandle("流程定义节点数据选择视图",null),
},
pickupgridview: {
caption: commonLogic.appcommonhandle("流程定义节点",null),
title: commonLogic.appcommonhandle("流程定义节点选择表格视图",null),
},
},
main_grid: {
columns: {
},
nodata:commonLogic.appcommonhandle("",null),
uiactions: {
},
},
default_searchform: {
details: {
formpage1: commonLogic.appcommonhandle("常规条件",null),
},
uiactions: {
},
},
};
return data;
}
export default getLocaleResourceBase;
\ No newline at end of file
import qs from 'qs';
import { MockAdapter } from '@/mock/mock-adapter';
const mock = MockAdapter.getInstance();
// 模拟数据
const mockDatas: Array<any> = [
];
//getwflink
mock.onGet(new RegExp(/^\/wfcore\/ibzwf-app-web\/wfprocessnodes\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => {
console.groupCollapsed("实体:wfprocessnode 方法: getwflink");
console.table({url:config.url, method: config.method, data:config.data});
console.groupEnd();
let status = MockAdapter.mockStatus(config);
if (status !== 200) {
return [status, {}];
}
return [status,[
{"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意",
"taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1",
"processInstanceId":"ddlfldldfldsfds","refViewKey":""},
{"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意",
"taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1",
"processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"}
]];
});
// getwfstep
mock.onGet(new RegExp(/^\/wfcore\/ibzwf-app-web\/wfprocessnodes\/process-definitions-nodes$/)).reply((config: any) => {
console.groupCollapsed("实体:wfprocessnode 方法: getwfstep");
console.table({url:config.url, method: config.method, data:config.data});
console.groupEnd();
let status = MockAdapter.mockStatus(config);
if (status !== 200) {
return [status, {}];
}
return [status, [
{"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd",
"userTaskName":"待审",
"cnt":0,
"processDefinitionKey":"support-workorders-approve-v1",
"processDefinitionName":"工单审批流程v1"
},
{"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927",
"userTaskName":"待分配",
"cnt":3,
"processDefinitionKey":"support-workorders-approve-v1",
"processDefinitionName":"工单审批流程v1"}
]];
});
// createBatch
mock.onPost(new RegExp(/^\/wfprocessnodes\/batch$/)).reply((config: any) => {
console.groupCollapsed("实体:wfprocessnode 方法: createBatch");
console.table({url:config.url, method: config.method, data:config.data});
console.groupEnd();
let status = MockAdapter.mockStatus(config);
if (status !== 200) {
return [status, {}];
}
return [status, {}];
});
// updateBatch
mock.onPut(new RegExp(/^\/wfprocessnodes\/batch$/)).reply((config: any) => {
console.groupCollapsed("实体:wfprocessnode 方法: updateBatch");
console.table({url:config.url, method: config.method, data:config.data});
console.groupEnd();
let status = MockAdapter.mockStatus(config);
if (status !== 200) {
return [status, {}];
}
return [status, {}];
});
// removeBatch
mock.onDelete(new RegExp(/^\/wfprocessnodes\/batch$/)).reply((config: any) => {
console.groupCollapsed("实体:wfprocessnode 方法: removeBatch");
console.table({url:config.url, method: config.method, data:config.data});
console.groupEnd();
let status = MockAdapter.mockStatus(config);
if (status !== 200) {
return [status, {}];
}
return [status, {}];
});
// URI参数传递情况未实现
// URI参数传递情况未实现
// URI参数传递情况未实现
// URI参数传递情况未实现
// URI参数传递情况未实现
// URI参数传递情况未实现
// URI参数传递情况未实现
// FetchDefault
mock.onGet(new RegExp(/^\/wfprocessnodes$/)).reply((config: any) => {
console.groupCollapsed("实体:wfprocessnode 方法: FetchDefault");
console.table({url:config.url, method: config.method, data:config.data});
let status = MockAdapter.mockStatus(config);
if (status !== 200) {
return [status, null];
}
console.groupCollapsed("response数据 status: "+status+" data: ");
console.table(mockDatas);
console.groupEnd();
console.groupEnd();
return [status, mockDatas ? mockDatas : []];
});
// FetchDefault
mock.onGet(new RegExp(/^\/wfprocessnodes(\?[\w-./?%&=,]*)*$/)).reply((config: any) => {
console.groupCollapsed("实体:wfprocessnode 方法: FetchDefault");
console.table({url:config.url, method: config.method, data:config.data});
if(config.url.includes('page')){
let url = config.url.split('?')[1];
let params = qs.parse(url);
Object.assign(config, params);
}
let status = MockAdapter.mockStatus(config);
if (status !== 200) {
return [status, null];
}
let total = mockDatas.length;
let records: Array<any> = [];
if(!config.page || !config.size){
records = mockDatas;
}else{
if((config.page-1)*config.size < total){
records = mockDatas.slice(config.page,config.size);
}
}
console.groupCollapsed("response数据 status: "+status+" data: ");
console.table(records ? records : []);
console.groupEnd();
console.groupEnd();
return [status, records ? records : []];
});
// URI参数传递情况未实现
// URI参数传递情况未实现
// URI参数传递情况未实现
// URI参数传递情况未实现
// URI参数传递情况未实现
// URI参数传递情况未实现
// URI参数传递情况未实现
// Select
mock.onGet(new RegExp(/^\/wfprocessnodes\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => {
console.groupCollapsed("实体:wfprocessnode 方法: Select");
console.table({url:config.url, method: config.method, data:config.data});
let status = MockAdapter.mockStatus(config);
if (status !== 200) {
return [status, null];
}
const paramArray:Array<any> = ['usertaskid'];
const matchArray:any = new RegExp(/^\/wfprocessnodes\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url);
let tempValue: any = {};
if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){
paramArray.forEach((item: any, index: number) => {
Object.defineProperty(tempValue, item, {
enumerable: true,
value: matchArray[index + 1]
});
});
}
let items = mockDatas ? mockDatas : [];
let _items = items.find((item: any) => Object.is(item.usertaskid, tempValue.usertaskid));
console.groupCollapsed("response数据 status: "+status+" data: ");
console.table(_items);
console.groupEnd();
console.groupEnd();
return [status, _items];
});
......@@ -11,6 +11,7 @@ import './entity/wftasks/wftasks';
import './entity/wfmembers/wfmembers';
import './entity/wfusers/wfusers';
import './entity/wfprocess-instances/wfprocess-instances';
import './entity/wfprocess-nodes/wfprocess-nodes';
import './entity/wfgroups/wfgroups';
import './entity/wfremodels/wfremodels';
import './entity/wfsystems/wfsystems';
......
......@@ -55,6 +55,14 @@ mock.onGet('./assets/json/view-config.json').reply((config: any) => {
"viewname": "WFREModelEditView",
"viewtag": "5856bfb8b576cc2ee743801b23e58299"
},
"wfprocessnodepickupview": {
"title": "流程定义节点数据选择视图",
"caption": "流程定义节点",
"viewtype": "DEPICKUPVIEW",
"viewmodule": "workflow",
"viewname": "WFProcessNodePickupView",
"viewtag": "598d910e2d38250d2cdd0f9ad61100ca"
},
"wfuserpickupview": {
"title": "用户数据选择视图",
"caption": "用户",
......@@ -135,6 +143,14 @@ mock.onGet('./assets/json/view-config.json').reply((config: any) => {
"viewname": "WFUserGridView",
"viewtag": "cf0fdabd8378e07ca72ac167b1406756"
},
"wfprocessnodepickupgridview": {
"title": "流程定义节点选择表格视图",
"caption": "流程定义节点",
"viewtype": "DEPICKUPGRIDVIEW",
"viewmodule": "workflow",
"viewname": "WFProcessNodePickupGridView",
"viewtag": "d7789706dc5ffcdab06b7088b8bfc3eb"
},
"wftaskeditview": {
"title": "工作流任务编辑视图",
"caption": "工作流任务",
......
......@@ -10,9 +10,11 @@ export const PageComponents = {
Vue.component('wftask-edit-view', () => import('@pages/workflow/wftask-edit-view/wftask-edit-view.vue'));
Vue.component('wfprocess-instance-active-instance-option-view', () => import('@pages/workflow/wfprocess-instance-active-instance-option-view/wfprocess-instance-active-instance-option-view.vue'));
Vue.component('wfmember-grid-view', () => import('@pages/workflow/wfmember-grid-view/wfmember-grid-view.vue'));
Vue.component('wfprocess-node-pickup-view', () => import('@pages/workflow/wfprocess-node-pickup-view/wfprocess-node-pickup-view.vue'));
Vue.component('wfmember-edit-view', () => import('@pages/workflow/wfmember-edit-view/wfmember-edit-view.vue'));
Vue.component('wfgroup-mpickup-view', () => import('@pages/workflow/wfgroup-mpickup-view/wfgroup-mpickup-view.vue'));
Vue.component('wfuser-mpickup-view', () => import('@pages/workflow/wfuser-mpickup-view/wfuser-mpickup-view.vue'));
Vue.component('wfprocess-node-pickup-grid-view', () => import('@pages/workflow/wfprocess-node-pickup-grid-view/wfprocess-node-pickup-grid-view.vue'));
Vue.component('wfuser-pickup-view', () => import('@pages/workflow/wfuser-pickup-view/wfuser-pickup-view.vue'));
Vue.component('wfgroup-pickup-view', () => import('@pages/workflow/wfgroup-pickup-view/wfgroup-pickup-view.vue'));
Vue.component('wfgroup-pickup-grid-view', () => import('@pages/workflow/wfgroup-pickup-grid-view/wfgroup-pickup-grid-view.vue'));
......
......@@ -205,6 +205,20 @@ const router = new Router({
},
component: () => import('@pages/workflow/wfmember-grid-view/wfmember-grid-view.vue'),
},
{
path: 'wfprocessnodes/:wfprocessnode?/pickupview/:pickupview?',
meta: {
caption: 'entities.wfprocessnode.views.pickupview.caption',
info:'',
parameters: [
{ pathName: 'wfindexview', parameterName: 'wfindexview' },
{ pathName: 'wfprocessnodes', parameterName: 'wfprocessnode' },
{ pathName: 'pickupview', parameterName: 'pickupview' },
],
requireAuth: true,
},
component: () => import('@pages/workflow/wfprocess-node-pickup-view/wfprocess-node-pickup-view.vue'),
},
{
path: 'wfusers/:wfuser?/wfmembers/:wfmember?/editview/:editview?',
meta: {
......@@ -277,6 +291,20 @@ const router = new Router({
},
component: () => import('@pages/workflow/wfuser-mpickup-view/wfuser-mpickup-view.vue'),
},
{
path: 'wfprocessnodes/:wfprocessnode?/pickupgridview/:pickupgridview?',
meta: {
caption: 'entities.wfprocessnode.views.pickupgridview.caption',
info:'',
parameters: [
{ pathName: 'wfindexview', parameterName: 'wfindexview' },
{ pathName: 'wfprocessnodes', parameterName: 'wfprocessnode' },
{ pathName: 'pickupgridview', parameterName: 'pickupgridview' },
],
requireAuth: true,
},
component: () => import('@pages/workflow/wfprocess-node-pickup-grid-view/wfprocess-node-pickup-grid-view.vue'),
},
{
path: 'wfusers/:wfuser?/pickupview/:pickupview?',
meta: {
......@@ -429,6 +457,19 @@ const router = new Router({
},
component: () => import('@pages/workflow/wfremodel-edit-view/wfremodel-edit-view.vue'),
},
{
path: '/wfprocessnodes/:wfprocessnode?/pickupview/:pickupview?',
meta: {
caption: 'entities.wfprocessnode.views.pickupview.caption',
info:'',
parameters: [
{ pathName: 'wfprocessnodes', parameterName: 'wfprocessnode' },
{ pathName: 'pickupview', parameterName: 'pickupview' },
],
requireAuth: true,
},
component: () => import('@pages/workflow/wfprocess-node-pickup-view/wfprocess-node-pickup-view.vue'),
},
{
path: '/wfusers/:wfuser?/pickupview/:pickupview?',
meta: {
......@@ -574,6 +615,19 @@ const router = new Router({
},
component: () => import('@pages/workflow/wfuser-pickup-grid-view/wfuser-pickup-grid-view.vue'),
},
{
path: '/wfprocessnodes/:wfprocessnode?/pickupgridview/:pickupgridview?',
meta: {
caption: 'entities.wfprocessnode.views.pickupgridview.caption',
info:'',
parameters: [
{ pathName: 'wfprocessnodes', parameterName: 'wfprocessnode' },
{ pathName: 'pickupgridview', parameterName: 'pickupgridview' },
],
requireAuth: true,
},
component: () => import('@pages/workflow/wfprocess-node-pickup-grid-view/wfprocess-node-pickup-grid-view.vue'),
},
{
path: '/wftasks/:wftask?/editview/:editview?',
meta: {
......
.wfprocess-node-pickup-grid-view{
position: relative;
}
.wfprocess-node-pickup-grid-view{
display: block;
}
\ No newline at end of file
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import WFProcessNodePickupGridViewBase from './wfprocess-node-pickup-grid-view-base.vue';
import view_grid from '@widgets/wfprocess-node/main-grid/main-grid.vue';
import view_searchform from '@widgets/wfprocess-node/default-searchform/default-searchform.vue';
@Component({
components: {
view_grid,
view_searchform,
},
beforeRouteEnter: (to: any, from: any, next: any) => {
next((vm: any) => {
if(!Object.is(vm.navModel,"route")){
vm.initNavDataWithTab(vm.viewCacheData);
}
vm.$store.commit('addCurPageViewtag', { fullPath: to.fullPath, viewtag: vm.viewtag });
});
},
})
export default class WFProcessNodePickupGridView extends WFProcessNodePickupGridViewBase {
}
</script>
\ No newline at end of file
.wfprocess-node-pickup-view{
position: relative;
}
.pickup-view {
>.pickupviewpanel {
flex-grow: 1;
display: flex;
justify-content: flex-end;
height: calc(100% - 64px);
}
>.footer {
height: 64px;
}
}
\ No newline at end of file
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import WFProcessNodePickupViewBase from './wfprocess-node-pickup-view-base.vue';
import view_pickupviewpanel from '@widgets/wfprocess-node/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.vue';
@Component({
components: {
view_pickupviewpanel,
},
beforeRouteEnter: (to: any, from: any, next: any) => {
next((vm: any) => {
if(!Object.is(vm.navModel,"route")){
vm.initNavDataWithTab(vm.viewCacheData);
}
vm.$store.commit('addCurPageViewtag', { fullPath: to.fullPath, viewtag: vm.viewtag });
});
},
})
export default class WFProcessNodePickupView extends WFProcessNodePickupViewBase {
}
</script>
\ No newline at end of file
......@@ -43,6 +43,7 @@ export class EntityServiceRegister {
this.allEntityService.set('wfmember', () => import('@/service/wfmember/wfmember-service'));
this.allEntityService.set('wfuser', () => import('@/service/wfuser/wfuser-service'));
this.allEntityService.set('wfprocessinstance', () => import('@/service/wfprocess-instance/wfprocess-instance-service'));
this.allEntityService.set('wfprocessnode', () => import('@/service/wfprocess-node/wfprocess-node-service'));
this.allEntityService.set('wfgroup', () => import('@/service/wfgroup/wfgroup-service'));
this.allEntityService.set('wfremodel', () => import('@/service/wfremodel/wfremodel-service'));
this.allEntityService.set('wfsystem', () => import('@/service/wfsystem/wfsystem-service'));
......
import { Http,Util } from '@/utils';
import EntityService from '../entity-service';
/**
* 流程定义节点服务对象基类
*
* @export
* @class WFProcessNodeServiceBase
* @extends {EntityServie}
*/
export default class WFProcessNodeServiceBase extends EntityService {
/**
* Creates an instance of WFProcessNodeServiceBase.
*
* @param {*} [opts={}]
* @memberof WFProcessNodeServiceBase
*/
constructor(opts: any = {}) {
super(opts);
}
/**
* 初始化基础数据
*
* @memberof WFProcessNodeServiceBase
*/
public initBasicData(){
this.APPLYDEKEY ='wfprocessnode';
this.APPDEKEY = 'usertaskid';
this.APPDENAME = 'wfprocessnodes';
this.APPDETEXT = 'usertaskname';
this.APPNAME = 'web';
this.SYSTEMNAME = 'ibzwf';
}
// 实体接口
/**
* FetchDefault接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof WFProcessNodeServiceBase
*/
public async FetchDefault(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
}
/**
* searchDefault接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof WFProcessNodeServiceBase
*/
public async searchDefault(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let tempData:any = JSON.parse(JSON.stringify(data));
return await Http.getInstance().post(`/wfprocessnodes/searchdefault`,tempData,isloading);
}
/**
* Select接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof WFProcessNodeServiceBase
*/
public async Select(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let res:any = Http.getInstance().get(`/wfprocessnodes/${context.wfprocessnode}/select`,isloading);
return res;
}
}
\ No newline at end of file
import { Http,Util } from '@/utils';
import WFProcessNodeServiceBase from './wfprocess-node-service-base';
/**
* 流程定义节点服务对象
*
* @export
* @class WFProcessNodeService
* @extends {WFProcessNodeServiceBase}
*/
export default class WFProcessNodeService extends WFProcessNodeServiceBase {
/**
* Creates an instance of WFProcessNodeService.
*
* @param {*} [opts={}]
* @memberof WFProcessNodeService
*/
constructor(opts: any = {}) {
super(opts);
}
}
\ No newline at end of file
......@@ -66,6 +66,16 @@ export const viewstate: any = {
refviews: [
],
},
{
viewtag: '598d910e2d38250d2cdd0f9ad61100ca',
viewmodule: 'workflow',
viewname: 'WFProcessNodePickupView',
viewaction: '',
viewdatachange: false,
refviews: [
'd7789706dc5ffcdab06b7088b8bfc3eb',
],
},
{
viewtag: '61c5bff70bcf56e1dc0bb0900df9c98c',
viewmodule: 'workflow',
......@@ -166,6 +176,15 @@ export const viewstate: any = {
'ffd6ce24e0a1aa780920b48721e502a7',
],
},
{
viewtag: 'd7789706dc5ffcdab06b7088b8bfc3eb',
viewmodule: 'workflow',
viewname: 'WFProcessNodePickupGridView',
viewaction: '',
viewdatachange: false,
refviews: [
],
},
{
viewtag: 'e3020680a441ab58a29db6fe2434f08b',
viewmodule: 'workflow',
......@@ -182,6 +201,7 @@ export const viewstate: any = {
viewaction: '',
viewdatachange: false,
refviews: [
'598d910e2d38250d2cdd0f9ad61100ca',
],
},
{
......
......@@ -43,6 +43,7 @@ export class UIServiceRegister {
this.allUIService.set('wfmember', () => import('@/uiservice/wfmember/wfmember-ui-service'));
this.allUIService.set('wfuser', () => import('@/uiservice/wfuser/wfuser-ui-service'));
this.allUIService.set('wfprocessinstance', () => import('@/uiservice/wfprocess-instance/wfprocess-instance-ui-service'));
this.allUIService.set('wfprocessnode', () => import('@/uiservice/wfprocess-node/wfprocess-node-ui-service'));
this.allUIService.set('wfgroup', () => import('@/uiservice/wfgroup/wfgroup-ui-service'));
this.allUIService.set('wfremodel', () => import('@/uiservice/wfremodel/wfremodel-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 WFProcessNodeService from '@/service/wfprocess-node/wfprocess-node-service';
import WFProcessNodeAuthService from '@/authservice/wfprocess-node/wfprocess-node-auth-service';
/**
* 流程定义节点UI服务对象基类
*
* @export
* @class WFProcessNodeUIServiceBase
*/
export default class WFProcessNodeUIServiceBase extends UIService {
/**
* 是否支持工作流
*
* @memberof WFProcessNodeUIServiceBase
*/
public isEnableWorkflow:boolean = false;
/**
* 是否支持实体主状态
*
* @memberof WFProcessNodeUIServiceBase
*/
public isEnableDEMainState:boolean = false;
/**
* 当前UI服务对应的数据服务对象
*
* @memberof WFProcessNodeUIServiceBase
*/
public dataService:WFProcessNodeService = new WFProcessNodeService();
/**
* 所有关联视图
*
* @memberof WFProcessNodeUIServiceBase
*/
public allViewMap: Map<string, Object> = new Map();
/**
* 状态值
*
* @memberof WFProcessNodeUIServiceBase
*/
public stateValue: number = 0;
/**
* 状态属性
*
* @memberof WFProcessNodeUIServiceBase
*/
public stateField: string = "";
/**
* 主状态属性集合
*
* @memberof WFProcessNodeUIServiceBase
*/
public mainStateFields:Array<any> = [];
/**
* 主状态集合Map
*
* @memberof WFProcessNodeUIServiceBase
*/
public allDeMainStateMap:Map<string,string> = new Map();
/**
* 主状态操作标识Map
*
* @memberof WFProcessNodeUIServiceBase
*/
public allDeMainStateOPPrivsMap:Map<string,any> = new Map();
/**
* Creates an instance of WFProcessNodeUIServiceBase.
*
* @param {*} [opts={}]
* @memberof WFProcessNodeUIServiceBase
*/
constructor(opts: any = {}) {
super(opts);
this.authService = new WFProcessNodeAuthService(opts);
this.initViewMap();
this.initDeMainStateMap();
this.initDeMainStateOPPrivsMap();
}
/**
* 初始化视图Map
*
* @memberof WFProcessNodeUIServiceBase
*/
public initViewMap(){
this.allViewMap.set('PICKUPVIEW:',{viewname:'pickupview',srfappde:'wfprocessnodes',component:'wfprocess-node-pickup-view'});
this.allViewMap.set(':',{viewname:'pickupgridview',srfappde:'wfprocessnodes',component:'wfprocess-node-pickup-grid-view'});
}
/**
* 初始化主状态集合
*
* @memberof WFProcessNodeUIServiceBase
*/
public initDeMainStateMap(){
}
/**
* 初始化主状态操作标识
*
* @memberof WFProcessNodeUIServiceBase
*/
public initDeMainStateOPPrivsMap(){
}
/**
* 获取指定数据的重定向页面
*
* @param srfkey 数据主键
* @param isEnableWorkflow 重定向视图是否需要处理流程中的数据
* @memberof WFProcessNodeUIServiceBase
*/
public async getRDAppView(srfkey:string,isEnableWorkflow:boolean){
this.isEnableWorkflow = isEnableWorkflow;
// 进行数据查询
let result:any = await this.dataService.Get({wfprocessnode: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 WFProcessNodeUIServiceBase
*/
public getRealDEType(entity:any){
}
/**
* 获取实体单数据实体视图预定义参数
*
* @param curData 当前数据
* @param bDataInWF 是否有数据在工作流中
* @param bWFMode 是否工作流模式
* @memberof WFProcessNodeUIServiceBase
*/
public async getDESDDEViewPDTParam(curData:any, bDataInWF:boolean, bWFMode:boolean){
let strPDTParam:string = '';
if (bDataInWF) {
// 判断数据是否在流程中
}
//多表单,todo
const multiFormDEField:string|null =null;
if (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 WFProcessNodeUIServiceBase
*/
public getDEMainStateTag(curData:any){
if(this.mainStateFields.length === 0) return null;
this.mainStateFields.forEach((singleMainField:any) =>{
if(!(singleMainField in curData)){
console.warn(`当前数据对象不包含属性「${singleMainField}」,根据「${singleMainField}」属性进行的主状态计算默认为空值`);
}
})
for (let i = 0; i <= 1; i++) {
let strTag:string = (curData[this.mainStateFields[0]] != null && 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]] != null && 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]] != null && 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 WFProcessNodeUIServiceBase
*/
public getDEMainStateOPPrivs(data:any){
if(this.getDEMainStateTag(data)){
return this.allDeMainStateOPPrivsMap.get((this.getDEMainStateTag(data) as string));
}else{
return null;
}
}
/**
* 获取数据对象所有的操作标识
*
* @param data 当前数据
* @memberof WFProcessNodeUIServiceBase
*/
public getAllOPPrivs(data:any){
return this.authService.getOPPrivs(this.getDEMainStateOPPrivs(data));
}
}
\ No newline at end of file
import WFProcessNodeUIServiceBase from './wfprocess-node-ui-service-base';
/**
* 流程定义节点UI服务对象
*
* @export
* @class WFProcessNodeUIService
*/
export default class WFProcessNodeUIService extends WFProcessNodeUIServiceBase {
/**
* Creates an instance of WFProcessNodeUIService.
*
* @param {*} [opts={}]
* @memberof WFProcessNodeUIService
*/
constructor(opts: any = {}) {
super(opts);
}
}
\ No newline at end of file
......@@ -8,6 +8,25 @@
<i-col v-show="detailsModel.taskdefinitionname.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='taskdefinitionname' :itemRules="this.rules().taskdefinitionname" class='' :caption="$t('entities.wfprocessinstance.jump_form.details.taskdefinitionname')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.taskdefinitionname.error" :isEmptyCaption="false" labelPos="LEFT">
<app-picker
:formState="formState"
:data="data"
:context="context"
:viewparams="viewparams"
:localContext ='{ }'
:localParam ='{ n_xx_eq:"%definitionkey%" }'
:disabled="detailsModel.taskdefinitionname.disabled"
name='taskdefinitionname'
:service="service"
:acParams="{ }"
valueitem='taskdefinitionkey'
:value="data.taskdefinitionname"
editortype=""
:pickupView="{ viewname: 'wfprocess-node-pickup-view', title: $t('entities.wfprocessnode.views.pickupview.title'), deResParameters: [], parameters: [{ pathName: 'wfprocessnodes', parameterName: 'wfprocessnode' }, { pathName: 'pickupview', parameterName: 'pickupview' } ], placement:'' }"
style=""
@formitemvaluechange="onFormItemValueChange">
</app-picker>
</app-form-item>
......
/**
* Default 部件模型
*
* @export
* @class DefaultModel
*/
export default class DefaultModel {
/**
* 获取数据项集合
*
* @returns {any[]}
* @memberof DefaultModel
*/
public getDataItems(): any[] {
return [
{
name: 'srfwfmemo',
prop: 'srfwfmemo',
dataType: 'TEXT',
},
// 前端新增修改标识,新增为"0",修改为"1"或未设值
{
name: 'srffrontuf',
prop: 'srffrontuf',
dataType: 'TEXT',
},
]
}
}
\ No newline at end of file
.ivu-tabs-no-animation>.ivu-tabs-content{
padding: 0 16px;
}
.ivu-card-head{
padding: 14px 0;
}
.app-search-form {
padding: 8px 14px 0;
.ivu-form-item{
margin-bottom: 8px;
}
.search_reset {
margin-right: 12px;
margin-bottom: 8px;
}
.search-button{
text-align: right;
}
}
.app-search-form-flex {
height: 100%;
> .ivu-row {
height: 100%;
> .ivu-tabs {
height: 100%;
display: flex;
flex-direction: column;
> .ivu-tabs-content {
flex-grow: 1;
overflow: auto;
> .ivu-tabs-tabpane {
height: 100%;
}
}
}
}
}
.app-tabpanel-flex {
height: 100%;
> .ivu-tabs-content {
height: calc(100% - 52px);
> .ivu-tabs-tabpane {
height: 100%;
}
}
}
// this is less
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import DefaultBase from './default-searchform-base.vue';
@Component({
components: {
}
})
export default class Default extends DefaultBase {
}
</script>
\ No newline at end of file
/**
* Main 部件模型
*
* @export
* @class MainModel
*/
export default class MainModel {
/**
* 是否是实体数据导出
*
* @returns {any[]}
* @memberof MainGridMode
*/
public isDEExport: boolean = false;
/**
* 获取数据项集合
*
* @returns {any[]}
* @memberof MainGridMode
*/
public getDataItems(): any[] {
if(this.isDEExport){
return [
]
}else{
return [
{
name: 'srfkey',
prop: 'usertaskid',
dataType: 'TEXT',
isEditable:true
},
{
name: 'srfdataaccaction',
prop: 'usertaskid',
dataType: 'TEXT',
},
{
name: 'srfmajortext',
prop: 'usertaskname',
dataType: 'TEXT',
},
{
name: 'wfprocessnode',
prop: 'usertaskid',
},
{
name:'size',
prop:'size',
dataType: 'QUERYPARAM'
},
{
name:'query',
prop:'query',
dataType: 'QUERYPARAM'
},
{
name:'filter',
prop:'filter',
dataType: 'QUERYPARAM'
},
{
name:'page',
prop:'page',
dataType: 'QUERYPARAM'
},
{
name:'sort',
prop:'sort',
dataType: 'QUERYPARAM'
},
{
name:'srfparentdata',
prop:'srfparentdata',
dataType: 'QUERYPARAM'
},
// 前端新增修改标识,新增为"0",修改为"1"或未设值
{
name: 'srffrontuf',
prop: 'srffrontuf',
dataType: 'TEXT',
},
// 预置工作流数据字段
{
name: 'srfprocessdefinitionkey',
prop: 'srfprocessdefinitionkey',
dataType: 'TEXT'
},
{
name: 'srftaskdefinitionkey',
prop: 'srftaskdefinitionkey',
dataType: 'TEXT'
},
{
name: 'srftaskid',
prop: 'srftaskid',
dataType: 'TEXT'
}
]
}
}
}
\ No newline at end of file
.grid {
flex-grow: 1;
height: 100%;
overflow: auto;
.el-table__body-wrapper::-webkit-scrollbar {
/*滚动条整体样式*/
width : 10px !important; /*高宽分别对应横竖滚动条的尺寸*/
height: 10px !important;
}
.el-table__body-wrapper::-webkit-scrollbar-thumb {
/*滚动条颜色*/
border-radius : 10px !important;
background-color: #cecece !important;
}
.el-table__body-wrapper::-webkit-scrollbar-track {
/*滚动条里面轨道*/
box-shadow : inset 0 0 5px rgba(0, 0, 0, 0.2) !important;
background : #ededed !important;
border-radius: 10px !important;
}
/*表格文字过长省略*/
.el-table th>.cell, .el-table td>.cell{
white-space: nowrap;
text-overflow: ellipsis;
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;
}
.el-table {
height: 100%;
display:flex;
flex-direction: column;
justify-content: flex-start;
.el-table__row{
.grid-uiaction-divider {
padding:0 10px 0 10px;
border-left: 1px #b3b3b3 solid;
}
.grid-first-uiaction {
padding:0 10px 0 10px;
}
}
.quick-toolbar{
display: inline-block;
button{
background: #ebf3fb;
color: #2575ca;
border: 0;
}
}
.el-tooltip{
.ivu-form-item{
margin-bottom: unset !important;
}
}
.el-table__body .edit-cell{
padding:0;
.app-form-item{
margin-top: 20px;
margin-bottom: 20px;
}
}
.el-table__header-wrapper{
min-height: 45px;
max-height: 100px;
height: auto;
}
.el-table__footer-wrapper{
min-height: 45px;
max-height: 100px;
height: auto;
}
}
.grid-pagination {
height: 50px;
padding: 6px 0px;
.page-button {
button {
padding: 0;
font-size: 16px;
min-width: 32px;
height: 32px;
margin-right: 4px;
}
}
.page-column {
position: absolute;
left: 0;
.config-button {
margin-left: 8px;
}
}
.batch-toolbar{
position: absolute;
left: 105px;
>.toolbar-container{
button {
font-size: 16px;
min-width: 32px;
height: 32px;
margin-right: 4px;
margin-top: 0;
margin-bottom: 0;
}
}
}
}
}
.ivu-modal-content{
.footer{
.ivu-row{
text-align: right;
}
}
}
.cell-indeterminate {
>div>label {
>span {
.el-checkbox__inner {
background-color: #409eff;
border-color: #409eff;
}
.el-checkbox__inner:before {
content: "";
position: absolute;
display: block;
background-color: #fff;
height: 2px;
transform: scale(.5);
left: 0;
right: 0;
top: 5px;
}
}
>span.is-checked {
.el-checkbox__inner {
background-color: #409eff;
border-color: #409eff;
}
.el-checkbox__inner:after {
border: 0px;
}
}
}
}
.cell-select-all {
>div>label {
>span {
.el-checkbox__inner {
background-color: #409eff;
border-color: #409eff;
}
.el-checkbox__inner:after {
box-sizing: content-box;
content: "";
border: 1px solid #fff;
border-left: 0;
border-top: 0;
height: 7px;
left: 4px;
position: absolute;
top: 1px;
transform: rotate(45deg) scaleY(1);
width: 3px;
transition: transform .15s ease-in .05s;
transform-origin: center;
}
}
}
}
// this is less
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import MainBase from './main-grid-base.vue';
@Component({
components: {
}
})
export default class Main extends MainBase {
}
</script>
\ No newline at end of file
/**
* PickupViewpickupviewpanel 部件模型
*
* @export
* @class PickupViewpickupviewpanelModel
*/
export default class PickupViewpickupviewpanelModel {
/**
* 获取数据项集合
*
* @returns {any[]}
* @memberof PickupViewpickupviewpanelModel
*/
public getDataItems(): any[] {
return [
{
name: 'wfprocessnode',
prop: 'usertaskid',
},
{
name: 'usertaskname',
},
{
name: 'processdefinitionkey',
},
{
name: 'processdefinitionname',
},
{
name: 'version',
},
{
name: 'cnt',
},
]
}
}
\ No newline at end of file
import { Http } from '@/utils';
import ControlService from '@/widgets/control-service';
/**
* PickupViewpickupviewpanel 部件服务对象
*
* @export
* @class PickupViewpickupviewpanelService
*/
export default class PickupViewpickupviewpanelService extends ControlService {
}
\ No newline at end of file
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import PickupViewpickupviewpanelBase from './pickup-viewpickupviewpanel-pickupviewpanel-base.vue';
@Component({
components: {
}
})
export default class PickupViewpickupviewpanel extends PickupViewpickupviewpanelBase {
}
</script>
\ No newline at end of file
......@@ -79,6 +79,10 @@ zuul:
path: /wfprocessinstances/**
serviceId: ${ibiz.ref.service.ibzwf-api:ibzwf-api}
stripPrefix: false
wf_definition_node:
path: /wfprocessnodes/**
serviceId: ${ibiz.ref.service.ibzwf-api:ibzwf-api}
stripPrefix: false
wf_group:
path: /wfgroups/**
serviceId: ${ibiz.ref.service.ibzwf-api:ibzwf-api}
......
......@@ -37,6 +37,14 @@
"datascope":[{"id":"all","name":"全部数据"}]
}
, {
"dename":"WFProcessNode",
"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":"WFREModel",
"delogicname":"流程模型",
"sysmoudle":{"id":"WORKFLOW","name":"workflow"},
......
package cn.ibizlab.api.mapping;
import org.mapstruct.*;
import cn.ibizlab.core.workflow.domain.WFProcessNode;
import cn.ibizlab.api.dto.WFProcessNodeDTO;
import cn.ibizlab.util.domain.MappingBase;
@Mapper(componentModel = "spring", uses = {}, implementationName = "apiWFProcessNodeMapping",
nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE,
nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface WFProcessNodeMapping extends MappingBase<WFProcessNodeDTO, WFProcessNode> {
}
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.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 org.springframework.validation.annotation.Validated;
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.WFProcessNode;
import cn.ibizlab.core.workflow.service.IWFProcessNodeService;
import cn.ibizlab.core.workflow.filter.WFProcessNodeSearchContext;
import cn.ibizlab.util.annotation.VersionCheck;
@Slf4j
@Api(tags = {"流程定义节点" })
@RestController("api-wfprocessnode")
@RequestMapping("")
public class WFProcessNodeResource {
@Autowired
public IWFProcessNodeService wfprocessnodeService;
@Autowired
@Lazy
public WFProcessNodeMapping wfprocessnodeMapping;
}
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册