Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Hooke
/
jgdl
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
hookehuyr
2025-08-13 09:25:12 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
a134b32c2b52749f7165fd75761bb7bc1365e0b6
a134b32c
1 parent
166fd8b3
feat(collectionSettings): 根据地区编码获取地区文字显示
添加地区数据转换工具函数,将地区编码转换为对应的中文名称显示
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
76 additions
and
7 deletions
src/pages/collectionSettings/index.vue
src/pages/collectionSettings/index.vue
View file @
a134b32
...
...
@@ -271,6 +271,7 @@ import { useUserStore } from '@/stores/user'
// 导入地址选择组件
import AddressSelector from '@/components/AddressSelector.vue'
import { regionData } from 'element-china-area-data'
// 获取页面参数
const instance = Taro.getCurrentInstance()
...
...
@@ -440,6 +441,13 @@ const getUserInfo = async () => {
// 设置身份信息
if (userInfo.name && userInfo.idcard) {
// 根据code值获取地区文字
const areaText = getAreaTextFromCodes(
userInfo.idcard_province || '',
userInfo.idcard_city || '',
userInfo.idcard_district || ''
)
identityInfo.value = {
userName: userInfo.name,
idCard: userInfo.idcard,
...
...
@@ -448,9 +456,9 @@ const getUserInfo = async () => {
idcard_effect_begin: userInfo.idcard_effect_begin || '',
idcard_effect_end: userInfo.idcard_effect_end || '',
// 地址字段(用于显示的中文名称)
province:
userInfo.province_name || ''
,
city:
userInfo.city_name || ''
,
county:
userInfo.county_name || userInfo.district_name || ''
,
province:
areaText.province
,
city:
areaText.city
,
county:
areaText.county
,
// 身份证地址字段(真实字段名)
idcard_province: userInfo.idcard_province || '',
idcard_city: userInfo.idcard_city || '',
...
...
@@ -461,16 +469,17 @@ const getUserInfo = async () => {
// 同时更新地址选择器的数据,包含code值用于还原选中状态
if (userInfo.idcard_province && userInfo.idcard_city && userInfo.idcard_district) {
const detailAddr = userInfo.idcard_address || ''
addressData.value = {
province:
userInfo.province_name || ''
,
city:
userInfo.city_name || ''
,
county:
userInfo.county_name || userInfo.district_name || ''
,
province:
areaText.province
,
city:
areaText.city
,
county:
areaText.county
,
province_code: userInfo.idcard_province,
city_code: userInfo.idcard_city,
county_code: userInfo.idcard_district,
detail_address: detailAddr,
idcard_address: detailAddr,
full_address: `${
userInfo.province_name || ''}${userInfo.city_name || ''}${userInfo.county_name || userInfo.district_name || ''
} ${detailAddr}`.trim()
full_address: `${
areaText.province}${areaText.city}${areaText.county
} ${detailAddr}`.trim()
};
}
}
...
...
@@ -1141,6 +1150,66 @@ const addressData = ref({
})
/**
* 转换地区数据格式以适配NutUI Cascader组件
* @param {Array} data - element-china-area-data的原始数据
* @returns {Array} - 转换后的数据格式
*/
const transformAreaData = (data) => {
return data.map(item => ({
value: item.value,
text: item.label,
children: item.children ? transformAreaData(item.children) : undefined
}))
}
// 转换后的地区数据
const areaData = ref(transformAreaData(regionData))
/**
* 根据编码查找节点
* @param {Array} nodes - 节点数组
* @param {String} code - 编码
* @returns {Object|null} - 找到的节点或null
*/
const findNodeByCode = (nodes, code) => {
return nodes.find(node => node.value === code) || null
}
/**
* 根据省市县code值获取对应的文字
* @param {String} provinceCode - 省份代码
* @param {String} cityCode - 城市代码
* @param {String} countyCode - 县区代码
* @returns {Object} - 包含省市县文字的对象
*/
const getAreaTextFromCodes = (provinceCode, cityCode, countyCode) => {
const result = { province: '', city: '', county: '' }
if (provinceCode) {
const provinceNode = findNodeByCode(areaData.value, provinceCode)
if (provinceNode) {
result.province = provinceNode.text
if (cityCode && provinceNode.children) {
const cityNode = findNodeByCode(provinceNode.children, cityCode)
if (cityNode) {
result.city = cityNode.text
if (countyCode && cityNode.children) {
const countyNode = findNodeByCode(cityNode.children, countyCode)
if (countyNode) {
result.county = countyNode.text
}
}
}
}
}
}
return result
}
/**
* 地址变化处理回调
* @param {Object} address - 地址数据对象
*/
...
...
Please
register
or
login
to post a comment