• 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;
          }
        }
      }
    自立更生,艰苦奋斗!
  • 相关阅读:
    关闭windows10更新
    ude5.00修改字体大小方法
    hightec的eclipse运行错误解决
    Tek DPO2024B示波器和电流探头A622的使用
    vue项目中使用mockjs+axios模拟后台数据返回
    vue-tree 组织架构图/树形图自动生成(含添加、删除、修改)
    vue html页面打印功能vue-print
    项目中遇到的bug、问题总结
    在Vue项目中使用html2canvas生成页面截图并上传
    element-ui 使用span-method表格合并后hover样式的处理
  • 原文地址:https://www.cnblogs.com/javazxy/p/8028694.html
Copyright © 2020-2023  润新知