| | |
| | | > |
| | | <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> |
| | |
| | | </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> |
| | |
| | | </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: '', |
| | |
| | | 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; |
| | | } |
| | |
| | | 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({ |