|
|
@@ -8,22 +8,28 @@ Ext.define('saas.util.FormUtil', {
|
|
|
urlRe: /(.*){viewName}(.*)/g,
|
|
|
|
|
|
setItems: function(form) {
|
|
|
- var me = this,
|
|
|
+ let me = this,
|
|
|
+ defaultItems;
|
|
|
+
|
|
|
defaultItems = form.defaultItems;
|
|
|
|
|
|
+ me.clearItems(defaultItems);
|
|
|
+
|
|
|
me.applyCusItemConfig(form)
|
|
|
.then(function(res) {
|
|
|
if(res.success) {
|
|
|
- var config = res.data || true, items = defaultItems || [];
|
|
|
+ let config = res.data || true, items = defaultItems || [];
|
|
|
if(config) {
|
|
|
- var cusItems = config.items || [];
|
|
|
+ let cusItems = config.items || [];
|
|
|
Ext.Array.each(cusItems, function(cusItem) {
|
|
|
- var item = items.find(function(item) {
|
|
|
+ let item = items.find(function(item) {
|
|
|
return item.name == cusItem.name;
|
|
|
});
|
|
|
Ext.apply(item, cusItem);
|
|
|
});
|
|
|
items = me.applyDefaultItems(form, items);
|
|
|
+
|
|
|
+ items = me.applyItemsGroup(items);
|
|
|
}
|
|
|
form.removeAll();
|
|
|
return form.addItems(items);
|
|
|
@@ -44,6 +50,18 @@ Ext.define('saas.util.FormUtil', {
|
|
|
|
|
|
},
|
|
|
|
|
|
+ clearItems: function(items) {
|
|
|
+ for(let i = items.length - 1; i >= 0; i--) {
|
|
|
+ let item = items[i];
|
|
|
+ if(item.group == '_nogroup') {
|
|
|
+ item.group = undefined;
|
|
|
+ }
|
|
|
+ if(item.xtype == 'container') {
|
|
|
+ items.splice(i, 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
/**
|
|
|
* 获得form的客户自定义字段配置
|
|
|
* @param form: form组件
|
|
|
@@ -51,7 +69,7 @@ Ext.define('saas.util.FormUtil', {
|
|
|
*/
|
|
|
|
|
|
applyCusItemConfig: function(form) {
|
|
|
- var me = this,
|
|
|
+ let me = this,
|
|
|
viewName = form.viewName,
|
|
|
defaultItems = form.defaultItems,
|
|
|
url = me.baseUrl.replace(me.urlRe, '$1' + viewName);
|
|
|
@@ -62,7 +80,7 @@ Ext.define('saas.util.FormUtil', {
|
|
|
* 处理formitems的一些默认配置
|
|
|
*/
|
|
|
applyDefaultItems: function(form, items) {
|
|
|
- var me = this,
|
|
|
+ let me = this,
|
|
|
formModel = form.getViewModel();
|
|
|
|
|
|
Ext.Array.each(items, function(item) {
|
|
|
@@ -97,8 +115,8 @@ Ext.define('saas.util.FormUtil', {
|
|
|
|
|
|
// 如果是从表为其绑定store
|
|
|
if(item.xtype == 'detailGridField') {
|
|
|
- var index = form.detailCount;
|
|
|
- var columns = item.columns,
|
|
|
+ let index = form.detailCount;
|
|
|
+ let columns = item.columns,
|
|
|
cnames = columns.filter(function(c) {
|
|
|
return c.dataIndex && !c.ignore;
|
|
|
}).map(function(c) {
|
|
|
@@ -140,7 +158,7 @@ Ext.define('saas.util.FormUtil', {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- var editor = c.editor;
|
|
|
+ let editor = c.editor;
|
|
|
if(editor) {
|
|
|
Ext.applyIf(editor, {
|
|
|
selectOnFocus: true
|
|
|
@@ -179,7 +197,7 @@ Ext.define('saas.util.FormUtil', {
|
|
|
data: [],
|
|
|
listeners: {
|
|
|
datachanged: function(s, eOpts) {
|
|
|
- var g = form.query('detailGridField')[index];
|
|
|
+ let g = form.query('detailGridField')[index];
|
|
|
g.fireEvent('datachanged', g, s, eOpts);
|
|
|
},
|
|
|
// 为新增行设置默认值
|
|
|
@@ -201,23 +219,89 @@ Ext.define('saas.util.FormUtil', {
|
|
|
return items;
|
|
|
},
|
|
|
|
|
|
+ applyItemsGroup: function(items) {
|
|
|
+ let groups = [];
|
|
|
+
|
|
|
+ Ext.Array.each(items, function(item, index) {
|
|
|
+ let groupName = item.group;
|
|
|
+ if(!!groupName) {
|
|
|
+ let idx = groups.findIndex(function(g) {
|
|
|
+ return g.title == groupName;
|
|
|
+ }),group;
|
|
|
+
|
|
|
+ if(idx == -1) {
|
|
|
+ group = {
|
|
|
+ title: groupName,
|
|
|
+ count: 1
|
|
|
+ };
|
|
|
+ groups.push(group);
|
|
|
+ }else {
|
|
|
+ group = groups[idx];
|
|
|
+ group.count++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ Ext.Array.sort(items, function(a, b) {
|
|
|
+ let gs = groups.concat([{
|
|
|
+ title: '_nogroup'
|
|
|
+ }]);
|
|
|
+ a.group = a.group || '_nogroup';
|
|
|
+ let v1 = gs.findIndex(function(g) {
|
|
|
+ return g.title == a.group;
|
|
|
+ })
|
|
|
+ let v2 = gs.findIndex(function(g) {
|
|
|
+ return g.title == b.group;
|
|
|
+ })
|
|
|
+ return v1 - v2;
|
|
|
+ });
|
|
|
+
|
|
|
+ Ext.Array.each(groups, function(g) {
|
|
|
+ let idx = items.findIndex(function(i) {
|
|
|
+ return i.group == g.title;
|
|
|
+ });
|
|
|
+ g.index = idx;
|
|
|
+ });
|
|
|
+
|
|
|
+ Ext.Array.each(groups, function(group, index) {
|
|
|
+ let formIndex = group.index;
|
|
|
+ delete group.index;
|
|
|
+ Ext.Array.insert(items, formIndex + index, [{
|
|
|
+ xtype: 'container',
|
|
|
+ userCls: 'x-field-separator',
|
|
|
+ height: 24,
|
|
|
+ html: group.title,
|
|
|
+ columnWidth: 1,
|
|
|
+ ignore: true,
|
|
|
+ isValid: function() {
|
|
|
+ return true;
|
|
|
+ },
|
|
|
+ isDirty: function() {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }]);
|
|
|
+ });
|
|
|
+
|
|
|
+ return items;
|
|
|
+ },
|
|
|
+
|
|
|
loadData: function(form) {
|
|
|
- var me = this;
|
|
|
+ let me = this;
|
|
|
form.setLoading(true);
|
|
|
if(form.initId && form.initId!=0) {
|
|
|
- var url = form._readUrl + '/' + form.initId;
|
|
|
+ let url = form._readUrl + '/' + form.initId;
|
|
|
saas.util.BaseUtil.request({url })
|
|
|
.then(function(res) {
|
|
|
form.setLoading(false);
|
|
|
if(res.success) {
|
|
|
- var d = res.data;
|
|
|
- var o = {
|
|
|
+ let d = res.data;
|
|
|
+ let o = {
|
|
|
main: d.main
|
|
|
};
|
|
|
if(d.hasOwnProperty('items')) {
|
|
|
o.detail0 = d.items;
|
|
|
}else {
|
|
|
- var idx = 1;
|
|
|
+ let idx = 1;
|
|
|
while(d.hasOwnProperty('items' + idx)) {
|
|
|
o['detail' + (idx - 1)] = d['items' + idx];
|
|
|
idx++;
|
|
|
@@ -246,25 +330,25 @@ Ext.define('saas.util.FormUtil', {
|
|
|
}).then(function(res) {
|
|
|
form.setLoading(false);
|
|
|
if(res.success){
|
|
|
- var code = res.data;
|
|
|
- var viewModel = form.getViewModel();
|
|
|
- var detailGrids = form.query('detailGridField');
|
|
|
+ let code = res.data;
|
|
|
+ let viewModel = form.getViewModel();
|
|
|
+ let detailGrids = form.query('detailGridField');
|
|
|
|
|
|
if(code){
|
|
|
- var o = {};
|
|
|
+ let o = {};
|
|
|
o[form._codeField] = code;
|
|
|
|
|
|
- var formData = {main: {}};
|
|
|
+ let formData = {main: {}};
|
|
|
Ext.apply(formData.main, o);
|
|
|
Ext.Array.each(detailGrids, function(grid, index) {
|
|
|
- var detno = 0;
|
|
|
- var detnoColumn = grid.detnoColumn;
|
|
|
- var datas = [];
|
|
|
- var emptyRows = grid.emptyRows;
|
|
|
+ let detno = 0;
|
|
|
+ let detnoColumn = grid.detnoColumn;
|
|
|
+ let datas = [];
|
|
|
+ let emptyRows = grid.emptyRows;
|
|
|
|
|
|
Ext.Array.each(new Array(emptyRows), function() {
|
|
|
detno += 1;
|
|
|
- var data = {};
|
|
|
+ let data = {};
|
|
|
data[detnoColumn] = detno;
|
|
|
datas.push(data);
|
|
|
})
|
|
|
@@ -281,7 +365,7 @@ Ext.define('saas.util.FormUtil', {
|
|
|
}
|
|
|
}
|
|
|
}).then(function(formData) {
|
|
|
- var initData = form.initData;
|
|
|
+ let initData = form.initData;
|
|
|
if(initData) {
|
|
|
Ext.apply(initData.main, formData.main);
|
|
|
form.setFormData(initData);
|