zhouwenxuan
2023-12-06 c1b2db87bab550a24c5a7fd5899342d56e7f414a
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({