首页 > 其他分享 >uniapp 选择城市 根据城市首字母分类排序

uniapp 选择城市 根据城市首字母分类排序

时间:2024-02-05 10:37:29浏览次数:25  
标签:city hotcity item 城市 height 首字母 margin width uniapp

 selectCity.vue

<template>
    <view class="select-city">
        <view class="search">
            <van-field class="select-input" input-align="left" :value="searchVal" placeholder="输入城市名或拼音查询" @change='onselectChange($event)'/>
            <image class="search-ico" src="../../static/icon.png" mode=""></image>
        </view>
        <scroll-view scroll-y="true" class="ynq-ScrollView" :scroll-into-view="LetterId">
            <view class="hotcity" id="ScrollTop">
                <view class="hotcity-title">
                    北京 <view class="hotcity-gps">GPS定位</view>
                </view>
                <view class="hotcity-cont">
                    <view class="hotcity-name">国内热门城市</view>
                    <view class="hotcity-menus">
                        <view class="hotcity-item" v-for="(item,index) in HotCity" :key='index' @tap="checkItem(item)">{{item}}</view>
                    </view>
                </view>
            </view>
            <view class="divider"></view>
            <view class="citycont" v-for="(item,index) in CityList" :key="index">
                <view class="city-letter" :id="item.idx">{{item.idx}}</view>
                <view class="city-item" @tap="checkItem(item_city.name)" v-for="(item_city,name_index) in item.cities" :key="name_index">{{item_city.name}}</view>
            </view>
        </scroll-view>
        
        <view class="city-letter-position">
            <view class="city-letter-rm" @tap="getLetter('ScrollTop')">热门</view>
            <view class="city-letter-ite" v-for="(item,index) in LatterName" :key="index" @tap="getLetter(item)"  :style="{'color': LetterId === item ? '#4662D9' : '#000' }">{{item}}</view>
        </view>
    </view>
</template>

<script>
import PinyinUtils from '@/common/pinyin/pingyinUtils.js'
import citys from '@/common/city.js'
export default{
    data(){
        return{
            searchVal:'',
            HotCity: ['北京', '深圳', '上海', '成都', '广州', '重庆'],
            LatterName: citys.data.hostCity,
            CityList: citys.data.cityList, //引用js数据
            LetterId: '',
        }
    },
    onl oad(){
        //let firs = PinyinUtils.chineseToPinYinFirst(this.citys)[0]
        //console.log( firs)
        console.log(citys,'cityList')
    },
    methods:{
        onselectChange(event){
            console.log(event.detail);
            this.searchVal = event.detail
        },
        checkItem(item){
            uni.$emit('checkCity',item)
            uni.navigateBack({
                delta: 1
            })
        },
        getLetter(name) {
            console.log(name,'0000')
            this.LetterId = name
        },
    }
}
</script>

<style scoped lang="scss">
.ynq-ScrollView {
    height: calc(100vh - 160rpx);
}

.select-city{
    .search {
        height: 80rpx;
        background-color: #e1e1e1;
        padding-top: 10rpx;
        margin: 0 20rpx;
        position: relative;
        .select-input{
            width: 86%;
            height: 65rpx;
            padding-left: 30rpx;
            margin: auto;
            overflow: hidden;
            background-color: #fff;
            border-radius: 38rpx;
            display: flex;
            align-items: center;
        }
        .search-ico{
            width: 35rpx;
            height: 35rpx;
            position: absolute;
            top: 26rpx;
            left: 54rpx;
        }
    }
    .hotcity{
        margin: 0 20rpx;
        .hotcity-title{
            height: 65rpx;
            line-height: 65rpx;
            font-size: 32rpx;
            font-weight: 600;
            display: flex;
            border-bottom: 1px solid #ccc;
            .hotcity-gps{
                font-size: 28rpx;
                color: #ccc;
                margin: 10rpx 0 0 12rpx;
            }
        }
        .hotcity-name{
            height: 65rpx;
            line-height: 65rpx;
            color: #ccc;
        }
        .hotcity-menus{
            width: 90%;
            display: flex;
            flex-wrap: wrap;
            justify-content: space-between;
            align-items: center;
            .hotcity-item{
                width: 30%;
                padding: 10rpx 0;
                margin-bottom: 20rpx;
                border: 1px solid #e1e1e1;
                display: flex;
                align-items: center;
                justify-content: center;
            }
        }
    }
    .divider{
        width: 100%;
        height: 24rpx;
        background-color: #e1e1e1;
    }
    .citycont{
        width: 88%;
        margin-left: 20rpx;
        .city-letter{
            height: 80rpx;
            line-height: 90rpx;
        }
        .city-item{
            height: 80rpx;
            line-height: 80rpx;
            border-bottom: 1px solid #e1e1e1;
        }
    }
    .city-letter-position{
        width: 62rpx;
        position: fixed;
        right: 20rpx;
        top: 180rpx;
        text-align: center;
        z-index: 123;
        .city-letter-rm{
            font-size: 24rpx;
        }
        .city-letter-ite{
            font-size: 24rpx;
            line-height: 1.5;
        }
    }
}
</style>
common文件下 新建 city.js 
json 源链接:https://shadow.elemecdn.com/lib/[email protected]/city_list.json

 

 


 

标签:city,hotcity,item,城市,height,首字母,margin,width,uniapp
From: https://www.cnblogs.com/anna001/p/18007477

相关文章

  • 问题:在“一带一路”建设中,要开展城市交流合作,欢迎沿线国家()之间互结友好城市。
    问题:在“一带一路”建设中,要开展城市交流合作,欢迎沿线国家()之间互结友好城市。A.相似城市B.重要城市C.重要县城D.各个城市参考答案如图所示......
  • 【前端期末大作业】Shine Moon城市餐厅设计与制作
    <body>  <!--Scroll-TopArea(Start)-->  <ahref="#home"class="scroll-top">    <iclass="fasfa-angle-up"></i>  </a>  <!--Scroll-TopArea(End)-->    <!-......
  • uniapp sqlite方法封装
    vardbName='xxx'//数据库名称vardbPath='_doc/xxx.db'//数据库地址,推荐以下划线为开头_doc/xxx.db//判断数据库是否打开constisOpen=(plus:any)=>{//数据库打开了就返回true,否则返回falsevaropen=plus.sqlite.isOpenDatabase({name:......
  • uniapp在H5中排除底部和顶部导航栏
    在app和小程序中,uniapp的100vh不会将底部和顶部导航栏的高度放进去,所以100vh就是整个中间内容的高度,但是在H5中100vh是把顶部和底部导航栏一起放进去的高度,所以为了要在顶部和顶部导航栏排除在H5应用中,需要在内容的高度里设置一下,减去顶部和底部的导航栏高度,为此在uniapp中使用了-......
  • [经验] 城市道路绿化如何有效实施
    城市道路绿化是指通过在城市道路中种植绿化植物,创建绿色空间,以达到美化城市环境、改善城市气候和生态环境等目的的活动。在城市道路绿化的实践中,还应注意绿化植物的品种选择、养护管理等问题,以确保城市道路绿化的效果和质量。一、城市道路绿化的优势城市道路绿化具有以下几个方面的......
  • AI智能助力EasyCVR城市综合交通管理系统一体化
    随着春节的临近,春运工作也将进入忙碌期。高速公路因为大批车辆的流动、恶劣天气和自然灾害,极易发生交通事故导致道路瘫痪,影响春运安全和畅通。为最大限度地保障春运期间的道路安全和畅通,避免或减少道路事故发生,推动高速公路春运工作的平稳运行,有效地保障人民群众的出行安全,急需制......
  • 颠覆传统楼宇管理,拥抱城市美好生活
    智慧楼宇是指通过智能化技术和设备,对楼宇的设施、环境和应用进行全面感知、连接和优化,实现楼宇的智能化、高效化和安全化的建筑。智慧楼宇具有全面感知、实时监控、智能控制、优化管理、节能环保等特点,可以为建筑提供更高效、更便捷、更安全、更舒适的环境和服务。一、管理痛点......
  • uniapp ArrayBuffer转16进度字符串 以及 十六进制转ASCII码
    1.ArrayBuffer转16进度字符串//ArrayBuffer转16进度字符串示例//ab2hex(buffer){//consthexArr=Array.prototype.map.call(//newUint8Array(buffer),//function(bit){//......
  • 2024年1-2月寒假读书会【大国大城--专题一:区域与城市】
    2024年1-2月寒假读书会【大国大城--专题一:区域与城市】       ......
  • 洞元科技揭秘未来城市发展的无限可能!
    随着《中国数字经济发展研究报告》白皮书的发布,数字经济逐渐出现在大众的视野中,打造具有国际竞争力的数字产业集群,成为未来发展的大势所趋。作为个人,我们需要不断的完善和学习新的技能和知识,以适应数字化发展带来的变化,例如:在线购物,远程办公,新型企业工作岗位需求等;作为企业,我们要制......