Commit 09595810f07a908df63814b39e3882db0c26adc6

Authored by xp.Huang
2 parents 64a10513 ef11abc0

Merge branch 'ww' into 'main'

perf: 企业信息所在城市接口新增查询参数

See merge request yunteng/thingskit-front!511
@@ -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 ];