You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.9 KiB
59 lines
1.9 KiB
import yfieldsControls from "../yfieldsControls"
|
|
|
|
Component({
|
|
properties: {
|
|
rules: Object,
|
|
bindsubmit:String
|
|
},
|
|
data: {
|
|
form: {} as any,
|
|
label: {} as any
|
|
},
|
|
relations: {
|
|
'../yfieldsControls': {
|
|
type: 'descendant', // 关联的目标节点应为子节点
|
|
target: yfieldsControls,
|
|
linked: function (target) {
|
|
this.setData({ form: Object.assign(this.data.form, target.dataset) })
|
|
let label = {} as any
|
|
const labelName = Object.keys(target.dataset)[0]
|
|
const laeblValue = target.data.label
|
|
label[labelName] = laeblValue
|
|
this.setData({ label: Object.assign(this.data.label, label) })
|
|
}
|
|
}
|
|
},
|
|
methods: {
|
|
validate: function () {
|
|
for (const key in this.data.rules) {
|
|
// 判断form表单中是否存在这个数据
|
|
if (!(key in this.data.form)) { return false; }
|
|
const formValue = (this.data.form as any)[key]
|
|
// 判断这个数据是否是required
|
|
if (this.data.rules[key].require.value) {
|
|
if (formValue == '') {
|
|
const errMsg = this.data.rules[key].require.errMsg || `${this.data.label[key]}不能为空`
|
|
wx.showToast({ title: errMsg, icon: "none" })
|
|
return false
|
|
}
|
|
}
|
|
// 判断这个数据的其他正则
|
|
if (this.data.rules[key].re) {
|
|
const re = new RegExp(this.data.rules[key].re.value)
|
|
if (!re.test(formValue)) {
|
|
const errMsg = this.data.rules[key].re.errMsg || this.data.label[key] + "匹配规则失败,未配置规则错误提示"
|
|
wx.showToast({ title: errMsg, icon: "none" })
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
},
|
|
onSubmit: function () {
|
|
console.log("ddddd")
|
|
if (!this.validate()) return;
|
|
this.triggerEvent("onSubmit",this.data.form,{})
|
|
},
|
|
|
|
},
|
|
}) |