|
@@ -20,14 +20,23 @@ export default {
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
- *fetchWithValues({ payload = [] }, { call, put, select }) {
|
|
|
|
|
- const provinceId = payload[0] //
|
|
|
|
|
- const cityId = payload[1]
|
|
|
|
|
|
|
+ *fetchWithValues({ payload = [] }, { call, put, select, take }) {
|
|
|
|
|
+ const provinceId = payload[0] // 省id
|
|
|
|
|
+ const cityId = payload[1] // 市id
|
|
|
|
|
+
|
|
|
|
|
+ const originalData = yield select(state => state.district.data)
|
|
|
|
|
+
|
|
|
|
|
+ // TODO: 省级数据初始化
|
|
|
|
|
+ if (!originalData?.length) {
|
|
|
|
|
+ yield put({ type: 'fetch' })
|
|
|
|
|
+ yield take('fetch/@@end') // 直到监听到b结束才继续执行
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
const currProvince = yield select(state =>
|
|
const currProvince = yield select(state =>
|
|
|
state.district.data.find(item => item.id === provinceId)
|
|
state.district.data.find(item => item.id === provinceId)
|
|
|
)
|
|
)
|
|
|
// 判断市的数据是否拉取过了
|
|
// 判断市的数据是否拉取过了
|
|
|
- if (currProvince && (!currProvince.children || !currProvince.children.length)) {
|
|
|
|
|
|
|
+ if (currProvince && !currProvince.children?.length) {
|
|
|
const { code = -1, data = [] } = yield call(queryDistrict, { parentId: provinceId })
|
|
const { code = -1, data = [] } = yield call(queryDistrict, { parentId: provinceId })
|
|
|
if (code === consts.RET_CODE.SUCCESS) {
|
|
if (code === consts.RET_CODE.SUCCESS) {
|
|
|
const response = yield call(queryDistrict, { parentId: cityId })
|
|
const response = yield call(queryDistrict, { parentId: cityId })
|