EP-WachatApp/eaterplanet_ecommerce/components/s-form/index.js

345 lines
9.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import WxValidate from '../../utils/WxValidate.js';
Component({
/**
* 组件的属性列表
*/
properties: {
formData: {
type: Object,
value: {}
}
},
/**
* 组件的初始数据
*/
data: {
form: {},
formList: [],
dateParams: {
year: true,
month: true,
day: true,
hour: false,
minute: false,
second: false
},
rules: {},
time: "12:00",
},
attached() {
let formList = this.data.formData.form_list || [];
let form = {};
let fileList = [];
let rules = {};
let messages = {};
Object.keys(formList).length && Object.keys(formList).forEach((index) => {
let item = formList[index];
let formKey = item.type + '_' + item.random_code;
form[formKey] = '';
fileList.push([]);
let message = "请填写正确的" + item.title;
if(item.type=='image') {
message = "请上传"+item.title;
}
if(item.type=='select') {
item.index = -1;
message = "请选择"+item.title;
}
if(item.type=='area') {
item.region = [ item.province_id, item.city_id, item.country_id];
form[formKey] = item.region.join(",");
message = "请选择"+item.title;
}
if(item.type=='date') {
if(item.date_type=="appoint_date") {
item.default_time = item.appoint_date;
form[formKey] = item.appoint_date;
} else if(item.date_type=="same_day") {
item.default_time = new Date().toLocaleDateString();
form[formKey] = item.default_time;
}
message = "请选择"+item.title;
}
if(item.type=='date_range') {
if(item.begin_date_type=="appoint_date") {
item.default_begin_date = item.begin_appoint_date;
} else if(item.begin_date_type=="same_day") {
let cur_date = this.getDate();
item.default_begin_date = cur_date;
}
if(item.end_date_type=="appoint_date") {
item.default_end_date = item.end_appoint_date;
} else if(item.end_date_type=="same_day") {
let cur_date = this.getDate();
item.default_end_date = cur_date;
}
if(item.default_begin_date&&item.default_end_date) {
form[formKey] = item.default_begin_date+'~'+item.default_end_date;
}
item.pickerConfig = {
endDate: true,
column: "day",
dateLimit: true,
initStartTime: item.default_begin_date,
initEndTime: item.default_end_date,
limitStartTime: "2015-05-06",
limitEndTime: "2065-05-06"
}
message = "请选择"+item.title;
}
if(item.type=='time') {
let myDate = new Date();
if(item.time_type=="appoint_time") {
item.default_time = item.appoint_time;
form[item.type+'_'+item.random_code] = item.appoint_time;
} else if(item.time_type=="same_time") {
item.default_time = myDate.getHours()+':'+myDate.getMinutes()+':'+myDate.getSeconds();
form[item.type+'_'+item.random_code] = item.default_time;
}
message = "请选择"+item.title;
}
if(item.type=='time_range') {
let myDate = new Date();
item.beginTime = "";
item.endTime = "";
if(item.begin_time_type=="appoint_time") {
item.beginTime = item.begin_appoint_time;
} else if(item.begin_time_type=="same_time") {
item.beginTime = myDate.getHours()+':'+myDate.getMinutes()+':'+myDate.getSeconds();
}
if(item.end_time_type=="appoint_time") {
item.endTime = item.end_appoint_time;
} else if(item.end_time_type=="same_time") {
let timestamp = Date.parse(new Date());
let nextDate = new Date(timestamp+1000);
item.endTime = nextDate.getHours()+':'+nextDate.getMinutes()+':'+nextDate.getSeconds();
}
if(item.beginTime&&item.endTime) form[item.type+'_'+item.random_code] = item.beginTime+'~'+item.endTime;
message = "请选择"+item.title;
}
//手机格式验证
if(item.type=='telephone'&&item.required==1) {
rules[formKey] = {
required: Boolean(item.required),
tel: true
}
messages[formKey] = {
required: message,
tel: message
}
} else if (item.type=='idcard'&&item.required==1) {
rules[formKey] = {
required: Boolean(item.required),
idcard: true
}
messages[formKey] = {
required: message,
idcard: message
}
} else {
rules[formKey] = {
required: Boolean(item.required)
}
messages[formKey] = {
required: message
}
}
item.show = false;
})
this.setData({
form,
formList,
fileList,
formList,
rules
})
console.log(rules)
this.WxValidate = new WxValidate(rules, messages)
},
/**
* 组件的方法列表
*/
methods: {
getDate() {
let myDate = new Date();
let y = myDate.getFullYear();
let m = myDate.getMonth()+1;
let d = myDate.getDate();
m = m>10?m:'0'+m;
d = d>10?d:'0'+d;
return y+'-'+m+'-'+d;
},
changeImg: function (e) {
// console.log(e.detail)
let key = e.detail.key;
let form = this.data.form;
form[key] = e.detail.value.join(",");
this.setData({
form
})
},
bindPickerChange(e) {
// console.log(e)
let idx = e.currentTarget.dataset.idx || "";
let value = e.detail.value;
let { form, formList } = this.data;
let item = formList[idx];
let key = item.type+'_'+item.random_code;
item.index = value;
formList[idx] = item;
form[key] = item.option_val[value];
this.setData({
form,
formList
})
},
radioChange(e) {
// console.log(e)
let key = e.currentTarget.dataset.idx || "";
let value = e.detail.value;
let form = this.data.form;
form[key] = value;
// console.log(form)
this.setData({
form
})
},
checkboxChange(e) {
// console.log(e)
let key = e.currentTarget.dataset.idx || "";
let value = e.detail.value;
let form = this.data.form;
form[key] = value.join(",");
// console.log(form)
this.setData({
form
})
},
bindRegionChange(e) {
// console.log(e)
let idx = e.currentTarget.dataset.idx || "";
let value = e.detail.value;
let { form, formList } = this.data;
let item = formList[idx];
let key = item.type+'_'+item.random_code;
item.region = value;
formList[idx] = item;
form[key] = value.join(",");
this.setData({
form,
formList
})
},
bindDateChange(e) {
// console.log(e)
let key = e.currentTarget.dataset.idx || "";
let form = this.data.form;
form[key] = e.detail.value;
// console.log(form)
this.setData({
form
})
},
bindKeyInput(e) {
// console.log(e)
let key = e.currentTarget.dataset.idx || "";
let form = this.data.form;
form[key] = e.detail.value;
// console.log(form)
this.setData({
form
})
},
showDateRange(e) {
let idx = e.currentTarget.dataset.idx || "";
let formList = this.data.formList;
formList[idx].show = !formList[idx].show;
this.setData({
formList
})
},
pickerHide(e) {
// console.log(e)
let idx = e.currentTarget.dataset.idx || "";
let formList = this.data.formList;
formList[idx].show = !formList[idx].show;
this.setData({
formList
})
},
setPickerTime(e) {
// console.log(e)
let key = e.currentTarget.id || "";
let form = this.data.form;
let startTime = e.detail.startTime.slice(0, -9);
let endTime = e.detail.endTime.slice(0, -9);
form[key] = startTime + '~' + endTime;
this.setData({
form
})
},
showTimeRange(e) {
let idx = e.currentTarget.dataset.idx || "";
let formList = this.data.formList;
formList[idx].show = !formList[idx].show;
this.setData({
formList
})
},
timeRangeConfirm(e) {
// console.log(e)
let idx = e.currentTarget.dataset.idx || "";
let value = e.detail.time;
let { form, formList } = this.data;
let item = formList[idx];
let key = item.type+'_'+item.random_code;
item.show = false;
formList[idx] = item;
form[key] = value;
this.setData({
form,
formList
})
},
formSubmit(e) {
const form = this.data.form
console.log('form发生了submit事件携带数据为', form)
//校验表单
if (!this.WxValidate.checkForm(form)) {
const error = this.WxValidate.errorList[0];
wx.showToast({
title: error.msg,
icon: "none"
})
return false;
} else {
console.log('验证成功');
let {formData, form, formList} = this.data;
let allform_list = [];
formList.forEach(item=>{
let params = {
title: item.title,
type: item.type,
item_value: form[item.type+'_'+item.random_code],
random_code: item.random_code
}
allform_list.push(params);
})
console.log(allform_list);
let formParams = {
allform_id: formData.order_allform_id,
allform_list: JSON.stringify(allform_list)
};
this.triggerEvent('success', formParams)
}
}
}
})