UNPKG

yylib-quick-mobile

Version:

yylib-quick-mobile

1,348 lines (1,262 loc) 50.2 kB
'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;