weaver_trunk_cli/pc4mobx/hrm/stores/domain/form.js

59 lines
1.0 KiB
JavaScript

import {
observable,
action,
} from 'mobx';
import {
WeaForm
} from 'comsMobx';
export default class FormStore {
constructor(api) {
this.api = api;
}
@observable form = new WeaForm();
@observable loading = false;
@action fetchForm = (params = {},callback) => {
this.loading = true;
this.form = new WeaForm();
return this.api.fetchForm(params).then(datas => {
const conditions = this.getCondition(datas);
this.form.setCondition(conditions);
this.loading = false;
callback && callback(datas);
})
}
validateForm = (form) => {
return new Promise( (resolve,reject) => {
form.validateForm().then(f => {
if (f.isValid) {
resolve(true);
} else {
f.showErrors();
resolve(false);
}
})
})
}
getCondition=(datas)=>{
let c = [];
Object.keys(datas).forEach(key=>{
if (key.includes('condition')) {
c = datas[key];
}
})
return c;
}
setFormConfig = (config)=>{
Object.keys(config).forEach(key=>{
this[key] = config[key];
})
return this;
}
}