VIEW-BASE.vue.ftl 6.6 KB
Newer Older
1 2 3 4 5 6 7
<#ibizinclude>
../@MACRO/LAYOUTPANEL_VIEW.template.ftl
</#ibizinclude>

<#assign watch_viewparam_block>
if(this.viewparams.selectedData){
                this.selectedData = JSON.stringify(this.viewparams.selectedData);
Shine-zwj's avatar
Shine-zwj committed
8
                this.viewSelections = this.viewparams.selectedData;
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
            }
</#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}
30
     * @memberof ${srfclassname('${view.name}')}Base
31 32 33 34 35 36 37
     */
    @Prop({default: true}) public isShowButton!: boolean;
    
    /**
     * 选中数据的字符串
     *
     * @type {string}
38
     * @memberof ${srfclassname('${view.name}')}Base
39
     */
40
    public selectedData: string = "";
41 42 43 44 45

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

    /**
     * 选中数据单击
     *
     * @param {*} item
70
     * @memberof ${srfclassname('${view.name}')}Base
71 72 73 74 75 76 77 78 79 80 81
     */
    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
82
     * @memberof ${srfclassname('${view.name}')}Base
83 84 85 86 87 88 89 90
     */
    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
91
        this.selectedData = JSON.stringify(this.viewSelections);
92 93 94 95 96
    }

    /**
     * 删除右侧全部选中数据
     *
97
     * @memberof ${srfclassname('${view.name}')}Base
98 99 100 101 102 103 104 105 106 107 108 109 110 111
     */
    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
112
        this.selectedData = JSON.stringify(this.viewSelections);
113 114 115 116 117
    }

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

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

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

    /**
     * 添加左侧面板所有数据到右侧
     *
165
     * @memberof ${srfclassname('${view.name}')}Base
166 167 168 169 170 171 172 173
     */
    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)=>{
174 175 176
                  if(Util.isEmpty(data.srfmajortext)){
                      Object.assign(data,{srfmajortext: data['${view.getPSAppDataEntity().getMajorPSAppDEField().getCodeName()?lower_case}']});
                  }
177 178 179 180 181 182 183 184 185 186 187
                })
            }
            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
188
        this.selectedData = JSON.stringify(this.viewSelections);
189 190 191 192 193
    }

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

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

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

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