Forráskód Böngészése

'主从表界面元素逻辑完善'

zhuth 7 éve
szülő
commit
3586495b71

+ 55 - 0
frontend/pc-web/app/model/basic/StudentParents.js

@@ -0,0 +1,55 @@
+/**
+ * 学生
+ */
+Ext.define('school.model.basic.StudentParents', {
+    extend: 'school.model.Base',
+    fields: [{
+        name: 'openid',
+        type: 'int'
+    }, {
+        name: 'pa_phone',
+        type: 'string'
+    }, {
+        name: 'parent_id',
+        type: 'int'
+    }, {
+        name: 'parents_address',
+        type: 'string'
+    }, {
+        name: 'parents_birthday',
+        type: 'date'
+    }, {
+        name: 'parents_honor',
+        type: 'string'
+    }, {
+        name: 'parents_job',
+        type: 'string'
+    }, {
+        name: 'parents_name',
+        type: 'string'
+    }, {
+        name: 'parents_photo',
+        type: 'string'
+    }, {
+        name: 'parents_remarks',
+        type: 'string'
+    }, {
+        name: 'parents_sex',
+        type: 'int'
+    }, {
+        name: 'parents_status',
+        type: 'int'
+    }, {
+        name: 'pr_relation',
+        type: 'string'
+    }, {
+        name: 'pr_stuid',
+        type: 'int'
+    }, {
+        name: 'school_id',
+        type: 'int'
+    }, {
+        name: 'user_id',
+        type: 'int'
+    }],
+});

+ 7 - 11
frontend/pc-web/app/view/basic/class/ClassDetail.js

@@ -2,21 +2,20 @@ Ext.define('school.view.basic.class.ClassDetail', {
     extend: 'school.view.core.form.FormPanel',
     xtype: 'classdetail',
 
+    viewModel: 'classdetail',
+
     //字段属性
     _title: '班级信息',
-    _idField: 'id',
-    _codeField: 'pu_code',
-    _statusField: 'pu_status',
-    _statusCodeField: 'pu_statuscode',
-    _auditmanField: 'pu_auditman',
-    _auditdateField: 'pu_auditdate',
-    _relationColumn: 'pd_puid',
+    _idField: 'clazz_id',
+    _codeField: null,
+
     _readUrl: '/api/school/class/read',
     _saveUrl: '/api/purchase/purchase/save',
     _auditUrl: '/api/purchase/purchase/audit',
     _unAuditUrl: '/api/purchase/purchase/unAudit',
     _deleteUrl: '/api/purchase/purchase/delete',
     _turnInUrl: '/api/purchase/purchase/turnProdin',
+
     initId: 0,
     initComponent: function () {
         Ext.apply(this, {
@@ -109,6 +108,7 @@ Ext.define('school.view.basic.class.ClassDetail', {
             }, {
                 name: "detail1",
                 xtype: "detailGridField",
+                idColumn: 'teacher_id',
                 detnoColumn: 'sd_detno',
                 storeModel: 'school.model.basic.Student',
                 deleteDetailUrl: '/api/sale/sale/deleteDetail',
@@ -126,10 +126,6 @@ Ext.define('school.view.basic.class.ClassDetail', {
                     text: '学科',
                     dataIndex: 'subject'
                 }]
-            }],
-            toolBtns: [{
-                xtype: 'button',
-                text: '保存'
             }]
         });
         this.callParent();

+ 13 - 0
frontend/pc-web/app/view/basic/class/ClassDetailModel.js

@@ -0,0 +1,13 @@
+Ext.define('school.view.basic.class.ClassDetailModel', {
+    extend: 'school.view.core.form.FormPanelModel',
+    alias: 'viewmodel.classdetail',
+
+    data: {
+        showAddBtn: false,
+        showRefreshBtn: false,
+        showCopyBtn: false,
+        showSaveBtn: true,
+        showDeleteBtn: true,
+        showLogBtn: false
+    },
+});

+ 3 - 3
frontend/pc-web/app/view/basic/staff/StaffDetail.js

@@ -21,8 +21,6 @@ Ext.define('school.view.basic.staff.StaffDetail', {
     _toSaleUrl: '/api/sale/saledown/toSale',
     initId: 0,
 
-    codeInHeader: true,
-
     initComponent: function () {
         Ext.apply(this, {
             defaultItems: [{
@@ -117,11 +115,13 @@ Ext.define('school.view.basic.staff.StaffDetail', {
             }, {
                 name: "detailGridField",
                 xtype: "detailGridField",
+                idColumn: 'id',
                 detnoColumn: 'sd_detno',
                 storeModel: 'school.model.basic.staff.StaffDetail',
                 deleteDetailUrl: '/api/sale/sale/deleteDetail',
                 allowEmpty: true,
                 showCount: false,
+                readOnly: true,
                 columns: [{
                     text: '任课年级',
                     dataIndex: 'grade',
@@ -132,7 +132,7 @@ Ext.define('school.view.basic.staff.StaffDetail', {
                     text: '科目',
                     dataIndex: 'subject'
                 }]
-            }],
+            }]
         });
         this.callParent();
     },

+ 6 - 3
frontend/pc-web/app/view/basic/staff/StaffList.js

@@ -61,7 +61,10 @@ Ext.define('school.view.basic.staff.StaffList', {
                     text: '删除'
                 }, {
                     xtype: 'button',
-                    text: '新增'
+                    text: '新增',
+                    handler: function() {
+                        school.util.BaseUtil.openTab('basic-staff-staffdetail', '新增教职工信息', 'basic-staff-staffdetail-add');
+                    }
                 }],
                 columns : [{
                     text: 'ID',
@@ -97,9 +100,9 @@ Ext.define('school.view.basic.staff.StaffList', {
                 }],
                 listeners: {
                     itemclick: function(view, record, item, index, e, eOpts) {
-                        school.util.BaseUtil.openTab('basic-staff-staffdetail', '教职工信息', 'basic-staff-staffdetail'+record.get('teacher_id'), {
+                        school.util.BaseUtil.openTab('basic-staff-staffdetail', '教职工信息(' + record.get('teacher_number') + ')', 'basic-staff-staffdetail'+record.get('teacher_id'), {
                             initId: record.get('teacher_id')
-                        }); 
+                        });
                     }
                 }
             },

+ 9 - 7
frontend/pc-web/app/view/basic/student/StudentDetail.js

@@ -7,8 +7,8 @@ Ext.define('school.view.basic.student.StudentDetail', {
 
     //字段属性
     _title: '学生信息',
-    _idField: 'student_id',
-    _codeField: 'student_number',
+    _idField: 'stu_id',
+    _codeField: 'stu_number',
     _statusField: null,
     _statusCodeField: null,
     _auditmanField: null,
@@ -21,8 +21,6 @@ Ext.define('school.view.basic.student.StudentDetail', {
     _toSaleUrl: '/api/sale/saledown/toSale',
     initId: 0,
 
-    codeInHeader: true,
-
     initComponent: function () {
         Ext.apply(this, {
             defaultItems: [{
@@ -92,26 +90,30 @@ Ext.define('school.view.basic.student.StudentDetail', {
             }, {
                 name: "parent",
                 xtype: "detailGridField",
+                idColumn: 'parent_id',
                 detnoColumn: 'sd_detno',
-                storeModel: 'school.model.basic.Student',
+                storeModel: 'school.model.basic.StudentParents',
                 deleteDetailUrl: '/api/sale/sale/deleteDetail',
                 allowEmpty: true,
                 showCount: false,
                 columns: [{
                     text: '家长姓名',
-                    dataIndex: 'parent_name',
+                    dataIndex: 'parents_name',
                     editor: {
                         xtype: 'textfield'
                     }
                 }, {
                     text: '联系电话',
-                    dataIndex: 'parent_phone',
+                    dataIndex: 'pa_phone',
                     editor: {
                         xtype: 'numberfield'
                     }
                 }, {
                     text: '关系',
                     dataIndex: 'parent_rel',
+                    editor: {
+                        xtype: 'textfield'
+                    }
                 }]
             }],
         });

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

@@ -25,6 +25,8 @@ Ext.define('school.view.core.form.FormPanel', {
     items: [],
     toolBtns: [],
 
+    _idField: 'id',
+
     invalidText: '表单校验有误,请检查后重试', // 校验未通过提示内容
     dirtyAuditText: '表单数据有修改,是否先保存修改?', // 有修改时点击审核提示内容
     noDirtySaveText: '表单数据无修改', // 无修改点击保存提示内容
@@ -37,7 +39,6 @@ Ext.define('school.view.core.form.FormPanel', {
             dockedItems: [{
                 xtype: 'toolbar',
                 dock: 'top',
-                hidden: me.toolBtns.length == 0,
                 items: me.getToolBarItems(),
             }],
         });
@@ -49,7 +50,60 @@ Ext.define('school.view.core.form.FormPanel', {
     getToolBarItems: function() {
         let me = this, items = [];
         
-        items = Ext.Array.merge(['->'], me.toolBtns);
+        me.defaultToolBtns = [{
+            cls: 'x-formpanel-btn-blue',
+            xtype: 'button',
+            text: '新增',
+            hidden: true,
+            bind: {
+                hidden: '{!showAddBtn || !' + me._idField + '}'
+            },
+            handler: 'add'
+        }, {
+            hidden: true,
+            xtype: 'button',
+            text: '复制',
+            handler: 'onCopy',
+            bind: {
+                hidden: '{!showCopyBtn || !'+ me._idField + '}',
+            }
+        }, {
+            hidden: true,
+            xtype: 'button',
+            text: '保存',
+            handler: 'onSave',
+            bind: {
+                hidden: '{!showSaveBtn}',
+                disabled: '{!base.valid}'
+            }
+        }, {
+            hidden: true,
+            xtype: 'button',
+            text: '删除',
+            bind: {
+                hidden: '{!showDeleteBtn || !'+ me._idField + '}'
+            },
+            handler: 'delete'
+        }, {
+            cls: 'x-formpanel-btn-white',
+            xtype: 'button',
+            text: '刷新',
+            hidden: true,
+            bind: {
+                hidden: '{!showRefreshBtn || !' + me._idField + '}'
+            },
+            handler: 'refresh'
+        }, {
+            cls:'x-formpanel-btn-white',
+            text:'操作日志',
+            hidden: true,
+            // bind: {
+            //     hidden: '{!showLogBtn || !' + me._idField + '}'
+            // },
+            handler:"showMessageLog"
+        }];
+
+        items = Ext.Array.merge(['->'], me.toolBtns, me.defaultToolBtns);
 
         return items;
     },

+ 11 - 11
frontend/pc-web/app/view/core/form/FormPanelController.js

@@ -59,18 +59,18 @@ Ext.define('school.view.core.form.FormPanelController', {
         // 单号、id清空
         main[form._idField] = 0;
         main[form._codeField] = '';
-        // 单据状态为录入状态(未审核)
-        main[form._statusCodeField] = auditTexts.unAuditCode;
-        main[form._statusField] = auditTexts.unAuditText;
+        // // 单据状态为录入状态(未审核)
+        // main[form._statusCodeField] = auditTexts.unAuditCode;
+        // main[form._statusField] = auditTexts.unAuditText;
         //重设录入人,录入日期,审核人,审核日期
-        main['creatorId'] = school.util.BaseUtil.getCurrentUser().id;
-        main['creatorName'] = school.util.BaseUtil.getCurrentUser().realname;
-        main['createTime'] = Ext.Date.format(new Date(), 'Y-m-d H:i:s');
-        main['updaterId'] = school.util.BaseUtil.getCurrentUser().id;
-        main['updaterName'] = school.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;
+        // main['creatorId'] = school.util.BaseUtil.getCurrentUser().id;
+        // main['creatorName'] = school.util.BaseUtil.getCurrentUser().realname;
+        // main['createTime'] = Ext.Date.format(new Date(), 'Y-m-d H:i:s');
+        // main['updaterId'] = school.util.BaseUtil.getCurrentUser().id;
+        // main['updaterName'] = school.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;
 
 
 

+ 7 - 0
frontend/pc-web/app/view/core/form/FormPanelModel.js

@@ -11,5 +11,12 @@ Ext.define('school.view.core.form.FormPanelModel', {
         },
         detailBindeFields: [], // 从表绑定列
         detailStore: null, // 从表store
+
+        showAddBtn: true,
+        showRefreshBtn: true,
+        showCopyBtn: true,
+        showSaveBtn: true,
+        showDeleteBtn: true,
+        showLogBtn: true
     },
 });

+ 20 - 15
frontend/pc-web/app/view/core/form/field/DetailGridField.js

@@ -23,6 +23,7 @@ Ext.define('school.view.core.form.field.DetailGridField', {
     showIndex: true,
     configUrl: '',
     editable: true,
+    readOnly: false,
     allowEmpty: false, // 表格为空时校验合法
     showCount: true, // 显示合计栏
 
@@ -37,7 +38,7 @@ Ext.define('school.view.core.form.field.DetailGridField', {
 
         addRows = function(id) {
             var grid = Ext.getCmp(id);
-            if(grid.editable) {
+            if(grid.editable && !grid.readOnly) {
                 grid.addDetail(0);
             }
         };
@@ -88,7 +89,7 @@ Ext.define('school.view.core.form.field.DetailGridField', {
                     this.fireEvent('validChange');
                 },
                 itemmouseenter: function(view, record, item, index, e, eOpts) {
-                    if(!view.up('detailGridField').editable) {
+                    if(!view.up('detailGridField').editable || view.up('detailGridField').readOnly) {
                         return;
                     }
                     var lockedItems = view.el.dom.parentElement.parentElement.getElementsByClassName('x-grid-scrollbar-clipper-locked')[0].getElementsByClassName('x-grid-item');
@@ -100,7 +101,7 @@ Ext.define('school.view.core.form.field.DetailGridField', {
                     iconsItem.style.display = 'flex';
                 },
                 itemmouseleave: function(view, record, item, index, e, eOpts) {
-                    if(!view.up('detailGridField').editable) {
+                    if(!view.up('detailGridField').editable || view.up('detailGridField').readOnly) {
                         return;
                     }
                     var lockedItems = view.el.dom.parentElement.parentElement.getElementsByClassName('x-grid-scrollbar-clipper-locked')[0].getElementsByClassName('x-grid-item');
@@ -125,6 +126,10 @@ Ext.define('school.view.core.form.field.DetailGridField', {
             }
         });
         me.callParent(arguments);
+
+        if(!!me.readOnly) {
+            me.setGridDisabled(true);
+        }
     },
 
     initColumns: function() {
@@ -224,7 +229,7 @@ Ext.define('school.view.core.form.field.DetailGridField', {
 
     addDetail: function(v, d) {
         var me = this;
-        if(!me.editable) {
+        if(!me.editable || me.readOnly) {
             return;
         }
         var detnoColumn = me.detnoColumn,
@@ -271,7 +276,7 @@ Ext.define('school.view.core.form.field.DetailGridField', {
 
     deleteDetail: function(v) {
         var me = this;
-        if(!me.editable) {
+        if(!me.editable || me.readOnly) {
             return;
         }
 
@@ -282,7 +287,7 @@ Ext.define('school.view.core.form.field.DetailGridField', {
             return r.get(detnoColumn) == v;
         });
 
-        var id = selectedRecord.data.id;
+        var id = selectedRecord.data[me.idColumn];
 
         if(id&&id!=0&&(typeof id) == 'number') {
             school.util.BaseUtil.showConfirm('警告', '确定删除该条明细')
@@ -317,7 +322,7 @@ Ext.define('school.view.core.form.field.DetailGridField', {
     swapUp: function() {
         var me = this;
         var me = this;
-        if(!me.editable) {
+        if(!me.editable || me.readOnly) {
             return;
         }
         var store = me.getStore(),
@@ -330,7 +335,7 @@ Ext.define('school.view.core.form.field.DetailGridField', {
     swapDown: function() {
         var me = this;
         var me = this;
-        if(!me.editable) {
+        if(!me.editable || me.readOnly) {
             return;
         }
         var store = me.getStore(),
@@ -461,8 +466,8 @@ Ext.define('school.view.core.form.field.DetailGridField', {
         Ext.Array.each(storeData, function(item){
             var d = Object.assign({}, item.data);
 
-            if((typeof d.id) != "number" && d.id.indexOf('-')>-1){
-                d.id = 0;
+            if(d[me.idColumn] && (typeof d[me.idColumn]) != "number" && d[me.idColumn].indexOf('-')>-1){
+                d[me.idColumn] = 0;
             }
             for(k in d) {
                 if(Ext.isDate(d[k])) {
@@ -486,8 +491,8 @@ Ext.define('school.view.core.form.field.DetailGridField', {
             dirty = item.dirty;
 
             if(dirty){
-                if((typeof d.id) != "number" && d.id.indexOf('-')>-1){
-                    d.id = 0;
+                if(d[me.idColumn] && (typeof d[me.idColumn]) != "number" && d[me.idColumn].indexOf('-')>-1){
+                    d[me.idColumn] = 0;
                 }
                 for(k in d) {
                     if(Ext.isDate(d[k])) {
@@ -514,8 +519,8 @@ Ext.define('school.view.core.form.field.DetailGridField', {
             dirty = item.dirty;
 
             if(dirty){
-                if((typeof d.id) != "number" && d.id.indexOf('-')>-1){
-                    d.id = 0;
+                if(d[me.idColumn] && (typeof d[me.idColumn]) != "number" && d[me.idColumn].indexOf('-')>-1){
+                    d[me.idColumn] = 0;
                 }
                 for(k in d) {
                     if(Ext.isDate(d[k])) {
@@ -524,7 +529,7 @@ Ext.define('school.view.core.form.field.DetailGridField', {
                 }
                 trueData.push(d);
             }else {
-                if(typeof d.id == "number") {
+                if(d[me.idColumn] && typeof d[me.idColumn] == "number") {
                     for(k in d) {
                         if(Ext.isDate(d[k])) {
                             d[k] = Ext.Date.format(d[k], 'Y-m-d H:i:s');