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;
          }
        }
      }
    自立更生,艰苦奋斗!
  • 相关阅读:
    [刘阳Java]_JdbcTemplate用法_第11讲
    [刘阳Java]_Spring对Dao的支持_第10讲
    [刘阳Java]_Spring AOP基于XML配置介绍_第9讲
    [刘阳Java]_Spring AOP注解详细介绍_第8讲
    [刘阳Java]_Spring AOP入门_第7讲
    [刘阳Java]_Spring常用注解介绍_第6讲
    [刘阳Java]_Spring相关配置介绍_第5讲
    [刘阳Java]_了解BeanFactory_第4讲
    vue传参
    axios的增删改查。
  • 原文地址:https://www.cnblogs.com/javazxy/p/8028694.html
Copyright © 2011-2022 走看看