VIEW-BASE.vue.ftl 6.4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
<#ibizinclude>
../@MACRO/LAYOUTPANEL_VIEW.template.ftl
</#ibizinclude>

<#assign watch_viewparam_block>
if(this.viewparams.selectedData){
                this.selectedData = JSON.stringify(this.viewparams.selectedData);
            }
</#assign>

<#ibizinclude>
../@MACRO/VIEW_HEADER-BASE.vue.ftl
</#ibizinclude>

<#assign mounted_block>
if(this.viewparams.selectedData){
            this.engine.onCtrlEvent('pickupviewpanel', 'selectionchange', this.viewparams.selectedData);
            this.onCLickRight();
        }
</#assign>

<#ibizinclude>
../@MACRO/VIEW_CONTENT-BASE.vue.ftl
</#ibizinclude>
    /**
     * 是否显示按钮
     *
     * @type {boolean}
29
     * @memberof ${srfclassname('${view.name}')}Base
30 31 32 33 34 35 36
     */
    @Prop({default: true}) public isShowButton!: boolean;
    
    /**
     * 选中数据的字符串
     *
     * @type {string}
37
     * @memberof ${srfclassname('${view.name}')}Base
38
     */
39
    public selectedData: string = "";
40 41 42 43 44

    /**
     * 是否初始化已选中项
     *
     * @type {any[]}
45
     * @memberof ${srfclassname('${view.name}')}Base
46
     */
47
    public isInitSelected:boolean = false;
48 49 50 51 52
    
    /**
     * 视图选中数据
     *
     * @type {any[]}
53
     * @memberof ${srfclassname('${view.name}')}Base
54 55 56 57 58 59 60
     */
    public viewSelections:any[] = [];
    
    /**
     * 是否单选
     *
     * @type {boolean}
61
     * @memberof ${srfclassname('${view.name}')}Base
62 63 64 65 66 67 68
     */
    public isSingleSelect: boolean = false;

    /**
     * 选中数据单击
     *
     * @param {*} item
69
     * @memberof ${srfclassname('${view.name}')}Base
70 71 72 73 74 75 76 77 78 79 80
     */
    public selectionsClick(item:any):void {
        item._select = !item._select;
        const removeSelect: boolean = this.viewSelections.some((selection: any) => selection._select);
        this.containerModel.view_leftbtn.disabled = !removeSelect;
    }

    /**
     * 选中树双击
     *
     * @param {*} item
81
     * @memberof ${srfclassname('${view.name}')}Base
82 83 84 85 86 87 88 89
     */
    public selectionsDBLClick(item:any):void {
        const index: number = this.viewSelections.findIndex((selection: any) => Object.is(selection.srfkey, item.srfkey));
        if (index !== -1) {
            this.viewSelections.splice(index, 1);
        }
        const removeSelect: boolean = this.viewSelections.some((selection: any) => selection._select);
        this.containerModel.view_leftbtn.disabled = !removeSelect;
tony001's avatar
tony001 committed
90
        this.selectedData = JSON.stringify(this.viewSelections);
91 92 93 94 95
    }

    /**
     * 删除右侧全部选中数据
     *
96
     * @memberof ${srfclassname('${view.name}')}Base
97 98 99 100 101 102 103 104 105 106 107 108 109 110
     */
    public onCLickLeft():void {
        const _selectiions = [...JSON.parse(JSON.stringify(this.viewSelections))];
        _selectiions.forEach((item: any) => {
            if (!item._select) {
                return;
            }
            const index = this.viewSelections.findIndex((selection: any) => Object.is(item.srfkey, selection.srfkey));
            if (index !== -1) {
                this.viewSelections.splice(index, 1);
            }
        });
        const removeSelect: boolean = this.viewSelections.some((selection: any) => selection._select);
        this.containerModel.view_leftbtn.disabled = !removeSelect;
tony001's avatar
tony001 committed
111
        this.selectedData = JSON.stringify(this.viewSelections);
112 113 114 115 116
    }

    /**
     * 添加左侧选中数据
     *
117
     * @memberof ${srfclassname('${view.name}')}Base
118 119 120 121 122 123
     */
    public onCLickRight():void {
        Object.values(this.containerModel).forEach((model: any) => {
            if (!Object.is(model.type, 'PICKUPVIEWPANEL')) {
                return;
            }
tony001's avatar
tony001 committed
124
            let newSelections:any[] = [];
125 126 127 128 129
            model.selections.forEach((item: any) => {
                const index: number = this.viewSelections.findIndex((selection: any) => Object.is(item.srfkey, selection.srfkey));
                if (index === -1) {
                    let _item: any = { ...JSON.parse(JSON.stringify(item)) };
                    Object.assign(_item, { _select: false })
tony001's avatar
tony001 committed
130 131 132
                    newSelections.push(_item);
                }else{
                    newSelections.push(this.viewSelections[index]);
133 134
                }
            });
135
            this.viewSelections = this.removeDuplicates([...newSelections,...this.viewSelections]);
136
        });
137 138 139 140 141 142 143 144 145 146
    }

    /**
     * 去重
     *
     * @memberof ${srfclassname('${view.name}')}Base
     */
    public removeDuplicates(data:any):Array<any> {
        const uniqueSet = new Set(data);
        return [...uniqueSet];
147 148 149 150 151
    }

    /**
     * 选中数据全部删除
     *
152
     * @memberof ${srfclassname('${view.name}')}Base
153 154 155 156
     */
    public onCLickAllLeft():void {
        this.viewSelections = [];
        this.containerModel.view_leftbtn.disabled = true;
tony001's avatar
tony001 committed
157
        this.engine.onCtrlEvent('pickupviewpanel', 'selectionchange', []);
tony001's avatar
tony001 committed
158
        this.selectedData = JSON.stringify(this.viewSelections);
159 160 161 162 163
    }

    /**
     * 添加左侧面板所有数据到右侧
     *
164
     * @memberof ${srfclassname('${view.name}')}Base
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
     */
    public onCLickAllRight():void {
        Object.values(this.containerModel).forEach((model: any) => {
            if (!Object.is(model.type, 'PICKUPVIEWPANEL')) {
                return;
            }
            if(model.datas.length>0){
                model.datas.forEach((data:any,index:any)=>{
                    Object.assign(data,{srfmajortext: data['${view.getPSAppDataEntity().getMajorPSAppDEField().getCodeName()?lower_case}']});
                })
            }
            model.datas.forEach((item: any) => {
                const index: number = this.viewSelections.findIndex((selection: any) => Object.is(item.srfkey, selection.srfkey));
                if (index === -1) {
                    let _item: any = { ...JSON.parse(JSON.stringify(item)) };
                    Object.assign(_item, { _select: false })
                    this.viewSelections.push(_item);
                }
            });
        });
tony001's avatar
tony001 committed
185
        this.selectedData = JSON.stringify(this.viewSelections);
186 187 188 189 190
    }

    /**
     * 确定
     *
191
     * @memberof ${srfclassname('${view.name}')}Base
192 193 194 195 196 197 198 199 200
     */
    public onClickOk(): void {
        this.$emit('viewdataschange', this.viewSelections);
        this.$emit('close', null);
    }

    /**
     * 取消
     *
201
     * @memberof ${srfclassname('${view.name}')}Base
202 203
     */
    public onClickCancel(): void {
204
        this.$emit('viewdataschange', null);
205 206 207 208 209 210 211 212 213 214
        this.$emit('close', null);
    }

<#ibizinclude>
../@MACRO/VIEW_BOTTOM-BASE.vue.ftl
</#ibizinclude>

<#ibizinclude>
../@MACRO/VIEW-BASE.style.ftl
</#ibizinclude>