el-tree--setup语法糖-实现双击树的节点修改、删除节点的名称

小鱼儿心语: 时间,抓起了就是黄金,虚度了就是流水;书,看了就是知识,没看就是废纸;理想,努力了才叫梦想,放弃了那只是妄想。努力,虽然未必会收获,但放弃,就一定一无所获。再好的机会,也要靠人把握,而努力至关重要。放手去做、执着坚持!

样式展示:
没双击之前的样式:

没双击之前.png

双击之后的样式:

el-tree.png

  • 在没双击之前,树的节点是文本样式。
  • 在双击之后,节点位置变成输入框形式,原节点的名称显示在输入框中,可以进行删除或者修改。
  • 修改完毕之后,当输入框失去焦点的时候,输入框消失,又变成原本的文本样式,并且显示的是修改后的节点名称。
template:
            <div class="head-container down-tree">
               <el-tree
                  :data="deptOptions"
                  :props="{ label: 'label', children: 'children' }"
                  :expand-on-click-node="false"
                  :filter-node-method="filterNode"
                  ref="deptTreeRef"
                  node-key="id"
                  highlight-current
                  :default-expand-all="false"
                  @node-click="handleNodeClick"
               >
               <template #default="{ node, data }">
               <span
                  :class="{'custom-tree-node': true, 'node-click': flag == data.id}"
                  :ref="node.data.id"
                >
                  <span class="enumText" @dblclick.stop="editCateName(data, node)">{{ data.label }}</span> 
                  <el-input
                    @blur.stop="$event => editSave($event, data)"
                    maxlength="15"
                    show-word-limit
                    placeholder="请输入"
                    v-if="isEdit == data.id" 
                    :ref="data.id"
                    v-model.trim="cateNameInput"
                    style="position: absolute; left: 0px;"
                  >
                  </el-input></span>
                  <a style="margin-right: 8px;float: right;" @click.stop="deleteTreeItem(data)"> 
                        <el-icon :size="size" :color="color">
                          <Delete />
                        </el-icon>
                      </a>
                </template>
              </el-tree>
            </div>

js:
<script setup name="Bznr">

  const { proxy } = getCurrentInstance();
  const deptOptions = ref(undefined);
  const cateNameInput = ref("")

  /** 通过条件过滤节点  */
  const filterNode = (value, data) => {
    if (!value) return true;
    return data.label.indexOf(value) !== -1;
  };

  /** 查询部门下拉树结构 */
  function getDeptTree() {
    deptTreeSelect().then(response => {
      deptOptions.value = response.data;
    });
  };

  // 选择标准化树传值获取相应的列表数据
  function handleNodeClick(data,node){
    console.log(258,data,node)
    queryParams.value.id = data.id
    queryParams.value.parentId = node.parent.data.id
    getList()
  }

//双击节点的名称修改名称
function editCateName(data) {
      cateNameInput.value = data.label;
      isEdit.value = data.id;
      nextTick(() => {
        proxy.$refs[data.id] && proxy.$refs[data.id].focus();// 获取输入框,自动获取焦点
      });
    }

//失去焦点之后执行的方法
function editSave(val, data) {
      const inputName = val.target.value.trim();
      if (inputName == '') {
        proxy.$modal.msgWarning("分类名称不能为空,请重新输入");
        isEdit.value = -1; // 让文本span标签显示,输入框隐藏
        return;
      }
      if (inputName == data.label) {
        isEdit.value = -1;
        return;
      }
      isEdit.value = -1;
      let param = {
        id: data.id,
        label: inputName
      };
      form.value.content = cateNameInput.value
      form.value.idCopy = data.id
      updateBznr(form.value).then(response => {
        proxy.$modal.msgSuccess("修改成功");
        open.value = false;
        getList();
        getDeptTree()
      });
    }

 // 点击删除按钮
function deleteTreeItem (data) {
  const idarr = []
  idarr.push(data.id)
  // ---删除树节点
  proxy.$modal.confirm('是否确认删除质量标准化为"' + data.label + '"的数据项?').then(function() {
      return delBznr(idarr);
    }).then(() => {
      getList();
      getDeptTree()
      proxy.$modal.msgSuccess("删除成功");
    }).catch(() => {});
}
</script>

小功能分享给大家,后续有更多功能需求会持续更新的,希望可以帮助到大家~~///(^v^)\~~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,295评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,928评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,682评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,209评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,237评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,965评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,586评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,487评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,016评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,136评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,271评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,948评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,619评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,139评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,252评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,598评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,267评论 2 358

推荐阅读更多精彩内容