|
|
@@ -0,0 +1,556 @@
|
|
|
+Ext.define('saas.view.core.form.FormPanelController', {
|
|
|
+ extend: 'Ext.app.ViewController',
|
|
|
+ alias: 'controller.core-form-formpanel',
|
|
|
+
|
|
|
+ auditBtnClick: function() {
|
|
|
+ var me = this,
|
|
|
+ form = me.getView(),
|
|
|
+ statusCodeField = form._statusCodeField,
|
|
|
+ viewModel = me.getViewModel(),
|
|
|
+ status = viewModel.get(statusCodeField);
|
|
|
+
|
|
|
+ status == 'AUDITED' ? me.onUnAudit() : me.onAudit();
|
|
|
+ },
|
|
|
+
|
|
|
+ refresh: function() {
|
|
|
+ var me = this,
|
|
|
+ form = me.getView(),
|
|
|
+ xtype = form.xtype,
|
|
|
+ _config = {
|
|
|
+ initId: form.initId,
|
|
|
+ },
|
|
|
+ currentTab = saas.util.BaseUtil.getCurrentTab();
|
|
|
+
|
|
|
+ var view = {
|
|
|
+ _config: _config,
|
|
|
+ xtype: xtype
|
|
|
+ };
|
|
|
+ Ext.apply(view, _config);
|
|
|
+
|
|
|
+ Ext.suspendLayouts();
|
|
|
+ currentTab.removeAll();
|
|
|
+ currentTab.add(view);
|
|
|
+ Ext.resumeLayouts(true);
|
|
|
+ },
|
|
|
+
|
|
|
+ add: function(){
|
|
|
+ var form = this.getView();
|
|
|
+ var id = form.xtype + '-add';
|
|
|
+ saas.util.BaseUtil.openTab(form.xtype,'新增' + form._title, id);
|
|
|
+ },
|
|
|
+
|
|
|
+ onCopy: function() {
|
|
|
+ var me = this;
|
|
|
+ var form = this.getView();
|
|
|
+ var id = form.xtype + '-add';
|
|
|
+
|
|
|
+ var formData = me.initCopyData(form.getFormData());
|
|
|
+
|
|
|
+ saas.util.BaseUtil.openTab(form.xtype,'新增' + form._title, id, {initData: formData});
|
|
|
+ },
|
|
|
+
|
|
|
+ initCopyData: function(formData) {
|
|
|
+ var me = this;
|
|
|
+ var form = this.getView();
|
|
|
+ var detailCount = form.detailCount;
|
|
|
+ var main = formData.main;
|
|
|
+ var auditTexts = form.auditTexts;
|
|
|
+
|
|
|
+ // 单号、id清空
|
|
|
+ main[form._idField] = 0;
|
|
|
+ main[form._codeField] = '';
|
|
|
+ // 单据状态为录入状态(未审核)
|
|
|
+ main[form._statusCodeField] = auditTexts.unAuditCode;
|
|
|
+ main[form._statusField] = auditTexts.unAuditText;
|
|
|
+ //重设录入人,录入日期,审核人,审核日期
|
|
|
+ main['creatorId'] = saas.util.BaseUtil.getCurrentUser().id;
|
|
|
+ main['creatorName'] = saas.util.BaseUtil.getCurrentUser().realname;
|
|
|
+ main['createTime'] = Ext.Date.format(new Date(), 'Y-m-d H:i:s');
|
|
|
+ main['updaterId'] = saas.util.BaseUtil.getCurrentUser().id;
|
|
|
+ main['updaterName'] = saas.util.BaseUtil.getCurrentUser().realname;
|
|
|
+ main['updateTime'] = Ext.Date.format(new Date(), 'Y-m-d H:i:s');
|
|
|
+ main[form._auditmanField] = undefined;
|
|
|
+ main[form._auditdateField] = undefined;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ for(var k in main) {
|
|
|
+ // 主表日期改为当前日期
|
|
|
+ if(saas.util.BaseUtil.isDateString(main[k])) {
|
|
|
+ main[k] = Ext.Date.format(new Date, 'Y-m-d H:i:s');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for(var j = 0; j < detailCount; j++) {
|
|
|
+ var detail = formData['detail' + j];
|
|
|
+ for(var x = 0; x < detail.length; x ++) {
|
|
|
+ var d = detail[x];
|
|
|
+
|
|
|
+ for(var k in d) {
|
|
|
+ // 从表id清空
|
|
|
+ delete d['id'];
|
|
|
+ // 从表日期清空
|
|
|
+ if(saas.util.BaseUtil.isDateString(d[k])) {
|
|
|
+ d[k] = '';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return me.myInitCopyData(formData);;
|
|
|
+ },
|
|
|
+
|
|
|
+ myInitCopyData: function(formData) {
|
|
|
+ return formData;
|
|
|
+ },
|
|
|
+
|
|
|
+ delete: function(){
|
|
|
+ var me = this;
|
|
|
+ var form = this.getView();
|
|
|
+ var viewModel = me.getViewModel();
|
|
|
+ var id = viewModel.get(form._idField);
|
|
|
+ var code = viewModel.get(form._codeField);
|
|
|
+ if(id&&id.value!=0){
|
|
|
+
|
|
|
+ if(!form.beforeDelete()) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ saas.util.BaseUtil.deleteWarn(form._deleteMsg,function(btn){
|
|
|
+ if(btn == 'yes'){
|
|
|
+ saas.util.BaseUtil.request({
|
|
|
+ url: form._deleteUrl+'/'+id,
|
|
|
+ method: 'POST',
|
|
|
+ })
|
|
|
+ .then(function(localJson) {
|
|
|
+ if(localJson.success){
|
|
|
+ var mainTab = Ext.getCmp('main-tab-panel');
|
|
|
+ mainTab.getActiveTab().close();
|
|
|
+ //解析参数
|
|
|
+ saas.util.BaseUtil.showSuccessToast('删除成功');
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(function(e) {
|
|
|
+ saas.util.BaseUtil.showErrorToast('删除失败: ' + e.message);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ onSave: function() {
|
|
|
+ var me = this,
|
|
|
+ form = this.getView();
|
|
|
+
|
|
|
+ var valid = form.isValid();
|
|
|
+ if(!valid) {
|
|
|
+ saas.util.BaseUtil.showErrorToast(form.invalidText);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ var dirty = form.isDirty();
|
|
|
+ if(!dirty) {
|
|
|
+ saas.util.BaseUtil.showErrorToast(form.noDirtySaveText);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!form.beforeSave()) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ me.save();
|
|
|
+ },
|
|
|
+
|
|
|
+ save:function(){
|
|
|
+ var me = this,
|
|
|
+ form = this.getView(),
|
|
|
+ codeField = form.getForm().findField(form._codeField),
|
|
|
+ detailCount = form.detailCount,
|
|
|
+ viewModel = me.getViewModel(),
|
|
|
+ codeModified = !form.initId || (codeField && codeField.isDirty());
|
|
|
+
|
|
|
+ //form里面数据
|
|
|
+ var formData = form.getSaveData();
|
|
|
+
|
|
|
+ var params = {
|
|
|
+ main:formData.main
|
|
|
+ };
|
|
|
+
|
|
|
+ for(var i = 0; i < detailCount; i++) {
|
|
|
+ params['items' + ( i + 1)] = formData['detail' + i];
|
|
|
+ }
|
|
|
+
|
|
|
+ // 只有一个从表时从表字段改为items
|
|
|
+ if(detailCount == 1) {
|
|
|
+ params.items = params.items1;
|
|
|
+ delete params.items1;
|
|
|
+ }
|
|
|
+
|
|
|
+ params.codeModified = codeModified;
|
|
|
+
|
|
|
+ form.setLoading(true);
|
|
|
+ saas.util.BaseUtil.request({
|
|
|
+ url: form._saveUrl,
|
|
|
+ params: JSON.stringify(params),
|
|
|
+ method: 'POST',
|
|
|
+ })
|
|
|
+ .then(function(localJson) {
|
|
|
+ form.setLoading(false);
|
|
|
+ if(localJson.success){
|
|
|
+ var id = localJson.data.id;
|
|
|
+ var code = localJson.data.code;
|
|
|
+ form.initId = id;
|
|
|
+ saas.util.FormUtil.loadData(form);
|
|
|
+
|
|
|
+ var newId = form.xtype + '-' + id;
|
|
|
+ var newTitle = form._title + '(' + code + ')';
|
|
|
+
|
|
|
+ saas.util.BaseUtil.refreshTabTitle(newId, newTitle);
|
|
|
+
|
|
|
+ saas.util.BaseUtil.showSuccessToast('保存成功');
|
|
|
+ form.fireEvent('aftersave', true, form, localJson);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(function(e) {
|
|
|
+ form.setLoading(false);
|
|
|
+ saas.util.BaseUtil.showErrorToast('保存失败: ' + e.message);
|
|
|
+ form.fireEvent('aftersave', false, form);
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ onAudit: function(){
|
|
|
+ var me = this,
|
|
|
+ form = this.getView(),
|
|
|
+ viewModel = me.getViewModel(),
|
|
|
+ id = viewModel.get(form._idField);
|
|
|
+
|
|
|
+ var dirty = form.isDirty();
|
|
|
+
|
|
|
+ if(id && dirty) {
|
|
|
+ saas.util.BaseUtil.showConfirm('提示', form.dirtyAuditText)
|
|
|
+ .then(function(yes) {
|
|
|
+ if(yes == 'yes') {
|
|
|
+ me.onSave();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ var valid = form.isValid();
|
|
|
+
|
|
|
+ if(!valid) {
|
|
|
+ saas.util.BaseUtil.showErrorToast(form.invalidText);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!form.beforeAudit()) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ me.audit();
|
|
|
+ },
|
|
|
+
|
|
|
+ audit: function() {
|
|
|
+ var me = this,
|
|
|
+ form = me.getView(),
|
|
|
+ viewModel = me.getViewModel(),
|
|
|
+ detailCount = form.detailCount,
|
|
|
+ codeField = form.getForm().findField(form._codeField),
|
|
|
+ codeModified = !form.initId || (codeField && codeField.isDirty());
|
|
|
+
|
|
|
+ //form里面数据
|
|
|
+ var formData = form.getFormData();
|
|
|
+ var params = {
|
|
|
+ main: formData.main
|
|
|
+ };
|
|
|
+
|
|
|
+ for(var i = 0; i < detailCount; i++) {
|
|
|
+ params['items' + ( i + 1)] = formData['detail' + i];
|
|
|
+ }
|
|
|
+
|
|
|
+ // 只有一个从表时从表字段改为items
|
|
|
+ if(detailCount == 1) {
|
|
|
+ params.items = params.items1;
|
|
|
+ delete params.items1;
|
|
|
+ }
|
|
|
+
|
|
|
+ params.codeModified = codeModified;
|
|
|
+
|
|
|
+ form.setLoading(true);
|
|
|
+ saas.util.BaseUtil.request({
|
|
|
+ url: form._auditUrl,
|
|
|
+ params: JSON.stringify(params),
|
|
|
+ method: 'POST',
|
|
|
+ })
|
|
|
+ .then(function(localJson) {
|
|
|
+ form.setLoading(false);
|
|
|
+ if(localJson.success){
|
|
|
+ // 未保存直接审核会返回id
|
|
|
+ if(localJson.data) {
|
|
|
+ var id = localJson.data.id;
|
|
|
+ var code = localJson.data.code;
|
|
|
+
|
|
|
+ form.initId = id;
|
|
|
+
|
|
|
+ var newId = form.xtype + '-' + id;
|
|
|
+ var newTitle = form._title + '(' + code + ')';
|
|
|
+
|
|
|
+ saas.util.BaseUtil.refreshTabTitle(newId, newTitle);
|
|
|
+ }
|
|
|
+ saas.util.FormUtil.loadData(form);
|
|
|
+ form.setEditable(false);
|
|
|
+ saas.util.BaseUtil.showSuccessToast('审核成功' + (localJson.message ? ': ' + localJson.message : ''));
|
|
|
+ form.fireEvent('afteraudit', true, form, localJson);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(function(e) {
|
|
|
+ form.setLoading(false);
|
|
|
+ // console.error(e);
|
|
|
+ // if(res.data) {
|
|
|
+ // var id = localJson.data.id;
|
|
|
+ // var code = localJson.data.code;
|
|
|
+
|
|
|
+ // form.initId = id;
|
|
|
+
|
|
|
+ // var newId = form.xtype + '-' + id;
|
|
|
+ // var newTitle = form._title + '(' + code + ')';
|
|
|
+
|
|
|
+ // saas.util.BaseUtil.refreshTabTitle(newId, newTitle);
|
|
|
+ // saas.util.FormUtil.loadData(form);
|
|
|
+ // }
|
|
|
+ saas.util.BaseUtil.showErrorToast('审核失败: ' + e.message);
|
|
|
+ form.fireEvent('afteraudit', false, form);
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ onUnAudit: function() {
|
|
|
+ var me = this;
|
|
|
+ var form = this.getView();
|
|
|
+ var viewModel = me.getViewModel();
|
|
|
+ var id = viewModel.get(form._idField);
|
|
|
+ var code = viewModel.get(form._codeField);
|
|
|
+ if(id&&id.value!=0){
|
|
|
+
|
|
|
+ if(!form.beforeUnAudit()) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ me.unAudit();
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ unAudit: function() {
|
|
|
+ var me = this;
|
|
|
+ var form = this.getView();
|
|
|
+ var viewModel = me.getViewModel();
|
|
|
+ var id = viewModel.get(form._idField);
|
|
|
+ var code = viewModel.get(form._codeField);
|
|
|
+
|
|
|
+ form.setLoading(true);
|
|
|
+ saas.util.BaseUtil.request({
|
|
|
+ url: form._unAuditUrl + '/' + id,
|
|
|
+ method: 'POST',
|
|
|
+ })
|
|
|
+ .then(function(localJson) {
|
|
|
+ form.setLoading(false);
|
|
|
+ if(localJson.success){
|
|
|
+ //解析参数
|
|
|
+ saas.util.BaseUtil.showSuccessToast('反审核成功');
|
|
|
+ saas.util.FormUtil.loadData(form);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(function(res) {
|
|
|
+ form.setLoading(false);
|
|
|
+ console.error(res);
|
|
|
+ saas.util.BaseUtil.showErrorToast('反审核失败: ' + res.message);
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ codeEditorBlur: function(e) {
|
|
|
+ var me = this,
|
|
|
+ viewModel = me.getViewModel(),
|
|
|
+ targetEl = event.target,
|
|
|
+ faEl = targetEl.getElementsByClassName('fa')[0];
|
|
|
+
|
|
|
+ if(faEl && faEl.classList.contains('fa-check-circle')) {
|
|
|
+ // 处理重复触发事件
|
|
|
+ // viewModel.set('base.codeEditable', false);
|
|
|
+ }else {
|
|
|
+ viewModel.set('base.codeEditable', false);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ codeEditorClick: function() {
|
|
|
+ var me = this,
|
|
|
+ form = me.getView(),
|
|
|
+ codeField = form.getForm().findField(form._codeField),
|
|
|
+ viewModel = me.getViewModel(),
|
|
|
+ codeEditable = viewModel.get('base.codeEditable');
|
|
|
+
|
|
|
+ codeField.setValue(viewModel.get(form._codeField));
|
|
|
+ viewModel.set('base.codeEditable', !codeEditable);
|
|
|
+ },
|
|
|
+ showMessageLog:function(btn){
|
|
|
+ var me = this,
|
|
|
+ form = me.getView(),
|
|
|
+ viewModel = me.getViewModel(),
|
|
|
+ mlKeyvalue = viewModel.get(form._idField),
|
|
|
+ mlCaller = form.caller,
|
|
|
+ win = Ext.getCmp(form.xtype+mlKeyvalue);
|
|
|
+ if (!win&&mlKeyvalue!=0) {
|
|
|
+ var panel = form.up('core-tab-panel'),panelEl;panelEl = panel.getEl()
|
|
|
+ var box = panelEl.getBox();
|
|
|
+ var height = box.height;
|
|
|
+ var width = box.width;
|
|
|
+ var win = form.add(Ext.create('Ext.window.Window', {
|
|
|
+ modal: true,
|
|
|
+ id:me.xtype+mlKeyvalue,
|
|
|
+ cls:'x-window-dbfind',
|
|
|
+ height: height*0.8,
|
|
|
+ width: width*0.8,
|
|
|
+ title: '操作日志('+viewModel.get(form._codeField)+')',
|
|
|
+ scrollable: true,
|
|
|
+ constrain: true,
|
|
|
+ closable: true,
|
|
|
+ layout: 'fit',
|
|
|
+ items: [{
|
|
|
+ padding:'5 10 5 10',
|
|
|
+ xtype: 'core-form-mseeageLog',
|
|
|
+ mlKeyvalue:mlKeyvalue,
|
|
|
+ mlCaller:mlCaller
|
|
|
+ }],
|
|
|
+ listeners:{
|
|
|
+ 'close':function(){
|
|
|
+ btn.removeCls('x-btn-focus');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }));
|
|
|
+ };
|
|
|
+ win.show();
|
|
|
+ },
|
|
|
+
|
|
|
+ onPrint: function() {
|
|
|
+ var me = this,
|
|
|
+ form = me.getView(),
|
|
|
+ viewModel = me.getViewModel(),
|
|
|
+ caller = form.caller,
|
|
|
+ id = viewModel.get(form._idField),
|
|
|
+ code = viewModel.get(form._codeField);
|
|
|
+
|
|
|
+ me.beforePrint(caller).then(function(flag) {
|
|
|
+ if(!flag) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ saas.util.BaseUtil.request({
|
|
|
+ url: '/api/commons/jasperReport/printByDefault',
|
|
|
+ // url: 'http://192.168.253.58:8920/jasperReport/printByDefault',
|
|
|
+ method: 'POST',
|
|
|
+ headers: {
|
|
|
+ "Content-Type": 'application/x-www-form-urlencoded;charset=UTF-8'
|
|
|
+ },
|
|
|
+ params: {
|
|
|
+ caller: caller,
|
|
|
+ id: id,
|
|
|
+ code: code
|
|
|
+ }
|
|
|
+ }).then(function(res) {
|
|
|
+ var data = res.data,
|
|
|
+ printurl = data.printurl,
|
|
|
+ printtype = data.printtype,
|
|
|
+ reportName = data.reportName,
|
|
|
+ title = data.title,
|
|
|
+ userName = data.userName,
|
|
|
+ whereCondition = data.whereCondition,
|
|
|
+ companyId = saas.util.BaseUtil.getCurrentUser().companyId;
|
|
|
+ var url = printurl + '?' + 'reportName=' + reportName + '&' + 'companyId=' + companyId + '&whereCondition=' + whereCondition + (userName ? '&userName=' + userName : "");
|
|
|
+
|
|
|
+ window.open(url);
|
|
|
+ }).catch(function(res) {
|
|
|
+ console.error(res.message);
|
|
|
+ saas.util.BaseUtil.showErrorToast('获取打印报表错误:' + res.message);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断权限
|
|
|
+ */
|
|
|
+ beforePrint: function(caller) {
|
|
|
+ return saas.util.BaseUtil.request({
|
|
|
+ url: '/api/commons/' + caller + '/print',
|
|
|
+ method: 'GET',
|
|
|
+ headers: {
|
|
|
+ "Content-Type": 'application/x-www-form-urlencoded;charset=UTF-8'
|
|
|
+ },
|
|
|
+ params: {
|
|
|
+ caller: caller,
|
|
|
+ id: id
|
|
|
+ }
|
|
|
+ }).then(function(res) {
|
|
|
+ return res.success;
|
|
|
+ }).catch(function(res) {
|
|
|
+ console.error(res.message);
|
|
|
+ saas.util.BaseUtil.showErrorToast('未通过权限验证:' + res.message);
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ onSetting: function() {
|
|
|
+ var me = this,
|
|
|
+ form = me.getView(),
|
|
|
+ viewName = form.viewName,
|
|
|
+ configItems = form.configItems,
|
|
|
+ items = [];
|
|
|
+
|
|
|
+ Ext.Array.sort(configItems, function(a, b) {
|
|
|
+ return a.index - b.index;
|
|
|
+ });
|
|
|
+
|
|
|
+ for(let i = 0; i < configItems.length; i++) {
|
|
|
+ let item = configItems[i];
|
|
|
+ let formItem = form.query('[name=' + item.name + ']')[0];
|
|
|
+ let xtypes = formItem.getXTypes().split('/');
|
|
|
+ item.xtypes = xtypes;
|
|
|
+ if(!item.initHidden) {
|
|
|
+ items.push(Object.assign({}, item));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ me.openSettingWindow(viewName, items, 'main');
|
|
|
+ },
|
|
|
+
|
|
|
+ onColSetting: function(ct, col, e, t, eoPts) {
|
|
|
+ let me = this,
|
|
|
+ form = me.getView(),
|
|
|
+ viewName = form.viewName,
|
|
|
+ grid = ct.grid.ownerGrid,
|
|
|
+ columns = grid.defaultColumns,
|
|
|
+ items = [];
|
|
|
+
|
|
|
+ for(let i = 0; i < columns.length; i++) {
|
|
|
+ let col = columns[i];
|
|
|
+ if(!col.initHidden) {
|
|
|
+ items.push(Object.assign({}, col));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ me.openSettingWindow(viewName, items, grid.gname);
|
|
|
+ },
|
|
|
+
|
|
|
+ openSettingWindow: function(viewName, items, settype) {
|
|
|
+ var panel = saas.util.BaseUtil.getCurrentTab(),
|
|
|
+ box = panel.getBox(),
|
|
|
+ refs = panel.getReferences() || {},
|
|
|
+ win = refs.settingwin;
|
|
|
+
|
|
|
+ title = settype == 'main' ? '界面设置' : '列设置';
|
|
|
+
|
|
|
+ if(!win) {
|
|
|
+ win = panel.add({
|
|
|
+ title: title,
|
|
|
+ xtype: 'settingwin',
|
|
|
+ viewName: viewName,
|
|
|
+ fieldItems: Ext.Array.clone(items),
|
|
|
+ settype: settype,
|
|
|
+ });
|
|
|
+ }
|
|
|
+ win.show();
|
|
|
+ }
|
|
|
+});
|