国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

vue+iview/elementUi實現(xiàn)城市多選

2019-11-19 11:56:02
字體:
供稿:網(wǎng)友

城市多選組件

最近收到了一個需求,管理系統(tǒng)需要上線一個活動,但是活動是根據(jù)地區(qū)上線的,最小范圍到市,于是有了下面這個組件

頁面展示如圖:




上代碼~~~

<template>  <div class="tm-mil-city">   <p class="tm-mil-city-title tm-mil-mb20">{{name}}</p>   <div class="tm-mil-district-box tm-mil-mb20">    <Select class="tm-mil-selsect" style='width:200px' v-model='province' placeholder='全部' @on-change='changeProvince'>     <Option v-for='item in provinceList' :value='item.id' :key='item.id'>{{ item.regionName }}</Option>    </Select>    <span class="tm-mil-selsect-all-btn tm-mil-ml20 tm-mil-colB" @click="chooseAllRegion">全選</span>    <div class="tm-mil-line-loading" v-if="province && !cityList.length"><img src="../assets/loading.gif" alt=""></div>    <div class="tm-mil-mb20" v-if="cityList.length">     <CheckboxGroup style="marginTop:10px;width:900px" v-model="checkCity">       <Checkbox v-for='item in cityList' :key='item.id' :label="item.regionCode">{{item.regionName}}</Checkbox>     </CheckboxGroup>     <Button v-show="cityList.length" size="small" style="marginTop:10px" @click="saveCheckCity">確定</Button>    </div>   </div>   <p class="tm-mil-city-title tm-mil-mb20">已選擇的地區(qū)</p>   <div class="tm-mil-line-loading" v-if="waiting"><img src="../assets/loading.gif" alt=""></div>   <div class="tm-mil-choose-district" v-else>    <div v-for="(item, idx) in allCheckCityShowList" :key="idx">     <span class="tm-mil-colB">{{provinceFilter(item.province)}}</span>     <span class="tm-mil-ml10" v-for="(obj, indx) in item.cityList" :key="indx" >{{obj}}</span>    </div>    <span v-if="!allCheckCityShowList.length">全部地區(qū)</span>   </div>  </div></template>

注: <Select></Select>/<CheckboxGroup></CheckboxGroup>都是iview的組件,詳情請看iview官網(wǎng),同理elementUi也有相同的組件

iview官網(wǎng)

elementUi官網(wǎng)

 data() {    return {      waiting: false, // loading      province: '', // 當(dāng)前的省      provinceList: [], // 省列表      Municipality: [{id: 2, name: '北京'}, {id: 3, name: '天津'}, {id: 10, name: '上海'}, {id: 23, name: '重慶'}, {id: 2, name: '北京'}], // 直轄市      cityList: [], // 城市列表      activityTime: [], // 活動時間      checkCity: [], // 當(dāng)前省所選的市列表 -- 展示      allCheckCityApi: [], // 所有的市列表 -- 接口      allCheckCitySave: { // 存儲所有選擇各省對應(yīng)的市列表 -- 存儲      // '10001': [{code:'10111', name:'北京'}]      },      allCheckCityShowList: [ // 存儲所有選擇的市列表 -- 展示      // { province: '10001', cityList: ['上海', 2, 3]}      ]    }  },

函數(shù):

 // 獲取省級數(shù)據(jù)  getOrigin() {    this.axios.get(`/users/open/region/topRegions`).then(res => {     if (res.status === 200) {      this.provinceList = res.data     }    })  }  // 返回省名稱  provinceFilter(id) {    return this.provinceList.filter(item => item.id === id)[0].regionName  }   // 選擇全部地區(qū)  chooseAllRegion() {    this.province = 0    this.cityList = []    this.checkCity = []    this.allCheckCityApi = []    this.allCheckCitySave = []    this.allCheckCityShowList = []  }  // 保存城市后存儲數(shù)據(jù) -- 接口  handleSaveCityList() {    let _arr = []    for (var key in this.allCheckCitySave) {      _arr = _arr.concat(this.allCheckCitySave[key])    }    this.allCheckCityApi = _arr  }
 // 更改省  changeProvince(parentId) {    if (!parentId) {      return    }    this.cityList = []     //獲取該省下的市列表    this.axios.get(`/users/open/region/${parentId}/subRegions`).then(res => {     if (res.status === 200) {      this.cityList = res.data     }    })    // 處理已經(jīng)選擇的市    let _checkCity = this.allCheckCitySave[parentId] || []     let _checkCityList = []    _checkCity.forEach(el => {      _checkCityList.push(el.regionCode)    })    this.checkCity = JSON.parse(JSON.stringify(_checkCityList))  }  // 保存所選的當(dāng)前市  saveCheckCity() {  // 處理選擇不同省,保存當(dāng)前省已選擇的投放城市    if (!this.checkCity.length) {      return    }    this.waiting = true    // 當(dāng)前城市的省code    let _province = JSON.parse(JSON.stringify(this.province))    // 當(dāng)前城市的省名稱    let _provinceName = this.Municipality.filter(el => el.id === _province)[0] && this.Municipality.filter(el => el.id === _province)[0].name || ''    // 已選擇城市(code name level)列表    let _arrCheckMsgList = []    // 當(dāng)前選擇的城市code    let _arrCheck = JSON.parse(JSON.stringify(this.checkCity))    _arrCheck.forEach(el => {      let _obj = this.cityList.filter(_el => _el.regionCode === el)[0]      // 區(qū)別市轄區(qū)      let _regionName = _provinceName + _obj.regionName      let _regionLevel = _obj.regionLevel      let obj = {regionCode: el, regionName: _regionName, regionLevel: _regionLevel, parentId: _province}      // let obj = {regionCode: el, regionName: _regionName, regionLevel: _regionLevel}      _arrCheckMsgList.push(obj)    })    // 存儲到當(dāng)前省對應(yīng)的已選擇的市列表 -- 存儲    this.$set(this.allCheckCitySave, _province, _arrCheckMsgList)    // 保存城市后存儲數(shù)據(jù) -- 接口    this.handleSaveCityList()    // 處理已選擇的投放地區(qū)數(shù)據(jù)展示    let _arrCheckMsg = []    // 處理展示列表-城市名稱 -- 直轄市(北京,上海等)選地區(qū)時要加上直轄市前綴,如 北京市轄區(qū)/北京縣    this.cityList.map(obj => {      if (_arrCheck.indexOf(obj.regionCode) > -1) {      _arrCheckMsg.push(_provinceName + obj.regionName)      }    })    let _msgObj = {      province: _province,      cityList: _arrCheckMsg      }    let _len = this.allCheckCityShowList.filter(item => item.province === _province).length || 0    // 新增 / 替換    if (!_len) {      this.allCheckCityShowList.push(_msgObj)      this.waiting = false    } else {      this.allCheckCityShowList.forEach((item, idx) => {      if (item.province === _province) {        this.$set(this.allCheckCityShowList, idx, _msgObj)        this.waiting = false        return      }      })    }  }

已上,具體的解釋都在注釋里面,有疑問的地方歡迎留言~

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 大同市| 海宁市| 剑川县| 淮阳县| 特克斯县| 山阴县| 无为县| 都昌县| 天长市| 山东省| 修文县| 辽源市| 弥渡县| 巩留县| 通许县| 九龙县| 乐东| 辛集市| 周宁县| 日照市| 商河县| 永川市| 山阳县| 汨罗市| 峡江县| 东海县| 微博| 丁青县| 无棣县| 行唐县| 大英县| 湖州市| 当涂县| 乃东县| 马公市| 凉城县| 越西县| 樟树市| 石河子市| 雅安市| 玉田县|