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

Vue+element-ui的el-cascader實(shí)現(xiàn)動(dòng)態(tài)添加刪除級(jí)聯(lián)地點(diǎn)輸入框

這篇具有很好參考價(jià)值的文章主要介紹了Vue+element-ui的el-cascader實(shí)現(xiàn)動(dòng)態(tài)添加刪除級(jí)聯(lián)地點(diǎn)輸入框。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Vue+element-ui的el-cascader實(shí)現(xiàn)動(dòng)態(tài)添加/刪除級(jí)聯(lián)地點(diǎn)輸入框

1. 需求

  • 實(shí)現(xiàn)省市區(qū)三級(jí)地點(diǎn)級(jí)聯(lián)選擇,可聯(lián)想;
  • 包括始發(fā)地點(diǎn)、途徑地點(diǎn)、終止地點(diǎn),始發(fā)地點(diǎn)、終止地點(diǎn)均為一個(gè),途徑地點(diǎn)可以沒(méi)有也可以是多個(gè);
  • 用戶可以動(dòng)態(tài)添加/刪除途徑地點(diǎn)。

2. 場(chǎng)景說(shuō)明

  • 使用級(jí)聯(lián)選擇器Cascader需要的樹(shù)形數(shù)據(jù),前端請(qǐng)求到后端獲取省市區(qū)數(shù)據(jù)并處理為elementui官網(wǎng)示例的樹(shù)形數(shù)據(jù)格式,如下所示,為節(jié)省篇幅樹(shù)形數(shù)據(jù)示例只展示部分;文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-443170.html

    [
        {
            children: [
                {
                    children: [
                        {
                            label: "東城區(qū)"
                            value: "110101"
                        },
                        {
                            label: "西城區(qū)"
                            value: "110102"
                        },
                        ...
                    ]
                    label: "北京市"
                    value: "110100"
                },
                ...
            ]
            label: "北京市"
            value: "110000"
        },
        ...
    ]
    

3. 實(shí)現(xiàn)代碼

3.1 表單結(jié)構(gòu)

  <el-form :model="form" ref="form" label-width="110px">
    <el-form-item label="起始地點(diǎn):" prop="startPoint">
      <el-cascader
        placeholder="請(qǐng)選擇地點(diǎn)"
        :options="districtList"
        filterable
        clearable
        v-model="form.startPoint"
        @change="(ele) => {handleChange(ele,'startPoint')}"
        ref="distCascader">
      </el-cascader>
      <el-button
        style="margin-left:10px;"
        type="primary"
        size="small"
        @click="addWayPoint()"
      >添加途經(jīng)地點(diǎn)</el-button>
    </el-form-item>


    <template v-if="form.wayPointsArr.length > 0">
      <el-row
        v-for="(item, index) in form.wayPointsArr"
        :key="item.key"
      >
        <el-form-item :label="'途徑地點(diǎn)' + (index+1) +':'" :prop="'' +index">
          <el-cascader
            placeholder="請(qǐng)選擇地點(diǎn)"
            :options="districtList"
            filterable
            clearable
            v-model="item.WAYPOINT"
            @change="(ele) => {handleChange(ele,item.key)}"
            ref="distCascader">
          </el-cascader>
          <el-button
            style="margin-left:10px;"
            type="danger"
            size="small"
            @click="removeWayPoint(index)"
          >刪除</el-button>
        </el-form-item>
      </el-row>
    </template>

    <el-form-item label="終止地點(diǎn):" prop="endPoint">
      <el-cascader
        placeholder="請(qǐng)選擇地點(diǎn)"
        :options="districtList"
        filterable
        clearable
        v-model="form.endPoint"
        @change="(ele) => {handleChange(ele,'endPoint')}"
        ref="distCascader">
      </el-cascader>
    </el-form-item>
  </el-form>

  <el-row type="flex" justify="center" style="margin-top: 20px">
    <el-button type="primary" @click="submit()">提交</el-button>

    <el-button @click="clear()">清空</el-button>
  </el-row>

3.2 script結(jié)構(gòu)

<script>
    data() {
        return {
          form: {
            startPoint:"", //起始地點(diǎn)
            wayPointsArr:[], //途徑地點(diǎn),有多個(gè),因此用數(shù)組
            endPoint:"", //終止地點(diǎn)
          },
          districtList:[],//省市區(qū)數(shù)據(jù),請(qǐng)求后端獲取并組裝成elementui Cascader需要的樹(shù)形數(shù)據(jù)
          districtFullNameList:{}, //用來(lái)存儲(chǔ)選擇地點(diǎn)的名稱
          districtLnglatList:{} //用來(lái)存儲(chǔ)選擇地點(diǎn)的經(jīng)緯度
        };
      },
    methods: {
        //處理地點(diǎn)級(jí)聯(lián)選擇事件
        async handleChange(value,key) {
        //這里根據(jù)vlaue調(diào)用后端接口獲取label
          if(value.length > 0) {
            let params = {
              tableName:"PROVINCE",
              page:1,
              where:"PROVINCE_ID,eq,'" + value[0] +"'",
            };
            await getTableData(params).then((res) => {
              this.districtFullNameList[key] = res.data.data[0].PROVINCE_NAME;
            });
            params.tableName = "CITY";
            params.where = "CITY_ID,eq,'" + value[1] +"'";
            await getTableData(params).then((res) => {
              this.districtFullNameList[key] += res.data.data[0].CITY_NAME;
            });
            params.tableName = "DISTRICT";
            params.where = "DISTRICT_ID,eq,'" + value[2] +"'";
            await getTableData(params).then((res) => {
              this.districtFullNameList[key] += res.data.data[0].DISTRICT_NAME;
              this.districtLnglatList[key] = res.data.data[0].LNG + "," + res.data.data[0].LAT;
            });
          }
        },
        // 動(dòng)態(tài)添加一個(gè)機(jī)動(dòng)任務(wù)途徑地點(diǎn)
        addWayPoint() {
          this.form.wayPointsArr.push({WAYPOINT:"", key:Date.now()})
        },
        // 刪除一個(gè)機(jī)動(dòng)任務(wù)途徑地點(diǎn)
        removeWayPoint(index) {
          this.form.wayPointsArr.splice(index, 1);
        },
        //提交
        submit(){
          let routesArray = [];
          routesArray.push(this.districtFullNameList['startPoint']);
          Object.keys(this.districtFullNameList).forEach(key => { //遍歷鍵值對(duì)對(duì)象
            if(key !== 'startPoint' && key !== 'endPoint') {
              routesArray.push(this.districtFullNameList[key]);
            }
          });
          routesArray.push(this.districtFullNameList['endPoint']);
          console.log(routesArray.join('-'));
        },
        //清空
        clear() {
          this.$refs['form'].resetFields();
          this.form.wayPointsArr = []
        }      
    }
</script>

3.3 需要注意的點(diǎn)

  • 使用elementui的級(jí)聯(lián)選擇器Cascader來(lái)實(shí)現(xiàn)地點(diǎn)級(jí)聯(lián)輸入框,通過(guò)屬性filterable設(shè)置是否可搜索;
  • 因?yàn)槲倚枰峤槐韱螘r(shí)給后端傳入用"-"分割的路線字符串,為了方便,在動(dòng)態(tài)添加途徑地點(diǎn)輸入框時(shí)push了時(shí)間戳作為key,這樣輸入地點(diǎn)和修改地點(diǎn)時(shí)不會(huì)亂,并且Object中默認(rèn)以key順序排序的,所以提交時(shí)只需要遍歷存儲(chǔ)地點(diǎn)數(shù)據(jù)的Object即可;
  • Cascader選擇觸發(fā)后,獲得的是地點(diǎn)樹(shù)狀數(shù)據(jù)districtList中的value數(shù)組,但我們需要的是label,這里可以嘗試使用方法getCheckedNodes()[0].pathLabels獲取,但我這里還是調(diào)用后端接口根據(jù)value值查詢的。
  • 如果需要回顯,根據(jù)value數(shù)組回顯地點(diǎn)。

到了這里,關(guān)于Vue+element-ui的el-cascader實(shí)現(xiàn)動(dòng)態(tài)添加刪除級(jí)聯(lián)地點(diǎn)輸入框的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(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)文章

  • element ui 層級(jí)選擇器el-cascader只能選最后一級(jí)多選

    element ui 層級(jí)選擇器el-cascader只能選最后一級(jí)多選

    在element ui 中el-cascader多選: 每個(gè)層級(jí)都可以選擇,但并不是我需要的,我需要多選只能選最后一級(jí),在網(wǎng)上找了很久都復(fù)雜的,最終自己選擇用css樣式對(duì)checkbox進(jìn)行隱藏。 實(shí)現(xiàn)方法: 在css 中加入 關(guān)鍵點(diǎn)在于利用屬性選擇器,遇到屬性是 aria-haspopup (表示點(diǎn)擊的時(shí)候是否會(huì)

    2024年02月11日
    瀏覽(19)
  • Element UI 中使用el-cascader組件,可以選擇任意一級(jí)的內(nèi)容并取消單選框

    當(dāng)加入checkStrictly后就會(huì)出現(xiàn)單選框的問(wèn)題,修改樣式即可;這里使用的less語(yǔ)法,需要有l(wèi)ess依賴,加入樣式后如果沒(méi)有生效,可以放在App.vue中的樣式下

    2024年02月04日
    瀏覽(31)
  • Vue+Element-UI el-form表單動(dòng)態(tài)檢驗(yàn)

    Vue+Element-UI el-form表單動(dòng)態(tài)檢驗(yàn)

    業(yè)務(wù)需求: 表單el-form 有一表單項(xiàng):發(fā)布時(shí)間 ,有5個(gè)選項(xiàng):今天、24小時(shí)、近3天、近7天和自定義時(shí)間,其中當(dāng)選擇自定義時(shí)間時(shí),后面跟著的日期時(shí)間選擇器是必填的,選中其他選項(xiàng)時(shí)則不需要。這就需要做到表單的動(dòng)態(tài)檢驗(yàn)。 最開(kāi)始實(shí)現(xiàn)方式是在當(dāng)前表單項(xiàng)中設(shè)置規(guī)則

    2024年02月11日
    瀏覽(28)
  • element 的 el-cascader 組件獲取級(jí)聯(lián)選中l(wèi)abel和value值

    element 的 el-cascader 組件獲取級(jí)聯(lián)選中l(wèi)abel和value值

    1.? 多選時(shí)? 獲取?cascader 級(jí)聯(lián)選擇器的 label 值 ? ? ? ? 需要給 el-cascader 加 ref 用以獲取值 ?獲取后的樣式 2. 單選時(shí)獲取?cascader 級(jí)聯(lián)選擇器的值? ? ?

    2024年02月12日
    瀏覽(25)
  • Vue中使用element-ui el-dialog彈窗最大化還原,拖拽,動(dòng)態(tài)改變大小

    Vue中使用element-ui el-dialog彈窗最大化還原,拖拽,動(dòng)態(tài)改變大小

    創(chuàng)建對(duì)應(yīng)的js文件 ??先在指定穩(wěn)定文件創(chuàng)建js文件,如src下創(chuàng)建diaLog.js文件,部分會(huì)提示紅色爆紅,可以不予理會(huì),可以根據(jù)需求修改,如:彈框可拉伸最小寬高。 ? 2. 在main.js的引用 ??同時(shí)為了防止沖突,需要關(guān)閉closeOnClickModal(彈窗默認(rèn)點(diǎn)擊遮罩改為不關(guān)閉),并添加標(biāo)簽

    2024年02月11日
    瀏覽(29)
  • Vue+Element-UI 中 el-table 動(dòng)態(tài)合并單元格 :span-method 方法

    Vue+Element-UI 中 el-table 動(dòng)態(tài)合并單元格 :span-method 方法

    記錄一下工作時(shí)遇到的 el-table 合并單元格的需求,超詳細(xì)?? el-table官方提供了合并單元格的方法與返回格式 如下: 根據(jù)敘述有了如下思路: 因?yàn)楹蠖朔祷氐臄?shù)據(jù)非統(tǒng)一, 可能不是按照類別排好的??, 所以官網(wǎng)的例子滿足不了所有的需求所以我們通過(guò)遍歷table的數(shù)據(jù)比較前后兩

    2024年02月12日
    瀏覽(21)
  • 【vue】element-ui、el-table使用V-for循環(huán)動(dòng)態(tài)添加表頭和數(shù)據(jù)

    【vue】element-ui、el-table使用V-for循環(huán)動(dòng)態(tài)添加表頭和數(shù)據(jù)

    參考鏈接 https://blog.csdn.net/xz1589155358/article/details/126597271

    2024年02月11日
    瀏覽(28)
  • Element-ui(Cascader 級(jí)聯(lián)選擇器)實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)

    Element-ui(Cascader 級(jí)聯(lián)選擇器)實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)

    市區(qū)表: 縣區(qū)表: 省級(jí)表: Controller層: service層 serviceimpl實(shí)現(xiàn) mapper層實(shí)現(xiàn) 映射省下面所有的市 映射市下面所有的縣 查詢所有的區(qū)縣 對(duì)應(yīng)的省JavaBean 對(duì)應(yīng)市JavaBean 對(duì)應(yīng)的縣區(qū)JavaBean 級(jí)聯(lián)選擇器 方法: 注意:級(jí)聯(lián)選擇器需要保持和后端映射保持一致回顯數(shù)據(jù) element-ui官網(wǎng)級(jí)

    2024年02月11日
    瀏覽(28)
  • 【vue2】element-ui el-transfer擴(kuò)展 實(shí)現(xiàn)多列效果一對(duì)多

    【vue2】element-ui el-transfer擴(kuò)展 實(shí)現(xiàn)多列效果一對(duì)多

    vue2 el-transfer 穿梭框?qū)崿F(xiàn)多類別 template 復(fù)制Transfer源碼中的template,并拓展我們需要的列表2和button script 這里重寫了Transfer的addToLeft方法,按著element-ui的邏輯寫出第二個(gè)列表的邏輯即可。源碼就不做解釋了,這個(gè)組件比較簡(jiǎn)單,感興趣的朋友可以去看看 style GitHub地址

    2024年02月08日
    瀏覽(28)
  • el-cascader 動(dòng)態(tài)加載選項(xiàng)、編輯時(shí)數(shù)據(jù)回顯問(wèn)題 、單選不加載下一級(jí)節(jié)點(diǎn)、點(diǎn)擊標(biāo)簽選中

    el-cascader 動(dòng)態(tài)加載選項(xiàng)、編輯時(shí)數(shù)據(jù)回顯問(wèn)題 、單選不加載下一級(jí)節(jié)點(diǎn)、點(diǎn)擊標(biāo)簽選中

    目錄 需求描述 1.實(shí)現(xiàn)動(dòng)態(tài)加載選項(xiàng) 2.數(shù)據(jù)回顯 3.組件BUG:再次編輯不再加載 4.點(diǎn)擊單選框選中節(jié)點(diǎn)時(shí),同時(shí)加載下一級(jí)選項(xiàng)(額外需求) 5.點(diǎn)擊label標(biāo)簽時(shí),能夠直接選中該節(jié)點(diǎn)(額外需求) 需求情景描述 前端使用el-cascader組件來(lái)實(shí)現(xiàn)一個(gè)層級(jí)選擇器,可以支持單選或多選節(jié)

    2024年02月07日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包