<#ibizinclude> ./CONTROL-BASE.template.ftl </#ibizinclude> <#ibizinclude> ../@MACRO/CONTROL/CONTROL_HEADER-BASE.vue.ftl </#ibizinclude> /** * 支持定制 * * @type {boolean} * @memberof ${srfclassname('${ctrl.codeName}')} */ protected isEnableCustomized: boolean = <#if ctrl.isEnableCustomized?? && ctrl.isEnableCustomized()??>${ctrl.isEnableCustomized()?c}<#else>false</#if>; /** * 获取多项数据 * * @returns {any[]} * @memberof ${srfclassname('${ctrl.codeName}')} */ public getDatas(): any[] { return []; } /** * modleId * * @type {string} * @memberof ${srfclassname('${ctrl.codeName}')}Base */ public modelId:string = "dashboard_<#if ctrl.getPSAppDataEntity()??>${ctrl.getPSAppDataEntity().getCodeName()?lower_case}<#else>app</#if>_${ctrl.getCodeName()?lower_case}"; /** * 功能服务名称 * * @type {string} * @memberof ${srfclassname('${ctrl.codeName}')}Base */ public utilServiceName:string = "<#if ctrl.getPSAppDynaDashboardUtil?? && ctrl.getPSAppDynaDashboardUtil()??>${ctrl.getPSAppDynaDashboardUtil().getCodeName()?lower_case}</#if>"; /** * 工具服务对象 * * @protected * @type {UtilService} * @memberof ${srfclassname('${ctrl.codeName}')}Base */ protected utilService:any = window.utilServiceConstructor; /** * 加载定制数据模型 * * @param {string} serviceName * @param {*} context * @param {*} viewparams * @memberof ${srfclassname('${ctrl.codeName}')}Base */ public loadModel(serviceName: string, context: any, viewparams: any) { return new Promise((resolve: any, reject: any) => { this.utilService.getService(serviceName).then((service: any) => { service.loadModelData(JSON.stringify(context), viewparams).then((response: any) => { this.customizeModel = response.data; setTimeout(() => { this.customizeModel.forEach((item: any) => { this.viewState.next({ tag: item.portletCodeName, action: "", data: {} });}); }, 1); resolve(response); }).catch((response: any) => { reject(response); }); }).catch((response: any) => { reject(response); }); }); } /** * 保存定制数据模型 * * @param {string} serviceName * @param {*} context * @param {*} viewparams * @memberof ${srfclassname('${ctrl.codeName}')} */ public saveModel(serviceName: string, context: any, viewparams: any) { return new Promise((resolve: any, reject: any) => { this.utilService.getService(serviceName).then((service: any) => { service.saveModelData(JSON.stringify(context), "", viewparams) .then((response: any) => { resolve(response); }) .catch((response: any) => { reject(response); }); }) .catch((response: any) => { reject(response); }); }); } /** * 定制数据模型 * * @memberof ${srfclassname('${ctrl.codeName}')} */ public customizeModel :any = []; /** * 获取单项树 * * @returns {*} * @memberof ${srfclassname('${ctrl.codeName}')} */ public getData(): any { return {}; } /** * vue 生命周期 * * @memberof ${srfclassname('${ctrl.codeName}')} */ protected created() { this.afterCreated(); } /** * 执行created后的逻辑 * * @memberof ${srfclassname('${ctrl.codeName}')} */ protected afterCreated(){ if (this.viewState) { this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => { if (!Object.is(tag, this.name)) { return; } if(this.isEnableCustomized){ this.loadModel(this.utilServiceName,this.context,Object.assign({utilServiceName:this.utilServiceName,modelid:this.modelId},this.viewparams)); return; } const refs: any = this.$refs; Object.keys(refs).forEach((name: string) => { this.viewState.next({ tag: name, action: action, data: data }); }); }); } } /** * 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> } /** * 打开定制仪表盘界面 * * @memberof ${srfclassname('${ctrl.codeName}')} */ public openCustomized() { this.openPopupModal({ viewname: 'app-customize', title: 'app-customize'},{},{modelId:this.modelId,utilServiceName:this.utilServiceName,selectMode:this.customizeModel}); } /** * 打开定制仪表盘界面 * * @type {string} * @memberof AppRichTextEditor */ private async openPopupModal(view: any, context: any, param: any): Promise<any> { const result: any = await this.$appmodal.openModal(view, context, param); if (result || Object.is(result.ret, 'OK')) { this.loadModel(this.utilServiceName,this.context,Object.assign({utilServiceName:this.utilServiceName,modelid:this.modelId},this.viewparams)); } } /** * 定制事件 * * @type {string} * @memberof AppRichTextEditor */ public async enableCustomizedEvent(tag:string,customizeModelItem:any,title:string) { let index = this.customizeModel.findIndex((item:any)=>{ return item.id === customizeModelItem.id; }) let meassage :string= ''; if(tag === 'rename'){ this.customizeModel.splice(index,1,(customizeModelItem as never)); meassage = '重命名'; } if(tag === 'delete'){ this.customizeModel.splice(index,1); meassage = '删除'; } let falg = await this.saveModel(this.utilServiceName,{}, { utilServiceName: this.utilServiceName, modelid: this.modelId, model: this.customizeModel, }); falg? this.$notice.success(meassage+'成功'):this.$notice.error(meassage+'失败'); } <#ibizinclude> ../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl </#ibizinclude> <#ibizinclude> ../@MACRO/CONTROL/CONTROL-BASE.style.ftl </#ibizinclude>