|
@@ -14,7 +14,7 @@
|
|
|
|
|
|
<el-form-item label="行政区划">
|
|
|
<el-cascader style="width: 300px" v-model="selectedValue" :props="lazyProps" :placeholder="'请选择地区'" clearable
|
|
|
- @change="handleChange" lazy />
|
|
|
+ @change="handleChange" />
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-form>
|
|
@@ -31,10 +31,14 @@ import { user } from '@/store/user'
|
|
|
import { globalPasswordRex } from "@/util/regex";
|
|
|
import type { CascaderProps, CascaderOption } from 'element-plus'
|
|
|
// import areaData from '@/util/area.json';
|
|
|
+import { ElMessage } from "element-plus";
|
|
|
+
|
|
|
const selectedValue = ref([])
|
|
|
|
|
|
const baseFormRef = ref<FormInstance>();
|
|
|
|
|
|
+const isZx = ref(false)
|
|
|
+
|
|
|
|
|
|
const rules = reactive<FormRules>({
|
|
|
orgName: [
|
|
@@ -73,6 +77,7 @@ const data = ref<OrganizationType & {}>({
|
|
|
provinceId: null,
|
|
|
cityId: null,
|
|
|
areaId: null,
|
|
|
+ zx: false
|
|
|
});
|
|
|
|
|
|
const setParentId = () => {
|
|
@@ -84,9 +89,12 @@ const setParentId = () => {
|
|
|
watchEffect(() => {
|
|
|
if (props.org) {
|
|
|
data.value = { ...props.org }
|
|
|
- if (data.value.provinceId) {
|
|
|
+ if (data.value.zx) {
|
|
|
+ selectedValue.value = [data.value.cityId, data.value.areaId]
|
|
|
+ } else {
|
|
|
selectedValue.value = [data.value.provinceId, data.value.cityId, data.value.areaId]
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
})
|
|
|
|
|
@@ -113,7 +121,6 @@ const lazyProps = ref<CascaderProps>({
|
|
|
const loadData = async (level, node) => {
|
|
|
// 根据层级模拟数据
|
|
|
// console.log('level', level, node)
|
|
|
-
|
|
|
switch (level) {
|
|
|
case 0: // 加载省份
|
|
|
const provinces = await getProvinces();
|
|
@@ -121,10 +128,10 @@ const loadData = async (level, node) => {
|
|
|
p.leaf = false
|
|
|
return p
|
|
|
});
|
|
|
+
|
|
|
return resP;
|
|
|
case 1:
|
|
|
let cities
|
|
|
-
|
|
|
if (node.zx) {
|
|
|
console.log('当前城市zx', node)
|
|
|
const areas = await getAreas(node.province, node.city, true);
|
|
@@ -133,8 +140,10 @@ const loadData = async (level, node) => {
|
|
|
a.leaf = true
|
|
|
return a
|
|
|
})
|
|
|
+ isZx.value = true
|
|
|
} else {
|
|
|
cities = await getCities(node.province);
|
|
|
+ isZx.value = false
|
|
|
console.log('cities', node.province, cities);
|
|
|
}
|
|
|
|
|
@@ -165,10 +174,25 @@ defineExpose<QuiskExpose>({
|
|
|
const res = await unref(baseFormRef)?.validate();
|
|
|
if (res) {
|
|
|
console.log("data", data.value);
|
|
|
- if (selectedValue.value && selectedValue.value.length > 0) {
|
|
|
- data.value.provinceId = selectedValue.value[0]
|
|
|
- data.value.cityId = selectedValue.value[1]
|
|
|
- data.value.areaId = selectedValue.value[2]
|
|
|
+ if (selectedValue.value) {
|
|
|
+ if (isZx.value) {
|
|
|
+ if (selectedValue.value.length < 2) {
|
|
|
+ ElMessage.error('请填写完整行政区划');
|
|
|
+ throw "";
|
|
|
+ }
|
|
|
+ data.value.provinceId = selectedValue.value[0]
|
|
|
+ data.value.cityId = selectedValue.value[0]
|
|
|
+ data.value.areaId = selectedValue.value[1]
|
|
|
+
|
|
|
+ } else {
|
|
|
+ if (selectedValue.value.length < 3) {
|
|
|
+ ElMessage.error('请填写完整行政区划');
|
|
|
+ throw "";
|
|
|
+ }
|
|
|
+ data.value.provinceId = selectedValue.value[0]
|
|
|
+ data.value.cityId = selectedValue.value[1]
|
|
|
+ data.value.areaId = selectedValue.value[2]
|
|
|
+ }
|
|
|
} else {
|
|
|
data.value.provinceId = null
|
|
|
data.value.cityId = null
|