<#ibizinclude> ./CONTROL-BASE.template.ftl </#ibizinclude> <#ibizinclude> ../@MACRO/CONTROL/CONTROL_HEADER-BASE.vue.ftl </#ibizinclude> /** * 获取多项数据 * * @returns {any[]} * @memberof ${srfclassname('${ctrl.codeName}')}Base */ public getDatas(): any[] { return []; } /** * 获取单项树 * * @returns {*} * @memberof ${srfclassname('${ctrl.codeName}')}Base */ public getData(): any { return null; } /** * 显示处理提示 * * @type {boolean} * @memberof ${srfclassname('${ctrl.codeName}')} */ @Prop({ default: true }) protected showBusyIndicator?: boolean; /** * 部件行为--fetch * * @type {string} * @memberof ${srfclassname('${ctrl.codeName}')} */ @Prop() protected fetchAction!: string; /** * 列表数组 * * @type {Array<any>} * @memberof ${srfclassname('${ctrl.codeName}')} */ public items: Array<any> = []; /** * 列表类型 * * @type {string} * @memberof ${srfclassname('${ctrl.codeName}')} */ @Prop({default:'LIST'}) protected listMode?: 'LISTEXPBAR' | 'LIST' | string; /** * 列表选中项的索引 * * @type {string} * @memberof ${srfclassname('${ctrl.codeName}')} */ public listItem: number = 0; /** * 分页大小 * * @type {number} * @memberof ${srfclassname('${ctrl.codeName}')} */ public pageSize: number = ${ ctrl.getPagingSize()?c}; /** * 总页数 * * @type {number} * @memberof ${srfclassname('${ctrl.codeName}')} */ public pageTotal: number = 0; /** * 当前页数 * * @type {number} * @memberof ${srfclassname('${ctrl.codeName}')} */ public pageNumber: number = 0; /** * 部件样式 * * @type {string} * @memberof ${srfclassname('${ctrl.codeName}')} */ @Prop({default: '<#if ctrl.getMobListStyle?? && ctrl.getMobListStyle()??>${ctrl.getMobListStyle()}</#if>'}) protected controlStyle!: string; /** * vue生命周期created * * @memberof ${srfclassname('${ctrl.codeName}')} */ public created() { this.handleCreated(); } /** * 执行created后的逻辑 * * @memberof ${srfclassname('${ctrl.codeName}')} */ public handleCreated() { if (this.viewState) { this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => { if (!Object.is(tag, this.name)) { return; } this.load(Object.assign(data, { page: this.pageNumber, size: this.pageSize }), ""); }); } } /** * vue 生命周期 * * @memberof ${srfclassname('${ctrl.codeName}')} */ protected destroyed() { this.afterDestroy(); } /** * 执行destroyed后的逻辑 * * @memberof ${srfclassname('${ctrl.codeName}')} */ protected afterDestroy() { if (this.viewStateEvent) { this.viewStateEvent.unsubscribe(); } <#if destroyed_block??> ${destroyed_block} </#if> } /** * 列表切换回调 * @param {number} listIndex * @memberof ${srfclassname('${ctrl.codeName}')} */ public switchView(listIndex:number){ this.items.findIndex((item,index)=>{ if(index === listIndex){ this.$emit('selectionchange', item); } }) } /** * 数据加载 * * @protected * @param {*} data * @param {*} type * @returns {Promise<any>} * @memberof ${srfclassname('${ctrl.codeName}')} */ protected async load(data: any, type: any): Promise<any> { if (!data.page) { Object.assign(data, { page: this.pageNumber }); } if (!data.size) { Object.assign(data, { size: this.pageSize }); } //视图排序 if(data.data && data.data.sort){ Object.assign(data, { sort:data.data.sort }); } const parentdata: any = {}; this.$emit('beforeload', parentdata); Object.assign(data, parentdata); let tempViewParams:any = parentdata.viewparams?parentdata.viewparams:{}; Object.assign(tempViewParams,JSON.parse(JSON.stringify(this.viewparams))); Object.assign(data,{viewparams:tempViewParams}); const response: any = await this.service.search(this.fetchAction, this.context, data, this.showBusyIndicator); if (!response || response.status !== 200) { this.$notify({ type: 'danger', message: response.error.message }); return response; } this.$emit('load', (response.data && response.data.records) ? response.data.records : []); this.pageTotal = response.data.total; if (type == 'top') { this.items = []; this.items = response.data.records; } else if (type == 'bottom') { for (let i = 0; i < response.data.records.length; i++) { this.items.push(response.data.records[i]); } } else { this.items = []; this.items = response.data.records; } return response; } /** * 格式化数据 * * @param {*} datelist * @memberof IBizChartViewController */ public formatdate(datelist: any) { this.items = datelist; } <#if view.getPSAppViewLogics?? && view.getPSAppViewLogics()??> <#list view.getPSAppViewLogics() as logic> <#if logic.getPFLogicCodeType() == 'APP_NEWDATA'> /** * 打开新建数据视图 * * @type {any} * @memberof ${srfclassname('${ctrl.codeName}')}Base */ @Prop() public newdata: any; </#if> <#if logic.getPFLogicCodeType() == 'APP_OPENDATA'> /** * 打开编辑数据视图 * * @type {any} * @memberof ${srfclassname('${ctrl.codeName}')}Base */ @Prop() public opendata: any; </#if> </#list> </#if> <#ibizinclude> ../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl </#ibizinclude> <#ibizinclude> ../@MACRO/CONTROL/CONTROL-BASE.style.ftl </#ibizinclude>