<#ibizinclude>
../../../@MACRO/LANG_FUN.ftl
</#ibizinclude>
<#--  前台界面行为  -->
<#if front_block??>
${front_block}
<#else>
    /**
     * ${item.getCaption()}
     *
     * @param {any[]} args 当前数据
     * @param {any} context 行为附加上下文
     * @param {*} [params] 附加参数
     * @param {*} [$event] 事件源
     * @param {*} [xData]  执行行为所需当前部件
     * @param {*} [actionContext]  执行行为上下文
     * @param {*} [srfParentDeName] 父实体名称
     * @returns {Promise<any>}
  <#if item.getgetPSAppDataEntity?? && item.getPSAppDataEntity()??>
     * @memberof ${srfclassname('${item.getPSAppDataEntity().getCodeName()}')}UIService
  </#if>
     */
    public async ${item.getFullCodeName()}(args: any[], context:any = {} ,params?: any, $event?: any, xData?: any,actionContext?:any,srfParentDeName?:string) {
    <#if item.render??>
        ${item.render.code}
    <#else>
  <#--  BEGIN: 数据目标: 单项数据  -->
  <#if item.getActionTarget() == 'SINGLEDATA'>
        actionContext.$Notice.error({ title: '错误', desc: '不支持单项数据' });
  <#--  END: 数据目标: 单项数据  -->
  <#--  BEGIN: 数据目标: 多项数据  -->
  <#elseif item.getActionTarget() == 'MULTIDATA'>
        actionContext.$Notice.error({ title: '错误', desc: '不支持多项数据' });
  <#--  END: 数据目标: 多项数据  -->
  <#--  BEGIN: 数据目标: 单项数据(主键),多项数据(主键),无数据  -->
  <#else>
    <#--  BEGIN: 数据处理逻辑  -->
        let data: any = {};
        <#-- 是否先保存目标数据start -->
        <#if item.isSaveTargetFirst()>
        const result:any = await xData.save(args,false);
        args = [result.data];
        </#if>
         <#-- 是否先保存目标数据end -->
        const _args: any[] = Util.deepCopy(args);
        const _this: any = actionContext;
        const actionTarget: string | null = <#if item.getActionTarget()??>'${item.getActionTarget()}'<#else>null</#if>;
    <#if item.getPSAppDataEntity?? && item.getPSAppDataEntity()??>
    <#assign appDataEntity = item.getPSAppDataEntity() />
      <#if item.getActionTarget() == 'SINGLEKEY' || item.getActionTarget() == 'MULTIKEY'>
        <#assign valueItem><#if item.getValueItem?? && item.getValueItem() != ''>${item.getValueItem()}<#else>${appDataEntity.getKeyPSAppDEField().getCodeName()?lower_case}</#if></#assign>
        <#assign paramItem><#if item.getParamItem?? && item.getParamItem() != ''>${item.getParamItem()}<#else>${appDataEntity.getCodeName()?lower_case}</#if></#assign>
        <#assign textItem><#if item.getTextItem?? && item.getTextItem() != ''>${item.getTextItem()}<#else>${appDataEntity.getMajorPSAppDEField().getCodeName()?lower_case}</#if></#assign>
        Object.assign(context, { ${appDataEntity.getCodeName()?lower_case}: '%${paramItem}%' });
        Object.assign(params, { ${valueItem}: '%${paramItem}%' });
        Object.assign(params, { ${textItem}: '%${textItem}%' });
      </#if>
    </#if>
        context = UIActionTool.handleContextParam(actionTarget,_args,context);
        data = UIActionTool.handleActionParam(actionTarget,_args,params);
        context = Object.assign({},actionContext.context,context);
        <#-- 构建srfparentdename和srfparentkey start -->
        let parentObj:any = {srfparentdename:srfParentDeName?srfParentDeName:null,srfparentkey:srfParentDeName?context[srfParentDeName.toLowerCase()]:null};
        Object.assign(data,parentObj);
        Object.assign(context,parentObj);
        <#-- 构建srfparentdename和srfparentkey end -->
    <#--  END: 数据处理逻辑  -->
    <#--  BEGIN: 前台处理模式:打开HTML  -->
    <#if item.getFrontProcessType() == 'OPENHTMLPAGE'>
        <#--  打开独立程序弹出  -->
      <#if item.isCloseEditView()>
        <#-- 关闭编辑视图 -->
        actionContext.closeView(null);
      </#if>
        const openPopupApp = (url: string) => {
            window.open(url, '_blank');
            return null;
        }
        const url = `${item.getHtmlPageUrl()}`;
        openPopupApp(url);
    <#--  END: 前台处理模式:打开HTML  -->
    <#--  BEGIN: 前台处理模式:打开顶级视图,打开顶级视图或向导(模态)  -->
    <#elseif (item.getFrontProcessType() == 'TOP' || item.getFrontProcessType() == 'WIZARD') && item.getFrontPSAppView()??>
      <#assign dataview = item.getFrontPSAppView()>
      <#--  BEGIN:准备参数  -->
      <#if dataview.isRedirectView()>
        const deResParameters: any[] = [];
        const parameters: any[] = [];
      <#else>
        <#--  BEGIN:是否应用实体视图  -->
        <#if dataview.isPSDEView()>
        <#-- 存在关系start -->
        <#if dataview.getPSAppDERSPathCount() gt 0>
        <#list 1..dataview.getPSAppDERSPathCount() as count>
        <#assign condition = ''/>
        <#list dataview.getPSAppDERSPath(count_index)  as deRSPath>
            <#if deRSPath.getMajorPSAppDataEntity?? && deRSPath.getMajorPSAppDataEntity()??>
                <#assign _dataEntity = deRSPath.getMajorPSAppDataEntity()/>
                <#assign condition>${condition}context.${_dataEntity.getCodeName()?lower_case} && </#assign>
            </#if>
        </#list>
        </#list>
        let deResParameters: any[] = [];
        <#-- 如果是主实体需对context判断start -->
        <#if dataview.getPSAppDataEntity().isMajor()>
        if(${condition}true){
            deResParameters = [
            <#list dataview.getPSAppDERSPath(dataview.getPSAppDERSPathCount() - 1) as deRSPath>
            <#assign majorPSAppDataEntity = deRSPath.getMajorPSAppDataEntity()/>
            { pathName: '${srfpluralize(majorPSAppDataEntity.codeName)?lower_case}', parameterName: '${majorPSAppDataEntity.getCodeName()?lower_case}' },
            </#list>
            ]
        }
        <#else>
        deResParameters = [
            <#list dataview.getPSAppDERSPath(dataview.getPSAppDERSPathCount() - 1) as deRSPath>
            <#assign majorPSAppDataEntity = deRSPath.getMajorPSAppDataEntity()/>
            { pathName: '${srfpluralize(majorPSAppDataEntity.codeName)?lower_case}', parameterName: '${majorPSAppDataEntity.getCodeName()?lower_case}' },
            </#list>
        ];
        </#if>
        <#-- 如果是主实体需对context判断end -->
        <#else>
        let deResParameters: any[] = [];
        </#if>
        <#-- 存在关系end -->
        <#else>
        const deResParameters: any[] = [];
        </#if>
        <#--  END:是否应用实体视图  -->
        <#if dataview.getOpenMode() == 'INDEXVIEWTAB' || dataview.getOpenMode() == ''>
          <#--  BEGIN:是否应用实体视图  -->
          <#if dataview.isPSDEView()>
          <#assign appDataEntity = dataview.getPSAppDataEntity()/>
        const parameters: any[] = [
            { pathName: '${srfpluralize(appDataEntity.codeName)?lower_case}', parameterName: '${appDataEntity.getCodeName()?lower_case}' },
            { pathName: '${dataview.getPSDEViewCodeName()?lower_case}', parameterName: '${dataview.getPSDEViewCodeName()?lower_case}' },
        ];
          <#else>
        const parameters: any[] = [
            { pathName: '${dataview.getCodeName()?lower_case}', parameterName: '${dataview.getCodeName()?lower_case}' },
        ];
          </#if>
          <#--  END:是否应用实体视图  -->
        <#else>
          <#--  BEGIN:是否应用实体视图  -->
          <#if dataview.isPSDEView()>
          <#assign appDataEntity = dataview.getPSAppDataEntity()/>
        const parameters: any[] = [
            { pathName: '${srfpluralize(appDataEntity.codeName)?lower_case}', parameterName: '${appDataEntity.getCodeName()?lower_case}' },
        ];
          <#else>
        const parameters: any[] = [];
          </#if>
          <#--  END:是否应用实体视图  -->
        </#if>
      </#if>
      <#--  END:准备参数  -->
      <#-- 关闭编辑视图 -->
      <#if item.isCloseEditView()>
            actionContext.closeView(null);
      </#if>
      <#--  BEGIN: 打开重定向视图  -->
      <#if dataview.isRedirectView()>
        <#-- BEGIN: 打开顶级分页视图  -->
            // 打开顶级分页视图
            const openIndexViewTab = (viewpath: string, data: any) => {
                const _params = actionContext.$util.prepareRouteParmas({
                    route: actionContext.$route,
                    sourceNode: actionContext.$route.name,
                    targetNode: viewpath,
                    data: data,
                });
                actionContext.$router.push({ name: viewpath, params: _params });
                <#--  是否重新加载数据  -->
                <#if item.isReloadData?? && item.isReloadData()>
                if (xData && xData.refresh && xData.refresh instanceof Function) {
                    xData.refresh(args);
                }
                </#if>
                <#--  后续界面行为  -->
                <#if item.getNextPSUIAction?? && item.getNextPSUIAction()??>
                <#assign nextPSUIAction = item.getNextPSUIAction()/>
                  <#if !(nextPSUIAction.getPSAppDataEntity?? && nextPSUIAction.getPSAppDataEntity()??)>
                if (_this.${nextPSUIAction.getFullCodeName()} && _this.${nextPSUIAction.getFullCodeName()} instanceof Function) {
                    _this.${nextPSUIAction.getFullCodeName()}(result.datas,context,params, $event, xData,actionContext);
                }
                  <#else>
                if (this.${nextPSUIAction.getFullCodeName()} && this.${nextPSUIAction.getFullCodeName()} instanceof Function) {
                    this.${nextPSUIAction.getFullCodeName()}(result.datas,context,params, $event, xData,actionContext);
                }
                  </#if>
                </#if>
                return null;
            }
        <#-- END: 打开顶级分页视图  -->
        <#-- BEGIN: 打开模态  -->
            // 打开模态
            const openPopupModal = (view: any, data: any) => {
                let container: Subject<any> = actionContext.$appmodal.openModal(view,context,data);
                container.subscribe((result: any) => {
                    if (!result || !Object.is(result.ret, 'OK')) {
                        return;
                    }
                    const _this: any = actionContext;
                    <#--  是否重新加载数据  -->
                    <#if item.isReloadData?? && item.isReloadData()>
                    if (xData && xData.refresh && xData.refresh instanceof Function) {
                        xData.refresh(args);
                    }
                    </#if>
                    <#--  后续界面行为  -->
                    <#if item.getNextPSUIAction?? && item.getNextPSUIAction()??>
                    <#assign nextPSUIAction = item.getNextPSUIAction()/>
                      <#if !(nextPSUIAction.getPSAppDataEntity?? && nextPSUIAction.getPSAppDataEntity()??)>
                    if (_this.${nextPSUIAction.getFullCodeName()} && _this.${nextPSUIAction.getFullCodeName()} instanceof Function) {
                        _this.${nextPSUIAction.getFullCodeName()}(result.datas,context,params, $event, xData,actionContext);
                    }
                      <#else>
                    if (this.${nextPSUIAction.getFullCodeName()} && this.${nextPSUIAction.getFullCodeName()} instanceof Function) {
                        this.${nextPSUIAction.getFullCodeName()}(result.datas,context,params, $event, xData,actionContext);
                    }
                      </#if>
                    </#if>
                    return result.datas;
                });
            }
        <#-- END: 打开模态  -->
        <#-- BEGIN: 打开抽屉  -->
            // 打开抽屉
            const openDrawer = (view: any, data: any) => {
                let container: Subject<any> = actionContext.$appdrawer.openDrawer(view,context, data);
                container.subscribe((result: any) => {
                    if (!result || !Object.is(result.ret, 'OK')) {
                        return;
                    }
                    const _this: any = actionContext;
                    <#--  是否重新加载数据  -->
                    <#if item.isReloadData?? && item.isReloadData()>
                    if (xData && xData.refresh && xData.refresh instanceof Function) {
                        xData.refresh(args);
                    }
                    </#if>
                    <#--  后续界面行为  -->
                    <#if item.getNextPSUIAction?? && item.getNextPSUIAction()??>
                    <#assign nextPSUIAction = item.getNextPSUIAction()/>
                      <#if !(nextPSUIAction.getPSAppDataEntity?? && nextPSUIAction.getPSAppDataEntity()??)>
                    if (_this.${nextPSUIAction.getFullCodeName()} && _this.${nextPSUIAction.getFullCodeName()} instanceof Function) {
                        _this.${nextPSUIAction.getFullCodeName()}(result.datas,context,params, $event, xData,actionContext);
                    }
                      <#else>
                    if (this.${nextPSUIAction.getFullCodeName()} && this.${nextPSUIAction.getFullCodeName()} instanceof Function) {
                        this.${nextPSUIAction.getFullCodeName()}(result.datas,context,params, $event, xData,actionContext);
                    }
                      </#if>
                    </#if>
                    return result.datas;
                });
            }
        <#-- END: 打开抽屉  -->
        <#-- BEGIN: 打开气泡卡片  -->
            // 打开气泡卡片
            const openPopOver = (view: any, data: any) => {
                let container: Subject<any> = actionContext.$apppopover.openPop($event, view,context, data);
                container.subscribe((result: any) => {
                    if (!result || !Object.is(result.ret, 'OK')) {
                        return;
                    }
                    const _this: any = actionContext;
                    <#--  是否重新加载数据  -->
                    <#if item.isReloadData?? && item.isReloadData()>
                    if (xData && xData.refresh && xData.refresh instanceof Function) {
                        xData.refresh(args);
                    } else if (_this.refresh && _this.refresh instanceof Function) {
                        _this.refresh(args);
                    }
                    </#if>
                    <#--  后续界面行为  -->
                    <#if item.getNextPSUIAction?? && item.getNextPSUIAction()??>
                    <#assign nextPSUIAction = item.getNextPSUIAction()/>
                      <#if !(nextPSUIAction.getPSAppDataEntity?? && nextPSUIAction.getPSAppDataEntity()??)>
                    if (_this.${nextPSUIAction.getFullCodeName()} && _this.${nextPSUIAction.getFullCodeName()} instanceof Function) {
                        _this.${nextPSUIAction.getFullCodeName()}(result.datas,context,params, $event, xData,actionContext);
                    }
                      <#else>
                    if (this.${nextPSUIAction.getFullCodeName()} && this.${nextPSUIAction.getFullCodeName()} instanceof Function) {
                        this.${nextPSUIAction.getFullCodeName()}(result.datas,context,params, $event, xData,actionContext);
                    }
                      </#if>
                    </#if>
                    return result.datas;
                });
            }
        <#-- END: 打开气泡卡片  -->
        <#-- BEGIN: 打开独立程序弹出  -->
            // 打开独立程序弹出 
            const openPopupApp = (url: string) => {
                window.open(url, '_blank');
                return null;
            }
        <#assign dataview_de = dataview.getPSAppDataEntity().getPSDataEntity()/>
            const url: string = '/${app.getPKGCodeName()?lower_case}/${dataview_de.getPSSystemModule().codeName?lower_case}/${dataview_de.codeName?lower_case}/${dataview.getPSDEViewCodeName()?lower_case}/getmodel';
            actionContext.$http.get(url, data).then((response: any) => {
                if (!response || response.status !== 200) {
                    actionContext.$Notice.error({ title: '错误', desc: '请求异常' });
                }
                if (response.status === 401) {
                    return;
                }
                const { data: result } = response;
                if (!result) {
                    return reject(response);
                }

                if (result.viewparams && Object.keys(result.viewparams)) {
                    Object.assign(data, result.viewparams);
                }

                if (Object.is(result.openmode, 'POPUPAPP') && result.url && !Object.is(result.url, '')) {
                    openPopupApp(result.url);
                } else if (Object.is(result.openmode, 'INDEXVIEWTAB') || Object.is(result.openmode, '')) {
                    const viewpath = ${r'`${result.viewmodule}_${result.viewname}`.toLowerCase()'};
                    openIndexViewTab(viewpath, data);
                } else if (Object.is(result.openmode, 'POPUPMODAL')) {
                    const viewname = actionContext.$util.srfFilePath2(result.viewname);
                    const view: any = {
                        viewname: viewname,
                        title: result.title,
                        width: result.width,
                        height: result.height,
                    }
                    openPopupModal(view,context,data);
                } else if (result.openmode.startsWith('DRAWER')) {
                    const viewname = actionContext.$util.srfFilePath2(result.viewname);
                    const view: any = {
                        viewname: viewname,
                        title: result.title,
                        width: result.width,
                        height: result.height,
                        placement: result.openmode,
                    }
                    openDrawer(view,context,data);
                } else if (Object.is(result.openmode, 'POPOVER')) {
                    const viewname = actionContext.$util.srfFilePath2(result.viewname);
                    const view: any = {
                        viewname: viewname,
                        title: result.title,
                        width: result.width,
                        height: result.height,
                        placement: result.openmode,
                    }
                    openPopOver(view,context,data);
                }  
            }).catch((response: any) => {
                if (!response || !response.status || !response.data) {
                    actionContext.$Notice.error({ title: '错误', desc: '系统异常!' });
                    return;
                }
                if (response.status === 401) {
                    return;
                }
            })
        <#-- END: 打开独立程序弹出  -->
      <#--  END: 打开重定向视图  -->
      <#--  BEGIN: 打开顶级分页视图  -->
      <#elseif dataview.getOpenMode() =='INDEXVIEWTAB' || dataview.getOpenMode() == ''>
        const openIndexViewTab = (data: any) => {
            const routePath = actionContext.$viewTool.buildUpRoutePath(actionContext.$route, context, deResParameters, parameters, _args, data);
            actionContext.$router.push(routePath);
            <#--  BEGIN 是否重新加载数据  -->
            <#if item.isReloadData?? && item.isReloadData()>
            if (xData && xData.refresh && xData.refresh instanceof Function) {
                xData.refresh(args);
            }
            </#if>
            <#--  END 是否重新加载数据  -->
            <#--  BEGIN 后续界面行为  -->
            <#if item.getNextPSUIAction?? && item.getNextPSUIAction()??>
            <#assign nextPSUIAction = item.getNextPSUIAction()/>
              <#if !(nextPSUIAction.getPSAppDataEntity?? && nextPSUIAction.getPSAppDataEntity()??)>
            if (_this.${nextPSUIAction.getFullCodeName()} && _this.${nextPSUIAction.getFullCodeName()} instanceof Function) {
                _this.${nextPSUIAction.getFullCodeName()}([data],context,params, $event, xData,actionContext);
            }
              <#else>
            if (this.${nextPSUIAction.getFullCodeName()} && this.${nextPSUIAction.getFullCodeName()} instanceof Function) {
                this.${nextPSUIAction.getFullCodeName()}([data],context,params, $event, xData,actionContext);
            }
              </#if>
            </#if>
            <#--  END 后续界面行为  -->
            return null;
        }
        openIndexViewTab(data);
      <#--  END: 打开顶级分页视图  -->
      <#-- BEGIN: 打开模态  -->
      <#elseif dataview.getOpenMode() = 'POPUPMODAL'>
            const openPopupModal = (view: any, data: any) => {
                let container: Subject<any> = actionContext.$appmodal.openModal(view, context, data);
                container.subscribe((result: any) => {
                    if (!result || !Object.is(result.ret, 'OK')) {
                        return;
                    }
                    const _this: any = actionContext;
                    <#--  是否重新加载数据  -->
                    <#if item.isReloadData?? && item.isReloadData()>
                    if (xData && xData.refresh && xData.refresh instanceof Function) {
                        xData.refresh(args);
                    }
                    </#if>
                    <#--  后续界面行为  -->
                    <#if item.getNextPSUIAction?? && item.getNextPSUIAction()??>
                    <#assign nextPSUIAction = item.getNextPSUIAction()/>
                      <#if !(nextPSUIAction.getPSAppDataEntity?? && nextPSUIAction.getPSAppDataEntity()??)>
                    if (_this.${nextPSUIAction.getFullCodeName()} && _this.${nextPSUIAction.getFullCodeName()} instanceof Function) {
                        _this.${nextPSUIAction.getFullCodeName()}(result.datas,context, params, $event, xData,actionContext);
                    }
                      <#else>
                    if (this.${nextPSUIAction.getFullCodeName()} && this.${nextPSUIAction.getFullCodeName()} instanceof Function) {
                        this.${nextPSUIAction.getFullCodeName()}(result.datas,context, params, $event, xData,actionContext);
                    }
                      </#if>
                    </#if>
                    if(window.opener){
                        window.opener.postMessage({status:'OK',identification:'WF'},Environment.uniteAddress);
                        window.close();
                    }
                    return result.datas;
                });
            }
            const view: any = {
                viewname: '${srffilepath2(dataview.getCodeName())}', 
                height: ${dataview.getHeight()?c}, 
                width: ${dataview.getWidth()?c},  
                title: actionContext.<@getViewLanguageTitle dataview />,
            };
            openPopupModal(view, data);
      <#-- END: 打开模态  -->
      <#--  BEGIN: 打开抽屉  -->
      <#elseif dataview.getOpenMode()?index_of('DRAWER') == 0>
            const openDrawer = (view: any, data: any) => {
                let container: Subject<any> = actionContext.$appdrawer.openDrawer(view, context,data);
                container.subscribe((result: any) => {
                    if (!result || !Object.is(result.ret, 'OK')) {
                        return;
                    }
                    const _this: any = actionContext;
                    <#--  是否重新加载数据  -->
                    <#if item.isReloadData?? && item.isReloadData()>
                    if (xData && xData.refresh && xData.refresh instanceof Function) {
                        xData.refresh(args);
                    }
                    </#if>
                    <#--  后续界面行为  -->
                    <#if item.getNextPSUIAction?? && item.getNextPSUIAction()??>
                    <#assign nextPSUIAction = item.getNextPSUIAction()/>
                      <#if !(nextPSUIAction.getPSAppDataEntity?? && nextPSUIAction.getPSAppDataEntity()??)>
                    if (_this.${nextPSUIAction.getFullCodeName()} && _this.${nextPSUIAction.getFullCodeName()} instanceof Function) {
                        _this.${nextPSUIAction.getFullCodeName()}(result.datas,context,params, $event, xData,actionContext);
                    }
                      <#else>
                    if (this.${nextPSUIAction.getFullCodeName()} && this.${nextPSUIAction.getFullCodeName()} instanceof Function) {
                        this.${nextPSUIAction.getFullCodeName()}(result.datas,context,params, $event, xData,actionContext);
                    }
                      </#if>
                    </#if>
                    if(window.opener){
                        window.opener.postMessage({status:'OK',identification:'WF'},Environment.uniteAddress);
                        window.close();
                    }
                    return result.datas;
                });
            }
            const view: any = {
                viewname: '${srffilepath2(dataview.getCodeName())}', 
                height: ${dataview.getHeight()?c}, 
                width: ${dataview.getWidth()?c},  
                title: actionContext.<@getViewLanguageTitle dataview />,
                placement: '${dataview.getOpenMode()}',
            };
            openDrawer(view, data);
      <#--  END: 打开抽屉  -->
      <#--  BEGIN: 打开气泡卡片  -->
      <#elseif dataview.getOpenMode() == 'POPOVER'>
            const openPopOver = (view: any, data: any) => {
                let container: Subject<any> = actionContext.$apppopover.openPop($event, view, context,data);
                container.subscribe((result: any) => {
                    if (!result || !Object.is(result.ret, 'OK')) {
                        return;
                    }
                    const _this: any = actionContext;
                    <#--  是否重新加载数据  -->
                    <#if item.isReloadData?? && item.isReloadData()>
                    if (xData && xData.refresh && xData.refresh instanceof Function) {
                        xData.refresh(args);
                    }
                    </#if>
                    <#--  后续界面行为  -->
                    <#if item.getNextPSUIAction?? && item.getNextPSUIAction()??>
                    <#assign nextPSUIAction = item.getNextPSUIAction()/>
                      <#if !(nextPSUIAction.getPSAppDataEntity?? && nextPSUIAction.getPSAppDataEntity()??)>
                    if (_this.${nextPSUIAction.getFullCodeName()} && _this.${nextPSUIAction.getFullCodeName()} instanceof Function) {
                        _this.${nextPSUIAction.getFullCodeName()}(result.datas,context, params, $event, xData,actionContext);
                    }
                      <#else>
                    if (this.${nextPSUIAction.getFullCodeName()} && this.${nextPSUIAction.getFullCodeName()} instanceof Function) {
                        this.${nextPSUIAction.getFullCodeName()}(result.datas,context, params, $event, xData,actionContext);
                    }
                      </#if>
                    </#if>
                    if(window.opener){
                        window.opener.postMessage({status:'OK',identification:'WF'},Environment.uniteAddress);
                        window.close();
                    }
                    return result.datas;
                });
            }
            const view: any = {
                viewname: '${srffilepath2(dataview.getCodeName())}', 
                height: ${dataview.getHeight()?c}, 
                width: ${dataview.getWidth()?c},  
                title: actionContext.<@getViewLanguageTitle dataview />,
                placement: '${dataview.getOpenMode()}',
            };
            openPopOver(view, data);
      <#--  END: 打开气泡卡片  -->
      <#--  BEGIN: 其他打开模式  -->
      <#else>
            actionContext.$Notice.warning({ title: '错误', desc: actionContext.<@getViewLanguageTitle dataview />+'不支持该模式打开' });
      </#if>
      <#--  END: 其他打开模式  -->
    <#--  END: 前台处理模式:打开顶级视图,打开顶级视图或向导(模态)  -->
    <#--  BEGIN: 前台处理模式:用户自定义  -->
    <#elseif item.getFrontProcessType() == 'OTHER'>
        <#--  是否重新加载数据  -->
        <#if item.isReloadData?? && item.isReloadData()>  
              if (xData && xData.refresh && xData.refresh instanceof Function) {
                  xData.refresh(args);
              }
            <#--  后续界面行为  -->
            <#if item.getNextPSUIAction?? && item.getNextPSUIAction()??>
            <#assign nextPSUIAction = item.getNextPSUIAction()/>
              <#if !(nextPSUIAction.getPSAppDataEntity?? && nextPSUIAction.getPSAppDataEntity()??)>
              if (_this.${nextPSUIAction.getFullCodeName()} && _this.${nextPSUIAction.getFullCodeName()} instanceof Function) {
                  _this.${nextPSUIAction.getFullCodeName()}(result.datas,context, params, $event, xData,actionContext);
              }
              <#else>
              if (this.${nextPSUIAction.getFullCodeName()} && this.${nextPSUIAction.getFullCodeName()} instanceof Function) {
                  this.${nextPSUIAction.getFullCodeName()}(result.datas,context, params, $event, xData,actionContext);
              }
              </#if>
            </#if>
        <#else>
            // 自定义实体界面行为
            actionContext.$Notice.warning({ title: '错误', desc: '${item.getCaption()} 未实现' });
        </#if>

    </#if>
    <#--  END: 前台处理模式:用户自定义  -->
  </#if>
  <#--  END: 数据目标: 单项数据(主键),多项数据(主键),无数据  -->
  </#if>
    }
</#if>