yylib-quick-mobile
Version:
yylib-quick-mobile
152 lines (150 loc) • 5.8 kB
JavaScript
var React = require('react');
var {YYMessage, YYModal} = require('../../index');
var _ = require('lodash');
var ajax = require('../../utils/ajax');
var formatUtils = require('../../utils/formatUtils');
var EsStore = require('./api.esstore');
var ApiForm = {};
/**
* 多表单验证
* @param page //页面对象
* @param options{
* formKeys:[]//需要进行验证的表单键值集合
* success:null //所有表单都验证通过时触发的回调
* error:null //当任意一个表单验证不通过时触发的回调
* }
*/
ApiForm.validateForms=function(page,options){
var {formKeys,index,formValues,formErrors,success,error} = _.assign({formKeys:[],index:0,formValues:{},formErrors:{},success:null,error:null},options);
var formKey = formKeys[index];
var form = page.findUI(formKey);
if(form&&form.api&&form.api.validateFields){
form.api.validateFieldsAndScroll((errors,values) => {
formErrors[formKey] = errors;
formValues[formKey] = values;
if (!!errors) {//验证失败
if(_.isFunction(error)){
error({formErrors,formValues,formKey,index});
}
return;
} else {//验证通过
if(formKeys.length==index+1){
if(_.isFunction(success)){
success({formValues});
}
}else{
ApiForm.validateForms(page,_.assign(options,{formValues:formValues,formErrors:formErrors,index:index+1}));
}
}
});
}
};
//表单数据的保存
ApiForm.saveData=function(page,options){
var {storeKey} = options;
//获取所有表单
var allForms = page.findUIByType('FormWidget');
if(!_.isArray(allForms)||allForms.length==0)return;
var formKeys = [];
_.forEach(allForms,function(form,index){
formKeys.push(form.uikey);
});
//多表单验证
ApiForm.validateForms(page,{formKeys:formKeys,success:function(options){
var allFormValues = {};
//多表单处理
_.forEach(options.formValues,function(values,formKey) {
if(!_.isEmpty(values)){
var inputValues = {};
_.forEach(values,function(val,fieldKey){
if(val!==undefined){//排除undefined字段
if(val instanceof Date){//处理日期字段
var dateField = page.findUI(fieldKey);
inputValues[fieldKey] = formatUtils.formatDate(val,dateField.format?dateField.format:'yyyy-MM-dd');
}else{
inputValues[fieldKey]=val;
}
}
});
allFormValues[formKey] = inputValues;
}
});
// 获取所有编辑表格
var allEditTable = page.findUIByType('EditTableWidget');
var allEditTableValues = {};
// 编辑表格数据处理
for(let editTableIndex=0;editTableIndex<allEditTable.length;editTableIndex++){
let editTable = allEditTable[editTableIndex];
if (editTable && editTable.api) {
allEditTableValues[editTable.uikey] = editTable.api.getRowData({clearDel:true});
let editTableErrors = editTable.api.validate();
if(editTableErrors!==true){
YYMessage.error("请检查["+editTable.uititle+"]数据内容是否正确!");
return;
}
}
};
var formData = _.assign({},allFormValues,allEditTableValues);
console.log('提交表单数据:',formData);
var storeName = page.getAppCode().toLowerCase()+"_"+storeKey;
EsStore.save({
index:storeName,
type:storeName,
data:formData,
success:function(result){
//console.log('formSave-->result--->',result);
for(var i=0;i<allForms.length;i++){
var form = allForms[i];
for(var ii=0;ii<form.children.length;ii++){
var formitem = form.children[ii];
if(formitem.uikey=="id"){
form.api.setFieldsValue({id:result.backData.id});
return;
}
};
};
},
error:function(){
}
})
}});
};
//表单数据的删除
ApiForm.deleteData = function (page, options) {
var {storeKey} = options;
//获取所有表单
var allForms = page.findUIByType('FormWidget');
var deleteId ='';
for(var i=0;i<allForms.length;i++){
var form = allForms[i];
var formValues = form.api.getFieldsValue();
if(formValues.id){
deleteId = formValues.id;
break;
}
}
if (!deleteId) {
YYMessage.warning("当前没有可删除数据");
return;
}
var storeName = page.getAppCode().toLowerCase()+"_"+storeKey;
YYModal.confirm({
title: "删除确认",
content: "您是否确认要删除该条数据?",
onOk:function(){
//_this.pageLoading(page);
EsStore.deleteOne({
index:storeName,
type:storeName,
id:deleteId,
success:function(result){
page.goBack();
},
error:function(){
}
});
},
onCancel:()=>{}
});
};
module.exports=ApiForm;