提交 7428ee20 编写于 作者: tony001's avatar tony001

增加面板控件模型

上级 6f978712
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 detailType: 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.detailType = !Object.is(opts.detailType, '') ? opts.detailType : '';
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.detailType, '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
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册