|
|
@@ -31,7 +31,6 @@ Ext.define('saas.view.core.form.FormPanel', {
|
|
|
remoteConfig: true, // 是否需要从远端读取form配置
|
|
|
toolBtns: [], // 自定义按钮
|
|
|
codeInHeader: true, // 单据编号显示在toolbar
|
|
|
- closeConfirm: true, // 关闭确认
|
|
|
invalidText: '表单校验有误,请检查', // 校验未通过提示内容
|
|
|
dirtyAuditText: '表单数据有修改,是否先保存修改?', // 有修改时点击审核提示内容
|
|
|
noDirtySaveText: '表单数据无修改', // 无修改点击保存提示内容
|
|
|
@@ -487,7 +486,7 @@ Ext.define('saas.view.core.form.FormPanel', {
|
|
|
return dirty;
|
|
|
},
|
|
|
|
|
|
- getDirtyData: function() {
|
|
|
+ getSaveData: function() {
|
|
|
var me = this,
|
|
|
viewModel = me.getViewModel(),
|
|
|
allData = viewModel.getData(),
|
|
|
@@ -508,6 +507,52 @@ Ext.define('saas.view.core.form.FormPanel', {
|
|
|
main: formData,
|
|
|
};
|
|
|
|
|
|
+ for (var i = 0; i < detailCount; i++) {
|
|
|
+ var g = detailGrids[i];
|
|
|
+ var gridDirtyData = g.getSaveData();
|
|
|
+ var modelDetail = allData['detail' + i];
|
|
|
+ var detailBindFields = modelDetail.detailBindFields;
|
|
|
+
|
|
|
+ Ext.Array.each(gridDirtyData, function(d) {
|
|
|
+ for(k in d) {
|
|
|
+ if(!Ext.Array.contains(detailBindFields, k)) {
|
|
|
+ delete d[k];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ dirtyData['detail' + i] = gridDirtyData;
|
|
|
+ }
|
|
|
+
|
|
|
+ return dirtyData;
|
|
|
+ },
|
|
|
+
|
|
|
+ getDirtyData: function() {
|
|
|
+ var me = this,
|
|
|
+ formF = me.getForm(),
|
|
|
+ viewModel = me.getViewModel(),
|
|
|
+ allData = viewModel.getData(),
|
|
|
+ bindFields = allData.base.bindFields,
|
|
|
+ detailCount = me.detailCount,
|
|
|
+ formData = {},
|
|
|
+ detailGrids = me.query('detailGridField');
|
|
|
+
|
|
|
+ Ext.Array.each(bindFields, function(field) {
|
|
|
+ var v = allData[field];
|
|
|
+ var f = formF.findField(field);
|
|
|
+ if(Ext.isDate(v)) {
|
|
|
+ v = Ext.Date.format(v, 'Y-m-d H:i:s');
|
|
|
+ }
|
|
|
+ if(f && f.isDirty()) {
|
|
|
+ formData[field] = f.originalValue;
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ var dirtyData = {
|
|
|
+ main: formData,
|
|
|
+ };
|
|
|
+
|
|
|
for (var i = 0; i < detailCount; i++) {
|
|
|
var g = detailGrids[i];
|
|
|
var gridDirtyData = g.getDirtyData();
|
|
|
@@ -544,4 +589,28 @@ Ext.define('saas.view.core.form.FormPanel', {
|
|
|
beforeUnAudit: function() {
|
|
|
return true;
|
|
|
},
|
|
|
+
|
|
|
+ promiseCloseTab: function() {
|
|
|
+ var me = this,
|
|
|
+ controller = me.getController();
|
|
|
+
|
|
|
+ if(me.isDirty()) {
|
|
|
+ return saas.util.BaseUtil.showConfirm('提示', '表单数据有修改,离开前要保存吗?', {
|
|
|
+ buttons: Ext.Msg.YESNOCANCEL
|
|
|
+ }).then(function(yes) {
|
|
|
+ if(yes === 'yes') {
|
|
|
+ controller.onSave();
|
|
|
+ return false;
|
|
|
+ }else if(yes === 'no') {
|
|
|
+ return true;
|
|
|
+ }else {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }else {
|
|
|
+ return new Promise(function (resolve, reject) {
|
|
|
+ return resolve(true);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
});
|