From c1b2db87bab550a24c5a7fd5899342d56e7f414a Mon Sep 17 00:00:00 2001
From: zhouwenxuan <1175765986@qq.com>
Date: 星期三, 06 十二月 2023 15:54:46 +0800
Subject: [PATCH] 专家用户、地区维护

---
 src/views/safetyReview/baseSet/area/components/areaDialog.vue |   98 ++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 81 insertions(+), 17 deletions(-)

diff --git a/src/views/safetyReview/baseSet/area/components/areaDialog.vue b/src/views/safetyReview/baseSet/area/components/areaDialog.vue
index 3a5be65..a220b59 100644
--- a/src/views/safetyReview/baseSet/area/components/areaDialog.vue
+++ b/src/views/safetyReview/baseSet/area/components/areaDialog.vue
@@ -8,7 +8,7 @@
         >
             <el-form :model="state.form" size="default" ref="areaRef" :rules="state.formRules" label-width="110px" >
                 <el-form-item>
-                    <el-radio-group v-model="state.form.area" style="margin-left: -50px" >
+                    <el-radio-group v-model="state.form.area" style="margin-left: -50px" :disabled="title === '编辑'">
                         <el-radio :label="1">地(市、州)</el-radio>
                         <el-radio :label="2">区县</el-radio>
                     </el-radio-group>
@@ -18,12 +18,12 @@
                 </el-form-item>
                 <div v-if="state.form.area === 2">
                     <el-form-item style="margin-left: -50px" prop="stateCode">
-                        <el-select v-model="state.form.stateCode" class="m-2" placeholder="请选择所属地(市、州)" style="width: 100%">
+                        <el-select v-model="state.form.stateCode" class="m-2" placeholder="请选择所属地(市、州)" style="width: 100%" >
                             <el-option
-                                v-for="item in state.areaList"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value"
+                                v-for="item in state.cityList"
+                                :key="item.id"
+                                :label="item.name"
+                                :value="item.id"
                             />
                         </el-select>
                     </el-form-item>
@@ -43,15 +43,18 @@
     </div>
 </template>
 <script setup>
-import {reactive, ref, toRefs} from 'vue'
+import {defineEmits, reactive, ref, toRefs} from 'vue'
 import Editor from "@/components/Editor/index.vue";
 import {ElMessage} from "element-plus";
+import {addArea, editArea, getArea} from "@/api/backManage/area";
 
 const dialogVisible = ref(false);
 const title = ref("");
 const areaRef = ref();
+const emit = defineEmits(["getList"]);
 const state = reactive({
     form: {
+        id: '',
         area: 1,
         stateCode: '',
         stateName: '',
@@ -62,14 +65,23 @@
         countyName: [{ required: true, message: '请输入区县名', trigger: 'blur' }],
         stateCode: [{ required: true, message: '请选择所属地(市、州)', trigger: 'blur' }],
     },
-    areaList: []
-
+    cityList: [],
 })
 
-const openDialog = (type, value) => {
+const openDialog = (type, value,cityList) => {
     title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看' ;
+    state.cityList = cityList;
     if(type === 'edit') {
-        state.form = value;
+        if(value.parentId!=0){
+            state.form.id = value.id;
+            state.form.area = 2;
+            state.form.stateCode = value.parentId;
+            state.form.countyName = value.name;
+        }else {
+            state.form.id = value.id;
+            state.form.area = 1;
+            state.form.stateName = value.name
+        }
     }
     dialogVisible.value = true;
 }
@@ -77,25 +89,77 @@
 const onSubmit = async () => {
     const valid = await areaRef.value.validate();
     if(valid){
-        areaRef.value.clearValidate();
-        reset();
-        dialogVisible.value = false;
+        if(title.value === '新增'){
+            let param = {}
+            if(state.form.area == 1){
+                param = {
+                    name: state.form.stateName,
+                    regionType: 0
 
+                }
+            }else if(state.form.area == 2){
+                param = {
+                    name: state.form.countyName,
+                    regionType: 0,
+                    parentId: state.form.stateCode
+                }
+            }
+            console.log("parma",param)
+            const res = await addArea(param);
+            if(res.code === 200){
+                ElMessage.success(res.message)
+                emit('getList')
+                areaRef.value.clearValidate();
+                reset()
+                dialogVisible.value = false;
+            }else{
+                ElMessage.warning(res.message)
+            }
+        }else if (title.value === '编辑'){
+            let param = {}
+            if(state.form.area == 1){
+                param = {
+                    id: state.form.id,
+                    name: state.form.stateName,
+                    parentId: 0,
+                    regionType: 0
+
+                }
+            }else if(state.form.area == 2){
+                param = {
+                    id: state.form.id,
+                    name: state.form.countyName,
+                    regionType: 0,
+                    parentId: state.form.stateCode
+                }
+            }
+            const res = await editArea(param);
+            if(res.code === 200){
+                ElMessage.success(res.message)
+                emit('getList')
+                areaRef.value.clearValidate();
+                reset()
+                dialogVisible.value = false;
+            }else{
+                ElMessage.warning(res.message)
+            }
+        }
     }
 }
 
 const handleClose = () => {
     areaRef.value.clearValidate();
-    reset();
+    reset()
     dialogVisible.value = false;
 
 }
 const reset = () => {
     state.form = {
+        id: '',
         area: 1,
-        state: '',
-        county: '',
         stateCode: '',
+        stateName: '',
+        countyName: ''
     }
 }
 defineExpose({

--
Gitblit v1.9.2