Ver Fonte

附件只读状态、dirty状态控制/校长信箱添加附件字段

zhuth há 6 anos atrás
pai
commit
ddfd49c074

+ 12 - 0
frontend/pc-web/app/view/Interaction/mailbox/Detail.js

@@ -60,6 +60,11 @@ Ext.define('school.view.interaction.maibox.Detail', {
                 fieldLabel: "内容",
                 columnWidth: 1,
                 readOnly: true
+            }, {
+                xtype: 'mfilefield',
+                name: 'mailbox_files',
+                fieldLabel: '附件',
+                readOnly: true
             }, {
                 xtype: 'textareafield',
                 name: 'mb_reply',
@@ -89,5 +94,12 @@ Ext.define('school.view.interaction.maibox.Detail', {
             }]
         });
         this.callParent();
+    },
+    listeners: {
+        load: function(form, data) {
+            let fileField = form.down('mfilefield');
+            fileField.value = data.main.mailbox_files
+            fileField.renderMF(fileField);
+        }
     }
 });

+ 3 - 2
frontend/pc-web/app/view/core/form/FormPanel.js

@@ -328,7 +328,7 @@ Ext.define('school.view.core.form.FormPanel', {
     clearDirty: function() {
         let me = this;
         let detailGrids = me.query('detailGridField');
-        let fields = me.getForm().getFields().items;
+        let fields = me.formItems;
         
         Ext.Array.each(fields, function(f) {
             f.resetOriginalValue ? f.resetOriginalValue() : '';
@@ -341,7 +341,8 @@ Ext.define('school.view.core.form.FormPanel', {
     setEditable: function(able) {
         let me = this,
         viewModel = me.getViewModel(),
-        items = me.getForm().getFields().items;
+        // items = me.getForm().getFields().items;
+        items = me.formItems;
 
         let detailGrids = me.query('detailGridField');
 

+ 13 - 5
frontend/pc-web/app/view/core/form/field/FileField.js

@@ -57,6 +57,10 @@ Ext.define('school.view.core.form.field.FileField', {
         return this.getValueField().value;
     },
 
+	resetOriginalValue: function() {
+		this.getValueField().resetOriginalValue();
+	},
+	
     getValueField: function () {
         return this.items.items[0].items.items[0];
     },
@@ -69,12 +73,11 @@ Ext.define('school.view.core.form.field.FileField', {
     },
 	renderMF: function(f){
 		f.setHtml(null);
-		var form = f.ownerCt;			
 		if(f.value != null && f.value.toString().trim() != ''){
 			f.download(f.value,f.name);
 		}
-		if(typeof(form.readOnly)!="undefined"){
-			f.setReadOnly(form.readOnly);
+		if(typeof(f.readOnly)!="undefined"){
+			f.setReadOnly(f.readOnly);
 		}
 	},
 	/**
@@ -181,13 +184,13 @@ Ext.define('school.view.core.form.field.FileField', {
 				fileName: f.name,
 				value: name,
 				columnWidth: w,
-				readOnly: false,
 				editable: false,
 				filepath: f.fullPath,
 				accessPath: f.accessPath,
 				filesize: f.size,
 				_id:f.id,
-				fieldStyle: 'background:#E0EEEE;'
+				fieldStyle: 'background:#E0EEEE;',
+				readOnly: me.readOnly
 			}));
 		});
 		me.dirty = false;
@@ -210,6 +213,7 @@ Ext.define('school.view.core.form.field.FileField', {
 	},
 	setReadOnly: function(bool){
 		//只读情况下限制不允许上传
+		this.readOnly = bool;
 		var f=this.down('filefield');
 		if(f.button&&f.fileInputEl){
 			//若界面配置字段可修改则允许传附件 
@@ -219,6 +223,10 @@ Ext.define('school.view.core.form.field.FileField', {
 				f.fileInputEl.dom.setAttribute('disabled',bool);	
 			}else f.fileInputEl.dom.removeAttribute('disabled');			
 		}
+		let files = this.query('trashfield');
+		Ext.Array.each(files, function(fe) {
+			fe.setReadOnly(bool);
+		});
 	},
 	setFieldStyle: function(str) {
 

+ 4 - 0
frontend/pc-web/app/view/core/form/field/RemoteImgField.js

@@ -126,6 +126,10 @@ Ext.define('school.view.core.form.field.RemoteImgField', {
         fileField.button.setDisabled(val);
     },
 
+    resetOriginalValue: function() {
+		this.getValueField().resetOriginalValue();
+	},
+
     /**
      * 上传附件
      */

+ 20 - 0
frontend/pc-web/app/view/core/form/field/TrashField.js

@@ -14,6 +14,26 @@ Ext.define('school.view.core.form.field.TrashField', {
 	triggers: {
 		foo: {
 			cls: 'x-form-download-trigger',
+			hideOnReadOnly: false,
+			/**
+			 * onClick和handler的区别:
+			 * onClick要先于handler触发,并且handler的触发是在onClick中进行的
+			 */
+			onClick: function() {
+				var me = this,
+					args = arguments,
+					e = me.clickRepeater ? args[1] : args[0],
+					handler = me.handler,
+					field = me.field;
+				// 这里去掉了 !field.readOnly 条件以保证只读下也能点击下载
+				if (handler &&  me.isFieldEnabled()) {
+					Ext.callback(me.handler, me.scope, [
+						field,
+						me,
+						e
+					], 0, field);
+				}
+			},
 			handler: function(e){
 				this.download();
 			},