小程序php:省市区三级联动

2024-03-23 16:30

本文主要是介绍小程序php:省市区三级联动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 更多技术可进群交流,定期发技术福利或物品福利,欢迎想秀技术、学技术的朋友加入:

index.js


import { getCity } from '../../api/api.js';data: {region: ['省', '市', '区'],valueRegion: [0, 0, 0],id:0,//地址idcityId:0,district:[],multiArray:[],multiIndex: [0, 0, 0]}/*** 生命周期函数--监听页面加载*/onLoad: function (options) {this.getCityList();},getCityList:function(){let that = this;getCity().then(res=>{that.setData({ district:res.data});that.initialize();})},initialize:function(){let that = this, province = [], city = [], area = [];if (that.data.district.length) {let cityChildren = that.data.district[0].c || [];let areaChildren = cityChildren.length ? (cityChildren[0].c || []) : [];that.data.district.forEach(function (item) {province.push(item.n);});cityChildren.forEach(function (item) {city.push(item.n);});areaChildren.forEach(function (item) {area.push(item.n);});that.setData({multiArray: [province, city, area],});}},bindRegionChange: function (e) {let multiIndex = this.data.multiIndex, province = this.data.district[multiIndex[0]] || { c: [] }, city = province.c[multiIndex[1]] || { v: 0 }, multiArray = this.data.multiArray, value = e.detail.value;console.log(value);console.log(province);this.setData({region: [multiArray[0][value[0]], multiArray[1][value[1]], multiArray[2][value[2]]],cityId: city.v,valueRegion: [0,0,0]});this.initialize();},bindMultiPickerColumnChange:function(e){let that = this, column = e.detail.column, value = e.detail.value, currentCity = this.data.district[value] || { c: [] }, multiArray = that.data.multiArray, multiIndex = that.data.multiIndex;multiIndex[column] = value;switch (column){case 0:let areaList = currentCity.c[0] || { c: [] };multiArray[1] = currentCity.c.map((item)=>{return item.n;});multiArray[2] = areaList.c.map((item)=>{return item.n;});break;case 1:let cityList = that.data.district[multiIndex[0]].c[multiIndex[1]].c || [];multiArray[2] = cityList.map((item)=>{return item.n;});break;case 2:break;}this.setData({ multiArray: multiArray, multiIndex: multiIndex});}

api.js


export function getCity() {return request.get('service/xcx/city_list', { }, { noAuth: true });
}

对应php代码【tp6】

/*** 获取省市区*/public function city_list(){$list = SystemCity::with('children')->field(['city_id', 'name', 'id', 'parent_id'])->where('parent_id', 0)->order('id asc')->select()->toArray();$data = [];foreach ($list as &$item) {$value = ['v' => $item['city_id'], 'n' => $item['name']];if ($item['children']) {foreach ($item['children'] as $key => &$child) {$value['c'][$key] = ['v' => $child['city_id'], 'n' => $child['name']];unset($child['id'], $child['area_code'], $child['merger_name'], $child['is_show'], $child['level'], $child['lng'], $child['lat'], $child['lat']);if (SystemCity::where('parent_id', $child['city_id'])->count()) {$child['children'] = SystemCity::where('parent_id', $child['city_id'])->field(['city_id', 'name', 'id', 'parent_id'])->select()->toArray();foreach ($child['children'] as $kk => $vv) {$value['c'][$key]['c'][$kk] = ['v' => $vv['city_id'], 'n' => $vv['name']];}}}}$data[] = $value;}return json_encode($data);}

对应php模型

<?phpnamespace app\common\model;use app\common\constants\MenuConstant;
use app\common\model\TimeModel;/*** 菜单  model* Class SystemMenus* @package app\admin\model\system*/
class SystemCity extends TimeModel
{/*** 数据表主键* @var string*/protected $pk = 'id';/*** 模型名称* @var string*/protected $name = 'system_city';/*** 获取子集分类查询条件* @return \think\model\relation\HasMany*/public function children(){return $this->hasMany(self::class, 'parent_id', 'city_id')->order('id ASC');}
}

 index.wxml

<form bindsubmit="formSubmit" report-submit='true'>
<view class='addAddress'><view class='list'><view class='item acea-row row-between-wrapper'><view class='name'>姓名</view><input type='text' placeholder='请输入姓名' name='real_name' value="{{userAddress.real_name}}" placeholder-class='placeholder'></input></view><view class='item acea-row row-between-wrapper'><view class='name'>联系电话</view><input type='text' placeholder='请输入联系电话' name="phone" value='{{userAddress.phone}}' placeholder-class='placeholder'></input></view><view class='item acea-row row-between-wrapper'><view class='name'>所在地区</view><picker mode="multiSelector" bindchange="bindRegionChange" bindcolumnchange="bindMultiPickerColumnChange" value="{{valueRegion}}" custom-item="{{customItem}}" range="{{multiArray}}"><view class='acea-row row-between-wrapper'><view class="picker">{{region[0]}},{{region[1]}},{{region[2]}}</view><view class='iconfont icon-dizhi font-color'></view></view></picker></view><view class='item acea-row row-between-wrapper'><view class='name'>详细地址</view><input type='text' placeholder='请填写具体地址' name='detail' placeholder-class='placeholder' value='{{userAddress.detail}}'></input></view></view><button class='keepBnt bg-color' formType="submit">立即保存</button>
</view>
</form>

index.wxss

/* pages/user_address/index.wxss */
.addAddress .list{background-color:#fff;}
.addAddress .list .item{padding:0 30rpx;height:90rpx;border-top:1rpx solid #eee;}
.addAddress .list .item .name{width:195rpx;font-size:30rpx;color:#333;}
.addAddress .list .item input{width:475rpx;font-size:30rpx;}
.addAddress .list .item .placeholder{color:#ccc;}
.addAddress .list .item picker{width:475rpx;}
.addAddress .list .item picker .picker{width:410rpx;font-size:30rpx;}
.addAddress .list .item picker .iconfont{font-size:43rpx;}
.addAddress .default{padding:0 30rpx;height:90rpx;background-color:#fff;margin-top:23rpx;}
.addAddress .default checkbox{margin-right:15rpx;}
.addAddress .keepBnt{width:690rpx;height:86rpx;border-radius:50rpx;text-align:center;line-height:86rpx;margin:50rpx auto;font-size:32rpx;color:#fff;}
.bg-color {background-color: #395f64!important;
}

最后是mysql代码

https://download.csdn.net/download/TiaoZhanJi_Xian/20087538

这篇关于小程序php:省市区三级联动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/838901

相关文章

PHP执行php.exe -v命令报错的解决方案

《PHP执行php.exe-v命令报错的解决方案》:本文主要介绍PHP执行php.exe-v命令报错的解决方案,文中通过图文讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录执行phpandroid.exe -v命令报错解决方案执行php.exe -v命令报错-PHP War

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

这些心智程序你安装了吗?

原文题目:《为什么聪明人也会做蠢事(四)》 心智程序 大脑有两个特征导致人类不够理性,一个是处理信息方面的缺陷,一个是心智程序出了问题。前者可以称为“认知吝啬鬼”,前几篇文章已经讨论了。本期主要讲心智程序这个方面。 心智程序这一概念由哈佛大学认知科学家大卫•帕金斯提出,指个体可以从记忆中提取出的规则、知识、程序和策略,以辅助我们决策判断和解决问题。如果把人脑比喻成计算机,那心智程序就是人脑的

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

基于SpringBoot的宠物服务系统+uniapp小程序+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例 3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例 4.基于SSM的高校实验室管理系统+LW参考示例 5.基于SpringBoot的二手数码回收系统+原生微信小程序+LW参考示例 6.基于SSM的民宿预订管理系统+LW参考示例 7.基于

Spring Roo 实站( 一 )部署安装 第一个示例程序

转自:http://blog.csdn.net/jun55xiu/article/details/9380213 一:安装 注:可以参与官网spring-roo: static.springsource.org/spring-roo/reference/html/intro.html#intro-exploring-sampleROO_OPTS http://stati

PHP原理之内存管理中难懂的几个点

PHP的内存管理, 分为俩大部分, 第一部分是PHP自身的内存管理, 这部分主要的内容就是引用计数, 写时复制, 等等面向应用的层面的管理. 而第二部分就是今天我要介绍的, zend_alloc中描写的关于PHP自身的内存管理, 包括它是如何管理可用内存, 如何分配内存等. 另外, 为什么要写这个呢, 因为之前并没有任何资料来介绍PHP内存管理中使用的策略, 数据结构, 或者算法. 而在我们