UNPKG

yylib-quick-mobile

Version:

yylib-quick-mobile

152 lines (150 loc) 5.8 kB
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;