提交 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 {
......
<template>
<el-select style="width: 100%;" size='small' @change="onSelect" v-model="value" :disabled="disabled" @visible-change="onSelectOpen">
<el-option v-for="(item, index) in items" :key="index" :label="item.label" :value="item.value"></el-option>
</el-select>
<div class='app-upicker'>
<el-select ref="appUpicker" :value="refvalue" size='small' filterable
@change="onSelect" :disabled="disabled" style='width:100%;' clearable
@clear="onClear" @visible-change="onSelectOpen">
<template v-if="items">
<el-option v-for="(_item,index) in items" :key="index" :value="_item.value" :label="_item.label"></el-option>
</template>
</el-select>
<span style='position: absolute;right: 5px;color: #c0c4cc;top:0;font-size: 13px;'>
<i v-show="open" class='el-icon-arrow-up' @click="closeDropdown"></i>
<i v-show="!open" class='el-icon-arrow-down' @click="openDropdown"></i>
</span>
</div>
</template>
<script lang="ts">
import { Component, Vue, Prop, Model, Watch } from "vue-property-decorator";
import { Subject } from "rxjs";
import { AppModal } from "@/utils";
<script lang = 'ts'>
import { Component, Vue, Prop, Model, Watch } from 'vue-property-decorator';
import { Subject } from 'rxjs';
import { AppModal } from '@/utils';
@Component({})
export default class AppPicker extends Vue {
@Component({
})
export default class AppUpicker extends Vue {
/**
* 表单数据
*
* @type {*}
* @memberof AppPicker
*/
@Prop() public data!: any;
* 请求到的数据
* @type {any[]}
* @memberof AppUpicker
*/
public itemList: any[] = []
/**
* 属性项名称
*
* @type {string}
* @memberof AppPicker
*/
@Prop() public name!: string;
/**
* 视图上下文
*
* @type {*}
* @memberof AppFormDRUIPart
*/
@Prop() public context!: any;
/**
* 编辑器禁用
* 列表项请求路径
*
* @type {boolean}
* @type {string}
* @memberof AppUpicker
*/
@Prop() disabled?: boolean;
/**
* 视图参数
*
* @type {*}
* @memberof SelectFormBase
*/
@Prop() public viewparams: any;
public url: string = '';
/**
* 请求参数和请求数据的映射关系
......@@ -60,14 +46,6 @@ export default class AppPicker extends Vue {
*/
public interaction:any = {};
/**
* 当前表单项绑定的值
*
* @type {string}
* @memberof AppUpicker
*/
public value: string = "";
/**
* 编辑器参数
*
......@@ -76,61 +54,176 @@ export default class AppPicker extends Vue {
*/
@Prop() public itemParams?: any;
/**
* 编辑器参数
*
* @type {string}
* @memberof AppUpicker
*/
@Prop() public valueItem?: string;
/**
* 视图上下文
*
* @type {*}
* @memberof AppUpicker
*/
@Prop() public context!: any;
/**
* 列表项请求路径
*
* @type {string}
* @memberof AppUpicker
*/
public url: string = '';
/**
* 视图参数
*
* @type {*}
* @memberof AppUpicker
*/
@Prop() public viewparams!: any;
/**
* 下拉数组
* @type {any[]}
* @memberof AppPicker
*/
public items: any[] = [];
/**
* 表单数据
*
* @type {*}
* @memberof AppUpicker
*/
@Prop() public data!: any;
/**
* 请求到的数据
* @type {any[]}
* @memberof AppPicker
*/
public itemList: any[] = [{a:1,b:"zhangsan"},{a:2,b:"lisi"},{a:3,b:"wangwu"}]
/**
* 属性项名称
*
* @type {string}
* @memberof AppUpicker
*/
@Prop() public name!: string;
/**
* vue 生命周期
* 是否启用
*
* @memberof AppPicker
* @type {boolean}
* @memberof AppUpicker
*/
public mounted() {
// 解析编辑器参数
this.analysis(this.itemParams);
// 请求下拉数据
this.fectchItemList(this.url);
}
@Prop() public disabled?: boolean;
/**
* 下拉重新加载数据
/**
* 是否显示按钮
*
* @memberof AppPicker
* @type {boolean}
* @memberof AppUpicker
*/
public onSelectOpen() {
this.fectchItemList(this.url);
}
@Prop({default:true}) public showButton?: boolean;
/**
* 局部上下文导航参数
*
* @type {any}
* @memberof AppUpicker
*/
@Prop() public localContext!:any;
/**
* 局部导航参数
*
* @type {any}
* @memberof AppUpicker
*/
@Prop() public localParam!:any;
/**
* 值项名称
*
* @type {string}
* @memberof AppUpicker
*/
@Prop() public valueitem!: string;
/**
* 排序
*
* @type {string}
* @memberof AppUpicker
*/
@Prop() public sort?: string;
/**
* 值
*
* @type {*}
* @memberof AppUpicker
*/
@Model('change') public value?: any;
/**
* 当前值
*
* @type {string}
* @memberof AppUpicker
*/
public curvalue: string = '';
/**
* 下拉数组
* @type {any[]}
* @memberof AppUpicker
*/
public items: any[] = [];
/**
* 下拉图标指向状态管理
* @type {boolean}
* @memberof AppUpicker
*/
public open: boolean = false;
/**
* 输入状态
*
* @type {boolean}
* @memberof AppUpicker
*/
public inputState: boolean = false;
/**
* 获取关联数据项值
*
* @readonly
* @memberof AppUpicker
*/
get refvalue() {
if (this.valueitem && this.data) {
return this.data[this.valueitem];
}
return this.curvalue;
}
/**
* 值变化
*
* @param {*} newVal
* @param {*} oldVal
* @memberof AppUpicker
*/
@Watch('value',{immediate:true})
public onValueChange(newVal: any, oldVal: any) {
this.analysis(this.itemParams);
if(newVal){
this.curvalue = newVal;
const value = this.data[this.valueitem];
const index = this.items.findIndex((item: any) => Object.is(item.value, value));
if (index !== -1) {
return;
}
this.items = [];
if (value) {
this.items.push({text: newVal, value: value});
}
}
}
/**
* vue 生命周期
*
* @memberof AppUpicker
*/
public created() {
// 解析编辑器参数
this.analysis(this.itemParams);
}
/**
* 解析编辑器参数
* @param {*} itemparams
* @memberof AppPicker
*
* @memberof AppUpicker
*/
public analysis(itemparams:any) {
Object.keys(itemparams).forEach((param)=>{
......@@ -139,17 +232,20 @@ export default class AppPicker extends Vue {
}else{
this.interaction[param] = itemparams[param]
}
})
})
}
/**
* 请求下拉列表数据
* @param {string} url
* @memberof AppPicker
*
* @memberof AppUpicker
*/
public fectchItemList(url:string) {
let arg:any = {};
this.handlePublicParams(arg);
this.$http
.get(url)
.get(url,arg.param)
.then((response: any) => {
if (response && response.status==200 && response.data) {
this.itemList = response.data;
......@@ -172,37 +268,118 @@ export default class AppPicker extends Vue {
* 解析下拉列表数据
* @param {any[]} itemList 请求到的数据
* @param {any[]} items 下拉数组
* @memberof AppPicker
*
* @memberof AppUpicker
*/
public extractItem(itemList:any[],items:any[]) {
this.items.length = 0;
this.items = [];
itemList.forEach((item) => {
items.push({
this.items.push({
label: item[this.interaction.label],
value: item[this.interaction.value],
});
});
});
}
public onSelect(val: string) {
/**
* 下拉切换回调
* @param flag
*
* @memberof AppUpicker
*/
public onSelectOpen(flag: boolean): void {
this.open = flag;
if (this.open) {
this.fectchItemList(this.url);
}
}
/**
* 下拉选中
*
* @param {string} val
* @memberof AppUpicker
*/
public onSelect(val: string) {
let index = this.items.findIndex((item) => Object.is(item.value, val));
if (index >= 0) {
this.onACSelect(this.items[index]);
let item:any = this.items[index];
if (this.valueitem) {
this.$emit('formitemvaluechange', { name: this.valueitem, value: item.value });
}
if (this.name) {
this.$emit('formitemvaluechange', { name: this.name, value: item.label });
}
}
}
}
/**
* 选中数据回调
* @param item
*/
public onACSelect(item: any): void {
if(this.name){
this.$emit('formitemvaluechange', { name: this.name, value: item.value });
}
if(this.valueItem){
this.$emit('formitemvaluechange', { name: this.valueItem, value: item.value });
}
/**
* 清除
*
* @memberof AppUpicker
*/
public onClear($event: any): void {
if (this.valueitem) {
this.$emit('formitemvaluechange', { name: this.valueitem, value: '' });
}
if (this.name) {
this.$emit('formitemvaluechange', { name: this.name, value: '' });
}
this.$forceUpdate();
}
/**
* 公共参数处理
*
* @param {*} arg
* @returns
* @memberof AppUpicker
*/
public handlePublicParams(arg: any): boolean {
if (!this.data) {
this.$Notice.error({ title: (this.$t('components.appPicker.error') as any), desc: (this.$t('components.appPicker.formdataException') as any) });
return false;
}
// 合并表单参数
arg.param = this.viewparams ? JSON.parse(JSON.stringify(this.viewparams)) : {};
arg.context = this.context ? JSON.parse(JSON.stringify(this.context)) : {};
// 附加参数处理
if (this.localContext && Object.keys(this.localContext).length >0) {
let _context = this.$util.computedNavData(this.data,arg.context,arg.param,this.localContext);
Object.assign(arg.context,_context);
}
if (this.localParam && Object.keys(this.localParam).length >0) {
let _param = this.$util.computedNavData(this.data,arg.param,arg.param,this.localParam);
Object.assign(arg.param,_param);
}
return true;
}
/**
* 展开下拉
*
* @memberof AppUpicker
*/
public openDropdown() {
const appUpicker: any = this.$refs.appUpicker;
if(appUpicker) {
appUpicker.focus();
}
}
/**
* 收起下拉
*
* @memberof AppUpicker
*/
public closeDropdown() {
const appUpicker: any = this.$refs.appUpicker;
if(appUpicker) {
appUpicker.blur();
}
}
}
</script>
<style lang="less">
......
......@@ -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
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\/wftasks\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => {
console.groupCollapsed("实体:wftask 方法: 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\/wftasks\/process-definitions-nodes$/)).reply((config: any) => {
console.groupCollapsed("实体:wftask 方法: 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(/^\/wftasks\/batch$/)).reply((config: any) => {
console.groupCollapsed("实体:wftask 方法: 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(/^\/wftasks\/batch$/)).reply((config: any) => {
console.groupCollapsed("实体:wftask 方法: 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(/^\/wftasks\/batch$/)).reply((config: any) => {
console.groupCollapsed("实体:wftask 方法: 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, {}];
});
// Select
mock.onGet(new RegExp(/^\/wftasks\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => {
console.groupCollapsed("实体:wftask 方法: 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> = ['id'];
const matchArray:any = new RegExp(/^\/wftasks\/([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.id, tempValue.id));
console.groupCollapsed("response数据 status: "+status+" data: ");
console.table(_items);
console.groupEnd();
console.groupEnd();
return [status, _items];
});
// Create
mock.onPost(new RegExp(/^\/wftasks\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => {
console.groupCollapsed("实体:wftask 方法: Create");
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> = ['id'];
const matchArray:any = new RegExp(/^\/wftasks\/([a-zA-Z0-9\-\;]{1,35})$/).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]
});
});
}
console.groupCollapsed("response数据 status: "+status+" data: ");
console.table(mockDatas[0]);
console.groupEnd();
console.groupEnd();
return [status, mockDatas[0]];
});
// Update
mock.onPut(new RegExp(/^\/wftasks\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => {
console.groupCollapsed("实体:wftask 方法: Update");
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> = ['id'];
const matchArray:any = new RegExp(/^\/wftasks\/([a-zA-Z0-9\-\;]{1,35})$/).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.id, tempValue.id));
let data = JSON.parse(config.data);
mockDatas.forEach((item)=>{
if(item['id'] == tempValue['id'] ){
for(let value in data){
if(item.hasOwnProperty(value)){
item[value] = data[value];
}
}
}
})
console.groupCollapsed("response数据 status: "+status+" data: ");
console.table(data);
console.groupEnd();
console.groupEnd();
return [status, data];
});
// GetDraft
mock.onGet(new RegExp(/^\/wftasks\/getdraft$/)).reply((config: any) => {
console.groupCollapsed("实体:wftask 方法: GetDraft");
console.table({url:config.url, method: config.method, data:config.data});
// GetDraft
let status = MockAdapter.mockStatus(config);
if (status !== 200) {
return [status, null];
}
console.groupCollapsed("response数据 status: "+status+" data: ");
console.table({});
console.groupEnd();
console.groupEnd();
return [status, {}];
});
// CheckKey
mock.onPost(new RegExp(/^\/wftasks\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => {
console.groupCollapsed("实体:wftask 方法: CheckKey");
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> = ['id'];
const matchArray:any = new RegExp(/^\/wftasks\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).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.id, tempValue.id));
let data = JSON.parse(config.data);
mockDatas.forEach((item)=>{
if(item['id'] == tempValue['id'] ){
for(let value in data){
if(item.hasOwnProperty(value)){
item[value] = data[value];
}
}
}
})
console.groupCollapsed("response数据 status: "+status+" data: ");
console.table(data);
console.groupEnd();
console.groupEnd();
return [status, data];
});
// Save
mock.onPost(new RegExp(/^\/wftasks\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => {
console.groupCollapsed("实体:wftask 方法: Save");
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> = ['id'];
const matchArray:any = new RegExp(/^\/wftasks\/([a-zA-Z0-9\-\;]{1,35})\/save$/).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.id, tempValue.id));
let data = JSON.parse(config.data);
mockDatas.forEach((item)=>{
if(item['id'] == tempValue['id'] ){
for(let value in data){
if(item.hasOwnProperty(value)){
item[value] = data[value];
}
}
}
})
console.groupCollapsed("response数据 status: "+status+" data: ");
console.table(data);
console.groupEnd();
console.groupEnd();
return [status, data];
});
// FetchDefault
mock.onGet(new RegExp(/^\/wftasks\/fetchdefault$/)).reply((config: any) => {
console.groupCollapsed("实体:wftask 方法: 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(/^\/wftasks\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => {
console.groupCollapsed("实体:wftask 方法: 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参数传递情况未实现
// Remove
mock.onDelete(new RegExp(/^\/wftasks\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => {
console.groupCollapsed("实体:wftask 方法: Remove");
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> = ['id'];
const matchArray:any = new RegExp(/^\/wftasks\/([a-zA-Z0-9\-\;]{1,35})$/).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.id, tempValue.id));
console.groupCollapsed("response数据 status: "+status+" data: ");
console.table(_items?_items:{});
console.groupEnd();
console.groupEnd();
return [status, _items?_items:{}];
});
// Get
mock.onGet(new RegExp(/^\/wftasks\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => {
console.groupCollapsed("实体:wftask 方法: Get");
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> = ['id'];
const matchArray:any = new RegExp(/^\/wftasks\/([a-zA-Z0-9\-\;]{1,35})$/).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.id, tempValue.id));
console.groupCollapsed("response数据 status: "+status+" data: ");
console.table(_items?_items:{});
console.groupEnd();
console.groupEnd();
return [status, _items?_items:{}];
});
......@@ -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);
}
}
......
......@@ -25,7 +25,7 @@ const router = new Router({
});
},
meta: {
caption: 'app.views.wfindexview.title',
caption: 'app.views.wfindexview.caption',
info:'',
viewType: 'APPINDEX',
parameters: [
......@@ -38,7 +38,7 @@ const router = new Router({
{
path: 'wfgroups/:wfgroup?/pickupgridview/:pickupgridview?',
meta: {
caption: 'entities.wfgroup.views.pickupgridview.title',
caption: 'entities.wfgroup.views.pickupgridview.caption',
info:'',
parameters: [
{ pathName: 'wfindexview', parameterName: 'wfindexview' },
......@@ -52,7 +52,7 @@ const router = new Router({
{
path: 'wfusers/:wfuser?/pickupgridview/:pickupgridview?',
meta: {
caption: 'entities.wfuser.views.pickupgridview.title',
caption: 'entities.wfuser.views.pickupgridview.caption',
info:'',
parameters: [
{ pathName: 'wfindexview', parameterName: 'wfindexview' },
......@@ -66,7 +66,7 @@ const router = new Router({
{
path: 'wfprocessdefinitions/:wfprocessdefinition?/gridview/:gridview?',
meta: {
caption: 'entities.wfprocessdefinition.views.gridview.title',
caption: 'entities.wfprocessdefinition.views.gridview.caption',
info:'',
parameters: [
{ pathName: 'wfindexview', parameterName: 'wfindexview' },
......@@ -80,7 +80,7 @@ const router = new Router({
{
path: 'wfusers/:wfuser?/pickupview/:pickupview?',
meta: {
caption: 'entities.wfuser.views.pickupview.title',
caption: 'entities.wfuser.views.pickupview.caption',
info:'',
parameters: [
{ pathName: 'wfindexview', parameterName: 'wfindexview' },
......@@ -94,7 +94,7 @@ const router = new Router({
{
path: 'wfremodels/:wfremodel?/editview/:editview?',
meta: {
caption: 'entities.wfremodel.views.editview.title',
caption: 'entities.wfremodel.views.editview.caption',
info:'',
parameters: [
{ pathName: 'wfindexview', parameterName: 'wfindexview' },
......@@ -108,7 +108,7 @@ const router = new Router({
{
path: 'wfusers/:wfuser?/wfmembers/:wfmember?/editview/:editview?',
meta: {
caption: 'entities.wfmember.views.editview.title',
caption: 'entities.wfmember.views.editview.caption',
info:'',
parameters: [
{ pathName: 'wfindexview', parameterName: 'wfindexview' },
......@@ -123,7 +123,7 @@ const router = new Router({
{
path: 'wfgroups/:wfgroup?/wfmembers/:wfmember?/editview/:editview?',
meta: {
caption: 'entities.wfmember.views.editview.title',
caption: 'entities.wfmember.views.editview.caption',
info:'',
parameters: [
{ pathName: 'wfindexview', parameterName: 'wfindexview' },
......@@ -138,7 +138,7 @@ const router = new Router({
{
path: 'wfmembers/:wfmember?/editview/:editview?',
meta: {
caption: 'entities.wfmember.views.editview.title',
caption: 'entities.wfmember.views.editview.caption',
info:'',
parameters: [
{ pathName: 'wfindexview', parameterName: 'wfindexview' },
......@@ -152,7 +152,7 @@ const router = new Router({
{
path: 'wfgroups/:wfgroup?/gridview/:gridview?',
meta: {
caption: 'entities.wfgroup.views.gridview.title',
caption: 'entities.wfgroup.views.gridview.caption',
info:'',
parameters: [
{ pathName: 'wfindexview', parameterName: 'wfindexview' },
......@@ -166,7 +166,7 @@ const router = new Router({
{
path: 'wfusers/:wfuser?/mpickupview/:mpickupview?',
meta: {
caption: 'entities.wfuser.views.mpickupview.title',
caption: 'entities.wfuser.views.mpickupview.caption',
info:'',
parameters: [
{ pathName: 'wfindexview', parameterName: 'wfindexview' },
......@@ -180,7 +180,7 @@ const router = new Router({
{
path: 'wfgroups/:wfgroup?/mpickupview/:mpickupview?',
meta: {
caption: 'entities.wfgroup.views.mpickupview.title',
caption: 'entities.wfgroup.views.mpickupview.caption',
info:'',
parameters: [
{ pathName: 'wfindexview', parameterName: 'wfindexview' },
......@@ -194,7 +194,7 @@ const router = new Router({
{
path: 'wfusers/:wfuser?/wfmembers/:wfmember?/gridview/:gridview?',
meta: {
caption: 'entities.wfmember.views.gridview.title',
caption: 'entities.wfmember.views.gridview.caption',
info:'',
parameters: [
{ pathName: 'wfindexview', parameterName: 'wfindexview' },
......@@ -209,7 +209,7 @@ const router = new Router({
{
path: 'wfgroups/:wfgroup?/wfmembers/:wfmember?/gridview/:gridview?',
meta: {
caption: 'entities.wfmember.views.gridview.title',
caption: 'entities.wfmember.views.gridview.caption',
info:'',
parameters: [
{ pathName: 'wfindexview', parameterName: 'wfindexview' },
......@@ -224,7 +224,7 @@ const router = new Router({
{
path: 'wfmembers/:wfmember?/gridview/:gridview?',
meta: {
caption: 'entities.wfmember.views.gridview.title',
caption: 'entities.wfmember.views.gridview.caption',
info:'',
parameters: [
{ pathName: 'wfindexview', parameterName: 'wfindexview' },
......@@ -238,7 +238,7 @@ const router = new Router({
{
path: 'wfgroups/:wfgroup?/pickupview/:pickupview?',
meta: {
caption: 'entities.wfgroup.views.pickupview.title',
caption: 'entities.wfgroup.views.pickupview.caption',
info:'',
parameters: [
{ pathName: 'wfindexview', parameterName: 'wfindexview' },
......@@ -252,7 +252,7 @@ const router = new Router({
{
path: 'wfgroups/:wfgroup?/editview/:editview?',
meta: {
caption: 'entities.wfgroup.views.editview.title',
caption: 'entities.wfgroup.views.editview.caption',
info:'',
parameters: [
{ pathName: 'wfindexview', parameterName: 'wfindexview' },
......@@ -266,7 +266,7 @@ const router = new Router({
{
path: 'wfprocessdefinitions/:wfprocessdefinition?/editview/:editview?',
meta: {
caption: 'entities.wfprocessdefinition.views.editview.title',
caption: 'entities.wfprocessdefinition.views.editview.caption',
info:'',
parameters: [
{ pathName: 'wfindexview', parameterName: 'wfindexview' },
......@@ -283,7 +283,7 @@ const router = new Router({
{
path: '/wfusers/:wfuser?/wfmembers/:wfmember?/gridview/:gridview?',
meta: {
caption: 'entities.wfmember.views.gridview.title',
caption: 'entities.wfmember.views.gridview.caption',
info:'',
parameters: [
{ pathName: 'wfusers', parameterName: 'wfuser' },
......@@ -297,7 +297,7 @@ const router = new Router({
{
path: '/wfgroups/:wfgroup?/wfmembers/:wfmember?/gridview/:gridview?',
meta: {
caption: 'entities.wfmember.views.gridview.title',
caption: 'entities.wfmember.views.gridview.caption',
info:'',
parameters: [
{ pathName: 'wfgroups', parameterName: 'wfgroup' },
......@@ -311,7 +311,7 @@ const router = new Router({
{
path: '/wfmembers/:wfmember?/gridview/:gridview?',
meta: {
caption: 'entities.wfmember.views.gridview.title',
caption: 'entities.wfmember.views.gridview.caption',
info:'',
parameters: [
{ pathName: 'wfmembers', parameterName: 'wfmember' },
......@@ -324,7 +324,7 @@ const router = new Router({
{
path: '/wfusers/:wfuser?/mpickupview/:mpickupview?',
meta: {
caption: 'entities.wfuser.views.mpickupview.title',
caption: 'entities.wfuser.views.mpickupview.caption',
info:'',
parameters: [
{ pathName: 'wfusers', parameterName: 'wfuser' },
......@@ -337,7 +337,7 @@ const router = new Router({
{
path: '/wfusers/:wfuser?/pickupview/:pickupview?',
meta: {
caption: 'entities.wfuser.views.pickupview.title',
caption: 'entities.wfuser.views.pickupview.caption',
info:'',
parameters: [
{ pathName: 'wfusers', parameterName: 'wfuser' },
......@@ -350,7 +350,7 @@ const router = new Router({
{
path: '/wfgroups/:wfgroup?/mpickupview/:mpickupview?',
meta: {
caption: 'entities.wfgroup.views.mpickupview.title',
caption: 'entities.wfgroup.views.mpickupview.caption',
info:'',
parameters: [
{ pathName: 'wfgroups', parameterName: 'wfgroup' },
......@@ -363,7 +363,7 @@ const router = new Router({
{
path: '/wfprocessdefinitions/:wfprocessdefinition?/editview/:editview?',
meta: {
caption: 'entities.wfprocessdefinition.views.editview.title',
caption: 'entities.wfprocessdefinition.views.editview.caption',
info:'',
parameters: [
{ pathName: 'wfprocessdefinitions', parameterName: 'wfprocessdefinition' },
......@@ -376,7 +376,7 @@ const router = new Router({
{
path: '/wfprocessdefinitions/:wfprocessdefinition?/gridview/:gridview?',
meta: {
caption: 'entities.wfprocessdefinition.views.gridview.title',
caption: 'entities.wfprocessdefinition.views.gridview.caption',
info:'',
parameters: [
{ pathName: 'wfprocessdefinitions', parameterName: 'wfprocessdefinition' },
......@@ -389,7 +389,7 @@ const router = new Router({
{
path: '/wfusers/:wfuser?/pickupgridview/:pickupgridview?',
meta: {
caption: 'entities.wfuser.views.pickupgridview.title',
caption: 'entities.wfuser.views.pickupgridview.caption',
info:'',
parameters: [
{ pathName: 'wfusers', parameterName: 'wfuser' },
......@@ -402,7 +402,7 @@ const router = new Router({
{
path: '/wfusers/:wfuser?/wfmembers/:wfmember?/editview/:editview?',
meta: {
caption: 'entities.wfmember.views.editview.title',
caption: 'entities.wfmember.views.editview.caption',
info:'',
parameters: [
{ pathName: 'wfusers', parameterName: 'wfuser' },
......@@ -416,7 +416,7 @@ const router = new Router({
{
path: '/wfgroups/:wfgroup?/wfmembers/:wfmember?/editview/:editview?',
meta: {
caption: 'entities.wfmember.views.editview.title',
caption: 'entities.wfmember.views.editview.caption',
info:'',
parameters: [
{ pathName: 'wfgroups', parameterName: 'wfgroup' },
......@@ -430,7 +430,7 @@ const router = new Router({
{
path: '/wfmembers/:wfmember?/editview/:editview?',
meta: {
caption: 'entities.wfmember.views.editview.title',
caption: 'entities.wfmember.views.editview.caption',
info:'',
parameters: [
{ pathName: 'wfmembers', parameterName: 'wfmember' },
......@@ -443,7 +443,7 @@ const router = new Router({
{
path: '/wfgroups/:wfgroup?/editview/:editview?',
meta: {
caption: 'entities.wfgroup.views.editview.title',
caption: 'entities.wfgroup.views.editview.caption',
info:'',
parameters: [
{ pathName: 'wfgroups', parameterName: 'wfgroup' },
......@@ -456,7 +456,7 @@ const router = new Router({
{
path: '/wfgroups/:wfgroup?/pickupview/:pickupview?',
meta: {
caption: 'entities.wfgroup.views.pickupview.title',
caption: 'entities.wfgroup.views.pickupview.caption',
info:'',
parameters: [
{ pathName: 'wfgroups', parameterName: 'wfgroup' },
......@@ -469,7 +469,7 @@ const router = new Router({
{
path: '/wfremodels/:wfremodel?/editview/:editview?',
meta: {
caption: 'entities.wfremodel.views.editview.title',
caption: 'entities.wfremodel.views.editview.caption',
info:'',
parameters: [
{ pathName: 'wfremodels', parameterName: 'wfremodel' },
......@@ -482,7 +482,7 @@ const router = new Router({
{
path: '/wfgroups/:wfgroup?/pickupgridview/:pickupgridview?',
meta: {
caption: 'entities.wfgroup.views.pickupgridview.title',
caption: 'entities.wfgroup.views.pickupgridview.caption',
info:'',
parameters: [
{ pathName: 'wfgroups', parameterName: 'wfgroup' },
......@@ -495,7 +495,7 @@ const router = new Router({
{
path: '/wfgroups/:wfgroup?/gridview/:gridview?',
meta: {
caption: 'entities.wfgroup.views.gridview.title',
caption: 'entities.wfgroup.views.gridview.caption',
info:'',
parameters: [
{ pathName: 'wfgroups', parameterName: 'wfgroup' },
......
......@@ -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 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册