// components/l-form/index.js import { areaList } from "../../utils/util"; Component({ attached () { this._init(); }, pageLifetimes: { show () { this._init() } }, properties: { formData: { type: Array, value: [] }, }, /** * 组件的初始数据 */ data: { areaList,//地址列表 show: true,//控制地址 areaindex: 0,//区分地址所在数据位置 arealist: [],//储存不同地址选项 // 默认提交 Success (data) { console.log(data) } }, /** * 组件的方法列表 */ methods: { // 定义调用组件的js方法 _init () { wx.lxd = wx.lxd || {}, wx.lxd.Form = e => { this.setData({ // 页面传参 ...e, }) } }, // 数据双向绑定 input (e) { let { detail } = e, { item, index } = e.currentTarget.dataset, { formData } = this.data; item["value"] = detail; formData[index] = item; this.setData({ formData }) }, // 挑选地址 choose (e) { let { name, index } = e.currentTarget.dataset; this.setData({ show: false, area: name, areaindex: index }) }, // area完成 areaconfirm (e) { this.areafunc(e); }, // area取消 areacancel (e) { this.areafunc(e); }, // area改变 areachange (e) { this.areafunc(e, true); }, // area 共同执行 areafunc (e, boolean) { let { values } = e.detail, addresss = '', { formData } = this.data, { index } = e.currentTarget.dataset; values.forEach(item => { !!item ? addresss += item.name + " " : '' }) formData[index]["value"] = addresss; formData[index]["values"] = values; this.setData({ formData, show: boolean ? false : true }) }, // 复选框 onChange (e) { let { item, index } = e.currentTarget.dataset, { formData } = this.data, { detail } = e; item["value"] = detail; formData[index] = item; this.setData({ formData }) }, // 保存 submit () { let { formData } = this.data, lock = [], i = 0 //提交锁 ; formData.forEach((item, index) => { if (item.require) { i++; let reg = /\S/; item.err = false; switch (item.rule) { case 'tel': reg = /^1[34578]\d{9}$/; reg.test(item.value) ? lock.push(true) : item.err = true; break; case 'address': if (!item.values || !item.values[2] || item.values[2].code == '') { item.err = true; item.errmsg = "请正确选择地址" break; } lock.push(true); break default: reg.test(item.value) ? lock.push(true) : item.err = true; break; } } }) if (lock.length < i) { this.setData({ formData }) return false; } this.data.Success(formData); }, } })