yylib-quick-mobile
Version:
yylib-quick-mobile
1,348 lines (1,262 loc) • 50.2 kB
JavaScript
'use strict';
var _modal = require('antd-mobile/lib/modal');
var _modal2 = _interopRequireDefault(_modal);
var _toast = require('antd-mobile/lib/toast');
var _toast2 = _interopRequireDefault(_toast);
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
require('antd-mobile/lib/modal/style/css');
require('antd-mobile/lib/toast/style/css');
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var assign = require('lodash/assign');
var ADDR = window.EnvConfig.ADDR;
var YYMessage = _toast2.default;
var PubConstants = {
COM_BPM_MODAL: 'YYBpmModal',
COM_PROCESS_LIST: 'YYProcessList',
COMP_ACCORDION: "YYAccordion",
COMP_ACCORDION2: "YYPanel",
COMP_FORM: 'YYFormDev',
COMP_AUDIT_FORM: 'CPAuditInfo',
COMP_BPM_SUBMIT: 'CPBpmSubmit',
COM_SUBMIT_BTN: 'YYApproveSubmitBtn',
COMP_BPM_SUBMIT2: 'BpmSubmitWidget',
COMP_BPM_APPROVE: 'CPBpmApprove',
COMP_BPM_APPROVE2: 'BpmApproveWidget',
SAVE_BTN_KEY: "saveBtn",
TEM_BTN_KEY: "temBtn",
PK_FIELD: "primaryKey",
TS_FIELD: "ts",
BILL_TYPE_FIELD: "billType",
BILL_TYPE_NAME_FIELD: "billName",
BILL_STATE_FIELD: "billState",
BILL_CODE_FIELD: "billCode",
ATTACH_MGR_FIELD: "attachMgr",
CARD_TO_LIST: "cardToList",
ATTACH_UPLOAD_FIELD: "attachObjs",
DEFAULT_PK_FIELD_VALUE: "id",
DEFAULT_DATE_FORMAT: "yyyy-MM-dd HH:mm:ss",
DEFAULT_ORG_FIELD: "companyId",
BILL_STATE: {
STORAGE: -1,
FREE: 0,
COMMIT: 1,
APPROVING: 2,
APPROVED: 3,
UNAPPROVED: 4,
APPROVED2: 5 }
};
var formatDate = function formatDate(date, format) {
if (date === undefined || date === null || !(date instanceof Date)) {
return date;
}
var o = {
"M+": date.getMonth() + 1,
"d+": date.getDate(),
"(H|h)+": date.getHours(),
"m+": date.getMinutes(),
"s+": date.getSeconds(),
"q+": Math.floor((date.getMonth() + 3) / 3),
"S": date.getMilliseconds()
};
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
}
}
return format;
};
var ajax = window.YYUtils.Ajax;
var AuthToken = window.YYUtils.AuthToken;
var CardEventHandler = {};
CardEventHandler.init = function (page, urls, options) {
if (!urls) {
console.error("卡片界面初始化失败,urls未定义");
return;
}
var _this = this;
this.getRepeaterApi(page);
var _ref = options || {},
autoLoadData = _ref.autoLoadData,
autoRenderOperate = _ref.autoRenderOperate,
setDefaultData = _ref.setDefaultData,
beforeSetData = _ref.beforeSetData,
beforeFormSetData = _ref.beforeFormSetData,
beforeFormSaveData = _ref.beforeFormSaveData,
beforeSetRepeaterData = _ref.beforeSetRepeaterData,
beforeGetRepeaterData = _ref.beforeGetRepeaterData,
clearAttachIds = _ref.clearAttachIds,
callback = _ref.callback;
this.urls = urls;
this.setDefaultData = setDefaultData;
this.beforeSetData = beforeSetData;
this.clearAttachIds = clearAttachIds;
this.beforeFormSetData = beforeFormSetData;
this.beforeFormSaveData = beforeFormSaveData;
this.beforeSetRepeaterData = beforeSetRepeaterData;
this.beforeGetRepeaterData = beforeGetRepeaterData;
var forms = this.getForms(page, true);
if (forms.length) {
var form = forms[0];
this.offline = form && form.api && form.api.props && form.api.props.offline;
}
if (autoRenderOperate != false) {}
if (autoLoadData != false) {
var routeParams = page.getRouteQuery() || page.getRouteParams();
if (routeParams && !_lodash2.default.isEmpty(routeParams)) {
var primaryField = this.getPrimaryField(page);
if (routeParams[primaryField]) {
this.queryDetail(page, { params: routeParams, callback: callback });
} else if (this.offline && routeParams['billId']) {
this.saveDataBillId = routeParams['billId'];
this.queryDetail(page, { params: routeParams, callback: callback });
} else {
CardEventHandler.getInitBillId(page);
this.refresh(page, setDefaultData);
}
} else {
CardEventHandler.getInitBillId(page);
this.refresh(page, setDefaultData);
}
} else {
CardEventHandler.getInitBillId(page);
this.refresh(page, setDefaultData);
}
};
CardEventHandler.getInitBillId = function (page) {
var imgs = page.findUIByType('YYImagePicker');
if (this.offline) {
this.saveDataBillId = '';
this.initbillId = '';
CardEventHandler.getUUid(function (billId) {
_this.initbillId = billId;
});
}
};
CardEventHandler.getAllRepeater = function (page) {
var repeaterList = page.findUIByType("YYRepeater");
if (repeaterList && repeaterList.length) {
return repeaterList;
} else {
return [];
}
};
CardEventHandler.getRepeaterApi = function (page) {
var repeaterList = this.getAllRepeater(page);
repeaterList.map(function (repeater, index) {
repeater.useCrud = true;
});
};
CardEventHandler.setAllRepeaterData = function (page, data) {
var repeater = this.getAllRepeater(page);
var _this = this;
repeater.map(function (item, index) {
var repeaterItem = page.findUI(item.uikey);
if (data[item.uikey] && data[item.uikey].length) {
if (_lodash2.default.isFunction(_this.beforeFormSetData)) {
var returnData = _this.beforeFormSetData(repeaterItem.uikey, data[item.uikey]);
if (returnData) {
repeaterItem.beforeData = returnData;
data[item.uikey].map(function (child, index) {
child = Object.assign({}, returnData, child);
});
}
repeaterItem.api.setData(data[item.uikey]);
} else {
repeaterItem.api.setData(data[item.uikey]);
}
}
});
};
CardEventHandler.getAllRepeaterData = function (page) {
var repeater = this.getAllRepeater(page);
var data = {};
var _this = this;
repeater.map(function (item, index) {
var repeaterItem = page.findUI(item.uikey);
data[item.uikey] = repeaterItem.api.getData();
data[item.uikey].map(function (item, index) {
for (var key in item) {
if (item[key] instanceof Date) {
item[key] = formatDate(item[key], "yyyy-MM-dd HH:mm:ss");
}
if (item[key] instanceof Array) {
item[key] = item[key].join(',');
}
}
});
});
return data;
};
CardEventHandler.getFormControlKey = function (obj) {
var key;
if (obj) {
for (var item in obj) {
if (obj[item].uitype == "YYFormDev") {
key = item;
break;
}
}
}
return key;
};
CardEventHandler.isLocalEnv = function () {
return !window.top.getAuthorityButtons || !_lodash2.default.isFunction(window.top.getAuthorityButtons);
};
CardEventHandler.onListClick = function (page) {
CardEventHandler.reloadData(page);
};
CardEventHandler.save = function (page) {
var form = page.findUI("YYFormDev");
form.api.validateFields(function (error, values) {
if (error) {
_toast2.default.info("请输入必填项!", 1);
return;
} else {
CardEventHandler.saveData(page);
}
});
};
CardEventHandler.tempSave = function (page) {
CardEventHandler.saveTempData(page);
};
CardEventHandler.API = {
"YYButton2": {
"onClick": function onClick() {
alert(JSON.stringify(this.findUI("ExtensionEntity").api.getData()));
}
},
"saveBtn": {
onClick: function onClick(options) {
CardEventHandler.save(this);
}
},
"temBtn": {
onClick: function onClick(options) {
CardEventHandler.tempSave(this);
}
},
"YYApproveNavBar": {
onLeftClick: function onClick() {
var primaryKey = CardEventHandler.getPrimaryKey(this);
var _this = this;
if (!primaryKey) {
_modal2.default.alert("确认", "当前界面数据未保存,是否确定返回?", [{
text: '确认',
onPress: function onOk() {
CardEventHandler.goBack(_this);
}
}, { text: '取消' }]);
} else {
CardEventHandler.goBack(this);
}
},
onSelect: function onSelect(options) {
if (options) {
CardEventHandler.reloadData(this);
}
}
},
'YYApproveSubmitBtn': {
onlistClick: function onlistClick() {
CardEventHandler.onListClick(this);
},
onBeforeClick: function onBeforeClick(callbackFun) {
var _this = this;
CardEventHandler.saveData(this, {
callback: function callback(result) {
if (result.success) {
callbackFun(result.backData);
} else {
_toast2.default.fail(result.backMsg, 1);
}
}
});
},
onClose: function onClose(options) {
CardEventHandler.reloadData(this);
}
}
};
CardEventHandler.goBack = function (page) {
window.EnvConfig = window.EnvConfig || null;
var routeParams = {};
routeParams[PubConstants.CARD_TO_LIST] = true;
if (this.urls && this.urls.CARD_GO_BACK) {
page.routeTo('' + this.urls.CARD_GO_BACK, null, routeParams);
} else if (this.isLocalEnv()) {
page.goBack();
} else {
var routePath = page.props.location.pathname;
var listRoute = '';
if (routePath) {
var routes = routePath.split('/');
if (_lodash2.default.isArray(routes) && routes.length > 1) {
listRoute = routes[0] ? routes[0] : routes[1];
}
}
if (listRoute) {
page.routeTo(listRoute, null, routeParams);
} else {
page.goBack();
}
}
};
CardEventHandler.refresh = function (page, callback) {
var submitBtn = page.findUI(PubConstants.COM_SUBMIT_BTN);
var pk = this.getPrimaryKey(page);
var saveBtn = page.findUI(PubConstants.SAVE_BTN_KEY);
var temBtn = page.findUI(PubConstants.TEM_BTN_KEY);
var repeater = this.getAllRepeater(page);
if (pk) {
var billState = this.getBillState(page);
switch (billState) {
case PubConstants.BILL_STATE.STORAGE:
if (submitBtn) {
submitBtn.disabled = true;
}
if (saveBtn) {
saveBtn.disabled = false;
}
if (temBtn) {
temBtn.disabled = false;
}
repeater.map(function (item, index) {
item.addNavBar = true;
item.editNavBar = true;
item.delNavBar = true;
});
this.enablePage(page);
break;
case PubConstants.BILL_STATE.FREE:
if (submitBtn) {
submitBtn.disabled = false;
}
if (saveBtn) {
saveBtn.disabled = false;
}
if (temBtn) {
temBtn.disabled = false;
}
repeater.map(function (item, index) {
item.addNavBar = true;
item.editNavBar = true;
item.delNavBar = true;
});
this.enablePage(page);
break;
case PubConstants.BILL_STATE.COMMIT:
if (submitBtn) {
submitBtn.disabled = true;
}
if (saveBtn) {
saveBtn.disabled = true;
}
if (temBtn) {
temBtn.disabled = true;
}
repeater.map(function (item, index) {
item.addNavBar = false;
item.editNavBar = false;
item.delNavBar = false;
});
this.disablePage(page);
break;
case PubConstants.BILL_STATE.APPROVING:
if (submitBtn) {
submitBtn.disabled = true;
}
if (saveBtn) {
saveBtn.disabled = true;
}
if (temBtn) {
temBtn.disabled = true;
}
repeater.map(function (item, index) {
item.addNavBar = false;
item.editNavBar = false;
item.delNavBar = false;
});
this.disablePage(page);
break;
case PubConstants.BILL_STATE.APPROVED:
case PubConstants.BILL_STATE.UNAPPROVED:
if (submitBtn) {
submitBtn.disabled = true;
}
if (saveBtn) {
saveBtn.disabled = true;
}
if (temBtn) {
temBtn.disabled = true;
}
repeater.map(function (item, index) {
item.addNavBar = false;
item.editNavBar = false;
item.delNavBar = false;
});
this.disablePage(page);
break;
default:
break;
}
} else {
if (submitBtn) {
submitBtn.disabled = true;
}
if (saveBtn) {
saveBtn.disabled = false;
}
if (temBtn) {
temBtn.disabled = false;
}
repeater.map(function (item, index) {
item.addNavBar = true;
item.editNavBar = true;
item.delNavBar = true;
});
this.enablePage(page);
}
if (callback && _lodash2.default.isFunction(callback)) {
page.refresh(callback);
} else {
page.refresh();
}
};
CardEventHandler.disablePage = function (page) {
var forms = this.getForms(page, true);
_lodash2.default.forEach(forms, function (form) {
form.disabled = true;
});
};
CardEventHandler.enablePage = function (page) {
var forms = this.getForms(page, true);
_lodash2.default.forEach(forms, function (form) {
form.disabled = false;
});
page.refresh();
};
CardEventHandler.reloadData = function (page, billId, callback) {
var primaryField = this.getPrimaryField(page);
var primaryKey = this.getPrimaryKey(page);
this.saveDataBillId = '';
if (primaryKey) {
var routeParams = page.getRouteQuery() || page.getRouteParams() || {};
routeParams[primaryField] = primaryKey;
this.queryDetail(page, { params: routeParams, callback: callback });
} else {
if (billId) {
this.saveDataBillId = billId;
this.queryDetail(page, { params: { billId: billId }, callback: callback });
} else {
page.refresh();
}
}
};
CardEventHandler.setData = function (page, data) {
if (!data || _lodash2.default.isEmpty(data)) {
return;
}
if (_lodash2.default.isFunction(this.beforeSetData)) {
data = this.beforeSetData(data);
if (!data || _lodash2.default.isEmpty(data)) {
console.error("beforeSetData回调函数未返回任何数据!");
return;
}
}
var forms = this.getForms(page);
var primaryField = this.getPrimaryField(page);
var billType = this.getBillType(page);
var billState = data['' + PubConstants.BILL_STATE_FIELD] ? data['' + PubConstants.BILL_STATE_FIELD] : PubConstants.BILL_STATE.FREE;
var primaryKey = data['' + primaryField];
var _this = this;
var approveNavBar = page.findUI("YYApproveNavBar");
if (approveNavBar) {
approveNavBar.billId = data.id;
approveNavBar.billTypeId = data.billType;
approveNavBar.billState = data.billState;
}
var YYApproveSubmitBtn = page.findUI(PubConstants.COM_SUBMIT_BTN);
if (YYApproveSubmitBtn) {
var defaultProcInstName = page.findUI('defaultProcInstName') && page.findUI('defaultProcInstName').uititle;
var subParam = {
billTypeId: data.billType,
billTypeCode: data.billCode,
billId: data.id,
defaultProcInstName: defaultProcInstName
};
YYApproveSubmitBtn.subParam = subParam;
}
_this.setAllRepeaterData(page, data);
var defaultData = _lodash2.default.cloneDeep(data);
_lodash2.default.forEach(forms, function (form) {
if (_lodash2.default.isFunction(_this.beforeFormSetData)) {
var returnData = _this.beforeFormSetData(form.uikey, defaultData);
if (returnData) {
data = returnData;
} else {
if (form.automatch) {
var key = form.uikey;
var data = defaultData[key];
if (Array.isArray(data)) {
data = data[0];
} else {
data = data;
}
} else {
data = _lodash2.default.cloneDeep(defaultData);
}
}
} else {
if (form.automatch) {
var key = form.uikey;
var data = defaultData[key];
if (Array.isArray(data)) {
data = data[0];
} else {
data = data;
}
} else {
data = _lodash2.default.cloneDeep(defaultData);
}
}
_lodash2.default.forEach(form.children, function (formItem) {
if ("YYDatePicker" === formItem.uitype || formItem.uitype == "YYCalendar") {
if (formItem.uitype == "YYCalendar") {
var calendarValue = {};
if (data[formItem.startField]) {
calendarValue[formItem.startField] = new Date(data[formItem.startField]);
}
if (data[formItem.endField]) {
calendarValue[formItem.endField] = new Date(data[formItem.endField]);
}
data[formItem.field] = calendarValue;
} else {
if (!(data[formItem.field] instanceof Date)) {
data[formItem.field] = data[formItem.field] && data[formItem.field].replace(/\-/g, '/');
data[formItem.field] = new Date(data[formItem.field]);
}
}
} else if ("YYImagePicker" === formItem.uitype) {
if (primaryKey) {
if (formItem.source) {
formItem.source = _extends({}, formItem.source, { sourceId: primaryKey });
}
} else {
if (_this.offline) {
if (formItem.source) {
formItem.source = _extends({}, formItem.source, { sourceId: _this.saveDataBillId ? _this.saveDataBillId : _this.initbillId });
}
}
}
} else if ("YYPicker" === formItem.uitype) {
var values = data[formItem.field];
if (typeof values == "string") {
data[formItem.field] = values.split(',');
}
} else if ("YYRefer" === formItem.uitype) {
var values = data[formItem.field];
if (_lodash2.default.isPlainObject(values)) {
var cvalue = _lodash2.default.cloneDeep(values);
if ("id" !== formItem.id) {
delete cvalue['id'];
data[formItem.field] = cvalue;
}
} else if (_lodash2.default.isArray(values)) {
var cvalue = _lodash2.default.cloneDeep(values);
if ("id" !== formItem.id) {
cvalue.map(function (value) {
delete value['id'];
});
data[formItem.field] = cvalue;
}
}
}
});
if (form.api) {
form.api.setFieldsValue(data);
}
});
};
CardEventHandler.queryDetail = function (page, options) {
var _this = this;
var _ref4 = options || {},
url = _ref4.url,
params = _ref4.params,
beforeAction = _ref4.beforeAction,
callback = _ref4.callback,
error = _ref4.error;
var result = true;
if (beforeAction && _lodash2.default.isFunction(beforeAction)) {
result = beforeAction();
}
if (!result) {
this.pageLoaded(page);
return;
}
if (_this.offline) {
var offlineParam = {
billId: params.id ? params.id : params.billId,
reqUrl: url ? url : this.urls.QUERY_DETAIL,
reqMethod: 'get',
params: { id: params.id ? params.id : params.billId }
};
ajax.offLineQueryBillData(offlineParam, function (res) {
if (res['issubmit'] === '1') {
var result = res['data'];
if (callback && _lodash2.default.isFunction(callback)) {
callback(result);
} else {
if (result.success) {
var data = result.backData;
_this.setData(page, data);
_this.refresh(page);
} else {
YYMessage.fail(result.backMsg, 1);
_this.refresh(page);
}
}
} else if (res.success) {
var data = res.backData;
_this.setData(page, data);
_this.refresh(page);
} else {
var data = res['data'];
data = Object.assign({}, data, { billId: offlineParam.params.id });
_this.setData(page, data);
_this.refresh(page);
}
}, function (error) {
YYMessage.fail(error, 1);
});
} else {
ajax.getJSON(url ? url : this.urls.QUERY_DETAIL, params, function (result) {
if (callback && _lodash2.default.isFunction(callback)) {
callback(result);
} else {
if (result.success) {
var data = result.backData;
_this.setData(page, data);
_this.refresh(page);
} else {
YYMessage.fail(result.backMsg, 1);
_this.refresh(page);
}
}
}, error);
}
};
CardEventHandler.multiFormValid = function (page, options) {
var _assign = assign({}, {
formKeys: [],
index: 0,
formValues: {},
formErrors: {},
success: null,
error: null
}, options),
formKeys = _assign.formKeys,
formMains = _assign.formMains,
index = _assign.index,
formValues = _assign.formValues,
formErrors = _assign.formErrors,
success = _assign.success,
error = _assign.error;
if (formKeys && _lodash2.default.isArray(formKeys) && formKeys.length > 0) {
var formKey = formKeys[index];
var form = page.findUI(formKey);
if (form && form.api) {
form.api.validateFields(function (errors, values) {
if (!!errors) {
formErrors[formKey] = errors;
formValues[formKey] = values;
}
if (formKeys.length === index + 1) {
if (_lodash2.default.isEmpty(formErrors)) {
if (_lodash2.default.isFunction(success)) {
success({ formValues: formValues });
}
} else {
if (_lodash2.default.isFunction(error)) {
error({ formErrors: formErrors });
}
}
} else {
CardEventHandler.multiFormValid(page, assign({}, options, {
formValues: formValues,
formErrors: formErrors,
index: index + 1
}));
}
});
}
} else {
console.warn("待校验的表单为空!");
success();
}
};
CardEventHandler.multiForm = function (page, options) {
var _assign = assign({}, {
formKeys: [],
index: 0,
formValues: {},
formErrors: {},
success: null,
error: null
}, options),
formKeys = _assign.formKeys,
formMains = _assign.formMains,
index = _assign.index,
formValues = _assign.formValues,
formErrors = _assign.formErrors,
success = _assign.success,
error = _assign.error;
if (formKeys && _lodash2.default.isArray(formKeys) && formKeys.length > 0) {
var formKey = formKeys[index];
var form = page.findUI(formKey);
if (form && form.api) {
formValues[formKey] = form.api.getFieldsValue();
if (formKeys.length === index + 1) {
success({ formValues: formValues });
} else {
CardEventHandler.multiForm(page, assign({}, options, {
formValues: formValues,
formErrors: formErrors,
index: index + 1
}));
}
}
} else {
console.warn("待校验的表单为空!");
success();
}
};
CardEventHandler.saveData = function (page, options) {
var _ref5 = options || {},
excludeKeys = _ref5.excludeKeys,
excludeSaveKeys = _ref5.excludeSaveKeys,
validateError = _ref5.validateError;
var formKeys = this.getFormKeys(page);
var validFormKeys = this.getFormKeys(page, true);
if (excludeKeys) {
validFormKeys = validFormKeys.filter(function (formKey) {
if (_lodash2.default.isArray(excludeKeys)) {
return !contains(excludeKeys, formKey);
} else {
return excludeKeys !== formKey;
}
});
}
var childData = this.getAllRepeaterData(page);
var _this = this;
this.multiFormValid(page, {
formKeys: validFormKeys,
success: function success(formValues) {
var _ref6 = options || {},
url = _ref6.url,
btnKey = _ref6.btnKey,
beforeAction = _ref6.beforeAction,
excludeKeys = _ref6.excludeKeys,
prepareDataCallback = _ref6.prepareDataCallback,
callback = _ref6.callback,
error = _ref6.error;
if (!success) {
return;
}
var result = true;
if (beforeAction && _lodash2.default.isFunction(beforeAction)) {
result = beforeAction();
}
if (!result) {
return;
}
var saveData = {};
_lodash2.default.forEach(formKeys, function (formKey) {
var formData = {};
var form = page.findUI(formKey);
if (form && form.api) {
if (excludeSaveKeys) {
if (_lodash2.default.isArray(excludeSaveKeys)) {
if (!contains(excludeSaveKeys, formKey)) {
formData = form.api.getFieldsValue();
}
} else {
if (excludeSaveKeys !== formKey) {
formData = form.api.getFieldsValue();
}
}
} else {
formData = form.api.getFieldsValue();
}
}
if (!_lodash2.default.isEmpty(formData)) {
var attachObjs = [];
_lodash2.default.forEach(form.children, function (formItem) {
var values = formData[formItem.field];
if (values) {
if ("YYDatePicker" === formItem.uitype && formData[formItem.field] instanceof Date) {
formData[formItem.field] = formatDate(formData[formItem.field], "yyyy-MM-dd HH:mm:ss");
} else if ("YYPicker" === formItem.uitype) {
if (values instanceof Array) {
formData[formItem.field] = values.join(',');
}
} else if ("YYCalendar" === formItem.uitype) {
if (formItem.startField) {
formData[formItem.startField] = formatDate(formData[formItem.field][formItem.startField], "yyyy-MM-dd HH:mm:ss");
}
if (formItem.endField) {
formData[formItem.endField] = formatDate(formData[formItem.field][formItem.endField], "yyyy-MM-dd HH:mm:ss");
}
formData[formItem.field] = null;
}
} else {
if ("YYImagePicker" === formItem.uitype) {
var attachValues = formData[formItem.source && formItem.source.sourceType];
var attachObj = {
attachMgr: attachValues,
sourceType: formItem.source && formItem.source.sourceType ? formItem.source.sourceType : formItem.uikey
};
attachObjs.push(attachObj);
formData['' + formItem.field] = null;
}
}
});
if (_this.beforeFormSaveData && _lodash2.default.isFunction(_this.beforeFormSaveData)) {
var returnData = _this.beforeFormSaveData(formKey, _lodash2.default.cloneDeep(saveData), formData);
if (returnData) {
saveData = returnData;
} else {
saveData = assign(formData, saveData);
if (form.automatch) {
var key = form.uikey;
if (form.dataType == 'array') {
formData = _defineProperty({}, key, [formData]);
} else {
formData = _defineProperty({}, key, formData);
}
saveData = assign(formData, saveData);
} else {
saveData = assign(formData, saveData);
}
}
} else {
if (form.automatch) {
var key = form.uikey;
if (form.dataType == 'array') {
formData = _defineProperty({}, key, [formData]);
} else {
formData = _defineProperty({}, key, formData);
}
saveData = assign(formData, saveData);
} else {
saveData = assign(formData, saveData);
}
}
var existAttachs = saveData['attachObjs'];
if (existAttachs && _lodash2.default.isArray(existAttachs)) {
saveData['attachObjs'] = existAttachs.concat(attachObjs);
} else {
saveData['attachObjs'] = attachObjs;
}
}
});
var pk = _this.getPrimaryKey(page);
var saveUrl = pk ? _this.urls.UPDATE : _this.urls.INSERT;
if (prepareDataCallback && _lodash2.default.isFunction(prepareDataCallback)) {
var customSaveData = prepareDataCallback(_lodash2.default.cloneDeep(saveData));
if (customSaveData && _lodash2.default.isPlainObject(customSaveData)) {
saveData = customSaveData;
}
}
saveData = assign(saveData, childData);
if (_this.offline) {
var routeParams = page.getRouteQuery() || page.getRouteParams();
var billId = saveData['id'] ? saveData['id'] : routeParams && routeParams['billId'] ? routeParams['billId'] : _this.saveDataBillId;
var saveParams = {
billId: billId,
reqUrl: url ? url : saveUrl,
reqMethod: 'post',
params: saveData
};
ajax.onLineSaveData(saveParams, function (result) {
if (callback && _lodash2.default.isFunction(callback)) {
callback(result);
} else {
if (result.success) {
var data = result.backData;
_this.setData(page, data);
_this.refresh(page, function () {
YYMessage.success('保存成功', 1);
_this.reloadData(page);
});
} else {
YYMessage.fail(result.backMsg, 1);
_this.refresh(page);
}
}
}, function (error) {
YYMessage.fail(error, 1);
});
} else {
ajax.postJSON(url ? url : saveUrl, saveData, function (result) {
if (callback && _lodash2.default.isFunction(callback)) {
callback(result);
} else {
if (result.success) {
var data = result.backData;
_this.setData(page, data);
_this.refresh(page, function () {
YYMessage.success('保存成功', 1);
_this.reloadData(page);
});
} else {
YYMessage.fail(result.backMsg, 1);
_this.refresh(page);
}
}
}, error);
}
},
error: function error(formErrors) {
if (_lodash2.default.isFunction(validateError)) {
validateError(formErrors);
}
}
});
};
CardEventHandler.saveTempData = function (page, options) {
var _ref5 = options || {},
excludeKeys = _ref5.excludeKeys,
excludeSaveKeys = _ref5.excludeSaveKeys,
validateError = _ref5.validateError;
var formKeys = this.getFormKeys(page);
var validFormKeys = this.getFormKeys(page, true);
if (excludeKeys) {
validFormKeys = validFormKeys.filter(function (formKey) {
if (_lodash2.default.isArray(excludeKeys)) {
return !contains(excludeKeys, formKey);
} else {
return excludeKeys !== formKey;
}
});
}
var childData = this.getAllRepeaterData(page);
var _this = this;
this.multiForm(page, {
formKeys: validFormKeys,
success: function success(formValues) {
var _ref6 = options || {},
url = _ref6.url,
btnKey = _ref6.btnKey,
beforeAction = _ref6.beforeAction,
excludeKeys = _ref6.excludeKeys,
prepareDataCallback = _ref6.prepareDataCallback,
callback = _ref6.callback,
error = _ref6.error;
if (!success) {
return;
}
var result = true;
if (beforeAction && _lodash2.default.isFunction(beforeAction)) {
result = beforeAction();
}
if (!result) {
return;
}
var saveData = {};
_lodash2.default.forEach(formKeys, function (formKey) {
var formData = {};
var form = page.findUI(formKey);
if (form && form.api) {
if (excludeSaveKeys) {
if (_lodash2.default.isArray(excludeSaveKeys)) {
if (!contains(excludeSaveKeys, formKey)) {
formData = form.api.getFieldsValue();
}
} else {
if (excludeSaveKeys !== formKey) {
formData = form.api.getFieldsValue();
}
}
} else {
formData = form.api.getFieldsValue();
}
}
if (!_lodash2.default.isEmpty(formData)) {
var attachObjs = [];
_lodash2.default.forEach(form.children, function (formItem) {
var values = formData[formItem.field];
if (values) {
if ("YYDatePicker" === formItem.uitype && formData[formItem.field] instanceof Date) {
formData[formItem.field] = formatDate(formData[formItem.field], "yyyy-MM-dd HH:mm:ss");
} else if ("YYPicker" === formItem.uitype) {
if (values instanceof Array) {
formData[formItem.field] = values.join(',');
}
} else if ("YYCalendar" === formItem.uitype) {
if (formItem.startField) {
formData[formItem.startField] = formatDate(formData[formItem.field][formItem.startField], "yyyy-MM-dd HH:mm:ss");
}
if (formItem.endField) {
formData[formItem.endField] = formatDate(formData[formItem.field][formItem.endField], "yyyy-MM-dd HH:mm:ss");
}
formData[formItem.field] = null;
}
} else {
if ("YYImagePicker" === formItem.uitype) {
var attachValues = formData[formItem.source && formItem.source.sourceType];
var attachObj = {
attachMgr: attachValues,
sourceType: formItem.source && formItem.source.sourceType ? formItem.source.sourceType : formItem.uikey
};
attachObjs.push(attachObj);
formData['' + formItem.field] = null;
}
}
});
if (_this.beforeFormSaveData && _lodash2.default.isFunction(_this.beforeFormSaveData)) {
var returnData = _this.beforeFormSaveData(formKey, _lodash2.default.cloneDeep(saveData), formData);
if (returnData) {
saveData = returnData;
} else {
saveData = assign(formData, saveData);
if (form.automatch) {
var key = form.uikey;
if (form.dataType == 'array') {
formData = _defineProperty({}, key, [formData]);
} else {
formData = _defineProperty({}, key, formData);
}
saveData = assign(formData, saveData);
} else {
saveData = assign(formData, saveData);
}
}
} else {
if (form.automatch) {
var key = form.uikey;
if (form.dataType == 'array') {
formData = _defineProperty({}, key, [formData]);
} else {
formData = _defineProperty({}, key, formData);
}
saveData = assign(formData, saveData);
} else {
saveData = assign(formData, saveData);
}
}
var existAttachs = saveData['attachObjs'];
if (existAttachs && _lodash2.default.isArray(existAttachs)) {
saveData['attachObjs'] = existAttachs.concat(attachObjs);
} else {
saveData['attachObjs'] = attachObjs;
}
}
});
var pk = _this.getPrimaryKey(page);
var saveUrl = pk ? _this.urls.UPDATE : _this.urls.INSERT;
if (prepareDataCallback && _lodash2.default.isFunction(prepareDataCallback)) {
var customSaveData = prepareDataCallback(_lodash2.default.cloneDeep(saveData));
if (customSaveData && _lodash2.default.isPlainObject(customSaveData)) {
saveData = customSaveData;
}
}
saveData = assign(saveData, childData);
if (_this.offline) {
var routeParams = page.getRouteQuery() || page.getRouteParams();
var billId = saveData['id'] ? saveData['id'] : routeParams && routeParams['billId'] ? routeParams['billId'] : _this.saveDataBillId;
if (!billId) {
billId = _this.initbillId;
}
var tempParam = {
billTypeCode: saveData['billType'],
billId: billId,
params: saveData
};
ajax.offLineSaveTempData(tempParam, function (data) {
if (data['billId']) {
_this.refresh(page, function () {
YYMessage.success('离线暂存成功', 1);
_this.reloadData(page, data['billId']);
});
}
}, function (error) {
YYMessage.fail(error, 1);
_this.refresh();
});
}
},
error: function error(formErrors) {
if (_lodash2.default.isFunction(validateError)) {
validateError(formErrors);
}
}
});
};
CardEventHandler.getUUid = function () {
var uuid = '';
var _this = this;
try {
YYPlugin.call("ExpandPlugin", "getUuid", {}, function (data) {
if (data) {
uuid = data['Uuid'];
_this.initbillId = uuid;
} else {
YYMessage.fail(data['msg'], 1);
}
}, function (error) {
YYMessage.fail(error, 1);
});
} catch (err) {
uuid = '';
}
};
CardEventHandler.getForms = function (page, excludeAudit) {
var normalForms = page.findUIByType(PubConstants.COMP_FORM);
var resultForms = [];
var auditForm = this.getAuditInfoForm(page);
if (auditForm && !excludeAudit) {
return normalForms.concat(auditForm);
}
normalForms.map(function (item, index) {
if (item && item.api) {
resultForms.push(item);
}
});
return resultForms;
};
CardEventHandler.getFormKeys = function (page, excludeAudit) {
var forms = this.getForms(page, excludeAudit);
var formKeys = [];
if (forms && forms.length > 0) {
_lodash2.default.forEach(forms, function (form) {
if (form) {
formKeys.push(form.uikey);
}
});
}
return formKeys;
};
CardEventHandler.getAuditInfoForm = function (page) {
var AuditForm = page.findUI(PubConstants.COMP_AUDIT_FORM);
if (AuditForm && AuditForm.api) {
return AuditForm;
}
return null;
};
CardEventHandler.getPrimaryField = function (page) {
var pk = this.getAuditInfoForm(page) ? this.getAuditInfoForm(page)[PubConstants.PK_FIELD] : undefined;
if (!pk) {
console.warn("调用getPrimaryField失败,主键字段未定义");
return PubConstants.DEFAULT_PK_FIELD_VALUE;
}
return pk;
};
CardEventHandler.getPrimaryKey = function (page) {
var form = this.getAuditInfoForm(page);
if (form && form.api) {
var pkField = this.getPrimaryField(page);
if (pkField) {
return form.api.getFieldValue(pkField);
} else {
console.error("调用getPrimaryKey失败,审计信息表单或主键字段未定义");
}
}
return null;
};
CardEventHandler.getBillType = function (page) {
var billType = this.getAuditInfoForm(page) ? this.getAuditInfoForm(page)[PubConstants.BILL_TYPE_FIELD] : undefined;
if (!billType) {
console.warn("调用getBillType失败,单据类型未定义");
}
return billType;
};
CardEventHandler.getBillTypeName = function (page) {
var billTypeName = this.getAuditInfoForm(page) ? this.getAuditInfoForm(page)[PubConstants.BILL_TYPE_NAME_FIELD] : undefined;
if (!billTypeName) {
console.warn("调用getBillTypeName失败,单据类型未定义");
}
return billTypeName;
};
CardEventHandler.getBillCode = function (page) {
var billCode;
var auditForm = this.getAuditInfoForm(page);
if (auditForm && auditForm.api) {
billCode = auditForm.api.getFieldValue(PubConstants.BILL_CODE_FIELD);
}
return billCode;
};
CardEventHandler.getBillCompanyId = function (page) {
var formKeys = this.getFormKeys(page);
var companyId;
_lodash2.default.forEach(formKeys, function (key) {
var form = page.findUI(key);
if (form && form.api) {
companyId = form.api.getFieldValue(PubConstants.DEFAULT_ORG_FIELD);
if (companyId) {
return false;
}
}
});
return _lodash2.default.isPlainObject(companyId) ? companyId.id : companyId;
};
CardEventHandler.getLoginCompanyId = function () {
return AuthToken.getOrgaId();
};
CardEventHandler.getBillState = function (page) {
var billState;
var auditForm = this.getAuditInfoForm(page);
if (auditForm && auditForm.api) {
billState = auditForm.api.getFieldValue(PubConstants.BILL_STATE_FIELD);
if (!billState) {
billState = PubConstants.BILL_STATE.FREE;
}
}
return billState;
};
CardEventHandler.getBpmSubmitKey = function (page) {
var comp = this.getUniqueComponent(page, PubConstants.COMP_BPM_SUBMIT);
if (!comp) {
comp = this.getUniqueComponent(page, PubConstants.COMP_BPM_SUBMIT2);
}
if (comp) {
return comp.uikey;
}
return null;
};
CardEventHandler.getBpmApproveKey = function (page) {
var comp = this.getUniqueComponent(page, PubConstants.COMP_BPM_APPROVE);
if (!comp) {
comp = this.getUniqueComponent(page, PubConstants.COMP_BPM_APPROVE2);
}
if (comp) {
return comp.uikey;
}
return null;
};
CardEventHandler.getUniqueComponent = function (page, compName) {
var comp = this.getComponents(page, compName);
if (comp && comp.length === 1) {
return comp[0];
}
return null;
};
CardEventHandler.getComponents = function (page, compName) {
var comp = page.findUIByType(compName);
return comp || [];
};
CardEventHandler.assignUIParser = function (vendor) {
if (!vendor) {
vendor = {};
}
return AssignUtils.assignObject({}, vendor);
};
CardEventHandler.assign = function (obj1, obj2) {
return _lodash2.default.merge(obj1, obj2);
};
module.exports = CardEventHandler;