优化逻辑

This commit is contained in:
weipengfei 2023-07-29 18:02:50 +08:00
parent bc6ef96146
commit 97a5a337e1

View File

@ -1,130 +1,125 @@
<template> <template>
<view class=""> <view class="">
<view class="title">种养殖</view> <view class="title">种养殖</view>
<block v-for="(item, index) in formData"> <u--form labelPosition="left" :model="formData" :rules="rules" ref="breedingForm">
<u--form labelPosition="left" :model="item" :rules="rules" ref="breedingForm"> <u-form-item labelWidth="auto" label="耕地总面积" required prop="cultivated_area" borderBottom>
<u-form-item labelWidth="auto" label="耕地总面积" required prop="cultivated_area" borderBottom> <u--input v-model="formData.cultivated_area" placeholder="请输入耕地总面积"></u--input>
<u--input v-model="item.cultivated_area" placeholder="请输入耕地总面积"></u--input> </u-form-item>
<picker :range="landPlanList" mode="selector" @change="changeLanPlan">
<u-form-item labelWidth="auto" label="土地规划" required prop="planning" borderBottom>
<u--input :value="landPlanList[formData.planning]" placeholder="请选择规划" disabled disabledColor="#fff"></u--input>
<u-icon slot="right" name="arrow-right"></u-icon>
</u-form-item> </u-form-item>
<picker :range="landPlanList" mode="selector" @change="changeLanPlan" :data-index="index"> </picker>
<u-form-item labelWidth="auto" label="土地规划" required prop="planning" borderBottom> <u-form-item labelWidth="auto" label="有无种养殖培训" required prop="breeding_training" borderBottom>
<u--input :value="landPlanList[item.planning]" placeholder="请选择规划" disabled disabledColor="#fff"></u--input> <u-radio-group v-model="formData.breeding_training" style="margin: 16rpx;">
<u-icon slot="right" name="arrow-right"></u-icon> <u-radio :customStyle="{marginRight: '16px'}"
</u-form-item> v-for="(item, index) in [{value:1,label:'有'},{value:0,label:'无'}]" :key="index" :label="item.label"
</picker> :name="item.value">
<u-form-item labelWidth="auto" label="有无种养殖培训" required prop="breeding_training" borderBottom> </u-radio>
<u-radio-group v-model="item.breeding_training" style="margin: 16rpx;"> </u-radio-group>
<u-radio :customStyle="{marginRight: '16px'}" </u-form-item>
v-for="(item, index) in [{value:1,label:'有'},{value:0,label:'无'}]" :key="index" :label="item.label" <u-form-item labelWidth="auto" label="有无注册成立种植公司" required prop="planting_company" borderBottom>
:name="item.value"> <u-radio-group v-model="formData.planting_company" style="margin: 16rpx;">
</u-radio> <u-radio :customStyle="{marginRight: '16px'}"
</u-radio-group> v-for="(item, index) in [{value:1,label:'有'},{value:0,label:'无'}]" :key="index" :label="item.label"
:name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" labelPosition="top" label="备注" required prop="notes" borderBottom>
<u--textarea v-model="formData.notes" autoHeight placeholder="请输入备注" border="surround" count></u--textarea>
</u-form-item>
<u-form-item labelWidth="auto" label="种养殖类型" required prop="breeding_type" borderBottom>
<u--input v-model="formData.breeding_type" placeholder="请输入种养殖类型"></u--input>
</u-form-item>
<u-form-item labelWidth="auto" label="面积" required prop="area" borderBottom>
<u--input v-model="formData.area" placeholder="请输入面积"></u--input>
</u-form-item>
<picker mode="date" @change="changeDate" :data-value="'breeding_time'">
<u-form-item labelWidth="auto" label="种养殖开始时间" required prop="breeding_time" borderBottom>
<u--input :value="formData.breeding_time" placeholder="请选择种养殖开始时间" disabled disabledColor="#fff"></u--input>
<u-icon slot="right" name="arrow-right"></u-icon>
</u-form-item> </u-form-item>
<u-form-item labelWidth="auto" label="有无注册成立种植公司" required prop="planting_company" borderBottom> </picker>
<u-radio-group v-model="item.planting_company" style="margin: 16rpx;"> <picker mode="date" @change="changeDate" :data-value="'mature_time'">
<u-radio :customStyle="{marginRight: '16px'}" <u-form-item labelWidth="auto" label="上市时间" required prop="mature_time" borderBottom>
v-for="(item, index) in [{value:1,label:'有'},{value:0,label:'无'}]" :key="index" :label="item.label" <u--input :value="formData.mature_time" placeholder="请选择上市时间" disabled disabledColor="#fff"></u--input>
:name="item.value"> <u-icon slot="right" name="arrow-right"></u-icon>
</u-radio>
</u-radio-group>
</u-form-item> </u-form-item>
<u-form-item labelWidth="auto" labelPosition="top" label="备注" required prop="notes" borderBottom> </picker>
<u--textarea v-model="item.notes" autoHeight placeholder="请输入备注" border="surround" count></u--textarea> <u-form-item labelWidth="auto" label="产量" required prop="yield" borderBottom>
</u-form-item> <u--input v-model="formData.yield" placeholder="请输入产量"></u--input>
<u-form-item labelWidth="auto" label="种养殖类型" required prop="breeding_type" borderBottom> </u-form-item>
<u--input v-model="item.breeding_type" placeholder="请输入种养殖类型"></u--input> <u-form-item labelWidth="auto" label="预计收益" required prop="estimated_income" borderBottom>
</u-form-item> <u--input v-model="formData.estimated_income" placeholder="请输入预计收益"></u--input>
<u-form-item labelWidth="auto" label="面积" required prop="area" borderBottom> </u-form-item>
<u--input v-model="item.area" placeholder="请输入面积"></u--input> <u-form-item labelWidth="auto" labelPosition="top" label="农资农具收益情况" required prop="farm_tools" borderBottom>
</u-form-item> <u--textarea v-model="formData.farm_tools" autoHeight placeholder="请输入农资农具收益情况" border="surround"
<picker mode="date" @change="changeDate" :data-index="index" :data-value="'breeding_time'"> count></u--textarea>
<u-form-item labelWidth="auto" label="种养殖开始时间" required prop="breeding_time" borderBottom> </u-form-item>
<u--input :value="item.breeding_time" placeholder="请选择种养殖开始时间" disabled disabledColor="#fff"></u--input> <u-form-item labelWidth="auto" label="是否生态种养殖" required prop="ecological_farming" borderBottom>
<u-icon slot="right" name="arrow-right"></u-icon> <u-radio-group v-model="formData.ecological_farming" style="margin: 16rpx;">
</u-form-item> <u-radio :customStyle="{marginRight: '16px'}"
</picker> v-for="(item, index) in [{value:1,label:'是'},{value:0,label:'否'}]" :key="index" :label="item.label"
<picker mode="date" @change="changeDate" :data-index="index" :data-value="'mature_time'"> :name="item.value">
<u-form-item labelWidth="auto" label="上市时间" required prop="mature_time" borderBottom> </u-radio>
<u--input :value="item.mature_time" placeholder="请选择上市时间" disabled disabledColor="#fff"></u--input> </u-radio-group>
<u-icon slot="right" name="arrow-right"></u-icon> </u-form-item>
</u-form-item> <u-form-item labelWidth="auto" label="现代化程度" required prop="modernization" borderBottom>
</picker> <u--input v-model="formData.modernization" placeholder="请输入现代化程度"></u--input>
<u-form-item labelWidth="auto" label="产量" required prop="yield" borderBottom> </u-form-item>
<u--input v-model="item.yield" placeholder="请输入产量"></u--input> <u-form-item labelWidth="auto" label="预售卖价格" required prop="pre_price" borderBottom>
</u-form-item> <u--input v-model="formData.pre_price" placeholder="请输入预售卖价格"></u--input>
<u-form-item labelWidth="auto" label="预计收益" required prop="estimated_income" borderBottom> </u-form-item>
<u--input v-model="item.estimated_income" placeholder="请输入预计收益"></u--input> <u-form-item labelWidth="auto" label="销售方式" required prop="method_sales" borderBottom>
</u-form-item> <u-radio-group v-model="formData.method_sales" style="margin: 16rpx;">
<u-form-item labelWidth="auto" labelPosition="top" label="农资农具收益情况" required prop="farm_tools" borderBottom> <u-radio :customStyle="{marginRight: '16px'}"
<u--textarea v-model="item.farm_tools" autoHeight placeholder="请输入农资农具收益情况" border="surround" v-for="(item, index) in [{value:1,label:'自销'},{value:0,label:'定点销售'}]" :key="index" :label="item.label"
count></u--textarea> :name="item.value">
</u-form-item> </u-radio>
<u-form-item labelWidth="auto" label="是否生态种养殖" required prop="ecological_farming" borderBottom> </u-radio-group>
<u-radio-group v-model="item.ecological_farming" style="margin: 16rpx;"> </u-form-item>
<u-radio :customStyle="{marginRight: '16px'}" <u-form-item labelWidth="auto" label="有无加工仓储" required prop="processing_storage" borderBottom>
v-for="(item, index) in [{value:1,label:'是'},{value:0,label:'否'}]" :key="index" :label="item.label" <u-radio-group v-model="formData.processing_storage" style="margin: 16rpx;">
:name="item.value"> <u-radio :customStyle="{marginRight: '16px'}"
</u-radio> v-for="(item, index) in [{value:1,label:'有'},{value:0,label:'无'}]" :key="index" :label="item.label"
</u-radio-group> :name="item.value">
</u-form-item> </u-radio>
<u-form-item labelWidth="auto" label="现代化程度" required prop="modernization" borderBottom> </u-radio-group>
<u--input v-model="item.modernization" placeholder="请输入现代化程度"></u--input> </u-form-item>
</u-form-item> <u-form-item labelWidth="auto" label="有无宣传推广" required prop="promote" borderBottom>
<u-form-item labelWidth="auto" label="预售卖价格" required prop="pre_price" borderBottom> <u-radio-group v-model="formData.promote" style="margin: 16rpx;">
<u--input v-model="item.pre_price" placeholder="请输入预售卖价格"></u--input> <u-radio :customStyle="{marginRight: '16px'}"
</u-form-item> v-for="(item, index) in [{value:1,label:'有'},{value:0,label:'无'}]" :key="index" :label="item.label"
<u-form-item labelWidth="auto" label="销售方式" required prop="method_sales" borderBottom> :name="item.value">
<u-radio-group v-model="item.method_sales" style="margin: 16rpx;"> </u-radio>
<u-radio :customStyle="{marginRight: '16px'}" </u-radio-group>
v-for="(item, index) in [{value:1,label:'自销'},{value:0,label:'定点销售'}]" :key="index" :label="item.label" </u-form-item>
:name="item.value"> <u-form-item labelWidth="auto" label="有无运输" required prop="transportation" borderBottom>
</u-radio> <u-radio-group v-model="formData.transportation" style="margin: 16rpx;">
</u-radio-group> <u-radio :customStyle="{marginRight: '16px'}"
</u-form-item> v-for="(item, index) in [{value:1,label:'有'},{value:0,label:'无'}]" :key="index" :label="item.label"
<u-form-item labelWidth="auto" label="有无加工仓储" required prop="processing_storage" borderBottom> :name="item.value">
<u-radio-group v-model="item.processing_storage" style="margin: 16rpx;"> </u-radio>
<u-radio :customStyle="{marginRight: '16px'}" </u-radio-group>
v-for="(item, index) in [{value:1,label:'有'},{value:0,label:'无'}]" :key="index" :label="item.label" </u-form-item>
:name="item.value"> <u-form-item labelWidth="auto" label="是否有扩大经营需求" required prop="expand_business_needs" borderBottom>
</u-radio> <u-radio-group v-model="formData.expand_business_needs" style="margin: 16rpx;">
</u-radio-group> <u-radio :customStyle="{marginRight: '16px'}"
</u-form-item> v-for="(item, index) in [{value:1,label:'是'},{value:0,label:'否'}]" :key="index" :label="item.label"
<u-form-item labelWidth="auto" label="有无宣传推广" required prop="promote" borderBottom> :name="item.value">
<u-radio-group v-model="item.promote" style="margin: 16rpx;"> </u-radio>
<u-radio :customStyle="{marginRight: '16px'}" </u-radio-group>
v-for="(item, index) in [{value:1,label:'有'},{value:0,label:'无'}]" :key="index" :label="item.label" </u-form-item>
:name="item.value"> <u-form-item labelWidth="auto" labelPosition="top" label="种养殖需求描述" required prop="demand" borderBottom>
</u-radio> <u--textarea v-model="formData.demand" autoHeight placeholder="请输入种养殖需求描述" border="surround" count></u--textarea>
</u-radio-group> </u-form-item>
</u-form-item> <u-form-item labelWidth="auto" labelPosition="top" label="政策补助" required prop="policy_subsidies" borderBottom>
<u-form-item labelWidth="auto" label="有无运输" required prop="transportation" borderBottom> <u--textarea v-model="formData.policy_subsidies" autoHeight placeholder="请输入政策补助" border="surround"
<u-radio-group v-model="item.transportation" style="margin: 16rpx;"> count></u--textarea>
<u-radio :customStyle="{marginRight: '16px'}" </u-form-item>
v-for="(item, index) in [{value:1,label:'有'},{value:0,label:'无'}]" :key="index" :label="item.label" </u--form>
:name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" label="是否有扩大经营需求" required prop="expand_business_needs" borderBottom>
<u-radio-group v-model="item.expand_business_needs" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:1,label:'是'},{value:0,label:'否'}]" :key="index" :label="item.label"
:name="item.value">
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item labelWidth="auto" labelPosition="top" label="种养殖需求描述" required prop="demand" borderBottom>
<u--textarea v-model="item.demand" autoHeight placeholder="请输入种养殖需求描述" border="surround" count></u--textarea>
</u-form-item>
<u-form-item labelWidth="auto" labelPosition="top" label="政策补助" required prop="policy_subsidies" borderBottom>
<u--textarea v-model="item.policy_subsidies" autoHeight placeholder="请输入政策补助" border="surround"
count></u--textarea>
</u-form-item>
<button type="primary" v-if="formData.length>1" class="delete"
@click="removeBreedingList(index)">删除以上种养殖信息</button>
</u--form>
</block>
<button type="primary" class="plus" @click="pushBreedingList">+</button>
</view> </view>
</template> </template>
@ -134,9 +129,7 @@
data() { data() {
return { return {
landPlanList: ['自己种养', '出租', '代种养', '租更多地扩大种植'], landPlanList: ['自己种养', '出租', '代种养', '租更多地扩大种植'],
formData: [{ formData: {
"category_id": "1",
"category_child": "0",
"cultivated_area": "20", // "cultivated_area": "20", //
"planning": 66, // "planning": 66, //
"breeding_training": 1, // "breeding_training": 1, //
@ -159,7 +152,7 @@
"expand_business_needs": 0, // "expand_business_needs": 0, //
"demand": "没有述求", // "demand": "没有述求", //
"policy_subsidies": "无补助" // "policy_subsidies": "无补助" //
}], },
rules: { rules: {
} }
@ -171,13 +164,11 @@
methods: { methods: {
// //
initRules(){ initRules(){
let arr = Object.keys(this.formData[0]); let arr = Object.keys(this.formData);
arr.forEach(key=>{ arr.forEach(key=>{
this.rules[key] = { this.rules[key] = {
validator: (rule, value, callback )=>{ validator: (rule, value, callback )=>{
if(Array.isArray(this.$refs.breedingForm)) for(let i = 0;i<this.$refs.breedingForm.length;i++){ this.$refs.breedingForm.clearValidate(rule.field);
this.$refs.breedingForm[i].clearValidate(rule.field);
}
value.trim()!==''?callback():callback('不能为空'); value.trim()!==''?callback():callback('不能为空');
}, },
trigger: ['change', 'blur'] trigger: ['change', 'blur']
@ -186,66 +177,17 @@
}, },
// //
async validate(){ async validate(){
let flag = true; return await this.$refs.breedingForm.validate();
if(Array.isArray(this.$refs.breedingForm)) for(let i = 0;i<this.$refs.breedingForm.length;i++){
let res = await this.$refs.breedingForm[i].validate();
if(!res) {
flag = false;
break;
}
}
return flag;
}, },
// //
changeLanPlan(e) { changeLanPlan(e) {
let index = e.currentTarget.dataset.index; let index = e.currentTarget.dataset.index;
this.formData[index].planning = e.detail.value; this.formData.planning = e.detail.value;
}, },
// //
changeDate(e){ changeDate(e){
let data = e.currentTarget.dataset; let data = e.currentTarget.dataset;
this.formData[data.index][data.value] = e.detail.value; this.formData[data.value] = e.detail.value;
},
//
pushBreedingList() {
this.formData.push({
"category_id": "",
"category_child": "",
"cultivated_area": "", //
"planning": "", //
"breeding_training": "", //
"planting_company": "", //
"notes": "", //
"breeding_type": "", //
"area": "", //
"breeding_time": "", //
"mature_time": "", //
"yield": "", //
"estimated_income": "", //
"farm_tools": "", //使
"ecological_farming": "", //
"modernization": "", //
"pre_price": "", //
"method_sales": "", //
"processing_storage": "", //
"promote": "", //广
"transportation": "", //
"expand_business_needs": "", //
"demand": "", //
"policy_subsidies": "" //
})
},
//
removeBreedingList(index) {
uni.showModal({
confirmColor: '#f56c6c',
content: '确定删除吗?',
success: (res) => {
if (res.confirm) {
this.formData.splice(index, 1);
}
}
})
}, },
}, },
} }