浏览代码

feat:save

gemercheung 5 月之前
父节点
当前提交
313054e90b

+ 1 - 0
src/request/organization.ts

@@ -26,6 +26,7 @@ export type OrganizationType = {
     city?: string
     area?: string
     province?: string
+    zx?:boolean
 
 }
 

+ 1 - 0
src/request/type.ts

@@ -37,6 +37,7 @@ export type Relics = {
   cityId?: number
   areaId?: number
   provinceId?: number
+  zx?: number
 };
 
 export type ResPage<T> = {

+ 28 - 7
src/view/organization-add.vue

@@ -68,6 +68,7 @@ import { View, Hide } from "@element-plus/icons-vue";
 // import { user } from '@/store/user'
 import { getOrgListFetchList } from "@/request";
 import type { CascaderProps, CascaderOption } from 'element-plus'
+import { ElMessage } from "element-plus";
 const addPassFlag = ref(true); //图标显示标识
 const selectedValue = ref([])
 
@@ -129,7 +130,7 @@ onMounted(async () => {
   const data = await getOrgListFetchList();
   // console.log('allOrgs', data);
   allOrgs.value = data as any as SelectType[];
-  debugger
+  // debugger
 });
 watch(
   data,
@@ -141,7 +142,7 @@ watch(
     deep: true,
   }
 );
-
+const isZx = ref(false)
 
 // 动态加载配置
 const lazyProps = ref<CascaderProps>({
@@ -183,8 +184,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);
       }
 
@@ -213,12 +216,30 @@ defineExpose<QuiskExpose>({
       const res = await unref(baseFormRef)?.validate();
       if (res) {
         console.log("data", data.value);
-        if (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
+          data.value.areaId = null
         }
-
         await props.submit(data.value as any as OrganizationType);
       }
     } else {

+ 32 - 8
src/view/organization-edit.vue

@@ -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

+ 7 - 1
src/view/organization.vue

@@ -34,8 +34,14 @@
         </el-table-column>
         <el-table-column label="行政区划" v-slot:default="{ row }: { row: OrganizationType }">
           <template v-if="row.province">
-            {{ `${row.province || ''}${row.city || ''}${row.area || ''}` }}
+            <template v-if="row.zx">
+              {{ `${row.city || ''}${row.area || ''}` }}
+            </template>
+            <template v-else>
+              {{ `${row.province || ''}${row.city || ''}${row.area || ''}` }}
+            </template>
           </template>
+
         </el-table-column>
         <el-table-column label="单位账号" prop="userName"></el-table-column>
         <el-table-column label="单位联系人" prop="contact"></el-table-column>

+ 26 - 6
src/view/relics-edit.vue

@@ -35,6 +35,7 @@ import { ElMessage } from "element-plus";
 import { computed, ref, watchEffect } from "vue";
 import { getProvinces, getCities, getAreas } from '@/request/organization';
 import type { CascaderProps, CascaderOption } from 'element-plus'
+import { ElMessageBox } from "element-plus";
 const selectedValue = ref([])
 
 const props = defineProps<{
@@ -42,7 +43,7 @@ const props = defineProps<{
   submit: (relics: Relics) => Promise<void>;
 }>();
 const data = ref<Relics>(props.relics ? { ...props.relics } : { name: "", relicsId: -1 });
-
+const isZx = ref(false)
 // watch(
 //   () => data.value.unicode,
 //   (newv) => {
@@ -54,9 +55,12 @@ const data = ref<Relics>(props.relics ? { ...props.relics } : { name: "", relics
 //   }
 // );
 watchEffect(() => {
-  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]
   }
+
 })
 // 动态加载配置
 const lazyProps = ref<CascaderProps>({
@@ -98,8 +102,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);
       }
 
@@ -131,11 +137,25 @@ defineExpose<QuiskExpose>({
       throw "请输入文物名称!";
     }
 
+    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]
 
-    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]
+      } 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

+ 6 - 1
src/view/relics.vue

@@ -47,7 +47,12 @@
         </el-table-column> -->
         <el-table-column label="行政区划" v-slot:default="{ row }: { row: OrganizationType }">
           <template v-if="row.province">
-            {{ `${row.province || ''}${row.city || ''}${row.area || ''}` }}
+            <template v-if="row.zx">
+              {{ `${row.city || ''}${row.area || ''}` }}
+            </template>
+            <template v-else>
+              {{ `${row.province || ''}${row.city || ''}${row.area || ''}` }}
+            </template>
           </template>
         </el-table-column>