This commit is contained in:
李想 2025-02-27 11:34:43 +08:00
parent 24955c8059
commit 6e9e4298fa
8 changed files with 165 additions and 15 deletions

View File

@ -6,3 +6,10 @@ export function getLandsList(params = {}) {
params, params,
}); });
} }
export function lnadSave(data = {}) {
return request('/land-resource/landManage/save', {
method: 'POST',
data,
});
}

View File

@ -0,0 +1,84 @@
<template>
<el-select-v2
v-model="val"
:options="options"
:placeholder="props.set.placeholder"
:props="props.set.props"
:multiple="props.set.multiple"
@change="handleSelect"
/>
</template>
<script setup>
import { ref, onMounted } from 'vue';
import request from '@/utils/axios';
const emit = defineEmits(['update:value']);
const props = defineProps({
set: {
type: Object,
default: () => {
return {
url: '',
options: [
{
value: '1',
label: 'label 1',
},
{
value: '2',
label: 'label 2',
},
{
value: '3',
label: 'label 3',
},
],
props: {
value: 'value',
label: 'label',
},
multiple: false,
placeholder: '请选择',
};
},
},
value: {
type: String || Array || null,
default: null,
},
});
onMounted(async () => {
if (props.set.multiple) val.value = [];
if (props.set.url) {
let res = await request(props.set.url, {
method: 'get',
data: { current: 1, size: 9999 },
});
if (res.code == 200) {
options.value = res.data.records;
}
} else {
options.value = props.set.options;
}
});
/* --------------- data --------------- */
// #region
const val = ref(null);
const options = ref([]);
// #endregion
/* --------------- methods --------------- */
// #region
function handleSelect(val_) {
emit('update:value', val_);
}
// #endregion
</script>
<style lang="scss" scoped></style>

View File

@ -5,6 +5,7 @@
<script setup> <script setup>
import { ref, onMounted } from 'vue'; import { ref, onMounted } from 'vue';
import { GetEntityList } from '@/apis/coding'; import { GetEntityList } from '@/apis/coding';
const emit = defineEmits(['update:value']);
const props = defineProps({ const props = defineProps({
// //
@ -35,7 +36,7 @@ const _props = {
/* --------------- methods --------------- */ /* --------------- methods --------------- */
// #region // #region
function handleSelect(val_) { function handleSelect(val_) {
console.log('val_', val_); emit('update:value', val_);
} }
// #endregion // #endregion
</script> </script>

View File

@ -1,6 +1,6 @@
<template> <template>
<el-select v-model="val" @change="change"> <el-select v-model="val" @change="change">
<el-option v-for="item in options" :key="`land_type_${item.value}`" :value="item.value" :label="item.label" placeholder="请选择"> <el-option v-for="item in options" :key="`land_type_${item.value}`" :value="item.value" :label="item.label" :placeholder="props.placeholder">
{{ item.label }} {{ item.label }}
</el-option> </el-option>
</el-select> </el-select>
@ -15,6 +15,10 @@ const props = defineProps({
type: String || null, type: String || null,
default: null, default: null,
}, },
placeholder: {
type: String,
default: '请选择',
},
}); });
const emit = defineEmits(['update:value']); const emit = defineEmits(['update:value']);
/* --------------- data --------------- */ /* --------------- data --------------- */

View File

@ -1,6 +1,6 @@
<template> <template>
<el-select v-model="val" @change="change"> <el-select v-model="val" @change="change">
<el-option v-for="item in options" :key="`land_type_${item.value}`" :value="item.value" :label="item.label" placeholder="请选择"> <el-option v-for="item in options" :key="`land_type_${item.value}`" :value="item.value" :label="item.label" :placeholder="props.placeholder">
{{ item.label }} {{ item.label }}
</el-option> </el-option>
</el-select> </el-select>
@ -15,6 +15,10 @@ const props = defineProps({
type: String || null, type: String || null,
default: null, default: null,
}, },
placeholder: {
type: String,
default: '请选择',
},
}); });
const emit = defineEmits(['update:value']); const emit = defineEmits(['update:value']);
/* --------------- data --------------- */ /* --------------- data --------------- */

View File

@ -1,6 +1,6 @@
<template> <template>
<el-select v-model="val" @change="change"> <el-select v-model="val" @change="change">
<el-option v-for="item in options" :key="`land_type_${item.value}`" :value="item.value" :label="item.label" placeholder="请选择"> <el-option v-for="item in options" :key="`land_type_${item.value}`" :value="item.value" :label="item.label" :placeholder="props.placeholder">
{{ item.label }} {{ item.label }}
</el-option> </el-option>
</el-select> </el-select>
@ -15,6 +15,10 @@ const props = defineProps({
type: String || null, type: String || null,
default: null, default: null,
}, },
placeholder: {
type: String,
default: '请选择',
},
}); });
const emit = defineEmits(['update:value']); const emit = defineEmits(['update:value']);
/* --------------- data --------------- */ /* --------------- data --------------- */

View File

@ -1,38 +1,54 @@
<template> <template>
<el-drawer v-model="_visible" title="土地信息" :size="800" @close="handleClose"> <el-drawer v-model="_visible" title="土地信息" :size="800" @close="handleClose">
<el-card> <el-card>
<div>基础信息</div> <div class="title_">基础信息</div>
<el-form :model="baseInfo" class="base_form" label-width="120px"> <el-form :model="baseInfo" class="base_form" label-width="120px">
<el-form-item label="土地名称" prop="landName"> <el-form-item label="土地名称" prop="landName">
<el-input v-model="baseInfo.landName" placeholder="请输入名称"></el-input> <el-input v-model="baseInfo.landName" placeholder="请输入名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="所属网格" prop="gridName"> <el-form-item label="所属网格" prop="gridName" placeholder="请选择所属网格">
<GridSelect /> <GridSelect />
</el-form-item> </el-form-item>
<el-form-item label="用地分类" prop="LandType"> <el-form-item label="用地分类" prop="LandType">
<LandClassificationType v-model:value="baseInfo.landClassificationType" /> <LandClassificationType v-model:value="baseInfo.landClassificationType" placeholder="请选择用地分类" />
</el-form-item> </el-form-item>
<el-form-item label="位置" prop="villageCode"> <el-form-item label="位置" prop="villageCode">
<el-input v-model="baseInfo.villageCode" placehodler="请输入"></el-input> <el-input v-model="baseInfo.villageCode" placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="是否土地流转" prop="isTransfer"> <el-form-item label="是否土地流转" prop="isTransfer">
<LandIsTranfer v-model:value="baseInfo.isTransfer" /> <LandIsTranfer v-model:value="baseInfo.isTransfer" />
</el-form-item> </el-form-item>
<el-form-item label="面积" prop="area"> <el-form-item label="面积" prop="area">
<el-input v-model="baseInfo.area" placeholder="请输入"></el-input> <el-input v-model="baseInfo.area" placeholder="请输入面积"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="产权人" prop="owner"> <el-form-item label="产权人" prop="owner">
<el-input v-model="baseInfo.owner" placeholder="请输入"></el-input> <el-input v-model="baseInfo.owner" placeholder="请输入"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="土壤类型"> <el-form-item label="土壤类型">
<LandType v-model:value="baseInfo.landType" /> <LandType v-model:value="baseInfo.landType" placeholder="请选择土壤类型" />
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-card> </el-card>
<br />
<el-card> <el-card>
<div>土地产权信息</div> <div class="title_">土地产权信息</div>
<el-form :model="propertyInfo" class="property_form" label-width="120px">
<el-form-item label="产权人姓名" prop="propertyName">
<el-input v-model="propertyInfo.propertyName" placeholder="请输入联系人"></el-input>
</el-form-item>
<el-form-item label="产权人联系电话" prop="propertyPhone">
<el-input v-model="propertyInfo.propertyPhone" placeholder="请输入联系人"></el-input>
</el-form-item>
<el-form-item label="产权编号" prop="landCode">
<el-input v-model="propertyInfo.landCode" placeholder="请输入联系人"></el-input>
</el-form-item>
</el-form>
</el-card> </el-card>
<el-button @click="handleSubmit"></el-button> <section class="btns">
<el-button type="primary" @click="handleSubmit">保存并提交审核</el-button>
<el-button type="warning" @click="handleSubmit">保存草稿</el-button>
<el-button @click="handleClose">取消</el-button>
</section>
</el-drawer> </el-drawer>
</template> </template>
@ -42,6 +58,8 @@ import LandClassificationType from '@/components/LandClassificationType.vue';
import GridSelect from '@/components/GridSelect.vue'; import GridSelect from '@/components/GridSelect.vue';
import LandIsTranfer from '@/components/LandIsTranfer.vue'; import LandIsTranfer from '@/components/LandIsTranfer.vue';
import LandType from '@/components/LandType.vue'; import LandType from '@/components/LandType.vue';
import { lnadSave } from '@/apis/land';
import { ElMessage } from 'element-plus';
const props = defineProps({ const props = defineProps({
visible: { visible: {
@ -64,6 +82,12 @@ const baseInfo = reactive({
owner: '', owner: '',
landType: '0', landType: '0',
}); });
const propertyInfo = reactive({
propertyName: '',
propertyPhone: '',
landCode: '',
propertyCertificateUrl: '',
});
watch( watch(
() => props.visible, () => props.visible,
() => { () => {
@ -80,8 +104,13 @@ watch(
/* --------------- methods --------------- */ /* --------------- methods --------------- */
// #region // #region
function handleSubmit() { async function handleSubmit() {
console.log('submit', baseInfo); const data = {
...baseInfo,
...propertyInfo,
};
const res = await lnadSave(data);
if (res.code == 200) ElMessage.success('保存成功');
} }
function handleClose() { function handleClose() {
emit('close'); emit('close');
@ -90,9 +119,22 @@ function handleClose() {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.base_form { .title_ {
margin-bottom: 12px;
font-size: 16px;
font-weight: bold;
}
.base_form,
.property_form {
display: grid; display: grid;
grid-template-columns: repeat(2, 1fr); grid-template-columns: repeat(2, 1fr);
gap: 20px; gap: 20px;
} }
.btns {
margin-top: 12px;
display: grid;
justify-content: center;
grid-template-columns: auto auto auto;
gap: 12px;
}
</style> </style>

View File

@ -146,6 +146,10 @@ async function getList() {
}; };
let res = await getLandsList(params); let res = await getLandsList(params);
console.log('res ---------', res); console.log('res ---------', res);
if (res.code == 200) {
list.value = res.data.records;
pageData.total = res.data.total;
}
} }
function handleResetSearch() { function handleResetSearch() {
console.log('searchRef', searchRef.value); console.log('searchRef', searchRef.value);