【uniapp 篇 】动态添加 表单,所添加元素展示在同一行
动态添加 表单,所添加元素展示在同一行
1 <uni-forms labelWidth="68px"> 2 3 <uni-forms-item v-for="(item,index) in baseFormData.dynamicTable.timeField.array" 4 :key="item.id" :label="item.label" 5 :name="['timeFields',index,'value']"> 6 <view class="form-item"> 7 <uni-easyinput v-model="baseFormData.dynamicTable.timeField.array[index].field" 8 placeholder="请输入时间字段" /> 9 <uni-data-picker v-model="baseFormData.dynamicTable.timeField.array[index].opt" 10 :localdata="opts" popup-title="选取连接方式" 11 :ellipsis="false" style="width: 80px; flex: none;"></uni-data-picker> 12 <uni-data-picker v-model="baseFormData.dynamicTable.timeField.array[index].time" 13 :localdata="paramTimeList" @change="paramTimeListChange($event, index)" 14 popup-title="选取时间点" :ellipsis="false"></uni-data-picker> 15 <uni-number-box :min="1" :max="1000" 16 v-model="baseFormData.dynamicTable.timeField.array[index].second" 17 style="float: left;" :color="numberBoxProps.paramTimes[index].color" 18 :disabled="numberBoxProps.paramTimes[index].disabled" width="60" /> 19 <button class="button" size="mini" type="default" 20 @click="delDynamicTableTimeFields(item.id)">删除</button> 21 </view> 22 </uni-forms-item> 23 </uni-forms> 24 <view class="button-group"> 25 <button type="primary" size="default" @click="addDynamicTableTimeField">新增时间</button> 27 </view>
1 <script> 2 3 export default { 4 5 data() { 6 return { 7 // 基础表单数据 8 baseFormData: { 9 dynamicTable: { 10 timeField: { 11 array: [] 12 } 13 }, 14 paramTimes:[] 15 }, 16 numberBoxProps: { 17 paramTimes: [] 18 }, 19 opts:{[ 20 {text: '>', value: 10}, 21 {text: '<', value: 20}, 22 {text: '>=', value: 30}, 23 {text: '<=', value: 40}, 24 {text: '!=', value: 50} 25 ]}, 26 paramTimeList:{[ 27 {text: '执行当下 now', value: 10}, 28 {text: '今日 凌晨', value: 20}, 29 {text: 'n日前 凌晨', value: 30}, 30 {text: '本周初 凌晨', value: 40}, 31 {text: 'n周初 凌晨', value: 50}, 32 {text: '本季度初 凌晨', value: 60}, 33 {text: 'n季度初 凌晨', value: 70}, 34 {text: '本月初 凌晨', value: 80}, 35 {text: 'n月初 凌晨', value: 90}, 36 {text: '本年初 凌晨', value: 100}, 37 {text: 'n年初 凌晨', value: 110} 38 ]} 39 } 40 }, 41 methods: { 42 addDynamicTableTimeField() { 43 // 添加字段输入框 44 this.baseFormData.dynamicTable.timeField.array.push({ 45 label: '时间字段', 46 value: '', 47 opt: 0, 48 time: 0, 49 field: '', 50 second: 0, 51 rules: [{ 52 'required': true, 53 errorMessage: '域名项必填' 54 }], 55 id: Date.now() 56 }); 57 // 添加数字输入框 58 this.numberBoxProps.paramTimes.push({ 59 color: "#fff", 60 disabled: true 61 }) 62 }, 63 // 取值的时间限制范围 64 paramTimeListChange(e, index) { 65 const selectVal = e.detail.value[0].value 66 this.paramTimeStyleChange(selectVal, index) 67 }, 68 paramTimeStyleChange(selectVal, index){ 69 console.log("selectVal:", selectVal) 70 console.log("index:", index) 71 // 动态增加的 "时间字段" 72 if (selectVal == 30 || selectVal == 50 || selectVal == 70 || selectVal == 90 || selectVal == 110) { 73 // 选中了 “取指定数量” ,需要指定数量 74 this.numberBoxProps.paramTimes[index].color = "#000" 75 this.numberBoxProps.paramTimes[index].disabled = false 76 this.baseFormData.paramTimes[index].time = selectVal 77 } else { 78 this.numberBoxProps.paramTimes[index].color = "#fff" 79 this.numberBoxProps.paramTimes[index].disabled = true 80 } 81 }, 82 } 83 } 84 85 </script>