|
@@ -3,8 +3,8 @@
|
|
|
<el-form-item label="项目名称" prop="name">
|
|
|
<el-input v-model.trim="formData.name" placeholder="输入项目名称" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="地区" prop="address">
|
|
|
- <el-cascader :options="data" :props="{ emitPath: true, value: 'code', label: 'name' }" placeholder="请选择" clearable class="w100" v-model="formData.address">
|
|
|
+ <el-form-item label="地区" prop="addressCode">
|
|
|
+ <el-cascader :options="data" :props="{ emitPath: true, value: 'code', label: 'name' }" placeholder="请选择" clearable class="w100" v-model="formData.addressCode">
|
|
|
</el-cascader>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="详细地址" prop="addressDetail">
|
|
@@ -41,9 +41,29 @@ const emit = defineEmits(['getList', 'cancle']);
|
|
|
const showDialog = ref(false);
|
|
|
const formRef = ref();
|
|
|
|
|
|
+// 从省市区的的树形结构中获取省市区名称
|
|
|
+function getNames(code: string) {
|
|
|
+ const provinceItem = data.find((item: any) => item.province === code.substring(0, 2))
|
|
|
+ const provinceName = provinceItem.name
|
|
|
+ const cityItem = provinceItem.children.find((item: any) => item.city === code.substring(2, 4))
|
|
|
+ const cityName = cityItem.name
|
|
|
+
|
|
|
+ if (!cityItem.children) {
|
|
|
+ const areaItem = provinceItem.children.find((item: any) => item.area === code.substring(4, 6))
|
|
|
+ const areaName = areaItem.name
|
|
|
+ return `${provinceName}/${areaName}`
|
|
|
+
|
|
|
+ } else {
|
|
|
+ const areaItem = cityItem.children.find((item: any) => item.area === code.substring(4, 6))
|
|
|
+ const areaName = areaItem.name
|
|
|
+ return `${provinceName}/${cityName}/${areaName}`
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
const baseForm = {
|
|
|
id: undefined,
|
|
|
- address: null,
|
|
|
+ address: '',
|
|
|
+ addressCode: [],
|
|
|
name: '',
|
|
|
addressDetail: '',
|
|
|
channelMerchants: '',
|
|
@@ -58,7 +78,7 @@ const formData = reactive({
|
|
|
|
|
|
const ruleForm = {
|
|
|
name: [ruleRequired('不能为空')],
|
|
|
- address: [ruleRequired('不能为空')],
|
|
|
+ addressCode: [ruleRequired('不能为空')],
|
|
|
addressDetail: [ruleRequired('不能为空')],
|
|
|
channelMerchants: [ruleRequired('不能为空')],
|
|
|
customName: [ruleRequired('不能为空')],
|
|
@@ -69,6 +89,12 @@ const ruleForm = {
|
|
|
const onSubmit = async () => {
|
|
|
await formRef.value.validate();
|
|
|
|
|
|
+ const { addressCode } = formData;
|
|
|
+ formData.address = JSON.stringify({
|
|
|
+ name: getNames(addressCode[2] || addressCode[1]),
|
|
|
+ code: addressCode
|
|
|
+ })
|
|
|
+
|
|
|
const theApi = formData.id ? api.edit : api.add;
|
|
|
|
|
|
await theApi(formData);
|
|
@@ -92,7 +118,7 @@ const open = async (row?: any) => {
|
|
|
resetForm();
|
|
|
showDialog.value = true;
|
|
|
nextTick(() => {
|
|
|
- Object.assign(formData, { ...row, address: JSON.parse(row.address) });
|
|
|
+ Object.assign(formData, { ...row, addressCode: JSON.parse(row.address)?.code });
|
|
|
});
|
|
|
};
|
|
|
|