Commit 09595810f07a908df63814b39e3882db0c26adc6
Merge branch 'ww' into 'main'
perf: 企业信息所在城市接口新增查询参数 See merge request yunteng/thingskit-front!511
Showing
1 changed file
with
75 additions
and
114 deletions
| @@ -2,6 +2,13 @@ import type { FormSchema } from '/@/components/Form/index'; | @@ -2,6 +2,13 @@ import type { FormSchema } from '/@/components/Form/index'; | ||
| 2 | import { getAreaList } from '/@/api/oem/index'; | 2 | import { getAreaList } from '/@/api/oem/index'; |
| 3 | import { emailRule, phoneRule } from '/@/utils/rules'; | 3 | import { emailRule, phoneRule } from '/@/utils/rules'; |
| 4 | 4 | ||
| 5 | +export enum Level { | ||
| 6 | + PROVINCE = 'PROVINCE', | ||
| 7 | + CITY = 'CITY', | ||
| 8 | + COUNTY = 'COUNTY', | ||
| 9 | + TOWN = 'TOWN', | ||
| 10 | +} | ||
| 11 | + | ||
| 5 | export const schemas: FormSchema[] = [ | 12 | export const schemas: FormSchema[] = [ |
| 6 | { | 13 | { |
| 7 | field: 'name', | 14 | field: 'name', |
| @@ -201,150 +208,104 @@ export const provSchemas: FormSchema[] = [ | @@ -201,150 +208,104 @@ export const provSchemas: FormSchema[] = [ | ||
| 201 | colProps: { | 208 | colProps: { |
| 202 | span: 6, | 209 | span: 6, |
| 203 | }, | 210 | }, |
| 204 | - componentProps({ formModel, formActionType }) { | ||
| 205 | - const { updateSchema } = formActionType; | 211 | + componentProps({ formActionType }) { |
| 212 | + const { setFieldsValue } = formActionType; | ||
| 206 | return { | 213 | return { |
| 207 | api: getAreaList, | 214 | api: getAreaList, |
| 208 | labelField: 'name', | 215 | labelField: 'name', |
| 209 | valueField: 'code', | 216 | valueField: 'code', |
| 210 | placeholder: '省份', | 217 | placeholder: '省份', |
| 211 | - params: { parentId: 1 }, | ||
| 212 | - async onChange(value) { | ||
| 213 | - if (value === undefined) { | ||
| 214 | - formModel.nameCity = undefined; // reset city value | ||
| 215 | - formModel.nameCoun = undefined; | ||
| 216 | - formModel.nameTown = undefined; | ||
| 217 | - updateSchema([ | ||
| 218 | - { | ||
| 219 | - field: 'nameCity', | ||
| 220 | - componentProps: { | ||
| 221 | - options: [], | ||
| 222 | - placeholder: '城市', | ||
| 223 | - }, | ||
| 224 | - }, | ||
| 225 | - { | ||
| 226 | - field: 'nameCoun', | ||
| 227 | - componentProps: { | ||
| 228 | - options: [], | ||
| 229 | - placeholder: '区/县', | ||
| 230 | - }, | ||
| 231 | - }, | ||
| 232 | - { | ||
| 233 | - field: 'nameTown', | ||
| 234 | - componentProps: { | ||
| 235 | - options: [], | ||
| 236 | - placeholder: '城镇/街道', | ||
| 237 | - }, | ||
| 238 | - }, | ||
| 239 | - ]); | ||
| 240 | - } else { | ||
| 241 | - const nameCity = await getAreaList({ parentId: value }); | ||
| 242 | - nameCity.forEach((item) => { | ||
| 243 | - item.label = item.name; | ||
| 244 | - item.value = item.code; | ||
| 245 | - }); | ||
| 246 | - formModel.nameCity = undefined; // reset city value | ||
| 247 | - formModel.nameCoun = undefined; | ||
| 248 | - formModel.nameTown = undefined; | ||
| 249 | - updateSchema({ | ||
| 250 | - field: 'nameCity', | ||
| 251 | - componentProps: { | ||
| 252 | - options: nameCity, | ||
| 253 | - placeholder: '城市', | ||
| 254 | - async onChange(value) { | ||
| 255 | - if (value === undefined) { | ||
| 256 | - formModel.nameCoun = undefined; // reset city value | ||
| 257 | - formModel.nameTown = undefined; | ||
| 258 | - updateSchema([ | ||
| 259 | - { | ||
| 260 | - field: 'nameCoun', | ||
| 261 | - componentProps: { | ||
| 262 | - options: [], | ||
| 263 | - }, | ||
| 264 | - }, | ||
| 265 | - { | ||
| 266 | - field: 'nameTown', | ||
| 267 | - componentProps: { | ||
| 268 | - options: [], | ||
| 269 | - }, | ||
| 270 | - }, | ||
| 271 | - ]); | ||
| 272 | - } else { | ||
| 273 | - // 获取区数据 | ||
| 274 | - const nameCoun = await getAreaList({ parentId: value }); | ||
| 275 | - nameCoun.forEach((item) => { | ||
| 276 | - item.label = item.name; | ||
| 277 | - item.value = item.code; | ||
| 278 | - }); | ||
| 279 | - updateSchema({ | ||
| 280 | - field: 'nameCoun', | ||
| 281 | - componentProps: { | ||
| 282 | - // 请选择区 | ||
| 283 | - options: nameCoun, | ||
| 284 | - async onChange(value) { | ||
| 285 | - if (value === undefined) { | ||
| 286 | - formModel.nameTown = undefined; | ||
| 287 | - updateSchema({ | ||
| 288 | - field: 'nameTown', | ||
| 289 | - componentProps: { | ||
| 290 | - placeholder: '城镇/街道', | ||
| 291 | - options: [], | ||
| 292 | - }, | ||
| 293 | - }); | ||
| 294 | - } else { | ||
| 295 | - const nameTown = await getAreaList({ parentId: value }); | ||
| 296 | - nameTown.forEach((item) => { | ||
| 297 | - item.label = item.name; | ||
| 298 | - item.value = item.code; | ||
| 299 | - }); | ||
| 300 | - updateSchema({ | ||
| 301 | - field: 'nameTown', | ||
| 302 | - componentProps: { | ||
| 303 | - placeholder: '城镇/街道', | ||
| 304 | - options: nameTown, | ||
| 305 | - }, | ||
| 306 | - }); | ||
| 307 | - } | ||
| 308 | - }, | ||
| 309 | - }, | ||
| 310 | - }); | ||
| 311 | - } | ||
| 312 | - }, | ||
| 313 | - }, | ||
| 314 | - }); | ||
| 315 | - } | 218 | + params: { parentId: 1, level: Level.PROVINCE }, |
| 219 | + onChange: () => { | ||
| 220 | + setFieldsValue({ nameCity: null, nameCoun: null, nameTown: null }); | ||
| 316 | }, | 221 | }, |
| 317 | }; | 222 | }; |
| 318 | }, | 223 | }, |
| 319 | }, | 224 | }, |
| 320 | { | 225 | { |
| 321 | field: 'nameCity', | 226 | field: 'nameCity', |
| 322 | - component: 'Select', | 227 | + component: 'ApiSelect', |
| 323 | label: '', | 228 | label: '', |
| 324 | colProps: { | 229 | colProps: { |
| 325 | span: 6, | 230 | span: 6, |
| 326 | }, | 231 | }, |
| 232 | + componentProps: ({ formActionType, formModel }) => { | ||
| 233 | + const nameProv = Reflect.get(formModel, 'nameProv'); | ||
| 234 | + const { setFieldsValue } = formActionType; | ||
| 235 | + return { | ||
| 236 | + api: async (params: Recordable) => { | ||
| 237 | + try { | ||
| 238 | + if (!nameProv) return; | ||
| 239 | + const result = await getAreaList(params); | ||
| 240 | + return result; | ||
| 241 | + } catch (error) { | ||
| 242 | + return []; | ||
| 243 | + } | ||
| 244 | + }, | ||
| 245 | + labelField: 'name', | ||
| 246 | + valueField: 'code', | ||
| 247 | + placeholder: '城市', | ||
| 248 | + params: { parentId: nameProv, level: Level.CITY }, | ||
| 249 | + onChange: () => { | ||
| 250 | + setFieldsValue({ nameCoun: null, nameTown: null }); | ||
| 251 | + }, | ||
| 252 | + }; | ||
| 253 | + }, | ||
| 327 | }, | 254 | }, |
| 328 | { | 255 | { |
| 329 | field: 'nameCoun', | 256 | field: 'nameCoun', |
| 330 | - component: 'Select', | 257 | + component: 'ApiSelect', |
| 331 | label: '', | 258 | label: '', |
| 332 | colProps: { | 259 | colProps: { |
| 333 | span: 6, | 260 | span: 6, |
| 334 | }, | 261 | }, |
| 335 | - componentProps: { | ||
| 336 | - placeholder: '区/县', | 262 | + componentProps: ({ formActionType, formModel }) => { |
| 263 | + const nameCity = Reflect.get(formModel, 'nameCity'); | ||
| 264 | + const { setFieldsValue } = formActionType; | ||
| 265 | + return { | ||
| 266 | + api: async (params: Recordable) => { | ||
| 267 | + try { | ||
| 268 | + if (!nameCity) return; | ||
| 269 | + const result = await getAreaList(params); | ||
| 270 | + return result; | ||
| 271 | + } catch (error) { | ||
| 272 | + return []; | ||
| 273 | + } | ||
| 274 | + }, | ||
| 275 | + labelField: 'name', | ||
| 276 | + valueField: 'code', | ||
| 277 | + placeholder: '区/县', | ||
| 278 | + params: { parentId: nameCity, level: Level.COUNTY }, | ||
| 279 | + onChange: () => { | ||
| 280 | + setFieldsValue({ nameTown: null }); | ||
| 281 | + }, | ||
| 282 | + }; | ||
| 337 | }, | 283 | }, |
| 338 | }, | 284 | }, |
| 339 | { | 285 | { |
| 340 | field: 'nameTown', | 286 | field: 'nameTown', |
| 341 | - component: 'Select', | 287 | + component: 'ApiSelect', |
| 342 | label: '', | 288 | label: '', |
| 343 | colProps: { | 289 | colProps: { |
| 344 | span: 6, | 290 | span: 6, |
| 345 | }, | 291 | }, |
| 346 | - componentProps: { | ||
| 347 | - placeholder: '城镇/街道', | 292 | + componentProps: ({ formModel }) => { |
| 293 | + const nameCoun = Reflect.get(formModel, 'nameCoun'); | ||
| 294 | + return { | ||
| 295 | + api: async (params: Recordable) => { | ||
| 296 | + try { | ||
| 297 | + if (!nameCoun) return; | ||
| 298 | + const result = await getAreaList(params); | ||
| 299 | + return result; | ||
| 300 | + } catch (error) { | ||
| 301 | + return []; | ||
| 302 | + } | ||
| 303 | + }, | ||
| 304 | + labelField: 'name', | ||
| 305 | + valueField: 'code', | ||
| 306 | + placeholder: '城镇/街道', | ||
| 307 | + params: { parentId: nameCoun, level: Level.TOWN }, | ||
| 308 | + }; | ||
| 348 | }, | 309 | }, |
| 349 | }, | 310 | }, |
| 350 | ]; | 311 | ]; |