<#--  工作流内容  -->
<#if (view.getPSWorkflow?? && view.getPSWorkflow()??) && (view.isWFIAMode?? && view.isWFIAMode()) && (view.getWFStepValue?? && view.getWFStepValue() == "") && (view.getViewType?? && (view.getViewType() == 'DEWFEDITVIEW3' || view.getViewType() == 'DEWFEDITVIEW'))>
<#assign mounted_block>this.loadWFLinks();</#assign>

    /**
     * 加载权限按钮
     *
     * @memberof ${srfclassname('${view.name}')}
     */
    public loadWFLinks(): void {
        const url = '${app.getPKGCodeName()?lower_case}/${de.getPSSystemModule().codeName?lower_case}/${de.codeName?lower_case}/wflinks';
        const arg: any = {};
        if (this.engine && this.engine.viewdata && this.engine.viewdata.srfkey) {
            Object.assign(arg, { srfkey: this.engine.viewdata.srfkey });
        }
        if (!arg.srfkey || Object.is(arg.srfkey, '')) {
            return;
        }
        const get: Promise<any> = this.$http.get(url, arg, true);
        get.then((response: any) => {
            if (!response.status || response.status !== 200) {
                return;
            }
            const { data: _data } = response;
            this.containerModel.wflinks = _data;
        }).catch((response: any) => {
            console.log(response);
        });
    }

    /**
     * 工作流动态按钮 点击事件
     *
     * @param {*} item
     * @param {*} $event
     * @memberof ${srfclassname('${view.name}')}
     */
    public wflink_click(item: any, $event: any): void {
        if (Object.is(item.type, 'FRONT')) {
            this.wflink_front(item, $event);
        } else if (Object.is(item.type, 'BACKEND')) {
            this.wflink_backend(item, $event);
        }
    }

    /**
     *  前台界面行为
     *
     * @param {*} item
     * @param {*} $event
     * @memberof ${srfclassname('${view.name}')}
     */
    public wflink_front(item: any, $event: any): void {
        if (!item.page || Object.is(item.page, '')) {
            return;
        }

        const page: any = {};
        try {
            Object.assign(page, JSON.parse(item.page));
        } catch (error) {

        }
        if (Object.keys(page).length === 0) {
            return;
        }
        const arg: any = {};
        const _this: any = this;

        if (this.engine && this.engine.viewdata && this.engine.viewdata.srfkey) {
            Object.assign(arg, { srfkey: this.engine.viewdata.srfkey });
        }
        if (!arg.srfkey || Object.is(arg.srfkey, '')) {
            return;
        }

        const viewname = this.$util.srfFilePath2(page.viewname);
        const view: any = {
            viewname: viewname,
            title: page.title,
            width: page.width,
            height: page.height,
        }
        let container: Subject<any> = this.$appmodal.openModal(view, arg);
        container.subscribe((result: any) => {
            if (!result || !Object.is(result.ret, 'OK')) {
                return;
            }
            const { datas: _datas } = result;
            const [data] = _datas;
            this.wflink_backend(item, $event, data);
        });
    }

    /**
     * 后台界面行为
     *
     * @param {*} item
     * @param {*} $event
     * @param {*} [data]
     * @memberof ${srfclassname('${view.name}')}
     */
    public wflink_backend(item: any, $event: any, data?: any): void {
        const _this: any = this;
        this.wf_Step(item, $event, data).then((response: any) => {
            if (!response.status || response.status !== 200) {
                if (response.errorMessage) {
                    this.$Notice.error({ title: '错误', desc: response.errorMessage });
                }
                return;
            }
            this.$Notice.success({ title: '', desc: item.name + '操作成功' });

            const { data: _data } = response;
            if (_this.viewdata) {
                _this.$emit('viewdataschange', [{ ..._data }]);
                _this.$emit('close');
            } else if (_this.$tabPageExp) {
                _this.$tabPageExp.onClose(_this.$route.fullPath);
            }
        }).catch((response: any) => {
            if (response && response.status === 401) {
                return;
            }
            this.$Notice.error({ title: '错误', desc: response.errorMessage });
        });
    }

    /**
     * 工作流步骤
     *
     * @public
     * @param {*} item
     * @param {*} $event
     * @param {*} [data]
     * @returns {Promise<any>}
     * @memberof ${srfclassname('${view.name}')}
     */
    public async wf_Step(item: any, $event: any, data?: any): Promise<any> {
        const arg: any = { args: {} };
        if (data) {
            Object.assign(arg, data);
        }
        if (this.engine && this.engine.viewdata && this.engine.viewdata.srfkey) {
            Object.assign(arg, { srfkey: this.engine.viewdata.srfkey });
        }
        if (!arg.srfkey || Object.is(arg.srfkey, '')) {
            return;
        }
        Object.assign(arg, { link: item.id });
        if (!arg.link || Object.is(arg.link, '')) {
            return;
        }

        const url: string = '${app.getPKGCodeName()?lower_case}/${de.getPSSystemModule().codeName?lower_case}/${de.codeName?lower_case}/wflink';
        const post: Promise<any> = this.$http.post(url, arg, true);
        return post;
    }
</#if>