国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用Jsmind實(shí)現(xiàn)前端流程圖功能

這篇具有很好參考價(jià)值的文章主要介紹了使用Jsmind實(shí)現(xiàn)前端流程圖功能。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

需求:實(shí)現(xiàn)流程圖功能,根據(jù)狀態(tài)不同顯示不同的顏色,點(diǎn)擊有對(duì)應(yīng)的點(diǎn)擊顏色

思想:根據(jù)jsmind構(gòu)建思維導(dǎo)圖,改變節(jié)點(diǎn)背景顏色,獲取點(diǎn)擊節(jié)點(diǎn)事件當(dāng)點(diǎn)擊節(jié)點(diǎn)是設(shè)置節(jié)點(diǎn)選中背景圖片。

注意:由于jsmind更新各版本api都有很大改動(dòng),所以我使用的都是官方文檔注明的基于各版本都支持的api

效果:

jsmind教程,流程圖

?這里的要素是根據(jù)接口返回的,具體接口數(shù)據(jù)如下:

jsmind教程,流程圖

?root是根節(jié)點(diǎn),chrldren是子要素,可以根據(jù)自己的需求自行改造

代碼:

先引入jsmind庫(kù)(我引入的最新版本0.5)

npm install jsmind@latest --save

找到剛才引入vue中的jsmind的npm包,可以看到j(luò)smind.css,在這里可以修改我們想要的樣式,但是如果在這里修改是不會(huì)更新到git版本里面去,所以我們需要在src->style文件夾內(nèi)新scss文件,這樣我們改動(dòng)樣式可以更新到git版本控制中。

jsmind教程,流程圖

?新建一個(gè)scss文件內(nèi)容如下:(自己新建了一個(gè)主題名字為034,可以自行更改)

/**
 * @license BSD
 * @copyright 2014-2023 hizzgdev@163.com
 * 
 * Project Home:
 *   https://github.com/hizzgdev/jsmind/
 */

/* important section */
.jsmind-inner {
    position: relative;
    overflow: auto;
    width: 100%;
    height: 100%;
    outline: none;
}

/*box-shadow:0 0 2px #000;*/
.jsmind-inner {
    moz-user-select: -moz-none;
    -moz-user-select: none;
    -o-user-select: none;
    -khtml-user-select: none;
    -webkit-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

.jsmind-inner canvas {
    position: absolute;
}

/* z-index:1 */
svg.jsmind {
    position: absolute;
    z-index: 1;
}

canvas.jsmind {
    position: absolute;
    z-index: 1;
}

/* z-index:2 */
jmnodes {
    position: absolute;
    z-index: 2;
    background-color: rgba(0, 0, 0, 0);
    width: 100% !important;
    right: 40px;
}

/*background color is necessary*/
jmnode {
    position: absolute;
    cursor: default;
    max-width: 400px;
    box-shadow: 0;
}

/* 自定義自己的主題 */
jmnodes.theme-034 jmnode {
    width: 200px;
    height: 62px;
    text-align: left;
    color: #192C44;
    background-repeat: no-repeat;
    background-size: cover;
    padding: 7px 20px;
    font-size: 13px;
    border-radius: 4px;
}

/* 節(jié)點(diǎn)樣式 */
jmnodes.theme-034 jmnode:hover {}

/* 鼠標(biāo)懸停的節(jié)點(diǎn)樣式 */
jmnodes.theme-034 jmnode.selected {
    color: #192C44;
    background-color: transparent;
}

jmnodes.theme-034 .topicbody {
    pointer-events: none;

    .title {
        font-size: 12px;
    }

    .body {
        display: flex;
        align-items: center;
        margin-top: 6px;

        .left {
            width: 7px;
            height: 7px;
            border-radius: 50%;
            margin-right: 10px;
        }

        .right {
            font-size: 12px;
        }
    }
}

jmnodes.theme-034 .acitve {
    pointer-events: none;

    .title {
        font-size: 12px;
        color: white;
    }

    .body {
        display: flex;
        align-items: center;
        margin-top: 6px;
        color: white !important;

        .left {
            width: 7px;
            height: 7px;
            background-color: #fff !important;
            border-radius: 50%;
            margin-right: 10px;
        }

        .right {
            font-size: 12px;
            color: white !important;
        }
    }
}

/* 選中的節(jié)點(diǎn)樣式 */
jmnodes.theme-034 jmnode.root {
    width: 180px;
    height: 55px;
    text-align: center;
    padding: 10px;
    font-size: 16px;
}

jmnodes.theme-034 jmnode.root.selected {
    color: #192C44;
}

/* 根節(jié)點(diǎn)樣式 */
jmnodes.theme-034 jmexpander {}

/* 展開/關(guān)閉節(jié)點(diǎn)的控制點(diǎn)樣式 */
jmnodes.theme-034 jmexpander:hover {}

vue文件代碼如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-772368.html

<template>
  <div class="jsmind">
    <el-card>
      <div class="content" id="jsmind_container"></div>
    </el-card>
  </div>
</template>

<script>
import JSMind from "jsmind";
import "@/style/jsmind.scss";
import { nest034getJsmind } from "@/api/datapretreatment";
export default {
  components: {},
  data() {
    return {
      mindData: "", //jsmind相關(guān)配置
      jm: "", //jsmind對(duì)象
      curcodeInfo: null, //當(dāng)前選中節(jié)點(diǎn)信息
    };
  },
  created() {},
  mounted() {
    this.handleMind();
  },
  watch: {
    curcodeInfo: {
      handler() {},
    },
  },
  computed: {},
  methods: {
    // 初始化jsmind-----主題需要去jsmind的style里面去修改自定義主題樣式
    initjsmind() {
      // 初始化配置
      var options = {
        container: "jsmind_container",
        theme: "034",
        editable: false,
        view: {
          engine: "canvas", // 思維導(dǎo)圖各節(jié)點(diǎn)之間線條的繪制引擎
          hmargin: 10, // 思維導(dǎo)圖距容器外框的最小水平距離
          vmargin: 20, // 思維導(dǎo)圖距容器外框的最小垂直距離
          line_width: 2, // 思維導(dǎo)圖線條的粗細(xì)
          line_color: "#C6DDFFFF", // 思維導(dǎo)圖線條的顏色
        },
        layout: {
          hspace: 80, // 節(jié)點(diǎn)之間的水平間距
          vspace: 10, // 節(jié)點(diǎn)之間的垂直間距
          pspace: 10, // 節(jié)點(diǎn)與連接線之間的水平間距(用于容納節(jié)點(diǎn)收縮/展開控制器)
        },
      };
      this.jm = new JSMind(options);
      const mind = {
        /* 元數(shù)據(jù),定義思維導(dǎo)圖的名稱、作者、版本等信息 */
        meta: {
          name: "流程圖",
          author: "dingguowei",
          version: "0.2",
        },
        /* 數(shù)據(jù)格式聲明 */
        format: "node_tree",
        /* 數(shù)據(jù)內(nèi)容 */
        data: this.mindData,
      };
      this.jm.show(mind);
      var that = this;
      // 增加監(jiān)聽點(diǎn)擊節(jié)點(diǎn)事件,獲取當(dāng)前選中的節(jié)點(diǎn)
      this.jm.add_event_listener(function (type, node) {
        if (that.jm.get_selected_node() !== null) {
          // 設(shè)置curcodeInfo屬性,監(jiān)聽節(jié)點(diǎn)是否為根節(jié)點(diǎn),根節(jié)點(diǎn)不會(huì)改變curcodeInfo也就不會(huì)查詢右側(cè)日志,只有子節(jié)點(diǎn)會(huì)改變topic
          if (that.jm.get_selected_node().isroot === false) {
            // 恢復(fù)上一個(gè)節(jié)點(diǎn)的狀態(tài)
            if (that.curcodeInfo !== null) {
              that.curcodeInfo.topic.className = "topicbody";
            }

            // 不為根節(jié)點(diǎn)
            that.curcodeInfo = that.jm.get_selected_node();
            // 更新節(jié)點(diǎn)背景顏色
            that.curcodeInfo.topic.className = "acitve";
            that.jm.update_node(that.curcodeInfo.id);
            that.refresh(that.curcodeInfo);
          }
        }
      });
    },
    // 配置mind信息
    async handleMind() {
      var that = this;
      await nest034getJsmind().then((res) => {
        let mindData = {
          id: res.data.root.name,
          topic: res.data.root.name,
          "background-image": that.getbgcimg(res.data.root.status),
          children: [],
        };
        res.data.root.children.map((item) => {
          mindData.children.push({
            id: item.name,
            topic: this.gethtml(item),
            "background-image": that.getbgcimg(item.status),
            activeimg: that.getbgcimg(item.status, true),
            noacitveimg: that.getbgcimg(item.status),
          });
        });
        that.mindData = mindData;
        that.initjsmind();
      });
      //  獲取節(jié)點(diǎn) ID
      var node_id = this.jm.get_node("溫度").id;
      // 選中節(jié)點(diǎn)
      this.jm.select_node(node_id);
    },
    // 獲取背景圖片
    getbgcimg(val, acitve) {
      let url = "";
      if (acitve) {
        switch (val) {
          case "processing":
            url = "./img/jsmind/curprocessing.png";
            break;
          case "error":
            url = "./img/jsmind/curerror.png";
            break;
          case "finse":
            url = "./img/jsmind/curfinse.png";
            break;
          case "notstart":
            url = "./img/jsmind/curnotstart.png";
            break;
          default:
            url = "./img/jsmind/curfinse.png";
            break;
        }
        return url;
      } else {
        switch (val) {
          case "processing":
            url = "./img/jsmind/processing.png";
            break;
          case "error":
            url = "./img/jsmind/error.png";
            break;
          case "finse":
            url = "./img/jsmind/finse.png";
            break;
          case "notstart":
            url = "./img/jsmind/notstart.png";
            break;
          default:
            url = "./img/jsmind/finse.png";
            break;
        }
        return url;
      }
    },
    // 生成html
    gethtml(val) {
      let divObj = document.createElement("div");
      divObj.className = "topicbody";
      // 要素名稱
      let title = document.createElement("div");
      title.className = "title";
      title.innerHTML = val.name;
      divObj.appendChild(title);
      // 要素狀態(tài)
      let body = document.createElement("div");
      body.className = "body";
      let left = document.createElement("div");
      left.className = "left";
      left.style.backgroundColor = {
        processing: "#015DF3FF",
        finse: "#00C553FF",
        notstart: "#C7C7C7FF",
        error: "#F98100FF",
      }[val.status];
      body.appendChild(left);
      let right = document.createElement("div");
      right.className = "right";
      right.innerHTML = {
        processing: "進(jìn)行中",
        finse: "已完成",
        notstart: "未開始",
        error: "異常報(bào)警",
      }[val.status];
      right.style.color = {
        processing: "#015DF3FF",
        finse: "#00C553FF",
        notstart: "#C7C7C7FF",
        error: "#F98100FF",
      }[val.status];
      body.appendChild(right);
      divObj.appendChild(body);
      return divObj;
    },
    // 更新視圖
    refresh(node) {
      this.mindData.children.map((item) => {
        if (item.id === node.id) {
          item["background-image"] = item["activeimg"];
        } else {
          item["background-image"] = item["noacitveimg"];
        }
      });
      const mind = {
        /* 元數(shù)據(jù),定義思維導(dǎo)圖的名稱、作者、版本等信息 */
        meta: {
          name: "流程圖",
          author: "dingguowei",
          version: "0.2",
        },
        /* 數(shù)據(jù)格式聲明 */
        format: "node_tree",
        /* 數(shù)據(jù)內(nèi)容 */
        data: this.mindData,
      };
      this.jm.show(mind);
    },
  },
};
</script>
<style lang="scss" scoped>
.jsmind {
  width: 100%;
  //   height: 460px;
  .content {
    height: 420px;
    width: 100%;
  }
}
</style>

到了這里,關(guān)于使用Jsmind實(shí)現(xiàn)前端流程圖功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 流程圖實(shí)現(xiàn),基于vue2實(shí)現(xiàn)的流程圖

    流程圖實(shí)現(xiàn),基于vue2實(shí)現(xiàn)的流程圖

    flex布局 + 偽元素實(shí)現(xiàn)豎直的連接線+組件遞歸 2.1基礎(chǔ)的(未截全,大致長(zhǎng)這樣) ?2.2帶有收縮功能的,可以展開和收縮并顯示數(shù)量 ? ? 4.項(xiàng)目源碼地址 GitHub - yft-code/flow: 流程圖 純css實(shí)現(xiàn)流程圖

    2024年02月16日
    瀏覽(27)
  • 前端流程圖框架11個(gè):開發(fā)組態(tài)圖、思維導(dǎo)圖、拓?fù)鋱D必備

    前端流程圖框架11個(gè):開發(fā)組態(tài)圖、思維導(dǎo)圖、拓?fù)鋱D必備

    在前端開發(fā)中,實(shí)現(xiàn)流程圖通常涉及以下幾個(gè)方面: HTML 結(jié)構(gòu) :使用 HTML 標(biāo)簽來定義流程圖的結(jié)構(gòu),如使用 div 元素表示節(jié)點(diǎn),使用 svg 元素表示連接線等。 CSS 樣式 :使用 CSS 樣式來定義流程圖的外觀,包括節(jié)點(diǎn)的樣式、連接線的樣式、文本的樣式等??梢允褂?CSS 屬性來設(shè)

    2024年04月15日
    瀏覽(57)
  • 前端Web實(shí)戰(zhàn):從零打造一個(gè)類Visio的流程圖拓?fù)鋱D繪圖工具

    前端Web實(shí)戰(zhàn):從零打造一個(gè)類Visio的流程圖拓?fù)鋱D繪圖工具

    大家好,本系列從Web前端實(shí)戰(zhàn)的角度,給大家分享介紹如何從零打造一個(gè)自己專屬的繪圖工具,實(shí)現(xiàn)流程圖、拓?fù)鋱D、腦圖等類Visio的繪圖工具。 免費(fèi)好用、 專屬自己的繪圖工具 前端項(xiàng)目實(shí)戰(zhàn)學(xué)習(xí) 如何從0搭建一個(gè)前端項(xiàng)目等基礎(chǔ)框架 項(xiàng)目設(shè)計(jì)思路及優(yōu)雅的架構(gòu)技巧 開源項(xiàng)

    2024年02月16日
    瀏覽(33)
  • 生成一篇博客,詳細(xì)講解springboot的單點(diǎn)登錄功能,有流程圖,有源碼demo

    SpringBoot是目前非常流行的一個(gè)Java開發(fā)框架,它以簡(jiǎn)潔的配置和快速的開發(fā)效率著稱。在實(shí)際應(yīng)用中,單點(diǎn)登錄是一個(gè)非常重要的功能,它可以讓用戶在多個(gè)應(yīng)用系統(tǒng)中使用同一個(gè)賬號(hào)登錄,提高用戶體驗(yàn)和安全性。本文將詳細(xì)講解如何在SpringBoot中實(shí)現(xiàn)單點(diǎn)登錄功能,并提供

    2024年02月08日
    瀏覽(16)
  • vscode流程圖插件使用

    vscode流程圖插件使用

    1.在vscode中點(diǎn)擊左下角設(shè)置然后選擇擴(kuò)展。 2.在擴(kuò)展中搜索Draw.io Integration,安裝上面第一個(gè)插件。 3.安裝插件后在工程中創(chuàng)建一個(gè)后綴為drawio的文件并且雙擊打開即可繪制流程圖

    2024年02月11日
    瀏覽(25)
  • vue使用jsplumb 流程圖

    vue使用jsplumb 流程圖

    安裝jsPlumb庫(kù):在Vue項(xiàng)目中使用npm或yarn安裝jsPlumb庫(kù)。 npm install jsplumb 創(chuàng)建一個(gè)Vue組件:創(chuàng)建一個(gè)Vue組件來容納jsPlumb的功能和呈現(xiàn)。 效果圖: ?初始化jsPlumb一定要在mounted函數(shù)里面,要執(zhí)行在dom渲染完成的時(shí)候 一定要設(shè)置綁定的容器,不然連線的容器外加入任何其他布局元素

    2024年02月12日
    瀏覽(23)
  • 流程圖軟件Visio的使用筆記

    流程圖軟件Visio的使用筆記

    一、概述 Microsoft Visio 是Office軟件系列中的負(fù)責(zé)繪制流程圖和示意圖的軟件,是一款便于IT和商務(wù)人員就復(fù)雜信息、系統(tǒng)和流程進(jìn)行可視化處理、分析和交流的軟件。 也是工作中常用的軟件之一,我們經(jīng)常用它來畫流程圖和電源樹等,下面就使用軟件做的一些筆記,希望對(duì)初

    2024年02月09日
    瀏覽(27)
  • Vue實(shí)現(xiàn)流程圖,借鑒vue-tree-color 實(shí)現(xiàn)流程框架技術(shù)

    Vue實(shí)現(xiàn)流程圖,借鑒vue-tree-color 實(shí)現(xiàn)流程框架技術(shù)

    實(shí)現(xiàn)組織架構(gòu)圖(vue-org-tree) 如果向使用原來的依賴可以使用這個(gè)人的,因?yàn)槲乙彩歉鶕?jù)這個(gè)博客大佬仿照Vue-org-tree實(shí)現(xiàn)的方案 對(duì)此有幾點(diǎn)不惑,問了大佬,大佬也沒有回復(fù)我 className 貌似不起作用,看了文章底部,她也意識(shí)到這個(gè)問題,但是沒有給出詳細(xì)的解決方案 node.js中

    2024年02月06日
    瀏覽(21)
  • vue 復(fù)雜的流程圖實(shí)現(xiàn)--antv/g6

    vue 復(fù)雜的流程圖實(shí)現(xiàn)--antv/g6

    可以先看下對(duì)應(yīng)的文檔:G6 Demos - AntV ?npm install --save @antv/g6 實(shí)現(xiàn)如圖: ?

    2024年02月08日
    瀏覽(92)
  • jsPlumb的學(xué)習(xí)使用(三):常規(guī)流程圖完成

    jsPlumb的學(xué)習(xí)使用(三):常規(guī)流程圖完成

    這篇文章就給大家展示個(gè)人的一個(gè)jsplumb成品,也是放在自己的項(xiàng)目之中.注釋我基本上也都寫好了,但是目前代碼還沒有進(jìn)行整理,還有很多的測(cè)試痕跡以及備注打印. 1.將節(jié)點(diǎn)拖拽到畫布,精準(zhǔn)放置畫布內(nèi) 2.畫布中的節(jié)點(diǎn)可以自己主動(dòng)去連線 3.畫布節(jié)點(diǎn)和連線點(diǎn)擊可以查看詳情,并

    2024年02月04日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包