uni-data-picker实现省市区三级联动
<uni-list-item showArrow>
<template v-slot:body>
<text class="detail-text">选择地区</text>
<uni-data-picker :localdata="region" data-pcode="this.pcode" placeholder="请选择地区" popup-title="请选择地区" @nodeclick="regiononnodeclick"></uni-data-picker>
</template>
</uni-list-item>
<script>
export default {
data() {
return {
pcode: 0,
single: '',
region: []
}
},
onLoad() {
this.getInfoList();
},
methods: {
onchange(e) {
this.single = e
console.log(e)
},
getInfoList() {}
},
components: {
tabbar
}
}
</script>
<style lang="less">
.detail-text {
display: flex;
align-items: center;
width: 150rpx;
}
.uni-list {
& input {
width: 80%;
}
}
.upload-imgs {
padding: 15rpx;
}
button {
width: 500rpx;
margin-top: 50rpx;
border-radius: 3rpx;
}
.uni-goods-nav {
width: 100%;
position: fixed;
bottom: 0;
}
</style>
@TableName("sys_regioncode")
public class SysRegioncodeEntity implements Serializable {
private static final long serialVersionUID = 1L;
private String regioncode;
private String regionname;
private String pcode;
private String delFlag;
@TableId
private Integer id;
@TableField(exist = false)
private List<SysRegioncodeEntity> children = new ArrayList<SysRegioncodeEntity>();
public void setRegioncode(String regioncode) {
this.regioncode = regioncode;
}
public String getRegioncode() {
return regioncode;
}
public void setRegionname(String regionname) {
this.regionname = regionname;
}
public String getRegionname() {
return regionname;
}
public void setPcode(String pcode) {
this.pcode = pcode;
}
public String getPcode() {
return pcode;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getDelFlag() {
return delFlag;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getId() {
return id;
}
public List<SysRegioncodeEntity> getChildren() {
return children;
}
public void setChildren(List<SysRegioncodeEntity> children) {
this.children = children;
}
public class RegionVo {
private String text;
private String value;
private List<RegionVo> children = new ArrayList<>();
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public List<RegionVo> getChildren() {
return children;
}
public void setChildren(List<RegionVo> children) {
this.children = children;
}
}
@PostMapping(value = "/getArea")
private AjaxResult getArea() {
List<SysRegioncodeEntity> list = new ArrayList<SysRegioncodeEntity>();
try {
list = sysRegioncodeService.getAreas();
} catch (Exception e) {
e.printStackTrace();
}
List<RegionVo> rootList = new ArrayList<>();
for(SysRegioncodeEntity entity : list){
if(entity.getPcode().equals("0")){
RegionVo vo = new RegionVo();
vo.setText(entity.getRegionname());
vo.setValue(entity.getRegioncode());
rootList.add(vo);
}
}
for(RegionVo entity : rootList){
List<RegionVo> cityList = new ArrayList<>();
for(SysRegioncodeEntity cityEntity : list){
if(cityEntity.getPcode().equals(entity.getValue())){
RegionVo vo = new RegionVo();
vo.setText(cityEntity.getRegionname());
vo.setValue(cityEntity.getRegioncode());
List<RegionVo> qxList = new ArrayList<>();
for(SysRegioncodeEntity qxEntity : list){
if(qxEntity.getPcode().equals(vo.getValue())){
RegionVo qxVO = new RegionVo();
qxVO.setText(qxEntity.getRegionname());
qxVO.setValue(qxEntity.getRegioncode());
qxList.add(qxVO);
}
}
vo.setChildren(qxList);
cityList.add(vo);
}
}
entity.setChildren(cityList);
}
return AjaxResult.success(rootList);
}
public interface SysRegioncodeService extends IService<SysRegioncodeEntity> {
List<SysRegioncodeEntity> getAreas();
}
@Autowired
private SysRegioncodeMapper sysRegioncodeMapper;
@Override
public List<SysRegioncodeEntity> getAreas() {
return sysRegioncodeMapper.selectList(null);
}
这是最简单的实现方式,还有其它方法改进,这种不是很可取,简单的就是这样写,小白初次使用,有问题欢迎指出