zoukankan      html  css  js  c++  java
  • Angular 2 树节点的上下移动问题

      最近在做一个树节点的上下移动然后实现排序的问题。直接看图:

    实现已选查询条件的上下移动。结合了primeng 的picklist 组件。

    下面是html代码

      <p-tabPanel header="查询条件">
            <div class="row selfHeight" style="margin-left: 10px;">
              <div class="col-4 selfHeight" style="padding: 0px;">
                <div style="margin:0 0 10px 0">所有可选查询条件</div>
                <div style="margin: 0px 6px; 100%">
                  <select  class="select form-control radius selfHeight"
                          style="padding:0.2rem 0.75rem;height:30px;margin-left: -6px; 100%"
                          (change)="changeQueryConditionSelect($event.target.value)">
                    <option *ngFor="let values of selectData" value="{{values.attrGroupId}}">
                      {{values.attrGroupName}}
                    </option>
                  </select>
                </div>
                <p-tree [value]="leftQueryCondition" selectionMode="multiple" [(selection)]="selectLeftCondition"
                        (onNodeSelect)="queryConditionLeftNodeSelect($event)"
                        [style]="{'height':'calc(100% - 64px)','width':'100%','overflow':'auto','border-color':'#e0e0e0','color':'#333333','font-size':'13px'}">
                </p-tree>
              </div>
              <div class="col-2" style="padding: 0px;margin-top: 120px;text-align: center">
                <div style="margin-bottom: 10px">
                  <button type="button" class="btn btn-clickStyle radius pointer" (click)="moveRightCondition()">
                    <i class="fa fa-angle-double-right" aria-hidden="true"></i>
                  </button>
                </div>
                <div>
                  <button type="button" class="btn btn-clickStyle radius pointer" (click)="moveLeftCondition()">
                    <i class="fa fa-angle-double-left" aria-hidden="true"></i>
                  </button>
                </div>
              </div>
              <div class="col-4 selfHeight" style="padding: 0px;">
                <div style="margin:0 0 10px 0">已选查询条件</div>
                <p-tree [value]="rightQueryCondition" selectionMode="multiple" [(selection)]="selectRightCondition"
                        (onNodeSelect)="queryConditionRightSelect($event)"
                        [style]="{'height':'calc(100% - 34px)','width':'100%','overflow':'auto','border-color':'#e0e0e0','color':'#333333','font-size':'13px'}">
                  <ng-template let-node pTemplate="default">
                    {{node.label}}
                    <select [(ngModel)]="node.symbol" type="text">
                      <option *ngFor="let values of operation" value="{{values.enumvalCode}}">{{values.enumvalName}}</option>
                    </select>
                  </ng-template>
                </p-tree>
              </div>
              <div class="col-2" style="padding: 0px;margin-top: 120px;text-align: center">
                <div style="margin-bottom: 10px">
                  <button type="button" class="btn btn-clickStyle radius pointer" (click)="moveUp()">
                    <i class="fa fa-angle-up" aria-hidden="true"></i>
                  </button>
                </div>
                <div>
                  <button type="button" class="btn btn-clickStyle radius pointer" (click)="moveDown()">
                    <i class="fa fa-angle-down" aria-hidden="true"></i>
                  </button>
                </div>
              </div>
            </div>
    
          </p-tabPanel>

    下面是ts代码:

    moveUp() {  //右侧选只选中一个时才能移动
        if (this.selectRightCondition && this.selectRightCondition.length==1) {
          let data = this.rightQueryCondition;
          let index = 0;
          data.forEach((record, i) => {
            if (record['fieldCode'] === this.selectRightCondition[0]['fieldCode']) {
              return index = i;
            }
          })
          var temp;
          if (index === 0 || index > data.length - 1) {
            this.rightQueryCondition = data;
          } else {
            temp = data[index];
            data[index] = data[index - 1];
            data[index - 1] = temp;
            this.rightQueryCondition = data;
          }
        }
      }
    
      moveDown() {
        if (this.selectRightCondition && this.selectRightCondition.length==1) {
          let data = this.rightQueryCondition;
          let index = 0;
          data.forEach((record, i) => {
            if (record['fieldCode'] === this.selectRightCondition[0]['fieldCode']) {
              return index = i;
            }
          })
          var temp;
          if (index === data.length - 1 || index < 0) {
            this.rightQueryCondition = data;
          } else {
            temp = data[index];
            data[index] = data[index + 1];
            data[index + 1] = temp;
            this.rightQueryCondition = data;
          }
        }
      }
    自立更生,艰苦奋斗!
  • 相关阅读:
    人生
    问模板函数、函数模板,模板类、类模板的区别的问题?
    李清照
    重师者王,重友者霸,重己者亡
    C++ Primer(第4版)习题解答
    C#设计模式(1)转载
    C#设计模式(5)
    C#设计模式(2)
    C# 编码规范和编程好习惯
    C#设计模式(4)
  • 原文地址:https://www.cnblogs.com/javazxy/p/8028694.html
Copyright © 2011-2022 走看看