farmer.add.vue
<template>
<!-- <el-dialog
:title="!dataForm.id ? '新增' : !disabled ? '修改' : '查看'"
:close-on-click-modal="false"
:visible.sync="visible"
> -->
<div class="fullS">
<!-- @keyup.enter.native="dataFormSubmit()" -->
<el-form
:model="dataForm"
:rules="dataRule"
ref="dataForm"
label-width="150px"
style="margin-top: 20px"
>
<div>
<el-button
type="white"
@click="
$router.push({
name: 'pesticide-farmers',
})
"
>返回</el-button
>
<!-- <el-button
type="white"
@click="$router.push('/modules/pesticide/farmers')"
>返回</el-button
> -->
<!-- <el-button
v-if="!disabled"
type="primary"
@click="
dataFormSubmit()
$router.back(-1)
"
>保存并返回</el-button
> -->
<el-button v-if="!disabled" type="primary" @click="dataFormSubmit()"
>保存</el-button
>
</div>
<div>
<h2 style="margin-left: 45%">农户家庭基本情况</h2>
<el-row>
<el-col :span="7">
<el-form-item label="户主编号" prop="farmerNo">
<el-input
v-model="dataForm.farmerNo"
onkeyup="this.value = this.value.replace(/[^\d.]/g,'');"
:disabled="disabled"
:maxlength="15"
placeholder="户主编号"
></el-input> </el-form-item
></el-col>
<el-col :span="5"
><el-form-item
label="农户类型"
prop="farmerType"
:rules="[
{ required: true, message: '请选择农户类型', trigger: 'blur' },
]"
>
<el-dict
code="FARMER_TYPE"
v-model="dataForm.farmerType"
:disabled="disabled"
></el-dict>
<!-- <el-input v-model="dataForm.farmerType" :disabled="disabled" placeholder="农户类型"></el-input> -->
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item
label="户主名称"
prop="farmerName"
:rules="[
{ required: true, message: '请输入户主名称', trigger: 'blur' },
]"
>
<el-input
v-model="dataForm.farmerName"
:disabled="disabled"
:maxlength="10"
@keyup.native="
dataForm.farmerName = dataForm.farmerName.replace(
/[^\u4E00-\u9FA5]/g,
''
)
"
placeholder="户主名称"
></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item
label="性别"
prop="farmerSex"
:rules="[
{ required: true, message: '请选择性别', trigger: 'blur' },
]"
>
<!-- <el-input
v-model="dataForm.farmerSex"
:disabled="disabled"
placeholder="户主性别"
></el-input> -->
<el-dict
code="SEX"
v-model="dataForm.farmerSex"
:disabled="disabled"
></el-dict>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="7">
<el-form-item
label="年份"
prop="year"
:rules="[
{ required: true, message: '请选择年份', trigger: 'blur' },
]"
>
<el-date-picker
type="year"
placeholder="选择年份"
v-model="dataForm.year"
style="width: 100%"
format="yyyy"
value-format="yyyy"
:disabled="disabled"
></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item
label="家庭人口"
prop="farmerMember"
:rules="[
{ required: true, message: '请输入联系地址', trigger: 'blur' },
]"
>
<!-- <el-input
v-model="dataForm.farmerMember"
:disabled="disabled"
:maxlength="5"
placeholder="家庭人口"
></el-input> -->
<el-input-number
:disabled="disabled"
v-model="dataForm.farmerMember"
:min="0"
:max="50"
label="家庭人口"
></el-input-number>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item
label="劳动力"
prop="farmerLabour"
:rules="[
{ required: true, message: '请输入联系地址', trigger: 'blur' },
]"
>
<!-- <el-input
v-model="dataForm.farmerLabour"
:disabled="disabled"
:maxlength="5"
placeholder="劳动力"
></el-input> -->
<el-input-number
:disabled="disabled"
v-model="dataForm.farmerLabour"
:min="0"
:max="1000"
label="劳动力"
></el-input-number>
</el-form-item>
</el-col>
<el-col :span="1"
><el-form-item
label="年龄"
prop="farmerAge"
:rules="[
{ required: true, message: '请输入联系地址', trigger: 'blur' },
]"
>
<!-- <el-input
v-model="dataForm.farmerAge"
:disabled="disabled"
maxlength="3"
></el-input> -->
<el-input-number
:disabled="disabled"
v-model="dataForm.farmerAge"
:min="1"
:max="120"
label="年龄"
></el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="7">
<el-form-item
label="总耕地面积(亩)"
prop="cultivatedArea"
:rules="[
{ required: true, message: '请输入用户名', trigger: 'blur' },
]"
>
<!-- <el-input
v-model="dataForm.cultivatedArea"
:disabled="disabled"
:maxlength="10"
placeholder="总耕地面积(亩)"
></el-input> -->
<el-input-number
:disabled="disabled"
v-model="dataForm.cultivatedArea"
:min="0"
:max="10000000"
label="总耕地面积"
></el-input-number>
</el-form-item>
</el-col>
<!-- :rules="[ -->
<!-- { required: true, message: '请输入用户名', trigger: 'blur' }, -->
<!-- ]" -->
<el-col :span="5">
<el-form-item
label="总种植面积(亩次)"
prop="plantingArea"
:rules="[
{ required: true, message: '请输入用户名', trigger: 'blur' },
]"
>
<!-- <el-input
v-model="dataForm.plantingArea"
:disabled="disabled"
:maxlength="10"
placeholder="总种植面积(亩次)"
></el-input> -->
<el-input-number
:disabled="disabled"
v-model="dataForm.plantingArea"
:min="0"
:max="10000000"
label="总种植面积"
></el-input-number>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item
label="文化程度"
prop="farmerEducation"
:rules="[
{ required: true, message: '请选择文化程度', trigger: 'blur' },
]"
>
<el-dict
code="EDUCATION_TYPE"
v-model="dataForm.farmerEducation"
:disabled="disabled"
></el-dict>
<!-- <el-select
v-model="dataForm.farmerEducation"
placeholder="请选择文化程度"
>
<el-option label="小学" value="a"></el-option>
<el-option label="初中" vaule="b"></el-option>
<el-option label="高中" value="c"></el-option>
<el-option label="大专" value="d"></el-option>
<el-option label="本科" value="e"></el-option>
<el-option label="硕士" value="f"></el-option>
<el-option label="博士" value="g"></el-option>
</el-select> -->
<!-- <el-input v-model="dataForm.farmerEducation" :disabled="disabled" placeholder="文化程度"></el-input> -->
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item
label="家庭经济状态"
prop="economicsState"
:rules="[
{
required: true,
message: '请选择家庭经济状态',
trigger: 'blur',
},
]"
>
<el-dict
code="ECONOMY_TYPE"
v-model="dataForm.economicsState"
:disabled="disabled"
></el-dict>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="7">
<el-form-item
label="联系地址"
prop="farmerArr"
:rules="[
{ required: true, message: '请输入联系地址', trigger: 'blur' },
]"
>
<!-- <el-input
v-model="dataForm.farmerArr"
:disabled="disabled"
placeholder="联系地址"
:maxlength="50"
></el-input> -->
<el-input
type="textarea"
:rows="5"
placeholder="请输入地址"
v-model="dataForm.farmerArr"
maxlength="150"
style="width: 110%"
:disabled="disabled"
>
</el-input>
</el-form-item>
</el-col>
<el-col :span="4.5">
<el-form-item label="电话" prop="farmerPhone">
<el-input
v-model.trim="dataForm.farmerPhone"
maxlength="11"
:disabled="disabled"
placeholder="电话"
></el-input>
<!-- <el-input
v-model="dataForm.farmerPhone"
:disabled="disabled"
placeholder="电话"
></el-input> -->
</el-form-item>
</el-col>
</el-row>
</div>
<!-- <table
border="1"
style="
position: absolute;
right: 50px;
top: 20px;
font-size: 25px;
"
>
<tr>
<th>作物种类</th>
<th>种植面积(亩)</th>
<th>栽培类型(直播/移栽)</th>
<th>播种日期(年月日)</th>
<th>施药机械</th>
<th>防治次数(次)</th>
</tr>
<tr v-for="item in cropList" :key="item.value">
<td style="text-align: center;font-size=5px;">{{ item.name }}</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
</table> -->
<div>
<h2 style="margin-left: 45%">作物种植情况表</h2>
<el-table
:data="dataForm.plants"
style="width: 95%; margin: 0 auto"
border
:default-sort="{ prop: 'date', order: 'descending' }"
>
<!-- id: "",
cropSpecies: "",
plantingArea: "",
cultivationType: "",
sowingDate: "",
applicatorMachinery: "",
controlTimes: "",
farmerId: " -->
<el-table-column align="center" type="index" width="50">
</el-table-column>
<el-table-column
align="center"
prop="cropName"
label="作物种类"
width="200"
>
<template slot-scope="scope">
<!-- CROP_TYPE -->
<el-tag type="success">{{
transCrop(scope.row.cropSpecies)
}}</el-tag>
</template>
<!-- <el-input
v-model="dataForm.cropName"
:disabled="idsabled"
placeholder="作物名"
></el-input> -->
</el-table-column>
<el-table-column
align="center"
prop="plantingArea"
label="种植面积(亩)"
width="330"
>
<template slot-scope="scope">
<!-- <el-input
v-model="scope.row.plantingArea"
:disabled="disabled"
placeholder=""
></el-input> -->
<el-input-number
:disabled="disabled"
v-model.trim="scope.row.plantingArea"
:min="0"
:max="10000000"
label="种植面积(亩)"
></el-input-number>
</template>
</el-table-column>
<el-table-column
prop="sowingDate"
align="center"
label="播种日期"
width="250"
>
<template slot-scope="scope">
<!-- <el-input
v-model="scope.row.sowingDate"
:disabled="disabled"
placeholder=""
></el-input> -->
<el-date-picker
type="datetime"
placeholder="播种日期"
v-model.trim="scope.row.sowingDate"
style="width: 100%"
:disabled="disabled"
format="MM-dd"
value-format="yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</template>
</el-table-column>
<el-table-column
align="center"
prop="cultivationType"
label="种植类型(直播/移栽)"
width="280"
>
<template slot-scope="scope">
<!-- <el-select
v-model.trim="scope.row.cultivationType"
placeholder="请选择"
>
<el-option
v-for="item in cultivationTypeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select> -->
<el-select
v-model="scope.row.cultivationType"
placeholder="请选择"
clearable
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</template>
</el-table-column>
<el-table-column
prop="applicatorMachinery"
label="施药药械"
align="center"
width="220"
>
<template slot-scope="scope">
<el-input
v-model.trim="scope.row.applicatorMachinery"
:disabled="disabled"
:maxlength="20"
placeholder=""
></el-input>
</template>
</el-table-column>
<el-table-column
prop="controlTimes"
align="center"
label="施药次数"
width="250"
>
<!-- <template slot-scope="scope">
<el-input
v-model="scope.row.controlTimes"
:disabled="disabled"
placeholder=""
:maxlength="2"
></el-input>
</template> -->
<template slot-scope="scope">
<!-- <el-input
v-model="scope.row.plantingArea"
:disabled="disabled"
placeholder=""
></el-input> -->
<el-input-number
:disabled="disabled"
v-model.trim="scope.row.controlTimes"
:min="0"
:max="99"
label="施药次数"
></el-input-number>
</template>
</el-table-column>
</el-table>
</div>
</el-form>
</div>
<!-- <span slot="footer" class="dialog-footer">
<el-button @click="visible = false">取消</el-button>
<el-button v-if="!disabled" type="primary" @click="dataFormSubmit()"
>确定</el-button
>
</span> -->
<!-- </el-dialog> -->
</template>
<script>
var checkPhone = (rule, value, callback) => {
if (value == '') {
callback()
}
if (!(/^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}$/).test(value)) {
callback(new Error("格式不正确"))
} else {
callback()
}
}
// var checkAge = (rule, value, callback) => {
// if (value == '') {
// callback()
// }
// if (!(/^[1-9]\d?$|^1[01]\d$|^120$/).test(value)) {
// callback(new Error("年龄范围在1~120"))
// } else {
// callback()
// }
// }
export default {
data () {
return {
cropList: [],
disabled: false,
visible: true,
dataForm: {
id: 0,
farmerNo: '',
farmerType: '',
year: '',
farmerName: '',
farmerSex: '',
farmerAge: '30',
farmerEducation: '',
farmerMember: '',
farmerLabour: '',
cultivatedArea: '',
plantingArea: '',
economicsState: '',
farmerArr: '',
farmerPhone: '',
// plants: [],
// dataRule: {
// personName: [
// {required: true, message: '名称不能为空', trigger: ['blur', 'change']}
// ],
// buildingId: [
// {required: true, message: '危房名不能为空', trigger: ['blur', 'change']}
// ],
// age: [
// {required: true, message: '年龄名不能为空', trigger: ['blur', 'change']}
// ],
// typeId: [
// {required: true, message: '类型名不能为空', trigger: ['blur', 'change']}
// ],
// farmerPhone:[
// {required: false,validator:checkPhone, trigger: ['blur', 'change']}
// ]
// }
},
plant:
{
id: "",
cropSpecies: "",
plantingArea: "",
cultivationType: "",
sowingDate: "",
applicatorMachinery: "",
controlTimes: "",
farmerId: ""
},
dataRule: {
farmerName: [
{ maxLength: "5", message: '名称不能为空', trigger: 'blur' },
],
// farmerAge: [
// { required: true, message: '年龄不能为空' },
// // { type: 'number', message: '年龄必须为数字值' }, // 且不包括小数
// // { pattern: /^[1-9]\d?$|^1[01]\d$|^120$/, message: '范围在0-120', trigger: 'blur' }
// // { pattern: /^[1-9]*$/, message: '请输入正整数', trigger: 'blur' }, // 可以输入多位正整数
// { required: true, validator: checkAge, trigger: ['blur', 'change'] }
// ],
farmerPhone: [
{ validator: checkPhone, trigger: ['blur', 'change'] },
{ required: true, message: '电话不能为空' }
]
},
id: '',
disable: "",
options: [{
value: 1,
label: '直播'
}, {
value: 2,
label: '移栽'
}],
}
},
mounted () {
this.id = this.$route.params.id
this.disable = this.$route.params.disable
// this.getAllCrop()
// this.getPlant()
this.getDataList()
},
methods: {
transCrop (data) {
for (let i = 0; i < this.cropList.length; i++) {
if (data == this.cropList[i].id) {
return this.cropList[i].cropName
}
}
},
getDataList () {
let _this = this
this.$http({
url: '/pesticide/crop/queryAll',
method: 'get',
}).then(({ data }) => {
if (data && data.code === 0) {
_this.getAllCrop(data.list)
}
})
},
getAllCrop (dictList) {
// this.dataForm = {}
this.cropList = []
// console.log(dictList);
this.dataForm.plants = []
let plants = []
for (let i = 0; i < dictList.length; i++) {
//每一次循环都有一行数据
// const element = array[i];
// if (dictList[i].code == "CROP_TYPE") {
this.cropList.push(dictList[i])
this.plant.cropSpecies = dictList[i].id
plants.push(JSON.parse(JSON.stringify(this.plant)))
// }
// console.log(this.dataForm);
// this.dataForm.plants.push(this.plant)
}
let dataFormMy = JSON.parse(JSON.stringify(this.dataForm))
dataFormMy.plants = plants
this.dataForm = dataFormMy
// console.log(this.cropList);
// console.log(this.dataForm);
this.init(this.id, this.disable)
},
init (id, disabled) {
this.disabled = disabled
this.dataForm.id = id || ''
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
this.$http({
url: `/pesticide/farmers/info/${this.dataForm.id}`,
method: 'get'
}).then(({ data }) => {
if (data && data.code === 0) {
data.farmers.year = data.farmers.year.toString()
this.dataForm = data.farmers
}
})
}
})
},
// 表单提交
dataFormSubmit () {
this.$refs['dataForm']
.validate((valid) => {
if (valid) {
// console.log(valid);
let plants = this.dataForm.plants
// console.log(plants, 111);
// debugger
for (let i = 0; i < plants.length; i++) {
//对表格内要填的值做一个是否为空的判断
//如果表格中的每一行的参数有任意一个不为null或者“”
if (plants[i].applicatorMachinery != "" || !(plants[i].cultivationType == null || plants[i].cultivationType == "") || !(plants[i].sowingDate == null || plants[i].sowingDate == "") || plants[i].controlTimes != 0 || plants[i].plantingArea != 0) {
//就判断这一行是否都有数据 如果都有数据 则放行
if (plants[i].applicatorMachinery != "" && !(plants[i].cultivationType == null || plants[i].cultivationType == "") && !(plants[i].sowingDate == null || plants[i].sowingDate == "") && plants[i].controlTimes != 0 && plants[i].plantingArea != 0) {
} else {
//如果不是 {都有} 数据,就提示用户哪一行没有数据,并终止方法的执行,目的是校验不通过 就不提交表单
if (plants[i].applicatorMachinery == "" || plants[i].applicatorMachinery == null) {
this.$notify({
// title: `第${i + 1}行作物种类`,
title: `第${i + 1}行的施药药械未填`,
message: `<strong style='color:red'>${this.transDict('CROP_TYPE', plants[i].cropSpecies)}的施药药械未填</strong>`,
type: 'warning',
duration: 4500,
offset: 200,
dangerouslyUseHTMLString: true,
})
return
}
if (plants[i].plantingArea == 0 || plants[i].plantingArea == "" || plants[i].plantingArea == null) {
this.$notify({
// title: `第${i + 1}行作物种类`,
title: `第${i + 1}行的种植面积未填`,
message: `<strong style='color:red'>${this.transDict('CROP_TYPE', plants[i].cropSpecies)}的种植面积未填</strong>`,
type: 'warning',
duration: 4500,
offset: 200,
dangerouslyUseHTMLString: true,
})
return
}
if (plants[i].cultivationType == "" || plants[i].cultivationType == null) {
this.$notify({
title: `第${i + 1}行的播种类型未填`,
message: `<strong style='color:red'>${this.transDict('CROP_TYPE', plants[i].cropSpecies)}的播种类型未填</strong>`,
type: 'warning',
duration: 4500,
offset: 200,
dangerouslyUseHTMLString: true,
})
return
}
if (plants[i].sowingDate == "" || plants[i].sowingDate == null) {
this.$notify({
title: `第${i + 1}行的播种日期未填`,
message: `<strong style='color:red'>${this.transDict('CROP_TYPE', plants[i].cropSpecies)}的播种日期未填</strong>`,
type: 'warning',
duration: 4500,
offset: 200,
dangerouslyUseHTMLString: true,
})
return
}
if (plants[i].controlTimes == 0 || plants[i].controlTimes == "" || plants[i].controlTimes == null) {
this.$notify({
// title: `第${i + 1}行作物种类`,
title: `${i + 1}的施药次数未填`,
message: `<strong style='color:red'>${this.transDict('CROP_TYPE', plants[i].cropSpecies)}的施药次数未填</strong>`,
type: 'warning',
duration: 4500,
offset: 200,
dangerouslyUseHTMLString: true,
})
return
}
}
}
// if (plants[i].controlTimes != 0 || plants[i].plantingArea != 0) {
// if ((plants[i].controlTimes != 0 && plants[i].plantingArea == 0) || (plants[i].controlTimes == 0 && plants[i].plantingArea != 0)) {
// this.$notify({
// title: `第${i + 1}行`,
// message: '施药次数和种植面积不能为0 !',
// type: 'warning'
// })
// return
// }
// if (plants[i].applicatorMachinery == "" || plants[i].cultivationType == null || plants[i].sowingDate == null) {
// this.$notify({
// title: `第${i + 1}行`,
// message: '请填写数据',
// type: 'warning'
// })
// return
// }
// }
}
//对耕地面积里的值做判断
if (this.dataForm.cultivatedArea <= 0) {
//不行
this.$notify.info({
title: '提示',
message: '总耕地面积(亩)不能为0',
type: 'success'
});
return
}
//对种植面积里的值做判断
if (this.dataForm.plantingArea <= 0) {
this.$notify.info({
title: '提示',
message: '总种植面积(亩次)不能为0',
type: 'success'
});
return
}
this.$http({
url: `/pesticide/farmers/${!this.dataForm.id ? 'save' : 'update'}`,
method: 'post',
data: this.dataForm
}).then(({ data }) => {
if (data && data.code === 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500
})
// this.visible = false
// this.$emit('refreshDataList')
// this.$router.back(-1)
this.$router.push({
name: 'pesticide-farmers'
})
}
})
}
})
}
}
}
</script>
<style scoped>
.fullS {
/* background-color: azure; */
/* background: black; */
/* width: 100%; */
/* height: auto; */
}
</style>