提交 bba74664 编写于 作者: laizhilong's avatar laizhilong

Merge remote-tracking branch 'origin/master'

...@@ -86,6 +86,9 @@ import AppLockScren from './components/app-lock-scren/app-lock-scren.vue' ...@@ -86,6 +86,9 @@ import AppLockScren from './components/app-lock-scren/app-lock-scren.vue'
import ActionTimeline from './components/action-timeline/action-timeline.vue' import ActionTimeline from './components/action-timeline/action-timeline.vue'
import CronEditor from './components/cron-editor/cron-editor.vue' import CronEditor from './components/cron-editor/cron-editor.vue'
import AppMessagePopover from './components/app-message-popover/app-message-popover.vue' import AppMessagePopover from './components/app-message-popover/app-message-popover.vue'
import AppPanelField from './components/app-panel-field/app-panel-field.vue'
import AppPanelItem from './components/app-panel-item/app-panel-item.vue'
// 全局挂载UI实体服务注册中心 // 全局挂载UI实体服务注册中心
window['uiServiceRegister'] = uiServiceRegister; window['uiServiceRegister'] = uiServiceRegister;
...@@ -111,6 +114,8 @@ export const AppComponents = { ...@@ -111,6 +114,8 @@ export const AppComponents = {
v.prototype.$verify = Verify; v.prototype.$verify = Verify;
v.prototype.$viewTool = ViewTool; v.prototype.$viewTool = ViewTool;
v.prototype.$uiActionTool = UIActionTool; v.prototype.$uiActionTool = UIActionTool;
v.component('app-panel-item',AppPanelItem);
v.component('app-panel-field',AppPanelField);
v.component('app-full-scren',AppFullScren); v.component('app-full-scren',AppFullScren);
v.component('app-lock-scren',AppLockScren); v.component('app-lock-scren',AppLockScren);
v.component('input-box', InputBox); v.component('input-box', InputBox);
......
...@@ -112,6 +112,9 @@ export default class AuthService { ...@@ -112,6 +112,9 @@ export default class AuthService {
* @memberof AuthService * @memberof AuthService
*/ */
public getMenusPermission(item: any): boolean { public getMenusPermission(item: any): boolean {
if(!this.$store.getters['authresource/getEnablePermissionValid']) {
return true;
}
return this.$store.getters['authresource/getAuthMenu'](item); return this.$store.getters['authresource/getAuthMenu'](item);
} }
...@@ -123,6 +126,9 @@ export default class AuthService { ...@@ -123,6 +126,9 @@ export default class AuthService {
* @memberof AuthService * @memberof AuthService
*/ */
public getResourcePermission(tag: any): boolean { public getResourcePermission(tag: any): boolean {
if(!this.$store.getters['authresource/getEnablePermissionValid']) {
return true;
}
return this.$store.getters['authresource/getResourceData'](tag); return this.$store.getters['authresource/getResourceData'](tag);
} }
......
...@@ -18,4 +18,7 @@ ...@@ -18,4 +18,7 @@
font-family: '微软雅黑','黑体','宋体'; font-family: '微软雅黑','黑体','宋体';
font-size: 16px; font-size: 16px;
} }
.progress {
margin-top: -15px;
}
} }
\ No newline at end of file
<template> <template>
<div class="app-data-upload-view"> <div class="app-data-upload-view" v-loading.fullscreen="isUploading" element-loading-background="rgba(57, 57, 57, 0.2)">
<el-row style="margin-top:24px" :gutter="20"> <el-row style="margin-top:24px" :gutter="20">
<el-col :span="4"> <el-col :span="4">
<el-button type="primary" @click="handleUpLoad">{{$t('components.appDataUploadView.selectfile')}}</el-button> <el-button type="primary" @click="handleUpLoad">{{$t('components.appDataUploadView.selectfile')}}</el-button>
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
</el-col> </el-col>
</el-row> </el-row>
<el-divider></el-divider> <el-divider></el-divider>
<el-progress class="progress" v-show="isUploading" :text-inside="true" :stroke-width="14" :percentage="uploadProgress"></el-progress>
<el-row style="height:480px;padding: 0px 12px;"> <el-row style="height:480px;padding: 0px 12px;">
<div class="data-info-content" > <div class="data-info-content" >
<template v-if="importDataArray.length >0 && isUploading === false"> <template v-if="importDataArray.length >0 && isUploading === false">
...@@ -50,6 +51,7 @@ import XLSX from 'xlsx'; ...@@ -50,6 +51,7 @@ import XLSX from 'xlsx';
import CodeListService from "@service/app/codelist-service"; import CodeListService from "@service/app/codelist-service";
import EntityService from '@/service/entity-service'; import EntityService from '@/service/entity-service';
import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorator'; import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorator';
import { Environment } from '@/environments/environment';
@Component({ @Component({
}) })
...@@ -191,6 +193,22 @@ export default class AppDataUploadView extends Vue { ...@@ -191,6 +193,22 @@ export default class AppDataUploadView extends Vue {
* @memberof AppDataUploadView * @memberof AppDataUploadView
*/ */
public allFieldMap:Map<string,any> = new Map(); public allFieldMap:Map<string,any> = new Map();
/**
* 上传服务器数据切片数
*
* @type {number}
* @memberof AppDataUploadView
*/
public sliceUploadCnt: number = Environment.sliceUploadCnt;
/**
* 上传服务器进度条百分比
*
* @type {number}
* @memberof AppDataUploadView
*/
public uploadProgress: number = 0;
/** /**
* 视图参数变化 * 视图参数变化
...@@ -282,10 +300,29 @@ export default class AppDataUploadView extends Vue { ...@@ -282,10 +300,29 @@ export default class AppDataUploadView extends Vue {
this.transformData(this.importDataArray,tempDataArray); this.transformData(this.importDataArray,tempDataArray);
this.hasImported = true; this.hasImported = true;
this.isUploading = true; this.isUploading = true;
this.uploadProgress = 0;
this.importDataArray = []; this.importDataArray = [];
this.sliceUploadService(tempDataArray, 0);
}
/**
* 数据切片上传
*
* @memberof AppDataUploadView
*/
public sliceUploadService(dataArray: Array<any>, cnt: number) {
if(cnt > dataArray.length) {
this.isUploading = false;
this.uploadProgress = 100;
return;
}
let sliceArray: Array<any> = [];
if(dataArray) {
sliceArray = dataArray.slice(cnt, cnt+this.sliceUploadCnt);
}
try{ try{
this.entityService.getService(this.viewparams.serviceName).then((service:any) =>{ this.entityService.getService(this.viewparams.serviceName).then((service:any) =>{
service.ImportData(this.viewdata,{name:this.importId,importData:tempDataArray}).then((res:any) =>{ service.ImportData(this.viewdata,{name:this.importId,importData:sliceArray}).then((res:any) =>{
const result:any = res.data; const result:any = res.data;
if(result && result.rst !== 0){ if(result && result.rst !== 0){
this.promptInfo = (this.$t('components.appDataUploadView.importfailed') as string); this.promptInfo = (this.$t('components.appDataUploadView.importfailed') as string);
...@@ -294,7 +331,8 @@ export default class AppDataUploadView extends Vue { ...@@ -294,7 +331,8 @@ export default class AppDataUploadView extends Vue {
} }
this.importSuccessData = result.data; this.importSuccessData = result.data;
this.promptInfo = (this.$t('components.appDataUploadView.completed') as string); this.promptInfo = (this.$t('components.appDataUploadView.completed') as string);
this.isUploading = false; this.uploadProgress = Number((cnt / dataArray.length * 100).toFixed(2));
this.sliceUploadService(dataArray, cnt + this.sliceUploadCnt);
}).catch((error:any) =>{ }).catch((error:any) =>{
this.isUploading = false; this.isUploading = false;
this.promptInfo = (this.$t('components.appDataUploadView.importfailed') as string); this.promptInfo = (this.$t('components.appDataUploadView.importfailed') as string);
...@@ -311,7 +349,6 @@ export default class AppDataUploadView extends Vue { ...@@ -311,7 +349,6 @@ export default class AppDataUploadView extends Vue {
console.error(error); console.error(error);
}; };
} }
/** /**
* 导出excel * 导出excel
* *
......
...@@ -41,7 +41,7 @@ export default class AppHeaderMenus extends Vue { ...@@ -41,7 +41,7 @@ export default class AppHeaderMenus extends Vue {
{ {
name: "ibizstudio", name: "ibizstudio",
title: "components.appHeaderMenus.ibizstudio.title", title: "components.appHeaderMenus.ibizstudio.title",
url: `${Environment.StudioUrl}?#/common_slnindex/srfkeys=${Environment.SlnId}/sysdesign_psdevslnsysmodeltreeexpview`, url: `${Environment.StudioUrl}?#/common_mosindex/srfkeys=${Environment.SysId}`,
iconcls: 'fa fa-wrench', iconcls: 'fa fa-wrench',
}, },
{ {
......
...@@ -149,7 +149,7 @@ ...@@ -149,7 +149,7 @@
this.getMyMsgs(); this.getMyMsgs();
} }
}).catch((error: any) => { }).catch((error: any) => {
this.$Notice.error({title: '错误', desc: error}); console.warn("加载数据错误");
}) })
} }
......
.app-panel-field {
height: 100%;
width: 100%;
display: flex;
padding: 0 6px;
.editor{
flex-grow: 1;
.editorstyle{
.ivu-input.ivu-input-default{
border-color: red;
}
}
.errorstyle{
color:red !important;
}
}
.app-panel-field-label {
height: 34px !important;
line-height: 25px;
flex-shrink: 0;
padding: 6px 10px 6px 0px;
}
}
.app-panel-field.label-top {
flex-flow: column;
}
.app-panel-field.label-bottom{
flex-flow: column-reverse;
}
.app-panel-field.label-left {
.app-panel-field-label {
text-align: right;
}
}
.app-panel-field.label-right {
flex-flow: row-reverse;
.app-panel-field-label {
padding: 6px 0px 6px 10px;
}
}
.app-panel-field.label-none {
.app-panel-field-label {
display: none !important;
}
}
<template>
<div :class="classes">
<div v-if="Object.is(labelPos,'NONE') || !labelPos" class="editor">
<div :class="valueCheck == true ?'':'editorstyle'">
<slot ></slot>
<span :class="error ? 'errorstyle':''">{{error}}</span>
</div>
</div>
<div v-if="!Object.is(labelPos,'NONE')" class="app-panel-field-label">
<span v-if="required" style="color:red;">* </span>
{{isEmptyCaption ? '' : caption}}
</div>
<div v-if="Object.is(labelPos,'BOTTOM') || Object.is(labelPos,'TOP') || Object.is(labelPos,'LEFT') || Object.is(labelPos,'RIGHT')" class="editor">
<div :class="valueCheck == true ?'':'editorstyle'">
<slot ></slot>
<span :class="error ? 'errorstyle':''">{{error}}</span>
</div>
</div>
</div>
</template>
<script lang="ts">
import { Vue, Component, Prop, Watch } from "vue-property-decorator";
@Component({})
export default class AppPanelField extends Vue {
/**
* 名称
*
* @type {string}
* @memberof AppPanelField
*/
@Prop() public caption!: string;
/**
* 错误信息
*
* @type {string}
* @memberof AppPanelField
*/
@Prop() public error?: string;
/**
* 标签位置
*
* @type {(string | 'BOTTOM' | 'LEFT' | 'NONE' | 'RIGHT' | 'TOP')}
* @memberof AppPanelField
*/
@Prop() public labelPos?:
| string
| "BOTTOM"
| "LEFT"
| "NONE"
| "RIGHT"
| "TOP";
/**
* 标签是否空白
*
* @type {boolean}
* @memberof AppPanelField
*/
@Prop() public isEmptyCaption?: boolean;
/**
* 列表项名称
*
* @type {string}
* @memberof AppPanelField
*/
@Prop() public name!: string;
/**
* 面板数据
*
* @type {any}
* @memberof AppPanelField
*/
@Prop() public data!: any;
/**
* 编辑器值
*
* @type {any}
* @memberof AppPanelField
*/
@Prop() public value !: any;
/**
* 值规则
*
* @type {string}
* @memberof AppPanelField
*/
@Prop() public itemRules!: any;
/**
* 是否必填
*
* @type {boolean}
* @memberof AppPanelField
*/
public required: boolean = false;
/**
* 值规则数组
*
* @type {any[]}
* @memberof AppPanelField
*/
public rules: any[] = [];
/**
* 值规则监控
*
* @param {*} newVal
* @param {*} oldVal
* @memberof AppPanelField
*/
@Watch("itemRules", { deep: true })
onItemRulesChange(newVal: any, oldVal: any) {
if (newVal) {
try {
this.rules = [];
const _rules: any[] = newVal;
this.rules = [..._rules];
this.rules.some((rule: any) => {
if (rule.hasOwnProperty("required")) {
this.required = rule.required;
return true;
}
return false;
});
} catch (error) {}
}
}
/**
* 编辑器样式
*
* @type {boolean}
* @memberof AppPanelField
*/
public valueCheck: boolean = true;
/**
* 编辑器值监控
*
* @param {*} newVal
* @param {*} oldVal
* @memberof AppPanelField
*/
@Watch("value")
ItemValueRules(newVal: any, oldVal: any) {
if(this.required && !newVal) {
this.valueCheck = false;
}else{
this.valueCheck = true;
}
}
/**
* 计算样式
*
* @readonly
* @type {string []}
* @memberof AppPanelField
*/
get classes(): string[] {
let posClass = "";
switch (this.labelPos) {
case "TOP":
posClass = "label-top";
break;
case "LEFT":
posClass = "label-left";
break;
case "BOTTOM":
posClass = "label-bottom";
break;
case "RIGHT":
posClass = "label-right";
break;
case "NONE":
posClass = "label-none";
break;
}
return [ "app-panel-field", posClass ];
}
/**
* vue 生命周期
*
* @memberof AppPanelField
*/
public mounted() {
if (this.itemRules) {
try {
const _rules: any[] = this.itemRules;
this.rules = [..._rules];
this.rules.some((rule: any) => {
if (rule.hasOwnProperty("required")) {
this.required = rule.required;
return true;
}
return false;
});
} catch (error) {}
}
}
}
</script>
<style lang='less'>
@import "./app-panel-field.less";
</style>
\ No newline at end of file
.app-panel-item{
.app-panel-item-rawitem{
padding-right: 10px;
}
}
\ No newline at end of file
<template>
<div class="app-panel-item">
<div v-if="Object.is(itemType,'BUTTON')" >
<Button type="primary" long @click="onClick">
<i v-if="icon" :class="icon"></i>
<span v-if="showCaption" :class="lableStyle">{{caption ? caption : ''}}</span>
</Button>
</div>
<div v-if="Object.is(itemType,'RAWITEM')">
<i v-if="icon" :class="icon"></i>
<span v-if="caption" class="app-panel-item-rawitem">{{caption}}</span>
<div :class="contentStyle">
<slot></slot>
</div>
</div>
</div>
</template>
<script lang="ts">
import { Vue, Component, Prop, Watch } from "vue-property-decorator";
@Component({})
export default class AppPanelItem extends Vue {
/**
* 面板成员类型
*
* @type {string}
* @memberof AppPanelItem
*/
@Prop() public itemType!: string;
/**
* 图标
*
* @type {string}
* @memberof AppPanelItem
*/
@Prop() public icon?: string;
/**
* 标题
*
* @type {string}
* @memberof AppPanelItem
*/
@Prop() public caption?: string;
/**
* 显示标题
*
* @type {boolean}
* @memberof AppPanelItem
*/
@Prop() public showCaption?: boolean;
/**
* 标题样式
*
* @type {boolean}
* @memberof AppPanelItem
*/
@Prop() public lableStyle?: string;
/**
* 内容样式
*
* @type {boolean}
* @memberof AppPanelItem
*/
@Prop() public contentStyle?: string;
/**
* 部件样式
*
* @type {boolean}
* @memberof AppPanelItem
*/
@Prop() public partsStyle?: string;
/**
* 点击按钮
*
* @param {*} $event
* @memberof AppPanelItem
*/
public onClick($event: any){
this.$emit('onClick',$event);
}
}
</script>
<style lang='less'>
@import "./app-panel-item.less";
</style>
\ No newline at end of file
...@@ -65,7 +65,6 @@ export default class AppQuickGroup extends Vue { ...@@ -65,7 +65,6 @@ export default class AppQuickGroup extends Vue {
*/ */
get renderArray(){ get renderArray(){
if(this.items && this.items.length >0){ if(this.items && this.items.length >0){
this.selectedUiItem = this.items[0];
this.handleClick(this.items[0]); this.handleClick(this.items[0]);
return this.handleDataSet(this.items) return this.handleDataSet(this.items)
}else{ }else{
...@@ -145,6 +144,9 @@ export default class AppQuickGroup extends Vue { ...@@ -145,6 +144,9 @@ export default class AppQuickGroup extends Vue {
* @memberof AppQuickGroup * @memberof AppQuickGroup
*/ */
public handleClick($event:any,isswitch:boolean = true){ public handleClick($event:any,isswitch:boolean = true){
if(this.selectedUiItem && (this.selectedUiItem.id === $event.id)){
return;
}
this.$emit('valuechange',$event); this.$emit('valuechange',$event);
if(isswitch){ if(isswitch){
this.selectedUiItem = $event; this.selectedUiItem = $event;
......
...@@ -214,7 +214,8 @@ export default class AppSpan extends Vue { ...@@ -214,7 +214,8 @@ export default class AppSpan extends Vue {
this.text = Number(number.toFixed(this.precision)).toLocaleString('en-US')+ ' '+ this.unitName; this.text = Number(number.toFixed(this.precision)).toLocaleString('en-US')+ ' '+ this.unitName;
}else if(Object.is(this.dataType,"FLOAT") || Object.is(this.dataType,"DECIMAL")){ }else if(Object.is(this.dataType,"FLOAT") || Object.is(this.dataType,"DECIMAL")){
let number:any = Number(this.value); let number:any = Number(this.value);
this.text = number.toFixed(this.precision); const decimalCnt:number = this.value.toString().split('.').length > 1 ? this.value.toString().split('.')[1].length : 0;
this.text = (Number(this.precision) === 0 && decimalCnt !== 0) ? number.toFixed(decimalCnt) : number.toFixed(this.precision);
}else { }else {
this.text = this.value; this.text = this.value;
} }
......
...@@ -293,12 +293,13 @@ export default class ContextMenuDrag extends Vue { ...@@ -293,12 +293,13 @@ export default class ContextMenuDrag extends Vue {
mounted() { mounted() {
let that: any = this; let that: any = this;
const get: Promise<any> = this.entityService.getAllApp(null,{}); const get: Promise<any> = this.entityService.getAllApp(null,{});
get get.then((response: any) => {
.then((response: any) => {
if (response) { if (response) {
that.list = response.data.model; that.list = response.data.model;
that.listFilter(); that.listFilter();
} }
}).catch((error:any) =>{
console.warn("加载数据错误")
}); });
} }
} }
......
...@@ -92,6 +92,14 @@ export default class ContextMenu extends Vue { ...@@ -92,6 +92,14 @@ export default class ContextMenu extends Vue {
*/ */
@Prop() @Prop()
public menus?: any[] public menus?: any[]
/**
* 是否阻止默认绘制上下文菜单
*
* @type {any}
* @memberof ContextMenu
*/
@Prop({default:false})
public isBlocked?:any;
/** /**
* 显示右键菜单 * 显示右键菜单
...@@ -195,7 +203,10 @@ export default class ContextMenu extends Vue { ...@@ -195,7 +203,10 @@ export default class ContextMenu extends Vue {
if (contextRef) { if (contextRef) {
contextRef.oncontextmenu = (event: MouseEvent) => { contextRef.oncontextmenu = (event: MouseEvent) => {
event.preventDefault(); event.preventDefault();
this.showContextMenu(event.clientX, event.clientY); if(!this.isBlocked){
this.showContextMenu(event.clientX, event.clientY);
}
this.$emit("showContext",event);
}; };
} }
} }
......
import { Store } from 'vuex'; import { Store } from 'vuex';
import EntityService from '@/service/entity-service';
/** /**
* 计数器服务基类 * 计数器服务基类
...@@ -16,6 +18,51 @@ export default class CounterService { ...@@ -16,6 +18,51 @@ export default class CounterService {
* @memberof CounterService * @memberof CounterService
*/ */
private $store: Store<any> | null = null; private $store: Store<any> | null = null;
/**
* 当前计数器数据
*
* @protected
* @type {*}
* @memberof CounterService
*/
protected counterData:any ={};
/**
* 应用实体数据服务
*
* @protected
* @type {EntityService}
* @memberof CounterService
*/
protected appEntityService:EntityService = new EntityService();
/**
* 当前计数器导航上下文
*
* @protected
* @type {*}
* @memberof CounterService
*/
protected context:any ={};
/**
* 当前计数器导航参数
*
* @protected
* @type {*}
* @memberof CounterService
*/
protected viewparams:any ={};
/**
* 当前计数器定时器对象
*
* @protected
* @type {*}
* @memberof CounterService
*/
protected timer:any;
/** /**
* Creates an instance of CounterService. * Creates an instance of CounterService.
...@@ -25,6 +72,8 @@ export default class CounterService { ...@@ -25,6 +72,8 @@ export default class CounterService {
*/ */
constructor(opts: any = {}) { constructor(opts: any = {}) {
this.$store = opts.$store; this.$store = opts.$store;
this.context = opts.context?opts.context:{};
this.viewparams = opts.viewparams?opts.viewparams:{};
} }
/** /**
...@@ -49,5 +98,13 @@ export default class CounterService { ...@@ -49,5 +98,13 @@ export default class CounterService {
return (window as any)['counterServiceRegister'].getService(name); return (window as any)['counterServiceRegister'].getService(name);
} }
/**
* 销毁计数器
*
* @memberof ActionCounterCounterServiceBase
*/
public destroyCounter(){
if(this.timer) clearInterval(this.timer);
}
} }
\ No newline at end of file
...@@ -49,6 +49,7 @@ export default class WFDynaExpGridViewEngine extends GridViewEngine { ...@@ -49,6 +49,7 @@ export default class WFDynaExpGridViewEngine extends GridViewEngine {
public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { public onCtrlEvent(ctrlName: string, eventName: string, args: any): void {
if (Object.is(ctrlName, 'grid')) { if (Object.is(ctrlName, 'grid')) {
this.GridEvent(eventName, args); this.GridEvent(eventName, args);
return;
} }
super.onCtrlEvent(ctrlName, eventName, args); super.onCtrlEvent(ctrlName, eventName, args);
} }
......
...@@ -15,6 +15,8 @@ export const Environment = { ...@@ -15,6 +15,8 @@ export const Environment = {
ExportFile: '/ibizutil/download', ExportFile: '/ibizutil/download',
// 文件上传 // 文件上传
UploadFile: '/ibizutil/upload', UploadFile: '/ibizutil/upload',
// 数据导入单次上传最大数量
sliceUploadCnt: 100,
// 是否为pc端应用 // 是否为pc端应用
isAppMode:true, isAppMode:true,
//统一地址 //统一地址
......
...@@ -33,6 +33,7 @@ mock.onGet('/appdata').reply((config: any) => { ...@@ -33,6 +33,7 @@ mock.onGet('/appdata').reply((config: any) => {
// 当前用户条线代码 // 当前用户条线代码
srfsectorbc:"" srfsectorbc:""
}, },
enablepermissionvalid:false,
unires:["RESOURCE1","RESOURCE2"], unires:["RESOURCE1","RESOURCE2"],
//当前用户所有组织部门标识 //当前用户所有组织部门标识
srforgsections:[{"srforgsectorid":"5bd1ecf4d3c31e31cb66373df56b852f","srforgsectorname":"项目一部"},{"srforgsectorid":"2ad1ecf4d3c31e31cb66373df56b852f","srforgsectorname":"项目二部"}] srforgsections:[{"srforgsectorid":"5bd1ecf4d3c31e31cb66373df56b852f","srforgsectorname":"项目一部"},{"srforgsectorid":"2ad1ecf4d3c31e31cb66373df56b852f","srforgsectorname":"项目二部"}]
......
export { PanelDetailModel } from './panel-detail';
export { PanelRawitemModel } from './panel-row-item';
export { PanelTabPanelModel } from './panel-tab-panel';
export { PanelTabPageModel } from './panel-tab-page';
export { PanelFieldModel } from './panel-field';
export { PanelContainerModel } from './panel-container';
export { PanelControlModel } from './panel-control';
export { PanelUserControlModel } from './panel-user-control';
export { PanelButtonModel } from './panel-button';
\ No newline at end of file
import { PanelDetailModel } from './panel-detail';
/**
* 按钮模型
*
* @export
* @class PanelButtonModel
* @extends {PanelDetailModel}
*/
export class PanelButtonModel extends PanelDetailModel {
constructor(opts: any = {}) {
super(opts);
this.$disabled = opts.disabled;
this.uiaction = opts.uiaction;
}
/**
* 是否禁用
*
* @type {boolean}
* @memberof PanelButtonModel
*/
private $disabled:boolean = false;
/**
* 按钮对应的界面行为
*
* @type {*}
* @memberof PanelButtonModel
*/
public uiaction:any;
/**
* 是否启用
*
* @type {boolean}
* @memberof PanelButtonModel
*/
public get disabled(): boolean {
return this.$disabled;
}
/**
* 设置是否启用
*
* @memberof PanelButtonModel
*/
public set disabled(val: boolean) {
if(this.isPower) {
this.$disabled = val;
}
}
}
\ No newline at end of file
import { PanelDetailModel } from './panel-detail';
/**
* 面板容器模型
*
* @export
* @class PanelContainerModel
* @extends {PanelDetailModel}
*/
export class PanelContainerModel extends PanelDetailModel {
constructor(opts: any = {}) {
super(opts);
}
}
\ No newline at end of file
import { PanelDetailModel } from './panel-detail';
/**
* 用户控件模型
*
* @export
* @class PanelControlModel
* @extends {PanelDetailModel}
*/
export class PanelControlModel extends PanelDetailModel {
constructor(otps:any = {}) {
super(otps);
}
}
\ No newline at end of file
/**
* 表单成员模型
*
* @export
* @class PanelDetailModel
*/
export class PanelDetailModel {
/**
* 是否有权限
*
* @type {boolean}
* @memberof PanelDetailModel
*/
public isPower: boolean = true;
/**
* 成员标题
*
* @type {string}
* @memberof PanelDetailModel
*/
public caption: string = '';
/**
* 成员类型
*
* @type {string}
* @memberof PanelDetailModel
*/
public itemType: string = '';
/**
* 面板对象
*
* @type {*}
* @memberof PanelDetailModel
*/
public panel: any = null;
/**
* 成员名称
*
* @type {string}
* @memberof PanelDetailModel
*/
public name: string = '';
/**
* 成员是否显示
*
* @type {boolean}
* @memberof PanelDetailModel
*/
public $visible: boolean = true;
/**
* 成员是否显示(旧)
*
* @type {boolean}
* @memberof PanelDetailModel
*/
public oldVisible: boolean = true;
/**
* 成员是否显示标题
*
* @type {boolean}
* @memberof PanelDetailModel
*/
public isShowCaption: boolean = true;
/**
* Creates an instance of PanelDetailModel.
* PanelDetailModel 实例
*
* @param {*} [opts={}]
* @memberof PanelDetailModel
*/
constructor(opts: any = {}) {
this.caption = !Object.is(opts.caption, '') ? opts.caption : '';
this.itemType = !Object.is(opts.itemType, '') ? opts.itemType : '';
this.panel = opts.panel ? opts.panel : {};
this.name = !Object.is(opts.name, '') ? opts.name : '';
this.$visible = opts.visible ? true : false;
this.oldVisible = opts.visible ? true : false;
this.isShowCaption = opts.isShowCaption ? true : false;
}
/**
* 设置成员是否隐藏
*
* @memberof PanelDetailModel
*/
public set visible(val: boolean) {
if(this.isPower) {
this.$visible = val;
}
}
/**
* 获取成员是否隐藏
*
* @memberof PanelDetailModel
*/
public get visible() {
return this.$visible;
}
/**
* 设置显示与隐藏
*
* @param {boolean} state
* @memberof PanelDetailModel
*/
public setVisible(state: boolean): void {
if(this.isPower) {
this.visible = state;
}
}
/**
* 设置显示标题栏
*
* @param {boolean} state
* @memberof PanelDetailModel
*/
public setShowCaption(state: boolean): void {
this.isShowCaption = state;
}
}
\ No newline at end of file
import { PanelDetailModel } from './panel-detail';
/**
* 面板属性项模型
*
* @export
* @class PanelFieldModel
* @extends {PanelDetailModel}
*/
export class PanelFieldModel extends PanelDetailModel {
/**
* 是否启用
*
* @type {boolean}
* @memberof PanelFieldModel
*/
public disabled: boolean = false;
/**
* 错误信息
*
* @type {string}
* @memberof PanelFieldModel
*/
public error: string = '';
/**
* 表单项启用条件
*
* 0 不启用
* 1 新建
* 2 更新
* 3 全部启用
*
* @type {(number | 0 | 1 | 2 | 3)}
* @memberof PanelFieldModel
*/
public enableCond: number | 0 | 1 | 2 | 3 = 3;
/**
* Creates an instance of PanelFieldModel.
* PanelFieldModel 实例
*
* @param {*} [opts={}]
* @memberof PanelFieldModel
*/
constructor(opts: any = {}) {
super(opts);
this.disabled = opts.disabled ? true : false;
this.enableCond = opts.enableCond;
}
/**
* 设置是否启用
*
* @param {boolean} state
* @memberof PanelFieldModel
*/
public setDisabled(state: boolean): void {
this.disabled = state;
}
/**
* 设置信息内容
*
* @param {string} error
* @memberof PanelFieldModel
*/
public setError(error: string): void {
this.error = error;
}
/**
* 设置是否启用
*
* @param {string} srfuf
* @memberof PanelFieldModel
*/
public setEnableCond(srfuf: string): void {
// 是否有权限
const isReadOk: boolean = true;
const _srfuf: number = parseInt(srfuf, 10);
let state: boolean = true;
if (isReadOk) {
if (_srfuf === 1) {
if ((this.enableCond & 2) === 2) {
state = false;
}
} else {
if ((this.enableCond & 1) === 1) {
state = false;
}
}
}
this.setDisabled(state);
}
}
\ No newline at end of file
import { PanelDetailModel } from './panel-detail';
/**
* 直接内容模型
*
* @export
* @class PanelRawitemModel
* @extends {PanelDetailModel}
*/
export class PanelRawitemModel extends PanelDetailModel {
constructor(opts: any = {}) {
super(opts);
}
}
\ No newline at end of file
import { PanelDetailModel } from './panel-detail';
import { PanelTabPanelModel } from './panel-tab-panel';
/**
* 分页面板模型
*
* @export
* @class PanelTabPageModel
* @extends {PanelDetailModel}
*/
export class PanelTabPageModel extends PanelDetailModel {
/**
* Creates an instance of PanelTabPageModel.
* PanelTabPageModel 实例
*
* @param {*} [opts={}]
* @memberof PanelTabPageModel
*/
constructor(opts: any = {}) {
super(opts);
}
/**
* 设置分页是否启用
*
* @param {boolean} state
* @memberof PanelTabPageModel
*/
public setVisible(state: boolean): void {
this.visible = state;
const tabPanel = this.getTabPanelModel();
if (tabPanel) {
tabPanel.setActiviePage();
}
}
/**
* 获取分页面板
*
* @returns {(PanelTabPanelModel | null)}
* @memberof PanelTabPageModel
*/
public getTabPanelModel(): PanelTabPanelModel | null {
if (!this.panel) {
return null;
}
const tabPanels: any[] = Object.values(this.panel.detailsModel).filter((model: any) => Object.is(model.itemType, 'TABPANEL'));
let index = tabPanels.findIndex((tabPanel: any) => {
return tabPanel.tabPages.some((tabPag: any) => Object.is(tabPag.name, this.name));
});
if (index === -1) {
return null;
}
const tabPanel: PanelTabPanelModel = tabPanels[index];
return tabPanel;
}
}
\ No newline at end of file
import { PanelDetailModel } from './panel-detail';
/**
* 分页部件模型
*
* @export
* @class PanelTabPanelModel
* @extends {PanelDetailModel}
*/
export class PanelTabPanelModel extends PanelDetailModel {
/**
* 被激活分页
*
* @type {string}
* @memberof PanelTabPanelModel
*/
public activiedPage: string = '';
/**
* 选中激活状态
*
* @type {string}
* @memberof PanelTabPanelModel
*/
public clickActiviePage: string = '';
/**
* 分页子成员
*
* @type {any[]}
* @memberof PanelTabPanelModel
*/
public tabPages: any[] = [];
/**
* Creates an instance of PanelTabPanelModel.
* PanelTabPanelModel 实例
*
* @param {*} [opts={}]
* @memberof PanelTabPanelModel
*/
constructor(opts: any = {}) {
super(opts);
this.tabPages = [...opts.tabPages];
if (this.tabPages.length > 0) {
this.activiedPage = this.tabPages[0].name;
}
}
/**
* 设置激活分页
*
* @memberof PanelTabPanelModel
*/
public setActiviePage(): void {
if (!this.panel) {
return;
}
const detailsModel: any = this.panel.detailsModel;
const index = this.tabPages.findIndex((tabpage: any) => Object.is(tabpage.name, this.clickActiviePage) && Object.is(tabpage.name, this.activiedPage) && detailsModel[tabpage.name].visible);
if (index !== - 1) {
return;
}
this.tabPages.some((tabpage: any) => {
if (detailsModel[tabpage.name].visible) {
this.activiedPage = tabpage.name;
return true;
}
return false;
});
}
/**
* 选中页面
*
* @param {*} $event
* @returns {void}
* @memberof PanelTabPanelModel
*/
public clickPage($event: any): void {
if (!$event) {
return;
}
this.clickActiviePage = $event;
this.activiedPage = $event;
}
}
\ No newline at end of file
import { PanelDetailModel } from './panel-detail';
/**
* 用户控件模型
*
* @export
* @class PanelUserControlModel
* @extends {PanelDetailModel}
*/
export class PanelUserControlModel extends PanelDetailModel {
constructor(otps:any = {}) {
super(otps);
}
}
\ No newline at end of file
...@@ -96,15 +96,6 @@ export default class IBZDepartmentEditViewBase extends Vue { ...@@ -96,15 +96,6 @@ export default class IBZDepartmentEditViewBase extends Vue {
* @memberof IBZDepartmentEditViewBase * @memberof IBZDepartmentEditViewBase
*/ */
public appUIService: IBZDepartmentUIService = new IBZDepartmentUIService(this.$store); public appUIService: IBZDepartmentUIService = new IBZDepartmentUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZDepartmentEditViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -349,6 +340,15 @@ export default class IBZDepartmentEditViewBase extends Vue { ...@@ -349,6 +340,15 @@ export default class IBZDepartmentEditViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZDepartmentEditViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -145,15 +145,6 @@ export default class IBZDepartmentGridViewBase extends Vue { ...@@ -145,15 +145,6 @@ export default class IBZDepartmentGridViewBase extends Vue {
* @memberof IBZDepartmentGridViewBase * @memberof IBZDepartmentGridViewBase
*/ */
public appUIService: IBZDepartmentUIService = new IBZDepartmentUIService(this.$store); public appUIService: IBZDepartmentUIService = new IBZDepartmentUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZDepartmentGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -416,6 +407,15 @@ export default class IBZDepartmentGridViewBase extends Vue { ...@@ -416,6 +407,15 @@ export default class IBZDepartmentGridViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZDepartmentGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -97,15 +97,6 @@ export default class IBZDepartmentMPickupViewBase extends Vue { ...@@ -97,15 +97,6 @@ export default class IBZDepartmentMPickupViewBase extends Vue {
* @memberof IBZDepartmentMPickupViewBase * @memberof IBZDepartmentMPickupViewBase
*/ */
public appUIService: IBZDepartmentUIService = new IBZDepartmentUIService(this.$store); public appUIService: IBZDepartmentUIService = new IBZDepartmentUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZDepartmentMPickupViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -341,6 +332,15 @@ export default class IBZDepartmentMPickupViewBase extends Vue { ...@@ -341,6 +332,15 @@ export default class IBZDepartmentMPickupViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZDepartmentMPickupViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -71,15 +71,6 @@ export default class IBZDepartmentOptionViewBase extends Vue { ...@@ -71,15 +71,6 @@ export default class IBZDepartmentOptionViewBase extends Vue {
* @memberof IBZDepartmentOptionViewBase * @memberof IBZDepartmentOptionViewBase
*/ */
public appUIService: IBZDepartmentUIService = new IBZDepartmentUIService(this.$store); public appUIService: IBZDepartmentUIService = new IBZDepartmentUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZDepartmentOptionViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -312,6 +303,15 @@ export default class IBZDepartmentOptionViewBase extends Vue { ...@@ -312,6 +303,15 @@ export default class IBZDepartmentOptionViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZDepartmentOptionViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -79,15 +79,6 @@ export default class IBZDepartmentPickupGridViewBase extends Vue { ...@@ -79,15 +79,6 @@ export default class IBZDepartmentPickupGridViewBase extends Vue {
* @memberof IBZDepartmentPickupGridViewBase * @memberof IBZDepartmentPickupGridViewBase
*/ */
public appUIService: IBZDepartmentUIService = new IBZDepartmentUIService(this.$store); public appUIService: IBZDepartmentUIService = new IBZDepartmentUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZDepartmentPickupGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -314,6 +305,15 @@ export default class IBZDepartmentPickupGridViewBase extends Vue { ...@@ -314,6 +305,15 @@ export default class IBZDepartmentPickupGridViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZDepartmentPickupGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -64,15 +64,6 @@ export default class IBZDepartmentPickupViewBase extends Vue { ...@@ -64,15 +64,6 @@ export default class IBZDepartmentPickupViewBase extends Vue {
* @memberof IBZDepartmentPickupViewBase * @memberof IBZDepartmentPickupViewBase
*/ */
public appUIService: IBZDepartmentUIService = new IBZDepartmentUIService(this.$store); public appUIService: IBZDepartmentUIService = new IBZDepartmentUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZDepartmentPickupViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -307,6 +298,15 @@ export default class IBZDepartmentPickupViewBase extends Vue { ...@@ -307,6 +298,15 @@ export default class IBZDepartmentPickupViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZDepartmentPickupViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -64,15 +64,6 @@ export default class IBZDepartmentTreeExpViewBase extends Vue { ...@@ -64,15 +64,6 @@ export default class IBZDepartmentTreeExpViewBase extends Vue {
* @memberof IBZDepartmentTreeExpViewBase * @memberof IBZDepartmentTreeExpViewBase
*/ */
public appUIService: IBZDepartmentUIService = new IBZDepartmentUIService(this.$store); public appUIService: IBZDepartmentUIService = new IBZDepartmentUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZDepartmentTreeExpViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -297,6 +288,15 @@ export default class IBZDepartmentTreeExpViewBase extends Vue { ...@@ -297,6 +288,15 @@ export default class IBZDepartmentTreeExpViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZDepartmentTreeExpViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -96,15 +96,6 @@ export default class IBZDeptMemberEditViewBase extends Vue { ...@@ -96,15 +96,6 @@ export default class IBZDeptMemberEditViewBase extends Vue {
* @memberof IBZDeptMemberEditViewBase * @memberof IBZDeptMemberEditViewBase
*/ */
public appUIService: IBZDeptMemberUIService = new IBZDeptMemberUIService(this.$store); public appUIService: IBZDeptMemberUIService = new IBZDeptMemberUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZDeptMemberEditViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -349,6 +340,15 @@ export default class IBZDeptMemberEditViewBase extends Vue { ...@@ -349,6 +340,15 @@ export default class IBZDeptMemberEditViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZDeptMemberEditViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -110,15 +110,6 @@ export default class IBZDeptMemberGridViewBase extends Vue { ...@@ -110,15 +110,6 @@ export default class IBZDeptMemberGridViewBase extends Vue {
* @memberof IBZDeptMemberGridViewBase * @memberof IBZDeptMemberGridViewBase
*/ */
public appUIService: IBZDeptMemberUIService = new IBZDeptMemberUIService(this.$store); public appUIService: IBZDeptMemberUIService = new IBZDeptMemberUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZDeptMemberGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -370,6 +361,15 @@ export default class IBZDeptMemberGridViewBase extends Vue { ...@@ -370,6 +361,15 @@ export default class IBZDeptMemberGridViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZDeptMemberGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -96,15 +96,6 @@ export default class IBZEmployeeEditViewBase extends Vue { ...@@ -96,15 +96,6 @@ export default class IBZEmployeeEditViewBase extends Vue {
* @memberof IBZEmployeeEditViewBase * @memberof IBZEmployeeEditViewBase
*/ */
public appUIService: IBZEmployeeUIService = new IBZEmployeeUIService(this.$store); public appUIService: IBZEmployeeUIService = new IBZEmployeeUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZEmployeeEditViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -349,6 +340,15 @@ export default class IBZEmployeeEditViewBase extends Vue { ...@@ -349,6 +340,15 @@ export default class IBZEmployeeEditViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZEmployeeEditViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -152,15 +152,6 @@ export default class IBZEmployeeGridViewBase extends Vue { ...@@ -152,15 +152,6 @@ export default class IBZEmployeeGridViewBase extends Vue {
* @memberof IBZEmployeeGridViewBase * @memberof IBZEmployeeGridViewBase
*/ */
public appUIService: IBZEmployeeUIService = new IBZEmployeeUIService(this.$store); public appUIService: IBZEmployeeUIService = new IBZEmployeeUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZEmployeeGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -426,6 +417,15 @@ export default class IBZEmployeeGridViewBase extends Vue { ...@@ -426,6 +417,15 @@ export default class IBZEmployeeGridViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZEmployeeGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -97,15 +97,6 @@ export default class IBZEmployeeMPickupViewBase extends Vue { ...@@ -97,15 +97,6 @@ export default class IBZEmployeeMPickupViewBase extends Vue {
* @memberof IBZEmployeeMPickupViewBase * @memberof IBZEmployeeMPickupViewBase
*/ */
public appUIService: IBZEmployeeUIService = new IBZEmployeeUIService(this.$store); public appUIService: IBZEmployeeUIService = new IBZEmployeeUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZEmployeeMPickupViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -341,6 +332,15 @@ export default class IBZEmployeeMPickupViewBase extends Vue { ...@@ -341,6 +332,15 @@ export default class IBZEmployeeMPickupViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZEmployeeMPickupViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -71,15 +71,6 @@ export default class IBZEmployeeOptionViewBase extends Vue { ...@@ -71,15 +71,6 @@ export default class IBZEmployeeOptionViewBase extends Vue {
* @memberof IBZEmployeeOptionViewBase * @memberof IBZEmployeeOptionViewBase
*/ */
public appUIService: IBZEmployeeUIService = new IBZEmployeeUIService(this.$store); public appUIService: IBZEmployeeUIService = new IBZEmployeeUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZEmployeeOptionViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -312,6 +303,15 @@ export default class IBZEmployeeOptionViewBase extends Vue { ...@@ -312,6 +303,15 @@ export default class IBZEmployeeOptionViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZEmployeeOptionViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -79,15 +79,6 @@ export default class IBZEmployeePickupGridViewBase extends Vue { ...@@ -79,15 +79,6 @@ export default class IBZEmployeePickupGridViewBase extends Vue {
* @memberof IBZEmployeePickupGridViewBase * @memberof IBZEmployeePickupGridViewBase
*/ */
public appUIService: IBZEmployeeUIService = new IBZEmployeeUIService(this.$store); public appUIService: IBZEmployeeUIService = new IBZEmployeeUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZEmployeePickupGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -314,6 +305,15 @@ export default class IBZEmployeePickupGridViewBase extends Vue { ...@@ -314,6 +305,15 @@ export default class IBZEmployeePickupGridViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZEmployeePickupGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -64,15 +64,6 @@ export default class IBZEmployeePickupViewBase extends Vue { ...@@ -64,15 +64,6 @@ export default class IBZEmployeePickupViewBase extends Vue {
* @memberof IBZEmployeePickupViewBase * @memberof IBZEmployeePickupViewBase
*/ */
public appUIService: IBZEmployeeUIService = new IBZEmployeeUIService(this.$store); public appUIService: IBZEmployeeUIService = new IBZEmployeeUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZEmployeePickupViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -307,6 +298,15 @@ export default class IBZEmployeePickupViewBase extends Vue { ...@@ -307,6 +298,15 @@ export default class IBZEmployeePickupViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZEmployeePickupViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -96,15 +96,6 @@ export default class IBZOrganizationEditViewBase extends Vue { ...@@ -96,15 +96,6 @@ export default class IBZOrganizationEditViewBase extends Vue {
* @memberof IBZOrganizationEditViewBase * @memberof IBZOrganizationEditViewBase
*/ */
public appUIService: IBZOrganizationUIService = new IBZOrganizationUIService(this.$store); public appUIService: IBZOrganizationUIService = new IBZOrganizationUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZOrganizationEditViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -349,6 +340,15 @@ export default class IBZOrganizationEditViewBase extends Vue { ...@@ -349,6 +340,15 @@ export default class IBZOrganizationEditViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZOrganizationEditViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -148,15 +148,6 @@ export default class IBZOrganizationGridViewBase extends Vue { ...@@ -148,15 +148,6 @@ export default class IBZOrganizationGridViewBase extends Vue {
* @memberof IBZOrganizationGridViewBase * @memberof IBZOrganizationGridViewBase
*/ */
public appUIService: IBZOrganizationUIService = new IBZOrganizationUIService(this.$store); public appUIService: IBZOrganizationUIService = new IBZOrganizationUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZOrganizationGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -419,6 +410,15 @@ export default class IBZOrganizationGridViewBase extends Vue { ...@@ -419,6 +410,15 @@ export default class IBZOrganizationGridViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZOrganizationGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -71,15 +71,6 @@ export default class IBZOrganizationOptionViewBase extends Vue { ...@@ -71,15 +71,6 @@ export default class IBZOrganizationOptionViewBase extends Vue {
* @memberof IBZOrganizationOptionViewBase * @memberof IBZOrganizationOptionViewBase
*/ */
public appUIService: IBZOrganizationUIService = new IBZOrganizationUIService(this.$store); public appUIService: IBZOrganizationUIService = new IBZOrganizationUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZOrganizationOptionViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -312,6 +303,15 @@ export default class IBZOrganizationOptionViewBase extends Vue { ...@@ -312,6 +303,15 @@ export default class IBZOrganizationOptionViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZOrganizationOptionViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -79,15 +79,6 @@ export default class IBZOrganizationPickupGridViewBase extends Vue { ...@@ -79,15 +79,6 @@ export default class IBZOrganizationPickupGridViewBase extends Vue {
* @memberof IBZOrganizationPickupGridViewBase * @memberof IBZOrganizationPickupGridViewBase
*/ */
public appUIService: IBZOrganizationUIService = new IBZOrganizationUIService(this.$store); public appUIService: IBZOrganizationUIService = new IBZOrganizationUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZOrganizationPickupGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -314,6 +305,15 @@ export default class IBZOrganizationPickupGridViewBase extends Vue { ...@@ -314,6 +305,15 @@ export default class IBZOrganizationPickupGridViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZOrganizationPickupGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -64,15 +64,6 @@ export default class IBZOrganizationPickupViewBase extends Vue { ...@@ -64,15 +64,6 @@ export default class IBZOrganizationPickupViewBase extends Vue {
* @memberof IBZOrganizationPickupViewBase * @memberof IBZOrganizationPickupViewBase
*/ */
public appUIService: IBZOrganizationUIService = new IBZOrganizationUIService(this.$store); public appUIService: IBZOrganizationUIService = new IBZOrganizationUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZOrganizationPickupViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -307,6 +298,15 @@ export default class IBZOrganizationPickupViewBase extends Vue { ...@@ -307,6 +298,15 @@ export default class IBZOrganizationPickupViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZOrganizationPickupViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -64,15 +64,6 @@ export default class IBZOrganizationTreeExpViewBase extends Vue { ...@@ -64,15 +64,6 @@ export default class IBZOrganizationTreeExpViewBase extends Vue {
* @memberof IBZOrganizationTreeExpViewBase * @memberof IBZOrganizationTreeExpViewBase
*/ */
public appUIService: IBZOrganizationUIService = new IBZOrganizationUIService(this.$store); public appUIService: IBZOrganizationUIService = new IBZOrganizationUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZOrganizationTreeExpViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -297,6 +288,15 @@ export default class IBZOrganizationTreeExpViewBase extends Vue { ...@@ -297,6 +288,15 @@ export default class IBZOrganizationTreeExpViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZOrganizationTreeExpViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -96,15 +96,6 @@ export default class IBZPostEditViewBase extends Vue { ...@@ -96,15 +96,6 @@ export default class IBZPostEditViewBase extends Vue {
* @memberof IBZPostEditViewBase * @memberof IBZPostEditViewBase
*/ */
public appUIService: IBZPostUIService = new IBZPostUIService(this.$store); public appUIService: IBZPostUIService = new IBZPostUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZPostEditViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -349,6 +340,15 @@ export default class IBZPostEditViewBase extends Vue { ...@@ -349,6 +340,15 @@ export default class IBZPostEditViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZPostEditViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -141,15 +141,6 @@ export default class IBZPostGridViewBase extends Vue { ...@@ -141,15 +141,6 @@ export default class IBZPostGridViewBase extends Vue {
* @memberof IBZPostGridViewBase * @memberof IBZPostGridViewBase
*/ */
public appUIService: IBZPostUIService = new IBZPostUIService(this.$store); public appUIService: IBZPostUIService = new IBZPostUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZPostGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -409,6 +400,15 @@ export default class IBZPostGridViewBase extends Vue { ...@@ -409,6 +400,15 @@ export default class IBZPostGridViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZPostGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -79,15 +79,6 @@ export default class IBZPostPickupGridViewBase extends Vue { ...@@ -79,15 +79,6 @@ export default class IBZPostPickupGridViewBase extends Vue {
* @memberof IBZPostPickupGridViewBase * @memberof IBZPostPickupGridViewBase
*/ */
public appUIService: IBZPostUIService = new IBZPostUIService(this.$store); public appUIService: IBZPostUIService = new IBZPostUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZPostPickupGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -314,6 +305,15 @@ export default class IBZPostPickupGridViewBase extends Vue { ...@@ -314,6 +305,15 @@ export default class IBZPostPickupGridViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZPostPickupGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -64,15 +64,6 @@ export default class IBZPostPickupViewBase extends Vue { ...@@ -64,15 +64,6 @@ export default class IBZPostPickupViewBase extends Vue {
* @memberof IBZPostPickupViewBase * @memberof IBZPostPickupViewBase
*/ */
public appUIService: IBZPostUIService = new IBZPostUIService(this.$store); public appUIService: IBZPostUIService = new IBZPostUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZPostPickupViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -307,6 +298,15 @@ export default class IBZPostPickupViewBase extends Vue { ...@@ -307,6 +298,15 @@ export default class IBZPostPickupViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZPostPickupViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -96,15 +96,6 @@ export default class IBZTeamEditViewBase extends Vue { ...@@ -96,15 +96,6 @@ export default class IBZTeamEditViewBase extends Vue {
* @memberof IBZTeamEditViewBase * @memberof IBZTeamEditViewBase
*/ */
public appUIService: IBZTeamUIService = new IBZTeamUIService(this.$store); public appUIService: IBZTeamUIService = new IBZTeamUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZTeamEditViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -349,6 +340,15 @@ export default class IBZTeamEditViewBase extends Vue { ...@@ -349,6 +340,15 @@ export default class IBZTeamEditViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZTeamEditViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -141,15 +141,6 @@ export default class IBZTeamGridViewBase extends Vue { ...@@ -141,15 +141,6 @@ export default class IBZTeamGridViewBase extends Vue {
* @memberof IBZTeamGridViewBase * @memberof IBZTeamGridViewBase
*/ */
public appUIService: IBZTeamUIService = new IBZTeamUIService(this.$store); public appUIService: IBZTeamUIService = new IBZTeamUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZTeamGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -409,6 +400,15 @@ export default class IBZTeamGridViewBase extends Vue { ...@@ -409,6 +400,15 @@ export default class IBZTeamGridViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZTeamGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -96,15 +96,6 @@ export default class IBZTeamMemberEditViewBase extends Vue { ...@@ -96,15 +96,6 @@ export default class IBZTeamMemberEditViewBase extends Vue {
* @memberof IBZTeamMemberEditViewBase * @memberof IBZTeamMemberEditViewBase
*/ */
public appUIService: IBZTeamMemberUIService = new IBZTeamMemberUIService(this.$store); public appUIService: IBZTeamMemberUIService = new IBZTeamMemberUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZTeamMemberEditViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -349,6 +340,15 @@ export default class IBZTeamMemberEditViewBase extends Vue { ...@@ -349,6 +340,15 @@ export default class IBZTeamMemberEditViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZTeamMemberEditViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -110,15 +110,6 @@ export default class IBZTeamMemberGridViewBase extends Vue { ...@@ -110,15 +110,6 @@ export default class IBZTeamMemberGridViewBase extends Vue {
* @memberof IBZTeamMemberGridViewBase * @memberof IBZTeamMemberGridViewBase
*/ */
public appUIService: IBZTeamMemberUIService = new IBZTeamMemberUIService(this.$store); public appUIService: IBZTeamMemberUIService = new IBZTeamMemberUIService(this.$store);
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZTeamMemberGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -370,6 +361,15 @@ export default class IBZTeamMemberGridViewBase extends Vue { ...@@ -370,6 +361,15 @@ export default class IBZTeamMemberGridViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof IBZTeamMemberGridViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -77,15 +77,6 @@ import { Subject,Subscription } from 'rxjs'; ...@@ -77,15 +77,6 @@ import { Subject,Subscription } from 'rxjs';
}, },
}) })
export default class OUIndexViewBase extends Vue { export default class OUIndexViewBase extends Vue {
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof OUIndexViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 数据变化 * 数据变化
...@@ -288,6 +279,15 @@ export default class OUIndexViewBase extends Vue { ...@@ -288,6 +279,15 @@ export default class OUIndexViewBase extends Vue {
*/ */
public viewCacheData:any; public viewCacheData:any;
/**
* 计数器服务对象集合
*
* @type {Array<*>}
* @memberof OUIndexViewBase
*/
public counterServiceArray:Array<any> = [];
/** /**
* 解析视图参数 * 解析视图参数
* *
......
...@@ -736,7 +736,7 @@ export default class OUIndexViewBase extends Vue implements ControlInterface { ...@@ -736,7 +736,7 @@ export default class OUIndexViewBase extends Vue implements ControlInterface {
* @memberof OUIndexViewBase * @memberof OUIndexViewBase
*/ */
public handleMenusResource(inputMenus:Array<any>){ public handleMenusResource(inputMenus:Array<any>){
if(Environment.enablePermissionValid){ if(this.$store.getters['authresource/getEnablePermissionValid']){
this.computedEffectiveMenus(inputMenus); this.computedEffectiveMenus(inputMenus);
this.computeParentMenus(inputMenus); this.computeParentMenus(inputMenus);
} }
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
:filter-node-method="filterNode" :filter-node-method="filterNode"
> >
<template slot-scope="{ node, data }"> <template slot-scope="{ node, data }">
<context-menu :contextMenuStyle="{width: '100%'}" :data="node" :renderContent="renderContextMenu"> <context-menu :ref='data.id' :isBlocked="true" :contextMenuStyle="{width: '100%'}" :data="node" :renderContent="renderContextMenu" @showContext="showContext(data,$event)">
<tooltip transfer style="width: 100%;" max-width="2000" placement="right"> <tooltip transfer style="width: 100%;" max-width="2000" placement="right">
<div class="tree-node" @dblclick="doDefaultAction(node)"> <div class="tree-node" @dblclick="doDefaultAction(node)">
<span class="icon"> <span class="icon">
...@@ -58,6 +58,8 @@ import AppCenterService from "@service/app/app-center-service"; ...@@ -58,6 +58,8 @@ import AppCenterService from "@service/app/app-center-service";
import IBZDepartmentService from '@/service/ibzdepartment/ibzdepartment-service'; import IBZDepartmentService from '@/service/ibzdepartment/ibzdepartment-service';
import DeptTreeService from './dept-tree-treeview-service'; import DeptTreeService from './dept-tree-treeview-service';
import IBZDepartmentUIService from '@/uiservice/ibzdepartment/ibzdepartment-ui-service'; import IBZDepartmentUIService from '@/uiservice/ibzdepartment/ibzdepartment-ui-service';
import { Environment } from '@/environments/environment';
import UIService from '@/uiservice/ui-service';
@Component({ @Component({
...@@ -377,6 +379,24 @@ export default class DeptTreeBase extends Vue implements ControlInterface { ...@@ -377,6 +379,24 @@ export default class DeptTreeBase extends Vue implements ControlInterface {
*/ */
public appStateEvent: Subscription | undefined; public appStateEvent: Subscription | undefined;
/**
* 树节点上下文菜单集合
*
* @type {string[]}
* @memberof DeptTreeBase
*/
public actionModel: any = {
}
/**
* 备份树节点上下文菜单
*
* @type any
* @memberof MainTreeBase
*/
public copyActionModel:any;
/** /**
* 选中数据变更事件 * 选中数据变更事件
* *
...@@ -747,14 +767,77 @@ export default class DeptTreeBase extends Vue implements ControlInterface { ...@@ -747,14 +767,77 @@ export default class DeptTreeBase extends Vue implements ControlInterface {
*/ */
public renderContextMenu(node: any) { public renderContextMenu(node: any) {
let content; let content;
if (node && node.data) { if (node && node.data) {
const data: any = JSON.parse(JSON.stringify(node.data)); const data: any = JSON.parse(JSON.stringify(node.data));
this.currentselectedNode = { ...data }; this.currentselectedNode = { ...data };
const tags: string[] = data.id.split(';'); const tags: string[] = data.id.split(';');
let copyActionModel:any =Util.deepCopy(this.actionModel);
} }
return content; return content;
} }
/**
* 显示上下文菜单
*
* @param data 节点数据
* @param event 事件源
* @memberof DeptTreeBase
*/
public showContext(data:any,event:any){
let _this:any = this;
this.copyActionModel = {};
const tags: string[] = data.id.split(';');
Object.values(this.actionModel).forEach((item:any) =>{
if(Object.is(item.nodeOwner,tags[0])){
this.copyActionModel[item.name] = item;
}
})
if(Object.keys(this.copyActionModel).length === 0){
return;
}
this.computeNodeState(data,data.nodeType,data.appEntityName).then((result:any) => {
let flag:boolean = false;
if(Object.values(result).length>0){
flag =Object.values(result).some((item:any) =>{
return item.visabled === true;
})
}
if(flag){
(_this.$refs[data.id] as any).showContextMenu(event.clientX, event.clientY);
}
});
}
/**
* 计算节点右键权限
*
* @param {*} node 节点数据
* @param {*} nodeType 节点类型
* @param {*} appEntityName 应用实体名称
* @returns
* @memberof DeptTreeBase
*/
public async computeNodeState(node:any,nodeType:string,appEntityName:string) {
if(Object.is(nodeType,"STATIC")){
return this.copyActionModel;
}
let service:any = await this.appEntityService.getService(appEntityName);
if(this.copyActionModel && Object.keys(this.copyActionModel).length > 0) {
if(service['Get'] && service['Get'] instanceof Function){
let tempContext:any = Util.deepCopy(this.context);
tempContext[appEntityName] = node.srfkey;
let targetData = await service.Get(tempContext,{}, false);
let uiservice:any = await new UIService().getService(appEntityName);
let result: any[] = ViewTool.calcActionItemAuthState(targetData.data,this.copyActionModel,uiservice);
return this.copyActionModel;
}else{
console.warn("获取数据异常");
return this.copyActionModel;
}
}
}
/** /**
* 设置选中高亮 * 设置选中高亮
* *
......
...@@ -212,6 +212,7 @@ export default class DeptTreeService extends ControlService { ...@@ -212,6 +212,7 @@ export default class DeptTreeService extends ControlService {
Object.assign(treeNode, { curData: entity }); Object.assign(treeNode, { curData: entity });
Object.assign(treeNode, { nodeid: treeNode.srfkey }); Object.assign(treeNode, { nodeid: treeNode.srfkey });
Object.assign(treeNode, { nodeid2: filter.strRealNodeId }); Object.assign(treeNode, { nodeid2: filter.strRealNodeId });
Object.assign(treeNode, { nodeType: "DE",appEntityName:"ibzdepartment" });
list.push(treeNode); list.push(treeNode);
resolve(list); resolve(list);
bFirst = false; bFirst = false;
...@@ -333,6 +334,7 @@ export default class DeptTreeService extends ControlService { ...@@ -333,6 +334,7 @@ export default class DeptTreeService extends ControlService {
Object.assign(treeNode, { leaf: false }); Object.assign(treeNode, { leaf: false });
Object.assign(treeNode, { nodeid: treeNode.srfkey }); Object.assign(treeNode, { nodeid: treeNode.srfkey });
Object.assign(treeNode, { nodeid2: filter.strRealNodeId }); Object.assign(treeNode, { nodeid2: filter.strRealNodeId });
Object.assign(treeNode, { nodeType: "STATIC" });
list.push(treeNode); list.push(treeNode);
resolve(list); resolve(list);
}); });
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
:filter-node-method="filterNode" :filter-node-method="filterNode"
> >
<template slot-scope="{ node, data }"> <template slot-scope="{ node, data }">
<context-menu :contextMenuStyle="{width: '100%'}" :data="node" :renderContent="renderContextMenu"> <context-menu :ref='data.id' :isBlocked="true" :contextMenuStyle="{width: '100%'}" :data="node" :renderContent="renderContextMenu" @showContext="showContext(data,$event)">
<tooltip transfer style="width: 100%;" max-width="2000" placement="right"> <tooltip transfer style="width: 100%;" max-width="2000" placement="right">
<div class="tree-node" @dblclick="doDefaultAction(node)"> <div class="tree-node" @dblclick="doDefaultAction(node)">
<span class="icon"> <span class="icon">
...@@ -58,6 +58,8 @@ import AppCenterService from "@service/app/app-center-service"; ...@@ -58,6 +58,8 @@ import AppCenterService from "@service/app/app-center-service";
import IBZOrganizationService from '@/service/ibzorganization/ibzorganization-service'; import IBZOrganizationService from '@/service/ibzorganization/ibzorganization-service';
import OrgTreeService from './org-tree-treeview-service'; import OrgTreeService from './org-tree-treeview-service';
import IBZOrganizationUIService from '@/uiservice/ibzorganization/ibzorganization-ui-service'; import IBZOrganizationUIService from '@/uiservice/ibzorganization/ibzorganization-ui-service';
import { Environment } from '@/environments/environment';
import UIService from '@/uiservice/ui-service';
@Component({ @Component({
...@@ -377,6 +379,24 @@ export default class OrgTreeBase extends Vue implements ControlInterface { ...@@ -377,6 +379,24 @@ export default class OrgTreeBase extends Vue implements ControlInterface {
*/ */
public appStateEvent: Subscription | undefined; public appStateEvent: Subscription | undefined;
/**
* 树节点上下文菜单集合
*
* @type {string[]}
* @memberof OrgTreeBase
*/
public actionModel: any = {
}
/**
* 备份树节点上下文菜单
*
* @type any
* @memberof MainTreeBase
*/
public copyActionModel:any;
/** /**
* 选中数据变更事件 * 选中数据变更事件
* *
...@@ -747,14 +767,77 @@ export default class OrgTreeBase extends Vue implements ControlInterface { ...@@ -747,14 +767,77 @@ export default class OrgTreeBase extends Vue implements ControlInterface {
*/ */
public renderContextMenu(node: any) { public renderContextMenu(node: any) {
let content; let content;
if (node && node.data) { if (node && node.data) {
const data: any = JSON.parse(JSON.stringify(node.data)); const data: any = JSON.parse(JSON.stringify(node.data));
this.currentselectedNode = { ...data }; this.currentselectedNode = { ...data };
const tags: string[] = data.id.split(';'); const tags: string[] = data.id.split(';');
let copyActionModel:any =Util.deepCopy(this.actionModel);
} }
return content; return content;
} }
/**
* 显示上下文菜单
*
* @param data 节点数据
* @param event 事件源
* @memberof OrgTreeBase
*/
public showContext(data:any,event:any){
let _this:any = this;
this.copyActionModel = {};
const tags: string[] = data.id.split(';');
Object.values(this.actionModel).forEach((item:any) =>{
if(Object.is(item.nodeOwner,tags[0])){
this.copyActionModel[item.name] = item;
}
})
if(Object.keys(this.copyActionModel).length === 0){
return;
}
this.computeNodeState(data,data.nodeType,data.appEntityName).then((result:any) => {
let flag:boolean = false;
if(Object.values(result).length>0){
flag =Object.values(result).some((item:any) =>{
return item.visabled === true;
})
}
if(flag){
(_this.$refs[data.id] as any).showContextMenu(event.clientX, event.clientY);
}
});
}
/**
* 计算节点右键权限
*
* @param {*} node 节点数据
* @param {*} nodeType 节点类型
* @param {*} appEntityName 应用实体名称
* @returns
* @memberof OrgTreeBase
*/
public async computeNodeState(node:any,nodeType:string,appEntityName:string) {
if(Object.is(nodeType,"STATIC")){
return this.copyActionModel;
}
let service:any = await this.appEntityService.getService(appEntityName);
if(this.copyActionModel && Object.keys(this.copyActionModel).length > 0) {
if(service['Get'] && service['Get'] instanceof Function){
let tempContext:any = Util.deepCopy(this.context);
tempContext[appEntityName] = node.srfkey;
let targetData = await service.Get(tempContext,{}, false);
let uiservice:any = await new UIService().getService(appEntityName);
let result: any[] = ViewTool.calcActionItemAuthState(targetData.data,this.copyActionModel,uiservice);
return this.copyActionModel;
}else{
console.warn("获取数据异常");
return this.copyActionModel;
}
}
}
/** /**
* 设置选中高亮 * 设置选中高亮
* *
......
...@@ -200,6 +200,7 @@ export default class OrgTreeService extends ControlService { ...@@ -200,6 +200,7 @@ export default class OrgTreeService extends ControlService {
Object.assign(treeNode, { leaf: false }); Object.assign(treeNode, { leaf: false });
Object.assign(treeNode, { nodeid: treeNode.srfkey }); Object.assign(treeNode, { nodeid: treeNode.srfkey });
Object.assign(treeNode, { nodeid2: filter.strRealNodeId }); Object.assign(treeNode, { nodeid2: filter.strRealNodeId });
Object.assign(treeNode, { nodeType: "STATIC" });
list.push(treeNode); list.push(treeNode);
resolve(list); resolve(list);
}); });
...@@ -279,6 +280,7 @@ export default class OrgTreeService extends ControlService { ...@@ -279,6 +280,7 @@ export default class OrgTreeService extends ControlService {
Object.assign(treeNode, { curData: entity }); Object.assign(treeNode, { curData: entity });
Object.assign(treeNode, { nodeid: treeNode.srfkey }); Object.assign(treeNode, { nodeid: treeNode.srfkey });
Object.assign(treeNode, { nodeid2: filter.strRealNodeId }); Object.assign(treeNode, { nodeid2: filter.strRealNodeId });
Object.assign(treeNode, { nodeType: "DE",appEntityName:"ibzorganization" });
list.push(treeNode); list.push(treeNode);
resolve(list); resolve(list);
bFirst = false; bFirst = false;
......
...@@ -12,6 +12,6 @@ CMD echo "The application will start in ${IBIZ_SLEEP}s..." && \ ...@@ -12,6 +12,6 @@ CMD echo "The application will start in ${IBIZ_SLEEP}s..." && \
sleep ${IBIZ_SLEEP} && \ sleep ${IBIZ_SLEEP} && \
java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /ibzou-app-web.jar java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /ibzou-app-web.jar
EXPOSE 8080 EXPOSE 30001
ADD ibzou-app-web.jar /ibzou-app-web.jar ADD ibzou-app-web.jar /ibzou-app-web.jar
...@@ -3,9 +3,22 @@ services: ...@@ -3,9 +3,22 @@ services:
ibzou-app-web: ibzou-app-web:
image: registry.cn-shanghai.aliyuncs.com/ibizsys/ibzou-app-web:latest image: registry.cn-shanghai.aliyuncs.com/ibizsys/ibzou-app-web:latest
ports: ports:
- "8080:8080" - "30001:30001"
networks: networks:
- agent_network - agent_network
environment:
- SPRING_CLOUD_NACOS_DISCOVERY_IP=172.16.180.237
- SERVER_PORT=30001
- SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR=172.16.102.211:8848
- SPRING_REDIS_HOST=172.16.100.243
- SPRING_REDIS_PORT=6379
- SPRING_REDIS_DATABASE=0
- SPRING_DATASOURCE_USERNAME=a_A_5d9d78509
- SPRING_DATASOURCE_PASSWORD=@6dEfb3@
- SPRING_DATASOURCE_URL=jdbc:mysql://172.16.180.232:3306/a_A_5d9d78509?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true&allowMultiQueries=true
- SPRING_DATASOURCE_DRIVER-CLASS-NAME=com.mysql.jdbc.Driver
- SPRING_DATASOURCE_DEFAULTSCHEMA=a_A_5d9d78509
- NACOS=172.16.102.211:8848
deploy: deploy:
resources: resources:
limits: limits:
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册